DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] doc/ip_pipeline: update sample app user guide
@ 2018-05-24 11:05 Jasvinder Singh
  2018-05-24 11:59 ` [dpdk-dev] [PATCH v2] " Jasvinder Singh
  0 siblings, 1 reply; 3+ messages in thread
From: Jasvinder Singh @ 2018-05-24 11:05 UTC (permalink / raw)
  To: dev; +Cc: cristian.dumitrescu, john.mcnamara, marko.kovacevic

Update sample app user guide with ip pipeline documentation.

Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>

Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
---
 doc/guides/sample_app_ug/ip_pipeline.rst | 1448 +++++++++---------------------
 1 file changed, 403 insertions(+), 1045 deletions(-)

diff --git a/doc/guides/sample_app_ug/ip_pipeline.rst b/doc/guides/sample_app_ug/ip_pipeline.rst
index 69af6b8..660798d 100644
--- a/doc/guides/sample_app_ug/ip_pipeline.rst
+++ b/doc/guides/sample_app_ug/ip_pipeline.rst
@@ -1,5 +1,5 @@
 ..  SPDX-License-Identifier: BSD-3-Clause
-    Copyright(c) 2015-2016 Intel Corporation.
+    Copyright(c) 2015-2018 Intel Corporation.
 
 Internet Protocol (IP) Pipeline Application
 ===========================================
@@ -8,1163 +8,521 @@ Application overview
 --------------------
 
 The *Internet Protocol (IP) Pipeline* application is intended to be a vehicle for rapid development of packet processing
-applications running on multi-core CPUs.
+applications on multi-core CPUs.
 
-The application provides a library of reusable functional blocks called pipelines.
-These pipelines can be seen as prefabricated blocks that can be instantiated and inter-connected through packet queues
+Following OpenFlow and P4 design principles, the application can be used to create functional blocks called pipelines out
+of input/output ports, tables and actions in a modular way. Multiple pipelines can be inter-connected through packet queues
 to create complete applications (super-pipelines).
 
-Pipelines are created and inter-connected through the application configuration file.
-By using different configuration files, different applications are effectively created, therefore this application
-can be seen as an application generator.
-The configuration of each pipeline can be updated at run-time through the application Command Line Interface (CLI).
+The pipelines are mapped to application threads, with each pipeline executed by a single thread and each thread able to run
+one or several pipelines. The possibilities of creating pipelines out of ports, tables and actions, connecting multiple
+pipelines together and mapping the pipelines to execution threads are endless, therefore this application can be seen as
+a true application generator.
 
-Main application components are:
+Pipelines are created and managed through Command Line Interface (CLI):
 
-**A Library of reusable pipelines**
+ * Any standard TCP client (e.g. telnet, netcat, custom script, etc) is typically able to connect to the application, send
+   commands through the network and wait for the response before pushing the next command.
 
- * Each pipeline represents a functional block, e.g. flow classification, firewall, routing, master, etc.
-
- * Each pipeline type can be instantiated several times in the same application, which each instance configured
-   separately and mapped to a single CPU core.
-   Each CPU core can run one or several pipeline instances, which can be of same or different type.
-
- * Pipeline instances are inter-connected through packet queues (for packet processing) and message queues
-   (for run-time configuration).
-
- * Pipelines are implemented using DPDK Packet Framework.
-
- * More pipeline types can always be built and added to the existing pipeline types.
-
-**The Configuration file**
-
- * The configuration file defines the application structure.
-   By using different configuration files, different applications are created.
-
- * All the application resources are created and configured through the application configuration file:
-   pipeline instances, buffer pools, links (i.e. network interfaces), hardware device RX/TX queues,
-   software queues, traffic manager devices, EAL startup arguments, etc.
-
- * The configuration file syntax is “define by reference”, meaning that resources are defined as they are referenced.
-   First time a resource name is detected, it is registered with default parameters.
-   Optionally, the resource parameters can be further refined through a configuration file section dedicated to
-   that resource.
-
- * Command Line Interface (CLI)
-
-**Global CLI commands: link configuration, etc.**
-
- * Common pipeline CLI commands: ping (keep-alive), statistics, etc.
-
- * Pipeline type specific CLI commands: used to configure instances of specific pipeline type.
-   These commands are registered with the application when the pipeline type is registered.
-   For example, the commands for routing pipeline instances include: route add, route delete, route list, etc.
-
- * CLI commands can be grouped into scripts that can be invoked at initialization and at runtime.
-
-
-Design goals
-------------
-
-
-Rapid development
-~~~~~~~~~~~~~~~~~
-
-This application enables rapid development through quick connectivity of standard components called pipelines.
-These components are built using DPDK Packet Framework and encapsulate packet processing features at different levels:
-ports, tables, actions, pipelines and complete applications.
-
-Pipeline instances are instantiated, configured and inter-connected through low complexity configuration files loaded
-during application initialization.
-Each pipeline instance is mapped to a single CPU core, with each CPU core able to run one or multiple pipeline
-instances of same or different types. By loading a different configuration file, a different application is
-effectively started.
-
-
-Flexibility
-~~~~~~~~~~~
-
-Each packet processing application is typically represented as a chain of functional stages which is often called
-the functional pipeline of the application.
-These stages are mapped to CPU cores to create chains of CPU cores (pipeline model), clusters of CPU cores
-(run-to-completion model) or chains of clusters of CPU cores (hybrid model).
-
-This application allows all the above programming models.
-By applying changes to the configuration file, the application provides the flexibility to reshuffle its
-building blocks in different ways until the configuration providing the best performance is identified.
-
-
-Move pipelines around
-^^^^^^^^^^^^^^^^^^^^^
-
-The mapping of pipeline instances to CPU cores can be reshuffled through the configuration file.
-One or several pipeline instances can be mapped to the same CPU core.
-
-.. _figure_ip_pipelines_1:
-
-.. figure:: img/ip_pipelines_1.*
-
-   Example of moving pipeline instances across different CPU cores
-
-
-Move tables around
-^^^^^^^^^^^^^^^^^^
-
-There is some degree of flexibility for moving tables from one pipeline instance to another.
-Based on the configuration arguments passed to each pipeline instance in the configuration file, specific tables
-can be enabled or disabled.
-This way, a specific table can be “moved” from pipeline instance A to pipeline instance B by simply disabling its
-associated functionality for pipeline instance A while enabling it for pipeline instance B.
-
-Due to requirement to have simple syntax for the configuration file, moving tables across different pipeline
-instances is not as flexible as the mapping of pipeline instances to CPU cores, or mapping actions to pipeline tables.
-Complete flexibility in moving tables from one pipeline to another could be achieved through a complex pipeline
-description language that would detail the structural elements of the pipeline (ports, tables and actions) and
-their connectivity, resulting in complex syntax for the configuration file, which is not acceptable.
-Good configuration file readability through simple syntax is preferred.
-
-*Example*: the IP routing pipeline can run the routing function only (with ARP function run by a different
-pipeline instance), or it can run both the routing and ARP functions as part of the same pipeline instance.
-
-
-.. _figure_ip_pipelines_2:
-
-.. figure:: img/ip_pipelines_2.*
-
-   Example of moving tables across different pipeline instances
-
-
-Move actions around
-^^^^^^^^^^^^^^^^^^^
-
-When it makes sense, packet processing actions can be moved from one pipeline instance to another.
-Based on the configuration arguments passed to each pipeline instance in the configuration file, specific actions
-can be enabled or disabled.
-This way, a specific action can be "moved" from pipeline instance A to pipeline instance B by simply disabling its
-associated functionality for pipeline instance A while enabling it for pipeline instance B.
-
-*Example*: The flow actions of accounting, traffic metering, application identification, NAT, etc can be run as part
-of the flow classification pipeline instance or split across several flow actions pipeline instances, depending on
-the number of flow instances and their compute requirements.
-
-
-.. _figure_ip_pipelines_3:
-
-.. figure:: img/ip_pipelines_3.*
-
-   Example of moving actions across different tables and pipeline instances
-
-
-Performance
-~~~~~~~~~~~
-
-Performance of the application is the highest priority requirement.
-Flexibility is not provided at the expense of performance.
-
-The purpose of flexibility is to provide an incremental development methodology that allows monitoring the
-performance evolution:
-
-* Apply incremental changes in the configuration (e.g. mapping on pipeline instances to CPU cores)
-  in order to identify the configuration providing the best performance for a given application;
-
-* Add more processing incrementally (e.g. by enabling more actions for specific pipeline instances) until
-  the application is feature complete while checking the performance impact at each step.
-
-
-Debug capabilities
-~~~~~~~~~~~~~~~~~~
-
-The application provides a significant set of debug capabilities:
-
-* Command Line Interface (CLI) support for statistics polling: pipeline instance ping (keep-alive checks),
-  pipeline instance statistics per input port/output port/table, link statistics, etc;
-
-* Logging: Turn on/off application log messages based on priority level;
+ * All the application objects are created and managed through CLI commands:
+    * 'Primitive' objects used to create pipeline ports: memory pools, links (i.e. network interfaces), SW queues, traffic managers, etc.
+    * Action profiles: used to define the actions to be executed by pipeline input/output ports and tables.
+    * Pipeline components: input/output ports, tables, pipelines, mapping of pipelines to execution threads.
 
 Running the application
 -----------------------
 
 The application startup command line is::
 
-   ip_pipeline [-f CONFIG_FILE] [-s SCRIPT_FILE] -p PORT_MASK [-l LOG_LEVEL]
+   ip_pipeline [EAL_ARGS] -- [-s SCRIPT_FILE] [-h HOST] [-p PORT]
 
 The application startup arguments are:
 
-``-f CONFIG_FILE``
-
- * Optional: Yes
-
- * Default: ``./config/ip_pipeline.cfg``
-
- * Argument: Path to the configuration file to be loaded by the application.
-   Please refer to the :ref:`ip_pipeline_configuration_file` for details on how to write the configuration file.
-
 ``-s SCRIPT_FILE``
 
  * Optional: Yes
 
  * Default: Not present
 
- * Argument: Path to the CLI script file to be run by the master pipeline at application startup.
-   No CLI script file will be run at startup if this argument is not present.
-
-``-p PORT_MASK``
-
- * Optional: No
-
- * Default: N/A
+ * Argument: Path to the CLI script file to be run at application startup.
+   No CLI script file will run at startup if this argument is not present.
 
- * Argument: Hexadecimal mask of NIC port IDs to be used by the application.
-   First port enabled in this mask will be referenced as LINK0 as part of the application configuration file,
-   next port as LINK1, etc.
-
-``-l LOG_LEVEL``
+``-h HOST``
 
  * Optional: Yes
 
- * Default: 1 (High priority)
-
- * Argument: Log level to determine which application messages are to be printed to standard output.
-   Available log levels are: 0 (None), 1 (High priority), 2 (Low priority).
-   Only application messages whose priority is higher than or equal to the application log level will be printed.
-
-
-Application stages
-------------------
-
+ * Default: ``0.0.0.0``
 
-Configuration
-~~~~~~~~~~~~~
+ * Argument: IP Address of the host running ip pipeline application to be used by
+   remote TCP based client (telnet, netcat, etc.) for connection.
 
-During this stage, the application configuration file is parsed and its content is loaded into the application data
-structures.
-In case of any configuration file parse error, an error message is displayed and the application is terminated.
-Please refer to the :ref:`ip_pipeline_configuration_file` for a description of the application configuration file format.
+``-p PORT``
 
+ * Optional: Yes
 
-Configuration checking
-~~~~~~~~~~~~~~~~~~~~~~
-
-In the absence of any parse errors, the loaded content of application data structures is checked for overall consistency.
-In case of any configuration check error, an error message is displayed and the application is terminated.
-
-
-Initialization
-~~~~~~~~~~~~~~
-
-During this stage, the application resources are initialized and the handles to access them are saved into the
-application data structures.
-In case of any initialization error, an error message is displayed and the application is terminated.
-
-The typical resources to be initialized are: pipeline instances, buffer pools, links (i.e. network interfaces),
-hardware device RX/TX queues, software queues, traffic management devices, etc.
-
-
-.. _ip_pipeline_runtime:
-
-Run-time
-~~~~~~~~
-
-Each CPU core runs the pipeline instances assigned to it in time sharing mode and in round robin order:
-
-1. *Packet processing task*: The pipeline run-time code is typically a packet *processing* task built on top of
-   DPDK Packet Framework rte_pipeline library, which reads bursts of packets from the pipeline input ports,
-   performs table lookups and executes the identified actions for all tables in the pipeline, with packet
-   eventually written to pipeline output ports or dropped.
-
-2. *Message handling task*: Each CPU core will also periodically execute the *message handling* code of each
-   of the pipelines mapped to it.
-   The pipeline message handling code is processing the messages that are pending in the pipeline input message
-   queues, which are typically sent by the master CPU core for the on-the-fly pipeline configuration: check
-   that pipeline is still alive (ping), add/delete entries in the pipeline tables, get statistics, etc.
-   The frequency of executing the message handling code is usually much smaller than the frequency of executing
-   the packet processing work.
+ * Default: ``8086``
 
-Please refer to the :ref:`ip_pipeline_pipeline_section` for more details about the application pipeline module encapsulation.
+ * Argument: TCP port number at which the ip pipeline is running.
+   This port number should be used by remote TCP client (such as telnet, netcat, etc.) to connect to host application.
 
-.. _ip_pipeline_configuration_file:
+Refer to *DPDK Getting Started Guide* for general information on running applications and the Environment Abstraction Layer (EAL) options.
 
-Configuration file syntax
--------------------------
+The following is an example command to run ip pipeline application configured for layer 2 forwarding:
 
-Syntax overview
-~~~~~~~~~~~~~~~
+.. code-block:: console
 
-The syntax of the configuration file is designed to be simple, which favors readability.
-The configuration file is parsed using the DPDK library librte_cfgfile, which supports simple
-`INI file format <http://en.wikipedia.org/wiki/INI_file>`__ for configuration files.
+    $ ./build/ip_pipeline -c 0x3 -- -s examples/route_ecmp.cli
 
-As result, the configuration file is split into several sections, with each section containing one or more entries.
-The scope of each entry is its section, and each entry specifies a variable that is assigned a specific value.
-Any text after the ``;`` character is considered a comment and is therefore ignored.
+The application should start successfully and display as follows:
 
-The following are application specific: number of sections, name of each section, number of entries of each section,
-name of the variables used for each section entry, the value format (e.g. signed/unsigned integer, string, etc)
-and range of each section entry variable.
+.. code-block:: console
 
-Generic example of configuration file section:
+    EAL: Detected 40 lcore(s)
+    EAL: Detected 2 NUMA nodes
+    EAL: Multi-process socket /var/run/.rte_unix
+    EAL: Probing VFIO support...
+    EAL: PCI device 0000:02:00.0 on NUMA socket 0
+    EAL:   probe driver: 8086:10fb net_ixgbe
+    ...
 
-.. code-block:: ini
+To run remote client (e.g. telnet) to communicate with the ip pipeline application:
 
-    [<section_name>]
+.. code-block:: console
 
-    <variable_name_1> = <value_1>
+    $ telnet 127.0.0.1 8086
 
-    ; ...
+When running a telnet client as above, command prompt is displayed:
 
-    <variable_name_N> = <value_N>
+.. code-block:: console
 
+    Trying 127.0.0.1...
+    Connected to 127.0.0.1.
+    Escape character is '^]'.
 
-Application resources present in the configuration file
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    Welcome to IP Pipeline!
 
-.. _table_ip_pipelines_resource_name:
+    pipeline>
 
-.. tabularcolumns:: |p{4cm}|p{6cm}|p{6cm}|
+Once application and telnet client start running, messages can be sent from client to application.
+At any stage, telnet client can be terminated using the quit command.
 
-.. table:: Application resource names in the configuration file
 
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Resource type              | Format                      | Examples                                        |
-   +============================+=============================+=================================================+
-   | Pipeline                   | ``PIPELINE<ID>``            | ``PIPELINE0``, ``PIPELINE1``                    |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Mempool                    | ``MEMPOOL<ID>``             | ``MEMPOOL0``, ``MEMPOOL1``                      |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Link (network interface)   | ``LINK<ID>``                | ``LINK0``, ``LINK1``                            |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Link RX queue              | ``RXQ<LINK_ID>.<QUEUE_ID>`` | ``RXQ0.0``, ``RXQ1.5``                          |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Link TX queue              | ``TXQ<LINK_ID>.<QUEUE_ID>`` | ``TXQ0.0``, ``TXQ1.5``                          |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Software queue             | ``SWQ<ID>``                 | ``SWQ0``, ``SWQ1``                              |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Traffic Manager            | ``TM<LINK_ID>``             | ``TM0``, ``TM1``                                |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | KNI (kernel NIC interface) | ``KNI<LINK_ID>``            | ``KNI0``, ``KNI1``                              |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Source                     | ``SOURCE<ID>``              | ``SOURCE0``, ``SOURCE1``                        |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Sink                       | ``SINK<ID>``                | ``SINK0``, ``SINK1``                            |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Message queue              | ``MSGQ<ID>``                | ``MSGQ0``, ``MSGQ1``,                           |
-   |                            | ``MSGQ-REQ-PIPELINE<ID>``   | ``MSGQ-REQ-PIPELINE2``, ``MSGQ-RSP-PIPELINE2,`` |
-   |                            | ``MSGQ-RSP-PIPELINE<ID>``   | ``MSGQ-REQ-CORE-s0c1``, ``MSGQ-RSP-CORE-s0c1``  |
-   |                            | ``MSGQ-REQ-CORE-<CORE_ID>`` |                                                 |
-   |                            | ``MSGQ-RSP-CORE-<CORE_ID>`` |                                                 |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-
-``LINK`` instances are created implicitly based on the ``PORT_MASK`` application startup argument.
-``LINK0`` is the first port enabled in the ``PORT_MASK``, port 1 is the next one, etc.
-The LINK ID is different than the DPDK PMD-level NIC port ID, which is the actual position in the bitmask mentioned above.
-For example, if bit 5 is the first bit set in the bitmask, then ``LINK0`` is having the PMD ID of 5.
-This mechanism creates a contiguous LINK ID space and isolates the configuration file against changes in the board
-PCIe slots where NICs are plugged in.
-
-``RXQ``, ``TXQ``, ``TM`` and ``KNI`` instances have the LINK ID as part of their name.
-For example, ``RXQ2.1``, ``TXQ2.1`` and ``TM2`` are all associated with ``LINK2``.
-
-
-Rules to parse the configuration file
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The main rules used to parse the configuration file are:
-
-1. Application resource name determines the type of resource based on the name prefix.
-
-   *Example*: all software queues need to start with ``SWQ`` prefix, so ``SWQ0`` and ``SWQ5`` are valid software
-   queue names.
-
-2. An application resource is defined by creating a configuration file section with its name.
-   The configuration file section allows fine tuning on any of the resource parameters.
-   Some resource parameters are mandatory, in which case it is required to have them specified as part of the
-   section, while some others are optional, in which case they get assigned their default value when not present.
-
-   *Example*: section ``SWQ0`` defines a software queue named SWQ0, whose parameters are detailed as part of this section.
-
-3. An application resource can also be defined by referencing it.
-   Referencing a resource takes place by simply using its name as part of the value assigned to a variable in any
-   configuration file section.
-   In this case, the resource is registered with all its parameters having their default values.
-   Optionally, a section with the resource name can be added to the configuration file to fine tune some or all
-   of the resource parameters.
-
-   *Example*: in section ``PIPELINE3``, variable ``pktq_in`` includes ``SWQ5`` as part of its list, which results
-   in defining a software queue named ``SWQ5``; when there is no ``SWQ5`` section present in the configuration file,
-   ``SWQ5`` gets registered with default parameters.
-
-
-.. _ip_pipeline_pipeline_section:
-
-PIPELINE section
-~~~~~~~~~~~~~~~~
-
-.. _table_ip_pipelines_pipeline_section_1:
-
-.. tabularcolumns:: |p{2.5cm}|p{7cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}|
-
-.. table:: Configuration file PIPELINE section (1/2)
-
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-   | Section       | Description                                               | Optional      | Range                  | Default value  |
-   +===============+===========================================================+===============+========================+================+
-   | type          | Pipeline type. Defines the functionality to be            | NO            | See "List              | N/A            |
-   |               | executed.                                                 |               | of pipeline types"     |                |
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-   | core          | CPU core to run the current pipeline.                     | YES           | See "CPU Core          | CPU socket 0,  |
-   |               |                                                           |               | notation"              | core 0,        |
-   |               |                                                           |               |                        | hyper-thread 0 |
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-   | pktq_in       | Packet queues to serve as input ports for the             | YES           | List of input          | Empty list     |
-   |               | current pipeline instance. The acceptable packet          |               | packet queue IDs       |                |
-   |               | queue types are: ``RXQ``, ``SWQ``, ``TM`` and ``SOURCE``. |               |                        |                |
-   |               | First device in this list is used as pipeline input port  |               |                        |                |
-   |               | 0, second as pipeline input port 1, etc.                  |               |                        |                |
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-   | pktq_out      | Packet queues to serve as output ports for the            | YES           | List of output         | Empty list     |
-   |               | current pipeline instance. The acceptable packet          |               | packet queue IDs.      |                |
-   |               | queue types are: ``TXQ``, ``SWQ``, ``TM`` and ``SINK``.   |               |                        |                |
-   |               | First device in this list is used as pipeline output      |               |                        |                |
-   |               | port 0, second as pipeline output port 1, etc.            |               |                        |                |
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-
-.. _table_ip_pipelines_pipeline_section_2:
-
-.. tabularcolumns:: |p{2.5cm}|p{7cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}|
-
-.. table:: Configuration file PIPELINE section (2/2)
-
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-   | Section       | Description                                               | Optional      | Range                  | Default value  |
-   +===============+===========================================================+===============+========================+================+
-   | msgq_in       | Input message queues. These queues contain                | YES           | List of message        | Empty list     |
-   |               | request messages that need to be handled by the           |               | queue IDs              |                |
-   |               | current pipeline instance. The type and format of         |               |                        |                |
-   |               | request messages is defined by the pipeline type.         |               |                        |                |
-   |               | For each pipeline instance, there is an input             |               |                        |                |
-   |               | message queue defined implicitly, whose name is:          |               |                        |                |
-   |               | ``MSGQ-REQ-<PIPELINE_ID>``. This message queue            |               |                        |                |
-   |               | should not be mentioned as part of msgq_in list.          |               |                        |                |
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-   | msgq_out      | Output message queues. These queues are used by           | YES           | List of message        | Empty list     |
-   |               | the current pipeline instance to write response           |               | queue IDs              |                |
-   |               | messages as result of request messages being              |               |                        |                |
-   |               | handled. The type and format of response                  |               |                        |                |
-   |               | messages is defined by the pipeline type.                 |               |                        |                |
-   |               | For each pipeline instance, there is an output            |               |                        |                |
-   |               | message queue defined implicitly, whose name is:          |               |                        |                |
-   |               | ``MSGQ-RSP-<PIPELINE_ID>``. This message queue            |               |                        |                |
-   |               | should not be mentioned as part of msgq_out list.         |               |                        |                |
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-   | timer_period  | Time period, measured in milliseconds,                    | YES           | milliseconds           | 1 ms           |
-   |               | for handling the input message queues.                    |               |                        |                |
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-   | <any other>   | Arguments to be passed to the current pipeline            | Depends on    | Depends on             | Depends on     |
-   |               | instance. Format of the arguments, their type,            | pipeline type | pipeline type          | pipeline type  |
-   |               | whether each argument is optional or mandatory            |               |                        |                |
-   |               | and its default value (when optional) are defined         |               |                        |                |
-   |               | by the pipeline type.                                     |               |                        |                |
-   |               | The value of the arguments is applicable to the           |               |                        |                |
-   |               | current pipeline instance only.                           |               |                        |                |
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-
-
-CPU core notation
-^^^^^^^^^^^^^^^^^
-
-The CPU Core notation is::
-
-    <CPU core> ::= [s|S<CPU socket ID>][c|C]<CPU core ID>[h|H]
-
-For example::
-
-    CPU socket 0, core 0, hyper-thread 0: 0, c0, s0c0
-
-    CPU socket 0, core 0, hyper-thread 1: 0h, c0h, s0c0h
-
-    CPU socket 3, core 9, hyper-thread 1: s3c9h
-
-
-MEMPOOL section
-~~~~~~~~~~~~~~~
+Application stages
+------------------
 
-.. _table_ip_pipelines_mempool_section:
-
-.. tabularcolumns:: |p{2.5cm}|p{6cm}|p{1.5cm}|p{1.5cm}|p{3cm}|
-
-.. table:: Configuration file MEMPOOL section
-
-   +---------------+-----------------------------------------------+----------+----------+---------------------------+
-   | Section       | Description                                   | Optional | Type     | Default value             |
-   +===============+===============================================+==========+==========+===========================+
-   | buffer_size   | Buffer size (in bytes) for the current        | YES      | uint32_t | 2048                      |
-   |               | buffer pool.                                  |          |          | + sizeof(struct rte_mbuf) |
-   |               |                                               |          |          | + HEADROOM                |
-   +---------------+-----------------------------------------------+----------+----------+---------------------------+
-   | pool_size     | Number of buffers in the current buffer pool. | YES      | uint32_t | 32K                       |
-   +---------------+-----------------------------------------------+----------+----------+---------------------------+
-   | cache_size    | Per CPU thread cache size (in number of       | YES      | uint32_t | 256                       |
-   |               | buffers) for the current buffer pool.         |          |          |                           |
-   +---------------+-----------------------------------------------+----------+----------+---------------------------+
-   | cpu           | CPU socket ID where to allocate memory for    | YES      | uint32_t | 0                         |
-   |               | the current buffer pool.                      |          |          |                           |
-   +---------------+-----------------------------------------------+----------+----------+---------------------------+
-
-
-LINK section
-~~~~~~~~~~~~
-
-.. _table_ip_pipelines_link_section:
-
-.. tabularcolumns:: |p{3cm}|p{7cm}|p{1.5cm}|p{1.5cm}|p{2cm}|
-
-.. table:: Configuration file LINK section
-
-   +-----------------+----------------------------------------------+----------+----------+-------------------+
-   | Section entry   | Description                                  | Optional | Type     | Default value     |
-   +=================+==============================================+==========+==========+===================+
-   | arp_q           | NIC RX queue where ARP packets should        | YES      | 0 .. 127 | 0 (default queue) |
-   |                 | be filtered.                                 |          |          |                   |
-   +-----------------+----------------------------------------------+----------+----------+-------------------+
-   | tcp_syn_local_q | NIC RX queue where TCP packets with SYN      | YES      | 0 .. 127 | 0 (default queue) |
-   |                 | flag should be filtered.                     |          |          |                   |
-   +-----------------+----------------------------------------------+----------+----------+-------------------+
-   | ip_local_q      | NIC RX queue where IP packets with local     | YES      | 0 .. 127 | 0 (default queue) |
-   |                 | destination should be filtered.              |          |          |                   |
-   |                 | When TCP, UDP and SCTP local queues are      |          |          |                   |
-   |                 | defined, they take higher priority than this |          |          |                   |
-   |                 | queue.                                       |          |          |                   |
-   +-----------------+----------------------------------------------+----------+----------+-------------------+
-   | tcp_local_q     | NIC RX queue where TCP packets with local    | YES      | 0 .. 127 | 0 (default queue) |
-   |                 | destination should be filtered.              |          |          |                   |
-   +-----------------+----------------------------------------------+----------+----------+-------------------+
-   | udp_local_q     | NIC RX queue where TCP packets with local    | YES      | 0 .. 127 | 0 (default queue) |
-   |                 | destination should be filtered.              |          |          |                   |
-   +-----------------+----------------------------------------------+----------+----------+-------------------+
-   | sctp_local_q    | NIC RX queue where TCP packets with local    | YES      | 0 .. 127 | 0 (default queue) |
-   |                 | destination should be filtered.              |          |          |                   |
-   +-----------------+----------------------------------------------+----------+----------+-------------------+
-   | promisc         | Indicates whether current link should be     | YES      | YES/NO   | YES               |
-   |                 | started in promiscuous mode.                 |          |          |                   |
-   +-----------------+----------------------------------------------+----------+----------+-------------------+
-
-
-RXQ section
-~~~~~~~~~~~
-
-.. _table_ip_pipelines_rxq_section:
-
-.. tabularcolumns:: |p{3cm}|p{7cm}|p{1.5cm}|p{1.5cm}|p{2cm}|
-
-.. table:: Configuration file RXQ section
-
-   +---------------+--------------------------------------------+----------+----------+---------------+
-   | Section       | Description                                | Optional | Type     | Default value |
-   +===============+============================================+==========+==========+===============+
-   | mempool       | Mempool to use for buffer allocation for   | YES      | uint32_t | MEMPOOL0      |
-   |               | current NIC RX queue. The mempool ID has   |          |          |               |
-   |               | to be associated with a valid instance     |          |          |               |
-   |               | defined in the mempool entry of the global |          |          |               |
-   |               | section.                                   |          |          |               |
-   +---------------+--------------------------------------------+----------+----------+---------------+
-   | Size          | NIC RX queue size (number of descriptors)  | YES      | uint32_t | 128           |
-   +---------------+--------------------------------------------+----------+----------+---------------+
-   | burst         | Read burst size (number of descriptors)    | YES      | uint32_t | 32            |
-   +---------------+--------------------------------------------+----------+----------+---------------+
-
-
-TXQ section
-~~~~~~~~~~~
-
-.. _table_ip_pipelines_txq_section:
-
-.. tabularcolumns:: |p{2.5cm}|p{7cm}|p{1.5cm}|p{2cm}|p{1.5cm}|
-
-.. table:: Configuration file TXQ section
-
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | Section       | Description                                  | Optional | Type             | Default value |
-   +===============+==============================================+==========+==================+===============+
-   | size          | NIC TX queue size (number of descriptors)    | YES      | uint32_t         | 512           |
-   |               |                                              |          | power of 2       |               |
-   |               |                                              |          | > 0              |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | burst         | Write burst size (number of descriptors)     | YES      | uint32_t         | 32            |
-   |               |                                              |          | power of 2       |               |
-   |               |                                              |          | 0 < burst < size |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | dropless      | When dropless is set to NO, packets can be   | YES      | YES/NO           | NO            |
-   |               | dropped if not enough free slots are         |          |                  |               |
-   |               | currently available in the queue, so the     |          |                  |               |
-   |               | write operation to the queue is non-         |          |                  |               |
-   |               | blocking.                                    |          |                  |               |
-   |               | When dropless is set to YES, packets cannot  |          |                  |               |
-   |               | be dropped if not enough free slots are      |          |                  |               |
-   |               | currently available in the queue, so the     |          |                  |               |
-   |               | write operation to the queue is blocking, as |          |                  |               |
-   |               | the write operation is retried until enough  |          |                  |               |
-   |               | free slots become available and all the      |          |                  |               |
-   |               | packets are successfully written to the      |          |                  |               |
-   |               | queue.                                       |          |                  |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | n_retries     | Number of retries. Valid only when dropless  | YES      | uint32_t         | 0             |
-   |               | is set to YES. When set to 0, it indicates   |          |                  |               |
-   |               | unlimited number of retries.                 |          |                  |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-
-
-SWQ section
-~~~~~~~~~~~
-
-.. _table_ip_pipelines_swq_section:
-
-.. tabularcolumns:: |p{2.5cm}|p{7cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}|
-
-.. table:: Configuration file SWQ section
-
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | Section       | Description                                  | Optional | Type             | Default value |
-   +===============+==============================================+==========+==================+===============+
-   | size          | Queue size (number of packets)               | YES      | uint32_t         | 256           |
-   |               |                                              |          | power of 2       |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | burst_read    | Read burst size (number of packets)          | YES      | uint32_t         | 32            |
-   |               |                                              |          | power of 2       |               |
-   |               |                                              |          | 0 < burst < size |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | burst_write   | Write burst size (number of packets)         | YES      | uint32_t         | 32            |
-   |               |                                              |          | power of 2       |               |
-   |               |                                              |          | 0 < burst < size |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | dropless      | When dropless is set to NO, packets can be   | YES      | YES/NO           | NO            |
-   |               | dropped if not enough free slots are         |          |                  |               |
-   |               | currently available in the queue, so the     |          |                  |               |
-   |               | write operation to the queue is non-         |          |                  |               |
-   |               | blocking.                                    |          |                  |               |
-   |               | When dropless is set to YES, packets cannot  |          |                  |               |
-   |               | be dropped if not enough free slots are      |          |                  |               |
-   |               | currently available in the queue, so the     |          |                  |               |
-   |               | write operation to the queue is blocking, as |          |                  |               |
-   |               | the write operation is retried until enough  |          |                  |               |
-   |               | free slots become available and all the      |          |                  |               |
-   |               | packets are successfully written to the      |          |                  |               |
-   |               | queue.                                       |          |                  |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | n_retries     | Number of retries. Valid only when dropless  | YES      | uint32_t         | 0             |
-   |               | is set to YES. When set to 0, it indicates   |          |                  |               |
-   |               | unlimited number of retries.                 |          |                  |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | cpu           | CPU socket ID where to allocate memory       | YES      | uint32_t         | 0             |
-   |               | for this SWQ.                                |          |                  |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-
-
-TM section
-~~~~~~~~~~
-
-.. _table_ip_pipelines_tm_section:
-
-.. tabularcolumns:: |p{2.5cm}|p{7cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}|
-
-.. table:: Configuration file TM section
-
-   +---------------+---------------------------------------------+----------+----------+---------------+
-   | Section       | Description                                 | Optional | Type     | Default value |
-   +===============+=============================================+==========+==========+===============+
-   | Cfg           | File name to parse for the TM configuration | YES      | string   | tm_profile    |
-   |               | to be applied. The syntax of this file is   |          |          |               |
-   |               | described in the examples/qos_sched DPDK    |          |          |               |
-   |               | application documentation.                  |          |          |               |
-   +---------------+---------------------------------------------+----------+----------+---------------+
-   | burst_read    | Read burst size (number of packets)         | YES      | uint32_t | 64            |
-   +---------------+---------------------------------------------+----------+----------+---------------+
-   | burst_write   | Write burst size (number of packets)        | YES      | uint32_t | 32            |
-   +---------------+---------------------------------------------+----------+----------+---------------+
-
-
-KNI section
-~~~~~~~~~~~
-
-.. _table_ip_pipelines_kni_section:
-
-.. tabularcolumns:: |p{2.5cm}|p{7cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}|
-
-.. table:: Configuration file KNI section
-
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | Section       | Description                                  | Optional | Type             | Default value |
-   +===============+==============================================+==========+==================+===============+
-   | core          | CPU core to run the KNI kernel thread.       | YES      | See "CPU Core    | Not set       |
-   |               | When core config is set, the KNI kernel      |          | notation"        |               |
-   |               | thread will be bound to the particular core. |          |                  |               |
-   |               | When core config is not set, the KNI kernel  |          |                  |               |
-   |               | thread will be scheduled by the OS.          |          |                  |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | mempool       | Mempool to use for buffer allocation for     | YES      | uint32_t         | MEMPOOL0      |
-   |               | current KNI port. The mempool ID has         |          |                  |               |
-   |               | to be associated with a valid instance       |          |                  |               |
-   |               | defined in the mempool entry of the global   |          |                  |               |
-   |               | section.                                     |          |                  |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | burst_read    | Read burst size (number of packets)          | YES      | uint32_t         | 32            |
-   |               |                                              |          | power of 2       |               |
-   |               |                                              |          | 0 < burst < size |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | burst_write   | Write burst size (number of packets)         | YES      | uint32_t         | 32            |
-   |               |                                              |          | power of 2       |               |
-   |               |                                              |          | 0 < burst < size |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | dropless      | When dropless is set to NO, packets can be   | YES      | YES/NO           | NO            |
-   |               | dropped if not enough free slots are         |          |                  |               |
-   |               | currently available in the queue, so the     |          |                  |               |
-   |               | write operation to the queue is non-         |          |                  |               |
-   |               | blocking.                                    |          |                  |               |
-   |               | When dropless is set to YES, packets cannot  |          |                  |               |
-   |               | be dropped if not enough free slots are      |          |                  |               |
-   |               | currently available in the queue, so the     |          |                  |               |
-   |               | write operation to the queue is blocking, as |          |                  |               |
-   |               | the write operation is retried until enough  |          |                  |               |
-   |               | free slots become available and all the      |          |                  |               |
-   |               | packets are successfully written to the      |          |                  |               |
-   |               | queue.                                       |          |                  |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | n_retries     | Number of retries. Valid only when dropless  | YES      | uint64_t         | 0             |
-   |               | is set to YES. When set to 0, it indicates   |          |                  |               |
-   |               | unlimited number of retries.                 |          |                  |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-
-
-SOURCE section
+Initialization
 ~~~~~~~~~~~~~~
 
-.. _table_ip_pipelines_source_section:
-
-.. tabularcolumns:: |p{2.5cm}|p{7cm}|p{1.5cm}|p{1.5cm}|p{2cm}|
-
-.. table:: Configuration file SOURCE section
-
-   +---------------+---------------------------------------+----------+----------+---------------+
-   | Section       | Description                           | Optional | Type     | Default value |
-   +===============+=======================================+==========+==========+===============+
-   | Mempool       | Mempool to use for buffer allocation. | YES      | uint32_t | MEMPOOL0      |
-   +---------------+---------------------------------------+----------+----------+---------------+
-   | Burst         | Read burst size (number of packets)   |          | uint32_t | 32            |
-   +---------------+---------------------------------------+----------+----------+---------------+
-
-
-SINK section
-~~~~~~~~~~~~
-
-Currently, there are no parameters to be passed to a sink device, so
-SINK section is not allowed.
+During this stage, EAL layer is initialised and application specific arguments are parsed. Furthermore, the data strcutures
+(i.e. linked lists) for application objects are initialized. In case of any initialization error, an error message
+is displayed and the application is terminated.
 
-MSGQ section
-~~~~~~~~~~~~
+.. _ip_pipeline_runtime:
 
-.. _table_ip_pipelines_msgq_section:
+Run-time
+~~~~~~~~
 
-.. tabularcolumns:: |p{2.5cm}|p{7cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}|
+The master thread is creating and managing all the application objects based on CLI input.
 
-.. table:: Configuration file MSGQ section
+Each data plane thread runs one or several pipelines previously assigned to it in round-robin order. Each data plane thread
+executes two tasks in time-sharing mode:
 
-   +---------+--------------------------------------------+----------+------------+---------------+
-   | Section | Description                                | Optional | Type       | Default value |
-   +=========+============================================+==========+============+===============+
-   | size    | Queue size (number of packets)             | YES      | uint32_t   | 64            |
-   |         |                                            |          | != 0       |               |
-   |         |                                            |          | power of 2 |               |
-   +---------+--------------------------------------------+----------+------------+---------------+
-   | cpu     | CPU socket ID where to allocate memory for | YES      | uint32_t   | 0             |
-   |         | the current queue.                         |          |            |               |
-   +---------+--------------------------------------------+----------+------------+---------------+
+1. *Packet processing task*: Process bursts of input packets read from the pipeline input ports.
 
+2. *Message handling task*: Periodically, the data plane thread pauses the packet processing task and polls for request
+   messages send by the master thread. Examples: add/remove pipeline to/from current data plane thread, add/delete rules
+   to/from given table of a specific pipeline owned by the current data plane thread, read statistics, etc.
 
-EAL section
-~~~~~~~~~~~
+Examples
+--------
 
-The application generates the EAL parameters rather than reading them from the command line.
+.. _table_examples:
 
-The CPU core mask parameter is generated based on the core entry of all PIPELINE sections.
-All the other EAL parameters can be set from this section of the application configuration file.
+.. tabularcolumns:: |p{3cm}|p{5cm}|p{4cm}|p{4cm}|
 
+.. table:: Pipeline examples provided with the application
+
+   +-----------------------+----------------------+----------------+------------------------------------+
+   | Name                  | Table(s)             | Actions        | Messages                           |
+   +=======================+======================+================+====================================+
+   | L2fwd                 | Stub                 | Forward        | 1. Mempool create                  |
+   |                       |                      |                | 2. Link create                     |
+   | Note: Implemented     |                      |                | 3. Pipeline create                 |
+   | using pipeline with   |                      |                | 4. Pipeline port in/out            |
+   | a simple pass-through |                      |                | 5. Pipeline table                  |
+   | connection between    |                      |                | 6. Pipeline port in table          |
+   | input and output      |                      |                | 7. Pipeline enable                 |
+   | ports.                |                      |                | 8. Pipeline table rule add         |
+   +-----------------------+----------------------+----------------+------------------------------------+
+   | Flow classification   | Exact match          | Forward        | 1. Mempool create                  |
+   |                       |                      |                | 2. Link create                     |
+   |                       | * Key = byte array   |                | 3. Pipeline create                 |
+   |                       |    (16 bytes)        |                | 4. Pipeline port in/out            |
+   |                       | * Offset = 278       |                | 5. Pipeline table                  |
+   |                       | * Table size = 64K   |                | 6. Pipeline port in table          |
+   |                       |                      |                | 7. Pipeline enable                 |
+   |                       |                      |                | 8. Pipeline table rule add default |
+   |                       |                      |                | 9. Pipeline table rule add         |
+   +-----------------------+----------------------+----------------+------------------------------------+
+   | KNI                   | Stub                 | Forward        | 1. Mempool create                  |
+   |                       |                      |                | 2. Link create                     |
+   |                       |                      |                | 3. Pipeline create                 |
+   |                       |                      |                | 4. Pipeline port in/out            |
+   |                       |                      |                | 5. Pipeline table                  |
+   |                       |                      |                | 6. Pipeline port in table          |
+   |                       |                      |                | 7. Pipeline enable                 |
+   |                       |                      |                | 8. Pipeline table rule add         |
+   +-----------------------+----------------------+----------------+------------------------------------+
+   | Firewall              | ACL                  | Allow/Drop     | 1. Mempool create                  |
+   |                       |                      |                | 2. Link create                     |
+   |                       | * Key = n-tuple      |                | 3. Pipeline create                 |
+   |                       | * Offset = 270       |                | 4. Pipeline port in/out            |
+   |                       | * Table size = 4K    |                | 5. Pipeline table                  |
+   |                       |                      |                | 6. Pipeline port in table          |
+   |                       |                      |                | 7. Pipeline enable                 |
+   |                       |                      |                | 8. Pipeline table rule add default |
+   |                       |                      |                | 9. Pipeline table rule add         |
+   +-----------------------+----------------------+----------------+------------------------------------+
+   | IP routing            | LPM (IPv4)           | Forward        | 1. Mempool Create                  |
+   |                       |                      |                | 2. Link create                     |
+   |                       | * Key = IP dest addr |                | 3. Pipeline creat                  |
+   |                       | * Offset = 286       |                | 4. Pipeline port in/out            |
+   |                       | * Table size = 4K    |                | 5. Pipeline table                  |
+   |                       |                      |                | 6. Pipeline port in table          |
+   |                       |                      |                | 7. Pipeline enable                 |
+   |                       |                      |                | 8. Pipeline table rule add default |
+   |                       |                      |                | 9. Pipeline table rule add         |
+   +-----------------------+----------------------+----------------+------------------------------------+
+   | Equal-cost multi-path | LPM (IPv4)           | Forward,       | 1. Mempool Create                  |
+   | routing (ECMP)        |                      | load balance,  | 2. Link create                     |
+   |                       | * Key = IP dest addr | encap ether    | 3. Pipeline create                 |
+   |                       | * Offset = 286       |                | 4. Pipeline port in/out            |
+   |                       | * Table size = 4K    |                | 5. Pipeline table (LPM)            |
+   |                       |                      |                | 6. Pipeline table (Array)          |
+   |                       |                      |                | 7. Pipeline port in table (LPM)    |
+   |                       | Array                |                | 8. Pipeline enable                 |
+   |                       |                      |                | 9. Pipeline table rule add default |
+   |                       | * Key = Array index  |                | 10. Pipeline table rule add(LPM)   |
+   |                       | * Offset = 256       |                | 11. Pipeline table rule add(Array) |
+   |                       | * Size = 64K         |                |                                    |
+   |                       |                      |                |                                    |
+   +-----------------------+----------------------+----------------+------------------------------------+
 
-Library of pipeline types
--------------------------
+Command Line Interface (CLI)
+----------------------------
 
-Pipeline module
-~~~~~~~~~~~~~~~
-
-A pipeline is a self-contained module that implements a packet processing function and is typically implemented on
-top of the DPDK Packet Framework *librte_pipeline* library.
-The application provides a run-time mechanism to register different pipeline types.
-
-Depending on the required configuration, each registered pipeline type (pipeline class) is instantiated one or
-several times, with each pipeline instance (pipeline object) assigned to one of the available CPU cores.
-Each CPU core can run one or more pipeline instances, which might be of same or different types.
-For more information of the CPU core threading model, please refer to the :ref:`ip_pipeline_runtime` section.
-
-
-Pipeline type
-^^^^^^^^^^^^^
-
-Each pipeline type is made up of a back-end and a front-end. The back-end represents the packet processing engine
-of the pipeline, typically implemented using the DPDK Packet Framework libraries, which reads packets from the
-input packet queues, handles them and eventually writes them to the output packet queues or drops them.
-The front-end represents the run-time configuration interface of the pipeline, which is exposed as CLI commands.
-The front-end communicates with the back-end through message queues.
-
-.. _table_ip_pipelines_back_end:
-
-.. tabularcolumns:: |p{1cm}|p{2cm}|p{12cm}|
-
-.. table:: Pipeline back-end
-
-   +------------+------------------+--------------------------------------------------------------------+
-   | Field name | Field type       | Description                                                        |
-   +============+==================+====================================================================+
-   | f_init     | Function pointer | Function to initialize the back-end of the current pipeline        |
-   |            |                  | instance. Typical work implemented by this function for the        |
-   |            |                  | current pipeline instance:                                         |
-   |            |                  | Memory allocation;                                                 |
-   |            |                  | Parse the pipeline type specific arguments;                        |
-   |            |                  | Initialize the pipeline input ports, output ports and tables,      |
-   |            |                  | interconnect input ports to tables;                                |
-   |            |                  | Set the message handlers.                                          |
-   +------------+------------------+--------------------------------------------------------------------+
-   | f_free     | Function pointer | Function to free the resources allocated by the back-end of the    |
-   |            |                  | current pipeline instance.                                         |
-   +------------+------------------+--------------------------------------------------------------------+
-   | f_run      | Function pointer | Set to NULL for pipelines implemented using the DPDK library       |
-   |            |                  | librte_pipeline (typical case), and to non-NULL otherwise. This    |
-   |            |                  | mechanism is made available to support quick integration of        |
-   |            |                  | legacy code.                                                       |
-   |            |                  | This function is expected to provide the packet processing         |
-   |            |                  | related code to be called as part of the CPU thread dispatch       |
-   |            |                  | loop, so this function is not allowed to contain an infinite loop. |
-   +------------+------------------+--------------------------------------------------------------------+
-   | f_timer    | Function pointer | Function to read the pipeline input message queues, handle         |
-   |            |                  | the request messages, create response messages and write           |
-   |            |                  | the response queues. The format of request and response            |
-   |            |                  | messages is defined by each pipeline type, with the exception      |
-   |            |                  | of some requests which are mandatory for all pipelines (e.g.       |
-   |            |                  | ping, statistics).                                                 |
-   +------------+------------------+--------------------------------------------------------------------+
+Link
+~~~~
 
+ Link configuration ::
 
-.. _table_ip_pipelines_front_end:
-
-.. tabularcolumns:: |p{1cm}|p{2cm}|p{12cm}|
+   link <link_name>
+    dev <device_name>|port <port_id>
+    rxq <n_queues> <queue_size> <mempool_name>
+    txq <n_queues> <queue_size> promiscuous on | off
+    [rss <qid_0> ... <qid_n>]
 
-.. table:: Pipeline front-end
-
-   +------------+-----------------------+-------------------------------------------------------------------+
-   | Field name | Field type            | Description                                                       |
-   +============+=======================+===================================================================+
-   | f_init     | Function pointer      | Function to initialize the front-end of the current pipeline      |
-   |            |                       | instance.                                                         |
-   +------------+-----------------------+-------------------------------------------------------------------+
-   | f_post_init| Function pointer      | Function to run once after f_init.                                |
-   +------------+-----------------------+-------------------------------------------------------------------+
-   | f_track    | Function pointer      | See section Tracking pipeline output port to physical link.       |
-   +------------+-----------------------+-------------------------------------------------------------------+
-   | f_free     | Function pointer      | Function to free the resources allocated by the front-end of      |
-   |            |                       | the current pipeline instance.                                    |
-   +------------+-----------------------+-------------------------------------------------------------------+
-   | cmds       | Array of CLI commands | Array of CLI commands to be registered to the application CLI     |
-   |            |                       | for the current pipeline type. Even though the CLI is executed    |
-   |            |                       | by a different pipeline (typically, this is the master pipeline), |
-   |            |                       | from modularity perspective is more efficient to keep the         |
-   |            |                       | message client side (part of the front-end) together with the     |
-   |            |                       | message server side (part of the back-end).                       |
-   +------------+-----------------------+-------------------------------------------------------------------+
 
+Mempool
+~~~~~~~
 
-Tracking pipeline output port to physical link
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Each pipeline instance is a standalone block that does not have visibility into the other pipeline instances or
-the application-level pipeline inter-connectivity.
-In some cases, it is useful for a pipeline instance to get application level information related to pipeline
-connectivity, such as to identify the output link (e.g. physical NIC port) where one of its output ports connected,
-either directly or indirectly by traversing other pipeline instances.
+ Mempool create ::
 
-Tracking can be successful or unsuccessful.
-Typically, tracking for a specific pipeline instance is successful when each one of its input ports can be mapped
-to a single output port, meaning that all packets read from the current input port can only go out on a single
-output port.
-Depending on the pipeline type, some exceptions may be allowed: a small portion of the packets, considered exception
-packets, are sent out on an output port that is pre-configured for this purpose.
-
-For pass-through pipeline type, the tracking is always successful.
-For pipeline types as flow classification, firewall or routing, the tracking is only successful when the number of
-output ports for the current pipeline instance is 1.
-
-This feature is used by the IP routing pipeline for adding/removing implicit routes every time a link is brought
-up/down.
+   mempool <mempool_name> buffer <buffer_size>
+   pool <pool_size> cache <cache_size> cpu <cpu_id>
 
 
-Table copies
-^^^^^^^^^^^^
-
-Fast table copy: pipeline table used by pipeline for the packet processing task, updated through messages, table
-data structures are optimized for lookup operation.
-
-Slow table copy: used by the configuration layer, typically updated through CLI commands, kept in sync with the fast
-copy (its update triggers the fast copy update).
-Required for executing advanced table queries without impacting the packet processing task, therefore the slow copy
-is typically organized using different criteria than the fast copy.
-
-Examples:
-
-* Flow classification: Search through current set of flows (e.g. list all flows with a specific source IP address);
-
-* Firewall: List rules in descending order of priority;
-
-* Routing table: List routes sorted by prefix depth and their type (local, remote, default);
-
-* ARP: List entries sorted per output interface.
-
-
-Packet meta-data
-^^^^^^^^^^^^^^^^
-
-Packet meta-data field offsets provided as argument to pipeline instances are essentially defining the data structure
-for the packet meta-data used by the current application use-case.
-It is very useful to put it in the configuration file as a comment in order to facilitate the readability of the
-configuration file.
-
-The reason to use field offsets for defining the data structure for the packet meta-data is due to the C language
-limitation of not being able to define data structures at run-time.
-Feature to consider: have the configuration file parser automatically generate and print the data structure defining
-the packet meta-data for the current application use-case.
-
-Packet meta-data typically contains:
+Software queue
+~~~~~~~~~~~~~~
 
-1. Pure meta-data: intermediate data per packet that is computed internally, passed between different tables of
-   the same pipeline instance (e.g. lookup key for the ARP table is obtained from the routing table), or between
-   different pipeline instances (e.g. flow ID, traffic metering color, etc);
+  Create software queue ::
 
-2. Packet fields: typically, packet header fields that are read directly from the packet, or read from the packet
-   and saved (duplicated) as a working copy at a different location within the packet meta-data (e.g. Diffserv
-   5-tuple, IP destination address, etc).
+   swq <swq_name> size <size> cpu <cpu_id>
 
-Several strategies are used to design the packet meta-data, as described in the next subsections.
 
+Traffic manager
+~~~~~~~~~~~~~~~
 
-Store packet meta-data in a different cache line as the packet headers
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+ Add traffic manager subport profile ::
 
-This approach is able to support protocols with variable header length, like MPLS, where the offset of IP header
-from the start of the packet (and, implicitly, the offset of the IP header in the packet buffer) is not fixed.
-Since the pipelines typically require the specification of a fixed offset to the packet fields (e.g. Diffserv
-5-tuple, used by the flow classification pipeline, or the IP destination address, used by the IP routing pipeline),
-the workaround is to have the packet RX pipeline copy these fields at fixed offsets within the packet meta-data.
+  tmgr subport profile
+   <tb_rate> <tb_size>
+   <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate>
+   <tc_period>
 
-As this approach duplicates some of the packet fields, it requires accessing more cache lines per packet for filling
-in selected packet meta-data fields (on RX), as well as flushing selected packet meta-data fields into the
-packet (on TX).
 
-Example:
+ Add traffic manager pipe profile ::
 
-.. code-block:: ini
+  tmgr pipe profile
+   <tb_rate> <tb_size>
+   <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate>
+   <tc_period>
+   <tc_ov_weight> <wrr_weight0..15>
 
+ Create traffic manager port ::
 
-    ; struct app_pkt_metadata {
-    ;	uint32_t ip_da;
-    ;      uint32_t hash;
-    ;      uint32_t flow_id;
-    ;      uint32_t color;
-    ; } __attribute__((__packed__));
-    ;
+  tmgr <tmgr_name>
+   rate <rate>
+   spp <n_subports_per_port>
+   pps <n_pipes_per_subport>
+   qsize <qsize_tc0>
+   <qsize_tc1> <qsize_tc2> <qsize_tc3>
+   fo <frame_overhead> mtu <mtu> cpu <cpu_id>
 
-    [PIPELINE1]
-    ; Packet meta-data offsets
-    ip_da_offset = 0;   Used by: routing
-    hash_offset = 4;    Used by: RX, flow classification
-    flow_id_offset = 8; Used by: flow classification, flow actions
-    color_offset = 12;  Used by: flow actions, routing
+ Configure traffic manager subport ::
 
+  tmgr <tmgr_name>
+   subport <subport_id>
+   profile <subport_profile_id>
 
-Overlay the packet meta-data in the same cache line with the packet headers
-"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+ Configure traffic manager pipe ::
 
-This approach is minimizing the number of cache line accessed per packet by storing the packet metadata in the
-same cache line with the packet headers.
-To enable this strategy, either some headroom is reserved for meta-data at the beginning of the packet headers
-cache line (e.g. if 16 bytes are needed for meta-data, then the packet headroom can be set to 128+16 bytes, so
-that NIC writes the first byte of the packet at offset 16 from the start of the first packet cache line),
-or meta-data is reusing the space of some packet headers that are discarded from the packet (e.g. input Ethernet
-header).
+  tmgr <tmgr_name>
+   subport <subport_id>
+   pipe from <pipe_id_first> to <pipe_id_last>
+   profile <pipe_profile_id>
 
-Example:
 
-.. code-block:: ini
+Tap
+~~~
 
-    ; struct app_pkt_metadata {
-    ;     uint8_t headroom[RTE_PKTMBUF_HEADROOM]; /* 128 bytes (default) */
-    ;     union {
-    ;         struct {
-    ;             struct ether_hdr ether; /* 14 bytes */
-    ;             struct qinq_hdr qinq; /* 8 bytes */
-    ;         };
-    ;         struct {
-    ;             uint32_t hash;
-    ;             uint32_t flow_id;
-    ;             uint32_t color;
-    ;         };
-    ;     };
-    ;     struct ipv4_hdr ip; /* 20 bytes */
-    ; } __attribute__((__packed__));
-    ;
-    [PIPELINE2]
-    ; Packet meta-data offsets
-    qinq_offset = 142;    Used by: RX, flow classification
-    ip_da_offset = 166;   Used by: routing
-    hash_offset = 128;    Used by: RX, flow classification
-    flow_id_offset = 132; Used by: flow classification, flow actions
-    color_offset = 136;   Used by: flow actions, routing
+ Create tap port ::
 
+  tap <name>
 
-List of pipeline types
-~~~~~~~~~~~~~~~~~~~~~~
 
-.. _table_ip_pipelines_types:
+Kni
+~~~
 
-.. tabularcolumns:: |p{3cm}|p{5cm}|p{4cm}|p{4cm}|
+  Create kni port ::
 
-.. table:: List of pipeline types provided with the application
-
-   +-----------------------+-----------------------------+-----------------------+------------------------------------------+
-   | Name                  | Table(s)                    | Actions               | Messages                                 |
-   +=======================+=============================+=======================+==========================================+
-   | Pass-through          | Passthrough                 | 1. Pkt metadata build | 1. Ping                                  |
-   |                       |                             | 2. Flow hash          | 2. Stats                                 |
-   | Note: depending on    |                             | 3. Pkt checks         |                                          |
-   | port type, can be     |                             | 4. Load balancing     |                                          |
-   | used for RX, TX, IP   |                             |                       |                                          |
-   | fragmentation, IP     |                             |                       |                                          |
-   | reassembly or Traffic |                             |                       |                                          |
-   | Management            |                             |                       |                                          |
-   +-----------------------+-----------------------------+-----------------------+------------------------------------------+
-   | Flow classification   | Exact match                 | 1. Flow ID            | 1. Ping                                  |
-   |                       |                             |                       |                                          |
-   |                       | * Key = byte array          | 2. Flow stats         | 2. Stats                                 |
-   |                       |   (source: pkt metadata)    | 3. Metering           | 3. Flow stats                            |
-   |                       | * Data = action dependent   | 4. Network Address    | 4. Action stats                          |
-   |                       |                             | 5. Translation (NAT)  | 5. Flow add/ update/ delete              |
-   |                       |                             |                       | 6. Default flow add/ update/ delete      |
-   |                       |                             |                       | 7. Action update                         |
-   +-----------------------+-----------------------------+-----------------------+------------------------------------------+
-   | Flow actions          | Array                       | 1. Flow stats         | 1. Ping                                  |
-   |                       |                             |                       |                                          |
-   |                       | * Key = Flow ID             | 2. Metering           | 2. Stats                                 |
-   |                       |   (source: pkt metadata)    | 3. Network Address    | 3. Action stats                          |
-   |                       | * Data = action dependent   | 4. Translation (NAT)  | 4. Action update                         |
-   +-----------------------+-----------------------------+-----------------------+------------------------------------------+
-   | Firewall              | ACL                         | 1. Allow/Drop         | 1. Ping                                  |
-   |                       |                             |                       |                                          |
-   |                       | * Key = n-tuple             |                       | 2. Stats                                 |
-   |                       |   (source: pkt headers)     |                       | 3. Rule add/ update/ delete              |
-   |                       | * Data = none               |                       | 4. Default rule add/ update/ delete      |
-   +-----------------------+-----------------------------+-----------------------+------------------------------------------+
-   | IP routing            | LPM (IPv4 or IPv6,          | 1. TTL decrement and  | 1. Ping                                  |
-   |                       | depending on pipeline type) | 2. IPv4 checksum      | 2. Stats                                 |
-   |                       |                             |                       |                                          |
-   |                       | * Key = IP destination      | 3. update             | 3. Route add/ update/ delete             |
-   |                       |   (source: pkt metadata)    | 4. Header             | 4. Default route add/ update/ delete     |
-   |                       | * Data = Dependent on       | 5. encapsulation      | 5. ARP entry add/ update/ delete         |
-   |                       |   actions and next hop      | 6. (based on next hop | 6. Default ARP entry add/ update/ delete |
-   |                       |   type                      | 7. type)              |                                          |
-   |                       |                             |                       |                                          |
-   |                       | Hash table (for ARP, only   |                       |                                          |
-   |                       |                             |                       |                                          |
-   |                       | when ARP is enabled)        |                       |                                          |
-   |                       |                             |                       |                                          |
-   |                       | * Key = (Port ID,           |                       |                                          |
-   |                       |   next hop IP address)      |                       |                                          |
-   |                       |   (source: pkt meta-data)   |                       |                                          |
-   |                       | * Data: MAC address         |                       |                                          |
-   +-----------------------+-----------------------------+-----------------------+------------------------------------------+
+   kni <kni_name>
+    link <link_name>
+    mempool <mempool_name>
+    [thread <thread_id>]
 
 
+Action profile
+~~~~~~~~~~~~~~
 
-Command Line Interface (CLI)
-----------------------------
+ Create action profile for pipeline input port ::
+
+  port in action profile <profile_name>
+   [filter match | mismatch offset <key_offset> mask <key_mask> key <key_value> port <port_id>]
+   [balance offset <key_offset> mask <key_mask> port <port_id0> ... <port_id15>]
+
+ Create action profile for the pipeline table ::
+
+  table action profile <profile_name>
+   ipv4 | ipv6
+   offset <ip_offset>
+   fwd
+   [balance offset <key_offset> mask <key_mask> outoffset <out_offset>]
+   [meter srtcm | trtcm
+       tc <n_tc>
+       stats none | pkts | bytes | both]
+   [tm spp <n_subports_per_port> pps <n_pipes_per_subport>]
+   [encap ether | vlan | qinq | mpls | pppoe]
+   [nat src | dst
+       proto udp | tcp]
+   [ttl drop | fwd
+       stats none | pkts]
+   [stats pkts | bytes | both]
+   [time]
+
+
+Pipeline
+~~~~~~~~
 
-Global CLI commands
-~~~~~~~~~~~~~~~~~~~
+Create pipeline ::
+
+  pipeline <pipeline_name>
+   period <timer_period_ms>
+   offset_port_id <offset_port_id>
+   cpu <cpu_id>
+
+Create pipeline input port ::
+
+  pipeline <pipeline_name> port in
+   bsz <burst_size>
+   link <link_name> rxq <queue_id>
+   | swq <swq_name>
+   | tmgr <tmgr_name>
+   | tap <tap_name> mempool <mempool_name> mtu <mtu>
+   | kni <kni_name>
+   | source mempool <mempool_name> file <file_name> bpp <n_bytes_per_pkt>
+   [action <port_in_action_profile_name>]
+   [disabled]
+
+Create pipeline output port ::
+
+  pipeline <pipeline_name> port out
+   bsz <burst_size>
+   link <link_name> txq <txq_id>
+   | swq <swq_name>
+   | tmgr <tmgr_name>
+   | tap <tap_name>
+   | kni <kni_name>
+   | sink [file <file_name> pkts <max_n_pkts>]
+
+Create pipeline table ::
+
+  pipeline <pipeline_name> table
+       match
+       acl
+           ipv4 | ipv6
+           offset <ip_header_offset>
+           size <n_rules>
+       | array
+           offset <key_offset>
+           size <n_keys>
+       | hash
+           ext | lru
+           key <key_size>
+           mask <key_mask>
+           offset <key_offset>
+           buckets <n_buckets>
+           size <n_keys>
+       | lpm
+           ipv4 | ipv6
+           offset <ip_header_offset>
+           size <n_rules>
+       | stub
+   [action <table_action_profile_name>]
+
+Connect pipeline input port to table ::
+
+  pipeline <pipeline_name> port in <port_id> table <table_id>
+
+Display statistics for specific pipeline input port, output port
+or table ::
+
+  pipeline <pipeline_name> port in <port_id> stats read [clear]
+  pipeline <pipeline_name> port out <port_id> stats read [clear]
+  pipeline <pipeline_name> table <table_id> stats read [clear]
+
+Enable given input port for specific pipeline instance ::
+
+  pipeline <pipeline_name> port out <port_id> disable
+
+Disable given input port for specific pipeline instance ::
+
+  pipeline <pipeline_name> port out <port_id> disable
+
+Add default rule to table for specific pipeline instance ::
+
+  pipeline <pipeline_name> table <table_id> rule add
+     match
+        default
+     action
+        fwd
+           drop
+           | port <port_id>
+           | meta
+           | table <table_id>
+
+Add rule to table for specific pipeline instance ::
+
+  pipeline <pipeline_name> table <table_id> rule add
+
+  match
+     acl
+        priority <priority>
+        ipv4 | ipv6 <sa> <sa_depth> <da> <da_depth>
+        <sp0> <sp1> <dp0> <dp1> <proto>
+     | array <pos>
+     | hash
+        raw <key>
+        | ipv4_5tuple <sa> <da> <sp> <dp> <proto>
+        | ipv6_5tuple <sa> <da> <sp> <dp> <proto>
+        | ipv4_addr <addr>
+        | ipv6_addr <addr>
+        | qinq <svlan> <cvlan>
+     | lpm
+        ipv4 | ipv6 <addr> <depth>
+
+  action
+     fwd
+        drop
+        | port <port_id>
+        | meta
+        | table <table_id>
+     [balance <out0> ... <out7>]
+     [meter
+        tc0 meter <meter_profile_id> policer g <pa> y <pa> r <pa>
+        [tc1 meter <meter_profile_id> policer g <pa> y <pa> r <pa>
+        tc2 meter <meter_profile_id> policer g <pa> y <pa> r <pa>
+        tc3 meter <meter_profile_id> policer g <pa> y <pa> r <pa>]]
+     [tm subport <subport_id> pipe <pipe_id>]
+     [encap
+        ether <da> <sa>
+        | vlan <da> <sa> <pcp> <dei> <vid>
+        | qinq <da> <sa> <pcp> <dei> <vid> <pcp> <dei> <vid>
+        | mpls unicast | multicast
+           <da> <sa>
+           label0 <label> <tc> <ttl>
+           [label1 <label> <tc> <ttl>
+           [label2 <label> <tc> <ttl>
+           [label3 <label> <tc> <ttl>]]]
+        | pppoe <da> <sa> <session_id>]
+     [nat ipv4 | ipv6 <addr> <port>]
+     [ttl dec | keep]
+     [stats]
+     [time]
+
+  where:
+     <pa> ::= g | y | r | drop
+
+Add bulk rules to table for specific pipeline instance ::
+
+  pipeline <pipeline_name> table <table_id> rule add bulk <file_name> <n_rules>
 
-.. _table_ip_pipelines_cli_commands:
+  Where:
+  - file_name = path to file
+  - File line format = match <match> action <action>
 
-.. tabularcolumns:: |p{3cm}|p{6cm}|p{6cm}|
+Delete table rule for specific pipeline instance ::
 
-.. table:: Global CLI commands
+  pipeline <pipeline_name> table <table_id> rule delete
+     match <match>
 
-   +---------+---------------------------------------+--------------------------------------------+
-   | Command | Description                           | Syntax                                     |
-   +=========+=======================================+============================================+
-   | run     | Run CLI commands script file.         | run <file>                                 |
-   |         |                                       | <file> = path to file with CLI commands to |
-   |         |                                       | execute                                    |
-   +---------+---------------------------------------+--------------------------------------------+
-   | quit    | Gracefully terminate the application. | quit                                       |
-   +---------+---------------------------------------+--------------------------------------------+
+Delete default table rule for specific pipeline instance ::
 
+  pipeline <pipeline_name> table <table_id> rule delete
+     match
+        default
 
-CLI commands for link configuration
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Add meter profile to the table for specific pipeline instance ::
 
-.. _table_ip_pipelines_runtime_config:
+  pipeline <pipeline_name> table <table_id> meter profile <meter_profile_id>
+   add srtcm cir <cir> cbs <cbs> ebs <ebs>
+   | trtcm cir <cir> pir <pir> cbs <cbs> pbs <pbs>
 
-.. tabularcolumns:: |p{3cm}|p{6cm}|p{6cm}|
+Delete meter profile from the table for specific pipeline instance ::
 
-.. table:: List of run-time configuration commands for link configuration
+  pipeline <pipeline_name> table <table_id>
+   meter profile <meter_profile_id> delete
 
-   +-------------+--------------------+--------------------------------------------+
-   | Command     | Description        | Syntax                                     |
-   +=============+====================+============================================+
-   | link config | Link configuration | link <link ID> config <IP address> <depth> |
-   +-------------+--------------------+--------------------------------------------+
-   | link up     | Link up            | link <link ID> up                          |
-   +-------------+--------------------+--------------------------------------------+
-   | link down   | Link down          | link <link ID> down                        |
-   +-------------+--------------------+--------------------------------------------+
-   | link ls     | Link list          | link ls                                    |
-   +-------------+--------------------+--------------------------------------------+
 
+Update the dscp table for meter or traffic manager action for specific
+pipeline instance ::
 
-CLI commands common for all pipeline types
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+   pipeline <pipeline_name> table <table_id> dscp <file_name>
 
-.. _table_ip_pipelines_mandatory:
+   Where:
+      - file_name = path to file
+      - exactly 64 lines
+      - File line format = <tc_id> <tc_queue_id> <color>, with <color> as: g | y | r
+
+
+Pipeline enable/disable
+~~~~~~~~~~~~~~~~~~~~~~~
 
-.. tabularcolumns:: |p{3cm}|p{6cm}|p{6cm}|
+   Enable given pipeline instance for specific data plane thread ::
 
-.. table:: CLI commands mandatory for all pipelines
+    thread <thread_id> pipeline <pipeline_name> enable
 
-   +--------------------+------------------------------------------------------+----------------------------------------------+
-   | Command            | Description                                          | Syntax                                       |
-   +====================+======================================================+==============================================+
-   | ping               | Check whether specific pipeline instance is alive.   | p <pipeline ID> ping                         |
-   |                    | The master pipeline sends a ping request             |                                              |
-   |                    | message to given pipeline instance and waits for     |                                              |
-   |                    | a response message back.                             |                                              |
-   |                    | Timeout message is displayed when the response       |                                              |
-   |                    | message is not received before the timer             |                                              |
-   |                    | expires.                                             |                                              |
-   +--------------------+------------------------------------------------------+----------------------------------------------+
-   | stats              | Display statistics for specific pipeline input port, | p <pipeline ID> stats port in <port in ID>   |
-   |                    | output port or table.                                | p <pipeline ID> stats port out <port out ID> |
-   |                    |                                                      | p <pipeline ID> stats table <table ID>       |
-   +--------------------+------------------------------------------------------+----------------------------------------------+
-   | input port enable  | Enable given input port for specific pipeline        | p <pipeline ID> port in <port ID> enable     |
-   |                    | instance.                                            |                                              |
-   +--------------------+------------------------------------------------------+----------------------------------------------+
-   | input port disable | Disable given input port for specific pipeline       | p <pipeline ID> port in <port ID> disable    |
-   |                    | instance.                                            |                                              |
-   +--------------------+------------------------------------------------------+----------------------------------------------+
 
-Pipeline type specific CLI commands
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+   Disable given pipeline instance for specific data plane thread ::
 
-The pipeline specific CLI commands are part of the pipeline type front-end.
+    thread <thread_id> pipeline <pipeline_name> disable
-- 
2.9.3

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [dpdk-dev] [PATCH v2] doc/ip_pipeline: update sample app user guide
  2018-05-24 11:05 [dpdk-dev] [PATCH] doc/ip_pipeline: update sample app user guide Jasvinder Singh
@ 2018-05-24 11:59 ` Jasvinder Singh
  2018-05-28  1:11   ` Thomas Monjalon
  0 siblings, 1 reply; 3+ messages in thread
From: Jasvinder Singh @ 2018-05-24 11:59 UTC (permalink / raw)
  To: dev; +Cc: cristian.dumitrescu, john.mcnamara, marko.kovacevic

Update sample app user guide with ip pipeline documentation.

Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>

Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
---
v2:
- remove redundant images associated with application

 doc/guides/sample_app_ug/img/ip_pipelines_1.svg |  738 ------------
 doc/guides/sample_app_ug/img/ip_pipelines_2.svg |  997 ----------------
 doc/guides/sample_app_ug/img/ip_pipelines_3.svg |  826 -------------
 doc/guides/sample_app_ug/ip_pipeline.rst        | 1448 +++++++----------------
 4 files changed, 403 insertions(+), 3606 deletions(-)
 delete mode 100644 doc/guides/sample_app_ug/img/ip_pipelines_1.svg
 delete mode 100644 doc/guides/sample_app_ug/img/ip_pipelines_2.svg
 delete mode 100644 doc/guides/sample_app_ug/img/ip_pipelines_3.svg

diff --git a/doc/guides/sample_app_ug/img/ip_pipelines_1.svg b/doc/guides/sample_app_ug/img/ip_pipelines_1.svg
deleted file mode 100644
index a114ed8..0000000
--- a/doc/guides/sample_app_ug/img/ip_pipelines_1.svg
+++ /dev/null
@@ -1,738 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="638.18219"
-   height="273.16391"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="ipPipelines_1_update.svg">
-  <defs
-     id="defs4">
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mend"
-       style="overflow:visible;">
-      <path
-         id="path3887"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
-         transform="scale(0.4) rotate(180) translate(10,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Lstart"
-       style="overflow:visible">
-      <path
-         id="path3878"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
-         transform="scale(0.8) translate(12.5,0)" />
-    </marker>
-    <clipPath
-       id="clipEmfPath1"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect2990"
-         height="213.83858"
-         width="585"
-         y="0"
-         x="0" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath2"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect2993"
-         height="71.379494"
-         width="66.300003"
-         y="118.0161"
-         x="132.75" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath3"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect2996"
-         height="72.879066"
-         width="66.300003"
-         y="19.794313"
-         x="132.3" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath4"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect2999"
-         height="75.428337"
-         width="65.699997"
-         y="56.983631"
-         x="31.200001" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath5"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect3002"
-         height="157.60474"
-         width="168"
-         y="16.795176"
-         x="331.95001" />
-    </clipPath>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="3.959798"
-     inkscape:cx="287.6677"
-     inkscape:cy="153.39982"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1200"
-     inkscape:window-height="1857"
-     inkscape:window-x="-8"
-     inkscape:window-y="-8"
-     inkscape:window-maximized="1"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-82.82706,-337.43917)">
-    <text
-       xml:space="preserve"
-       x="797.93707"
-       y="551.73584"
-       style="font-size:17.86045074px;font-style:normal;font-weight:normal;text-align:start;text-anchor:start;fill:#000000;font-family:Calibri"
-       id="text3006"
-       transform="scale(0.90359163,1.1066946)"> </text>
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath1)"
-       d="m 132.375,113.1425 0,80.97674 66.9,0 0,-80.97674 -66.9,0 z"
-       id="path3008"
-       transform="matrix(1.1694604,0,0,1.4323235,83.010165,320.85569)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01213346;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.03640038,0.01213346;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 237.46665,598.89724 0,-3.43659 0.70167,0 0,3.43659 z m 0,-6.01403 0,-3.43658 0.70167,0 0,3.43658 z m 0,-6.01404 0,-3.43658 0.70167,0 0,3.43658 z m 0,-6.01402 0,-3.43659 0.70167,0 0,3.43659 z m 0,-6.01403 0,-3.4366 0.70167,0 0,3.4366 z m 0,-6.01404 0,-3.43659 0.70167,0 0,3.43659 z m 0,-6.01402 0,-3.43659 0.70167,0 0,3.43659 z m 0,-6.01404 0,-3.43659 0.70167,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70167,0 0,3.43659 z m 0,-6.01402 0,-3.43659 0.70167,0 0,3.43659 z m 0,-6.01404 0,-3.43659 0.70167,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70167,0 0,3.43659 z m 0,-6.01404 0,-3.43659 0.70167,0 0,3.43659 z m 0,-6.01403 0,-3.43658 0.70167,0 0,3.43658 z m 0,-6.01402 0,-3.43659 0.70167,0 0,3.43659 z m 0,-6.01404 0,-3.43659 0.70167,0 0,3.43659 z m 0,-6.01403 0,-3.43658 0.70167,0 0,3.43658 z m 0,-6.01404 0,-3.43658 0.70167,0 0,3.43658 z m 0,-6.01402 0,-3.43659 0.70167,0 0,3.43659 z m 0,-6.01403 0,
--1.7183 c 0,-0.22821 0.16445,-0.42957 0.35084,-0.42957 l 1.40335,0 0,0.85914 -1.40335,0 0.35083,-0.42957 0,1.7183 z m 3.85922,-2.14787 2.8067,0 0,0.85914 -2.8067,0 z m 4.91173,0 2.80671,0 0,0.85914 -2.80671,0 z m 4.91173,0 2.80671,0 0,0.85914 -2.80671,0 z m 4.91174,0 2.8067,0 0,0.85914 -2.8067,0 z m 4.91173,0 2.80671,0 0,0.85914 -2.80671,0 z m 4.91174,0 2.8067,0 0,0.85914 -2.8067,0 z m 4.91173,0 2.8067,0 0,0.85914 -2.8067,0 z m 4.91173,0 2.80671,0 0,0.85914 -2.80671,0 z m 4.91174,0 2.8067,0 0,0.85914 -2.8067,0 z m 4.91173,0 2.8067,0 0,0.85914 -2.8067,0 z m 4.91173,0 2.80671,0 0,0.85914 -2.80671,0 z m 4.91174,0 2.8067,0 0,0.85914 -2.8067,0 z m 4.91173,0 2.80671,0 0,0.85914 -2.80671,0 z m 4.91173,0 2.80671,0 0,0.85914 -2.80671,0 z m 4.91174,0 2.8067,0 0,0.85914 -2.8067,0 z m 4.91173,0 1.05252,0 c 0.19734,0 0.35083,0.20136 0.35083,
-0.42957 l 0,2.14787 -0.70167,0 0,-2.14787 0.35084,0.42957 -1.05252,0 z m 1.40335,5.15488 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01404 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01402 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01404 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01403 0,3.43658 -0.70167,0 0,-3.43658 z m 0,6.01403 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01404 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01403 0,3.43658 -0.70167,0 0,-3.43658 z m 0,6.01402 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01404 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01402 0,3.43661 -0.70167,0 0,-3.43661 z m 0,6.01404 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01404 0,3.43659 -0.70167,
-0 0,-3.43659 z m 0,6.01402 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01403 0,3.00702 c 0,0.24163 -0.15349,0.42958 -0.35083,0.42958 l -0.35084,0 0,-0.85915 0.35084,0 -0.35084,0.42957 0,-3.00702 z m -2.8067,3.4366 -2.80671,0 0,-0.85915 2.80671,0 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 z m -4.91173,0 -2.8067,0 0,-0.85915 2.8067,0 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 z m -4.91174,0 -2.10502,0 0,-0.85915 2.10502,0 z"
-       id="path3010" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath2)"
-       d="m 131.925,14.920714 0,82.626267 66.9,0 0,-82.626267 -66.9,0 z"
-       id="path3012"
-       transform="matrix(1.1694604,0,0,1.4323235,83.010165,320.85569)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01213346;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.04853384,0.01213346;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 236.94039,460.57452 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01404 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01404 0,-3.43658 0.70168,0 0,3.43658 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,
-0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 1.92961,-4.51052 2.8067,0 0,0.85914 -2.8067,0 z m 4.91173,0 2.80671,0 0,0.85914 -2.80671,0 z m 4.91174,0 2.8067,0 0,0.85914 -2.8067,0 z m 4.91173,0 2.80671,0 0,0.85914 -2.80671,0 z m 4.91173,0 2.80671,0 0,0.85914 -2.80671,0 z m 4.91174,0 2.8067,0 0,0.85914 -2.8067,0 z m 4.91173,0 2.80671,0 0,0.85914 -2.80671,0 z m 4.91174,0 2.8067,0 0,0.85914 -2.8067,0 z m 4.91173,0 2.8067,0 0,0.85914 -2.8067,0 z m 4.91173,0 2.80671,0 0,0.85914 -2.80671,0 z m 4.91174,0 2.8067,0 0,0.85914 -2.8067,0 z m 4.91173,0 2.80671,0 0,0.85914 -2.80671,0 z m 4.91173,0 2.80671,0 0,0.85914 -2.80671,0 z m 4.91174,0 2.8067,0 0,0.85914 -2.8067,0 z m 4.91173,0 2.80671,0 0,0.85914 -2.80671,0 z m 4.91174,0 2.8067,0 0,0.85914 -2.8067,0 z m 3.33296,2.79222 0,
-3.43659 -0.70168,0 0,-3.43659 z m 0,6.01404 0,3.43658 -0.70168,0 0,-3.43658 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 z m 0,6.01404 0,3.43659 -0.70168,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 z m 0,6.01404 0,3.43658 -0.70168,0 0,-3.43658 z m 0,6.01403 0,3.43659 -0.70168,
-0 0,-3.43659 z m 0,6.01403 0,1.71829 c 0,0.24164 -0.15349,0.42958 -0.35084,0.42958 l -1.40335,0 0,-0.85915 1.40335,0 -0.35084,0.42957 0,-1.71829 z m -3.85922,2.14787 -2.80671,0 0,-0.85915 2.80671,0 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 z m -4.91173,0 -2.8067,0 0,-0.85915 2.8067,0 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 z m -4.91173,0 -2.8067,0 0,-0.85915 2.8067,0 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 z m -4.91173,0 -2.8067,0 0,-0.85915 2.8067,0 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 z m -4.91174,0 -1.05251,0 0,-0.85915 1.05251,0 z"
-       id="path3014" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath3)"
-       d="m 30.825,52.110032 0,85.025578 66.3,0 0,-85.025578 -66.3,0 z"
-       id="path3016"
-       transform="matrix(1.1694604,0,0,1.4323235,83.010165,320.85569)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01213346;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.03640038,0.01213346;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 118.70794,517.27825 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.4366 0.70168,0 0,3.4366 z m 0,-6.01404 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01402 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01404 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.4366 0.70168,0 0,3.4366 z m 0,-6.01404 0,-3.43658 0.70168,0 0,3.43658 z m 0,-6.01402 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01404 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01404 0,-3.43659 0.70168,
-0 0,3.43659 z m 0,-6.01403 0,-3.43658 0.70168,0 0,3.43658 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 z m 0,-6.01403 0,-1.50351 c 0,-0.22821 0.16446,-0.42957 0.35084,-0.42957 l 1.57877,0 0,0.85915 -1.57877,0 0.35084,-0.42958 0,1.50351 z m 4.03464,-1.93308 2.80671,0 0,0.85915 -2.80671,0 z m 4.91174,0 2.8067,0 0,0.85915 -2.8067,0 z m 4.91173,0 2.8067,0 0,0.85915 -2.8067,0 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 z m 4.91174,0 2.8067,0 0,0.85915 -2.8067,0 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 z m 4.91174,0 2.8067,0 0,0.85915 -2.8067,0 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 z m 4.91174,0 2.8067,0 0,0.85915 -2.8067,0 z m 4.91173,0 2.8067,0 0,0.85915 -2.8067,0 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 z m 4.91174,0 2.8067,0 0,0.85915 -2.8067,0 z m 4.91173,0 2.8067,
-0 0,0.85915 -2.8067,0 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 z m 4.91174,0 0.17542,0 c 0.19734,0 0.35083,0.20136 0.35083,0.42957 l 0,3.22181 -0.70167,0 0,-3.22181 0.35084,0.42958 -0.17542,0 z m 0.52625,6.22882 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01404 0,3.43658 -0.70167,0 0,-3.43658 z m 0,6.01403 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01404 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01402 0,3.43659 -0.70167,
-0 0,-3.43659 z m 0,6.01403 0,3.4366 -0.70167,0 0,-3.4366 z m 0,6.01404 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01402 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01404 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01403 0,3.43659 -0.70167,0 0,-3.43659 z m 0,6.01403 0,1.7183 c 0,0.24163 -0.15349,0.42957 -0.35083,0.42957 l -1.40336,0 0,-0.85914 1.40336,0 -0.35084,0.42957 0,-1.7183 z m -3.85921,2.14787 -2.80671,0 0,-0.85914 2.80671,0 z m -4.91174,0 -2.8067,0 0,-0.85914 2.8067,0 z m -4.91173,0 -2.80671,0 0,-0.85914 2.80671,0 z m -4.91174,0 -2.8067,0 0,-0.85914 2.8067,0 z m -4.91173,0 -2.8067,0 0,-0.85914 2.8067,0 z m -4.91173,0 -2.80671,0 0,-0.85914 2.80671,0 z m -4.91174,0 -2.8067,0 0,-0.85914 2.8067,0 z m -4.91173,0 -2.80671,0 0,-0.85914 2.80671,0 z m -4.91173,0 -2.80671,0 0,-0.85914 2.80671,0 z m -4.91174,0 -2.8067,0 0,-0.85914 2.8067,
-0 z m -4.91173,0 -2.80671,0 0,-0.85914 2.80671,0 z m -4.91174,0 -2.8067,0 0,-0.85914 2.8067,0 z m -4.91173,0 -2.8067,0 0,-0.85914 2.8067,0 z m -4.91173,0 -2.80671,0 0,-0.85914 2.80671,0 z m -4.91174,0 -2.8067,0 0,-0.85914 2.8067,0 z m -4.91173,0 -0.35084,0 0,-0.85914 0.35084,0 z"
-       id="path3018" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       clip-path="url(#clipEmfPath4)"
-       d="m 15.225,83.001159 3.253125,0 c 0.35625,0 0.646875,0.299914 0.646875,0.656061 l 0,16.73894 -3.9,0 z"
-       id="path3020"
-       transform="matrix(1.1694604,0,0,1.4323235,83.010165,320.85569)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 105.3761,439.52541 3.8044,0 c 0.41662,0 0.75649,0.42958 0.75649,0.9397 l 0,24.19036 -4.56089,0 z"
-       id="path3022" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 109.93699,439.7402 3.66187,0 c 0.40566,0 0.72361,0.40273 0.72361,0.89942 l 0,24.01585 -4.38548,0 z"
-       id="path3024" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 130.46102,435.44446 0,75.17539 60.695,0 0,-75.17539 -60.695,0 z"
-       id="path3026" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.77654135px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 130.46102,435.44446 60.695,0 0,75.17539 -60.695,0 z"
-       id="path3028" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 100.8152,483.12714 3.8044,0 c 0.41662,0 0.7565,0.42957 0.7565,0.93969 l 0,23.97558 -4.5609,0 z"
-       id="path3030" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 105.3761,482.91235 3.8044,0 c 0.41662,0 0.75649,0.42957 0.75649,0.93969 l 0,24.19037 -4.56089,0 z"
-       id="path3032" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 109.93699,483.12714 3.66187,0 c 0.40566,0 0.72361,0.40273 0.72361,0.89942 l 0,24.01585 -4.38548,0 z"
-       id="path3034" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 216.06552,512.55294 3.66187,0 c 0.40566,0 0.72361,0.40273 0.72361,0.89941 l 0,24.23065 -4.38548,0 z"
-       id="path3036" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 220.451,512.55294 3.80439,0 c 0.41662,0 0.7565,0.42957 0.7565,0.93969 l 0,23.97558 -4.56089,0 z"
-       id="path3038" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 225.01189,512.55294 3.8044,0 c 0.41662,0 0.7565,0.42957 0.7565,0.93969 l 0,24.19037 -4.5609,0 z"
-       id="path3040" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 248.86889,377.88159 0,75.17539 60.51957,0 0,-75.17539 -60.51957,0 z"
-       id="path3042" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.77654135px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 248.86889,377.88159 60.51957,0 0,75.17539 -60.51957,0 z"
-       id="path3044" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 249.57056,488.06724 0,75.17539 60.695,0 0,-75.17539 -60.695,0 z"
-       id="path3046" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.77654135px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 249.57056,488.06724 60.695,0 0,75.17539 -60.695,0 z"
-       id="path3048" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 216.06552,404.30037 3.66187,0 c 0.40566,0 0.72361,0.40273 0.72361,0.89942 l 0,24.01586 -4.38548,0 z"
-       id="path3050" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 220.451,404.30037 3.80439,0 c 0.41662,0 0.7565,0.42958 0.7565,0.9397 l 0,23.97558 -4.56089,0 z"
-       id="path3052" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 225.01189,404.30037 3.8044,0 c 0.41662,0 0.7565,0.42958 0.7565,0.9397 l 0,23.97558 -4.5609,0 z"
-       id="path3054" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01213346;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.01213346,0.01213346;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 114.36632,451.31184 9.51649,0.57724 -0.0768,1.78542 -9.51648,-0.57724 0.0768,-1.78542 z m 9.48359,1.47666 -2.70803,-5.54418 8.54072,5.89321 -8.97926,4.8327 3.14657,-5.18173 z"
-       id="path3056" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01213346;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.01213346,0.01213346;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 115.24342,495.34314 9.51648,0.56382 -0.0768,1.78541 -9.51648,-0.56381 0.0768,-1.78542 z m 9.48359,1.46324 -2.70803,-5.54418 8.54071,5.89321 -8.9683,4.8327 3.13562,-5.18173 z"
-       id="path3058" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01213346;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.01213346,0.01213346;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 191.15602,445.78108 12.2574,0 0,-28.37871 -0.73457,0.89942 5.66823,0 0,-1.78542 -6.40279,0 0,28.36529 0.73456,-0.886 -11.52283,0 0,1.78542 z m 17.19106,-28.37871 -2.91634,5.36967 8.77095,-5.36967 -8.77095,-5.36967 2.91634,5.36967 z"
-       id="path3060" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01213346;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.01213346,0.01213346;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 192.03311,499.85366 11.87367,0 0,23.8145 -0.73456,-0.89943 5.2845,0 0,1.78542 -6.01906,0 0,-23.81448 0.73456,0.89941 -11.13911,0 0,-1.78542 z m 16.42361,23.8145 -2.91634,-5.36968 8.77095,5.36968 -8.77095,5.36966 2.91634,-5.36966 z"
-       id="path3062" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01213346;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.01213346,0.01213346;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 82.96631,451.31184 9.516484,0.57724 -0.07675,1.78542 -9.516484,-0.57724 0.07675,-1.78542 z m 9.483593,1.47666 -2.708032,-5.54418 8.540716,5.89321 -8.979263,4.8327 3.146579,-5.18173 z"
-       id="path3064" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01213346;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.01213346,0.01213346;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 83.667986,494.48399 9.516484,0.57724 -0.07675,1.78542 -9.516484,-0.57724 0.07675,-1.78542 z m 9.483593,1.47666 -2.708031,-5.54418 8.540715,5.89321 -8.979263,4.83271 3.146579,-5.18174 z"
-       id="path3066" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01213346px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 230.28542,414.58329 12.57536,0.0268 0,1.78542 -12.58631,-0.0268 0.0105,-1.78542 z m 12.57536,0.92627 -2.91634,-5.38309 8.75999,5.39651 -8.77096,5.34283 2.92731,-5.35625 z"
-       id="path3068" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01213346;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.01213346,0.01213346;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 229.59472,524.12458 14.12123,0.36245 -0.0329,1.78542 -14.12123,-0.36246 0.0329,-1.78541 z m 14.0993,1.24844 -2.82863,-5.43678 8.67228,5.58446 -8.85866,5.15487 3.01501,-5.30255 z"
-       id="path3070" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01213346;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.01213346,0.01213346;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 310.27652,412.865 12.57535,0.0268 0,1.78541 -12.58631,-0.0269 0.0105,-1.78542 z m 12.57535,0.92627 -2.91634,-5.3831 8.75999,5.39652 -8.77096,5.34282 2.92731,-5.35624 z"
-       id="path3072" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01213346;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.01213346,0.01213346;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 310.97819,524.55415 12.57536,0.0268 0,1.78542 -12.58632,-0.0268 0.0105,-1.78542 z m 12.57536,0.92627 -2.91634,-5.3831 8.75998,5.39652 -8.77095,5.34282 2.92731,-5.35624 z"
-       id="path3074" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 329.38623,401.50814 3.8044,0 c 0.41662,0 0.7565,0.42958 0.7565,0.9397 l 0,24.19036 -4.5609,0 z"
-       id="path3076" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 333.94713,401.50814 3.8044,0 c 0.41662,0 0.7565,0.42958 0.7565,0.9397 l 0,23.97558 -4.5609,0 z"
-       id="path3078" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 338.50803,401.50814 3.8044,0 c 0.41661,0 0.75649,0.42958 0.75649,0.9397 l 0,24.19036 -4.56089,0 z"
-       id="path3080" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 330.78959,512.55294 3.66187,0 c 0.40566,0 0.7236,0.40273 0.7236,0.89941 l 0,24.23065 -4.38547,0 z"
-       id="path3082" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 335.17506,512.55294 3.8044,0 c 0.41663,0 0.7565,0.42957 0.7565,0.93969 l 0,24.19037 -4.5609,0 z"
-       id="path3084" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 339.73596,512.55294 3.80439,0 c 0.41664,0 0.7565,0.42957 0.7565,0.93969 l 0,24.19037 -4.56089,0 z"
-       id="path3086" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.012;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.012,0.012;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 343.95699,412.865 12.57534,0.0268 0,1.78541 -12.58631,-0.0269 0.0105,-1.78542 z m 12.57534,0.92627 -2.91634,-5.3831 8.75999,5.39652 -8.77096,5.34282 2.92731,-5.35624 z"
-       id="path3088" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01213346;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.01213346,0.01213346;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 344.30781,524.76894 12.57536,0.0268 0,1.78542 -12.58632,-0.0268 0.0105,-1.7854 z m 12.57536,0.92627 -2.91634,-5.3831 8.75998,5.39652 -8.77095,5.34283 2.92731,-5.35625 z"
-       id="path3090" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.02426692;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.09706768,0.02426692;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 470.42316,577.41856 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01404 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43658 0.70168,0 0,3.43658 -0.70168,0 z m 0,-6.01402 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01404 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43658 0.70168,0 0,3.43658 -0.70168,0 z m 0,-6.01402 0,-3.4366 0.70168,0 0,3.4366 -0.70168,0 z m 0,-6.01404 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01404 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01402 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.4366 0.70168,0 0,3.4366 -0.70168,0 z m 0,-6.01404 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01402 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01404 0,-3.43659 0.70168,
-0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.4366 0.70168,0 0,3.4366 -0.70168,0 z m 0,-6.01404 0,-3.43658 0.70168,0 0,3.43658 -0.70168,0 z m 0,-6.01402 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01404 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01404 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43658 0.70168,0 0,3.43658 -0.70168,0 z m 0,-6.01403 0,
--3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01404 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 0,-6.01403 0,-3.43659 0.70168,0 0,3.43659 -0.70168,0 z m 1.22793,-5.36967 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91174,0 2.8067,0 0,0.85915 -2.8067,0 0,-0.85915 z m 4.91173,0 2.8067,0 0,0.85915 -2.8067,0 0,-0.85915 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91174,
-0 2.8067,0 0,0.85915 -2.8067,0 0,-0.85915 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91174,0 2.8067,0 0,0.85915 -2.8067,0 0,-0.85915 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91174,0 2.8067,0 0,0.85915 -2.8067,0 0,-0.85915 z m 4.91173,0 2.8067,0 0,0.85915 -2.8067,0 0,-0.85915 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91174,0 2.8067,0 0,0.85915 -2.8067,0 0,-0.85915 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91174,0 2.8067,0 0,0.85915 -2.8067,0 0,-0.85915 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91174,0 2.8067,0 0,0.85915 -2.8067,0 0,-0.85915 z m 4.91173,0 2.80671,0 0,
-0.85915 -2.80671,0 0,-0.85915 z m 4.91174,0 2.8067,0 0,0.85915 -2.8067,0 0,-0.85915 z m 4.91173,0 2.8067,0 0,0.85915 -2.8067,0 0,-0.85915 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91174,0 2.8067,0 0,0.85915 -2.8067,0 0,-0.85915 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91174,0 2.8067,0 0,0.85915 -2.8067,0 0,-0.85915 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91174,0 2.8067,0 0,0.85915 -2.8067,0 0,-0.85915 z m 4.91173,0 2.8067,0 0,0.85915 -2.8067,0 0,-0.85915 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91174,0 2.8067,0 0,0.85915 -2.8067,0 0,-0.85915 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91174,0 2.8067,0 0,0.85915 -2.8067,
-0 0,-0.85915 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91174,0 2.8067,0 0,0.85915 -2.8067,0 0,-0.85915 z m 4.91173,0 2.80671,0 0,0.85915 -2.80671,0 0,-0.85915 z m 4.91174,0 2.8067,0 0,0.85915 -2.8067,0 0,-0.85915 z m 5.08715,0.64436 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01404 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,
--3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01404 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01404 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01402 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01404 0,3.43659 -0.70168,
-0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01404 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01402 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01404 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43658 -0.70168,0 0,-3.43658 0.70168,0 z m 0,6.01402 0,3.4366 -0.70168,0 0,-3.4366 0.70168,0 z m 0,6.01404 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.43658 -0.70168,0 0,-3.43658 0.70168,0 z m 0,6.01404 0,3.43658 -0.70168,0 0,-3.43658 0.70168,0 z m 0,6.01402 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01403 0,3.4366 -0.70168,0 0,-3.4366 0.70168,0 z m 0,6.01404 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01402 0,3.43659 -0.70168,0 0,-3.43659 0.70168,0 z m 0,6.01404 0,3.43659 -0.70168,
-0 0,-3.43659 0.70168,0 z m -1.40335,5.15488 -2.80671,0 0,-0.85915 2.80671,0 0,0.85915 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 0,0.85915 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 0,0.85915 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 0,0.85915 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 0,0.85915 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 0,0.85915 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 0,0.85915 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 0,0.85915 z m -4.91174,0 -2.8067,
-0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 0,0.85915 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 0,0.85915 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 0,0.85915 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 0,0.85915 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 0,0.85915 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 0,0.85915 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.80671,
-0 0,-0.85915 2.80671,0 0,0.85915 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 0,0.85915 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 0,0.85915 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 0,0.85915 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z m -4.91173,0 -2.80671,0 0,-0.85915 2.80671,0 0,0.85915 z m -4.91174,0 -2.8067,0 0,-0.85915 2.8067,0 0,0.85915 z"
-       id="path3094" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       clip-path="url(#clipEmfPath5)"
-       d="m 315.975,85.250513 3.2625,0 c 0.35625,0 0.6375,0.299914 0.6375,0.656061 l 0,16.738946 -3.9,0 z"
-       id="path3096"
-       transform="matrix(1.1694604,0,0,1.4323235,83.010165,320.85569)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 457.09131,442.74722 3.81537,0 c 0.41662,0 0.74553,0.42957 0.74553,0.93969 l 0,24.19037 -4.5609,0 z"
-       id="path3098" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 461.65221,442.962 3.66187,0 c 0.41662,0 0.7236,0.40273 0.7236,0.91285 l 0,24.00243 -4.38547,0 z"
-       id="path3100" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 482.17624,438.66627 0,75.17539 60.69499,0 0,-75.17539 -60.69499,0 z"
-       id="path3102" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.77654135px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 482.17624,438.66627 60.69499,0 0,75.17539 -60.69499,0 z"
-       id="path3104" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 452.53041,486.34894 3.81537,0 c 0.41662,0 0.74553,0.42958 0.74553,0.93969 l 0,23.97559 -4.5609,0 z"
-       id="path3106" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 457.09131,486.13415 3.81537,0 c 0.41662,0 0.74553,0.42958 0.74553,0.9397 l 0,24.19037 -4.5609,0 z"
-       id="path3108" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 461.65221,486.34894 3.66187,0 c 0.41662,0 0.7236,0.40273 0.7236,0.91285 l 0,24.00243 -4.38547,0 z"
-       id="path3110" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 567.78074,515.77474 3.66187,0 c 0.41662,0 0.7236,0.40272 0.7236,0.91285 l 0,24.21721 -4.38547,0 z"
-       id="path3112" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 572.16621,515.77474 3.81537,0 c 0.41662,0 0.74553,0.42957 0.74553,0.93969 l 0,23.97557 -4.5609,0 z"
-       id="path3114" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 576.72711,515.77474 3.81536,0 c 0.41662,0 0.74553,0.42957 0.74553,0.93969 l 0,24.19037 -4.56089,0 z"
-       id="path3116" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 600.5841,381.1034 0,75.17539 60.51958,0 0,-75.17539 -60.51958,0 z"
-       id="path3118" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.77654135px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 600.5841,381.1034 60.51958,0 0,75.17539 -60.51958,0 z"
-       id="path3120" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 601.28578,491.28904 0,75.1754 60.69499,0 0,-75.1754 -60.69499,0 z"
-       id="path3122" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.77654135px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 601.28578,491.28904 60.69499,0 0,75.1754 -60.69499,0 z"
-       id="path3124" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 567.78074,407.52218 3.66187,0 c 0.41662,0 0.7236,0.40272 0.7236,0.91284 l 0,24.00243 -4.38547,0 z"
-       id="path3126" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 572.16621,407.52218 3.81537,0 c 0.41662,0 0.74553,0.42957 0.74553,0.93969 l 0,23.97558 -4.5609,0 z"
-       id="path3128" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 576.72711,407.52218 3.81536,0 c 0.41662,0 0.74553,0.42957 0.74553,0.93969 l 0,23.97558 -4.56089,0 z"
-       id="path3130" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.02426692;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.02426692,0.02426692;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 466.08154,454.53364 9.51648,0.59067 -0.0657,1.77199 -9.51649,-0.56382 0.0657,-1.79884 z m 9.49455,1.47666 -2.71899,-5.53076 8.55168,5.87979 -8.99023,4.83271 3.15754,-5.18174 z"
-       id="path3132" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.02426692;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.02426692,0.02426692;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 466.95863,498.56494 9.51649,0.56382 -0.0657,1.79884 -9.51648,-0.56382 0.0657,-1.79884 z m 9.47263,1.47667 -2.69707,-5.55762 8.55168,5.90665 -8.9683,4.8327 3.11369,-5.18173 z"
-       id="path3134" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.02426692;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.02426692,0.02426692;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 542.87123,449.00288 12.25741,0 0,-28.37871 -0.72361,0.91285 5.65727,0 0,-1.79884 -6.4028,0 0,28.37871 0.74553,-0.886 -11.5338,0 0,1.77199 z m 17.19107,-28.37871 -2.91634,5.36967 8.77095,-5.36967 -8.77095,-5.36967 2.91634,5.36967 z"
-       id="path3136" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.02426692;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.02426692,0.02426692;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 543.74833,503.07547 11.88464,0 0,23.81448 -0.74553,-0.88599 5.2845,0 0,1.77199 -6.00811,0 0,-23.81449 0.72361,0.91285 -11.13911,0 0,-1.79884 z m 16.42361,23.81448 -2.91635,-5.36966 8.77096,5.36966 -8.77096,5.36967 2.91635,-5.36967 z"
-       id="path3138" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.02426692;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.02426692,0.02426692;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 434.68153,454.53364 9.51648,0.59067 -0.0658,1.77199 -9.51649,-0.56382 0.0657,-1.79884 z m 9.49455,1.47666 -2.71899,-5.53076 8.55168,5.87979 -8.99023,4.83271 3.15754,-5.18174 z"
-       id="path3140" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.02426692;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.02426692,0.02426692;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 435.3832,497.70579 9.51649,0.59068 -0.0657,1.77198 -9.51648,-0.56382 0.0657,-1.79884 z m 9.49456,1.47667 -2.719,-5.53076 8.55168,5.87979 -8.99022,4.8327 3.15754,-5.18173 z"
-       id="path3142" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.02426692;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.02426692,0.02426692;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 582.01161,417.8051 12.56439,0.0268 0,1.79884 -12.58632,-0.0269 0.022,-1.79884 z m 12.56439,0.93969 -2.91634,-5.39652 8.77095,5.39652 -8.77095,5.34282 2.91634,-5.34282 z"
-       id="path3144" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.02426692;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.02426692,0.02426692;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 581.30993,527.34638 14.12124,0.37587 -0.022,1.772 -14.12123,-0.34903 0.022,-1.79884 z m 14.09931,1.26188 -2.82863,-5.45022 8.68324,5.58445 -8.85866,5.15489 3.00405,-5.28912 z"
-       id="path3146" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.02426692;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.02426692,0.02426692;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 662.0027,416.0868 12.56439,0.0269 0,1.79884 -12.58632,-0.0269 0.022,-1.79884 z m 12.56439,0.93969 -2.91634,-5.39652 8.77095,5.39652 -8.77095,5.34282 2.91634,-5.34282 z"
-       id="path3148" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.02426692;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.02426692,0.02426692;stroke-miterlimit:4;stroke-dashoffset:0;marker-mid:none"
-       d="m 662.70438,527.77595 12.56439,0.0268 0,1.79884 -12.58632,-0.0268 0.022,-1.79884 z m 12.56439,0.9397 -2.91635,-5.39652 8.77096,5.39652 -8.77096,5.34281 2.91635,-5.34281 z"
-       id="path3150" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 681.10145,404.72995 3.81536,0 c 0.41662,0 0.74554,0.42957 0.74554,0.93969 l 0,24.19037 -4.5609,0 z"
-       id="path3152" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 685.66235,404.72995 3.81536,0 c 0.41662,0 0.74553,0.42957 0.74553,0.93969 l 0,23.97558 -4.56089,0 z"
-       id="path3154" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 690.22324,404.72995 3.81537,0 c 0.41662,0 0.74553,0.42957 0.74553,0.93969 l 0,24.19037 -4.5609,0 z"
-       id="path3156" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 682.5048,515.77474 3.66188,0 c 0.41662,0 0.7236,0.40272 0.7236,0.91285 l 0,24.21721 -4.38548,0 z"
-       id="path3158" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 686.89028,515.77474 3.81536,0 c 0.41662,0 0.74553,0.42957 0.74553,0.93969 l 0,24.19037 -4.56089,0 z"
-       id="path3160" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 691.45117,515.77474 3.81537,0 c 0.41662,0 0.74553,0.42957 0.74553,0.93969 l 0,24.19037 -4.5609,0 z"
-       id="path3162" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.02426692px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 695.68316,416.0868 12.56439,0.0269 0,1.79884 -12.58632,-0.0269 0.0219,-1.79884 z m 12.56439,0.93969 -2.91634,-5.39652 8.77095,5.39652 -8.77095,5.34282 2.91634,-5.34282 z"
-       id="path3164" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.02426692px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 696.034,527.99074 12.56439,0.0269 0,1.79882 -12.58632,-0.0268 0.022,-1.79884 z m 12.56439,0.93969 -2.91634,-5.39652 8.77095,5.39652 -8.77095,5.34282 2.91634,-5.34282 z"
-       id="path3166" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 374.1181,472.44149 42.53912,0 0,-3.49028 5.70112,6.98057 -5.70112,6.98057 0,-3.49028 -42.53912,0 z"
-       id="path3168" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.5530827px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 374.1181,472.44149 42.53912,0 0,-3.49028 5.70112,6.98057 -5.70112,6.98057 0,-3.49028 -42.53912,0 z"
-       id="path3170" />
-  </g>
-  <g
-     inkscape:groupmode="layer"
-     id="layer2"
-     inkscape:label="blocks"
-     transform="translate(-82.82706,-337.43917)">
-    <rect
-       style="fill:none;stroke:#000000;stroke-width:0;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0,0;stroke-dashoffset:0;stroke-linejoin:miter"
-       id="rect4431"
-       width="61.07143"
-       height="75.714287"
-       x="247.14285"
-       y="377.00504" />
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="129.47055"
-       y="417.48993"
-       id="text4458-5-6"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4460-7-1"
-         x="129.47055"
-         y="417.48993"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">CPU Core 1</tspan><tspan
-         sodipodi:role="line"
-         x="129.47055"
-         y="431.23993"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668" /></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="248.86055"
-       y="358.53632"
-       id="text4458-5-6-8-7"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4460-7-1-9-9"
-         x="248.86055"
-         y="358.53632"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">CPU Core 2</tspan><tspan
-         sodipodi:role="line"
-         x="248.86055"
-         y="372.28632"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5" /></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="249.61816"
-       y="589.6087"
-       id="text4458-5-6-8-4"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="249.61816"
-         y="589.6087"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-1">CPU Core 3</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-       x="145.96704"
-       y="472.28207"
-       id="text4731"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4733"
-         x="145.96704"
-         y="472.28207" /></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="154.6613"
-       y="476.98529"
-       id="text4458-5-6-4"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="154.6613"
-         y="476.98529"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-1">P1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="272.26172"
-       y="419.42242"
-       id="text4458-5-6-4-3"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="272.26172"
-         y="419.42242"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-1-8">P2</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="273.77084"
-       y="529.60803"
-       id="text4458-5-6-4-7"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="273.77084"
-         y="529.60803"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-1-4">P3</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="547.64105"
-       y="361.29749"
-       id="text4458-5-6-3"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4460-7-1-1"
-         x="547.64105"
-         y="361.29749"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">CPU Core 1</tspan><tspan
-         sodipodi:role="line"
-         x="547.64105"
-         y="375.04749"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-9" /></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="506.37653"
-       y="480.20709"
-       id="text4458-5-6-4-8"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="506.37653"
-         y="480.20709"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-1-6">P1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="623.97693"
-       y="422.64423"
-       id="text4458-5-6-4-3-0"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="623.97693"
-         y="422.64423"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-1-8-2">P2</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="624.72607"
-       y="532.76007"
-       id="text4458-5-6-4-7-4"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="624.72607"
-         y="532.76007"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-1-4-8">P3</tspan></text>
-  </g>
-</svg>
diff --git a/doc/guides/sample_app_ug/img/ip_pipelines_2.svg b/doc/guides/sample_app_ug/img/ip_pipelines_2.svg
deleted file mode 100644
index 5252b17..0000000
--- a/doc/guides/sample_app_ug/img/ip_pipelines_2.svg
+++ /dev/null
@@ -1,997 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="520.43439"
-   height="438.61716"
-   id="svg5382"
-   version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="ipPipelines_2_update.svg">
-  <defs
-     id="defs5384">
-    <marker
-       inkscape:stockid="Arrow1Lstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Lstart"
-       style="overflow:visible">
-      <path
-         id="path4018"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
-         transform="scale(0.8) translate(12.5,0)" />
-    </marker>
-    <clipPath
-       id="clipEmfPath1"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect5395"
-         height="465.83859"
-         width="585"
-         y="0"
-         x="0" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath2"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect5398"
-         height="0"
-         width="37.650002"
-         y="202.92325"
-         x="120.9" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath3"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect5401"
-         height="186.87537"
-         width="391.64999"
-         y="247.76733"
-         x="49.650002" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath4"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect5404"
-         height="93.137718"
-         width="142.64999"
-         y="280.01309"
-         x="72.150002" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath5"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect5407"
-         height="13.648201"
-         width="45.900002"
-         y="308.50934"
-         x="76.650002" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath6"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect5410"
-         height="13.648201"
-         width="83.400002"
-         y="308.50934"
-         x="126.15" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath7"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect5413"
-         height="90.888016"
-         width="161.39999"
-         y="333.25607"
-         x="257.39999" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath8"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect5416"
-         height="13.648201"
-         width="54.599998"
-         y="364.75192"
-         x="262.64999" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath9"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect5419"
-         height="13.648201"
-         width="90.150002"
-         y="364.75192"
-         x="321.60001" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath10"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect5422"
-         height="133.63239"
-         width="240"
-         y="75.590034"
-         x="240" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath11"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect5425"
-         height="137.3819"
-         width="191.85001"
-         y="20.847252"
-         x="39.75" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath12"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect5428"
-         height="93.137718"
-         width="142.64999"
-         y="54.592804"
-         x="66.449997" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath13"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect5431"
-         height="13.648201"
-         width="45.900002"
-         y="83.08905"
-         x="70.949997" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath14"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect5434"
-         height="13.648201"
-         width="83.400002"
-         y="83.08905"
-         x="120.45" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath15"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect5437"
-         height="90.888016"
-         width="161.39999"
-         y="107.83578"
-         x="298.95001" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath16"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect5440"
-         height="13.648201"
-         width="54.599998"
-         y="139.33163"
-         x="304.20001" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath17"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect5443"
-         height="13.648201"
-         width="90.150002"
-         y="139.33163"
-         x="363.29999" />
-    </clipPath>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="2.8"
-     inkscape:cx="223.36548"
-     inkscape:cy="227.70504"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1083"
-     inkscape:window-height="851"
-     inkscape:window-x="40"
-     inkscape:window-y="767"
-     inkscape:window-maximized="0"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0" />
-  <metadata
-     id="metadata5387">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-132.40505,-338.57503)">
-    <text
-       xml:space="preserve"
-       x="652.83942"
-       y="777.1922"
-       style="font-size:13.80000019px;font-style:normal;font-weight:normal;text-align:start;text-anchor:start;fill:#000000;font-family:Calibri"
-       id="text5447"> </text>
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath2)"
-       d="m 49.275,242.89298 0,196.4741 392.25,0 0,-196.4741 -392.25,0 z"
-       id="path5449"
-       transform="translate(112.83943,322.9021)" />
-    <rect
-       style="fill:none;stroke:#000000;stroke-width:1.002;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3.006,1.002;stroke-dashoffset:0"
-       id="rect4458-1-7"
-       width="393.01892"
-       height="197.3044"
-       x="161.22458"
-       y="565.61206" />
-    <rect
-       style="fill:#ffffff;fill-opacity:1;stroke:none"
-       id="rect3945-9"
-       width="15.714286"
-       height="18.571428"
-       x="153.47649"
-       y="664.6922" />
-    <rect
-       style="fill:#ffffff;fill-opacity:1;stroke:none"
-       id="rect3945-4"
-       width="15.714286"
-       height="18.571428"
-       x="547.40503"
-       y="689.6922" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath3)"
-       d="m 71.775,275.13873 0,102.73646 143.25,0 0,-102.73646 -143.25,0 z"
-       id="path5453"
-       transform="translate(112.83943,322.9021)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 184.61443,598.04083 143.25,0 0,102.73646 -143.25,0 z"
-       id="path5455" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath4)"
-       d="m 76.275,303.63497 0,23.24694 46.5,0 0,-23.24694 -46.5,0 z"
-       id="path5457"
-       transform="translate(112.83943,322.9021)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 189.11443,626.53707 46.5,0 0,23.24694 -46.5,0 z"
-       id="path5459" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath5)"
-       d="m 125.775,303.63497 0,23.24694 84,0 0,-23.24694 -84,0 z"
-       id="path5461"
-       transform="translate(112.83943,322.9021)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 238.61443,626.53707 84,0 0,23.24694 -84,0 z"
-       id="path5463" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath6)"
-       d="m 76.275,329.88151 0,41.99447 46.5,0 0,-41.99447 -46.5,0 z"
-       id="path5465"
-       transform="translate(112.83943,322.9021)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 189.11443,652.78361 46.5,0 0,41.99447 -46.5,0 z"
-       id="path5467" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 238.61443,652.78361 0,42.74437 84,0 0,-42.74437 -84,0 z"
-       id="path5469" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 238.61443,652.78361 84,0 0,42.74437 -84,0 z"
-       id="path5471" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 369.86443,651.28381 0,100.48676 162,0 0,-100.48676 -162,0 z"
-       id="path5473" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 369.86443,651.28381 162,0 0,100.48676 -162,0 z"
-       id="path5475" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath7)"
-       d="m 262.275,359.87756 0,23.24694 55.2,0 0,-23.24694 -55.2,0 z"
-       id="path5477"
-       transform="translate(112.83943,322.9021)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 375.11443,682.77966 55.2,0 0,23.24694 -55.2,0 z"
-       id="path5479" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath8)"
-       d="m 321.225,359.87756 0,23.24694 90.9,0 0,-23.24694 -90.9,0 z"
-       id="path5481"
-       transform="translate(112.83943,322.9021)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 434.06443,682.77966 90.9,0 0,23.24694 -90.9,0 z"
-       id="path5483" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath9)"
-       d="m 261.525,386.874 0,36.74516 55.95,0 0,-36.74516 -55.95,0 z"
-       id="path5485"
-       transform="translate(112.83943,322.9021)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 374.36443,709.7761 55.95,0 0,36.74516 -55.95,0 z"
-       id="path5487" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 434.81443,709.7761 0,36.74516 90.15,0 0,-36.74516 -90.15,0 z"
-       id="path5489" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 434.81443,709.7761 90.15,0 0,36.74516 -90.15,0 z"
-       id="path5491" />
-    <rect
-       style="fill:#ffffff;fill-opacity:1;stroke:none"
-       id="rect3945-0"
-       width="15.714286"
-       height="18.571428"
-       x="152.76219"
-       y="617.90649" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 155.21443,618.13818 3.2625,0 c 0.35625,0 0.6375,0.29996 0.6375,0.65617 l 0,16.74154 -3.9,0 z"
-       id="path5493" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 159.11443,617.9882 3.13125,0 c 0.35625,0 0.61875,0.28121 0.61875,0.63742 l 0,16.91027 -3.75,0 z"
-       id="path5495" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 162.86443,618.13818 3.2625,0 c 0.35625,0 0.6375,0.29996 0.6375,0.65617 l 0,16.74154 -3.9,0 z"
-       id="path5497" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 159.11443,665.23197 3.13125,0 c 0.35625,0 0.61875,0.28122 0.61875,0.63742 l 0,16.91027 -3.75,0 z"
-       id="path5501" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 162.86443,665.38195 3.2625,0 c 0.35625,0 0.6375,0.29996 0.6375,0.65617 l 0,16.74154 -3.9,0 z"
-       id="path5503" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01875;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.05625,0.01875;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 138.13318,627.94314 12.1125,-0.33746 -0.0375,-1.25608 -12.09375,0.33745 0.0188,1.25609 z m 12.09375,-0.95612 -2.4,3.80574 7.3875,-3.95573 -7.59375,-3.52453 2.60625,3.67452 z"
-       id="path5505" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01875;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.05625,0.01875;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 167.53318,627.94314 12.1125,-0.33746 -0.0375,-1.25608 -12.09375,0.33745 0.0187,1.25609 z m 12.09375,-0.95612 -2.4,3.80574 7.3875,-3.95573 -7.59375,-3.52453 2.60625,3.67452 z"
-       id="path5507" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01875;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.05625,0.01875;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 166.78318,674.43701 12.1125,-0.33746 -0.0375,-1.25608 -12.09375,0.33746 0.0187,1.25608 z m 12.09375,-0.95612 -2.4,3.80574 7.3875,-3.95572 -7.59375,-3.52454 2.60625,3.67452 z"
-       id="path5509" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01875;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.05625,0.01875;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 138.13318,674.43701 12.1125,-0.33746 -0.0375,-1.25608 -12.09375,0.33746 0.0188,1.25608 z m 12.09375,-0.95612 -2.4,3.80574 7.3875,-3.95572 -7.59375,-3.52454 2.60625,3.67452 z"
-       id="path5511" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 155.21443,665.38195 3.2625,0 c 0.35625,0 0.6375,0.29996 0.6375,0.65617 l 0,16.74154 -3.9,0 z"
-       id="path5499" />
-    <rect
-       style="fill:#ffffff;fill-opacity:1;stroke:none"
-       id="rect3945"
-       width="15.714286"
-       height="18.571428"
-       x="547.40509"
-       y="612.90656" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 548.96443,613.33881 3.2625,0 c 0.35625,0 0.6375,0.29996 0.6375,0.65617 l 0,16.89152 -3.9,0 z"
-       id="path5513" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 552.86443,613.33881 3.13125,0 c 0.35625,0 0.61875,0.28122 0.61875,0.63742 l 0,16.76029 -3.75,0 z"
-       id="path5515" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 556.61443,613.33881 3.2625,0 c 0.35625,0 0.6375,0.29996 0.6375,0.65617 l 0,16.89152 -3.9,0 z"
-       id="path5517" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01875;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.01875,0.01875;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 328.76443,621.419 215.04375,0 0,1.25608 -215.04375,0 0,-1.25608 z m 215.04375,0.61867 -2.49375,-3.74951 7.5,3.74951 -7.5,3.7495 2.49375,-3.7495 z"
-       id="path5519" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01875;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.05625,0.01875;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 560.38318,623.14377 12.1125,-0.33745 -0.0375,-1.25609 -12.09375,0.33746 0.0188,1.25608 z m 12.09375,-0.95612 -2.4,3.80575 7.3875,-3.95573 -7.59375,-3.52454 2.60625,3.67452 z"
-       id="path5521" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01875;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.01875,0.01875;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 329.36443,682.16099 20.86875,0 0,29.93981 -0.61875,-0.63742 15.225,0 0,1.25608 -15.8625,0 0,-29.9398 0.6375,0.63742 -20.25,0 0,-1.25609 z m 35.475,29.93981 -2.49375,-3.74951 7.5,3.74951 -7.5,3.7495 2.49375,-3.7495 z"
-       id="path5523" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 548.81443,690.57863 3.2625,0 c 0.35625,0 0.6375,0.29996 0.6375,0.65617 l 0,16.89152 -3.9,0 z"
-       id="path5525" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 552.71443,690.57863 3.2625,0 c 0.35625,0 0.6375,0.29996 0.6375,0.65617 l 0,16.74154 -3.9,0 z"
-       id="path5527" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 556.61443,690.57863 3.13125,0 c 0.35625,0 0.61875,0.28122 0.61875,0.63742 l 0,16.91027 -3.75,0 z"
-       id="path5529" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01875;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.01875,0.01875;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 530.98318,699.18375 12.1125,-0.33746 -0.0375,-1.25608 -12.09375,0.33745 0.0188,1.25609 z m 12.09375,-0.95613 -2.4,3.80575 7.3875,-3.95573 -7.59375,-3.52453 2.60625,3.67451 z"
-       id="path5531" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01875;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.01875,0.01875;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 561.88318,698.73381 12.1125,-0.33746 -0.0375,-1.25608 -12.09375,0.33745 0.0188,1.25609 z m 12.09375,-0.95613 -2.4,3.80575 7.3875,-3.95573 -7.59375,-3.52453 2.60625,3.67451 z"
-       id="path5533" />
-    <rect
-       style="fill:none;stroke:#000000;stroke-width:1.03885794;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3.11657381,1.03885794;stroke-dashoffset:0"
-       id="rect4458-1"
-       width="212.04707"
-       height="146.38971"
-       x="384.98563"
-       y="391.8602" />
-    <rect
-       style="fill:#ffffff;fill-opacity:1;stroke:none"
-       id="rect3945-48"
-       width="15.714286"
-       height="18.571428"
-       x="586.69073"
-       y="463.62076" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath10)"
-       d="m 39.225,15.972894 0,146.980626 192.6,0 0,-146.980626 -192.6,0 z"
-       id="path5539"
-       transform="translate(112.83943,322.9021)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath11)"
-       d="m 66.075,49.718446 0,102.736454 143.25,0 0,-102.736454 -143.25,0 z"
-       id="path5543"
-       transform="translate(112.83943,322.9021)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 178.91443,372.62055 143.25,0 0,102.73645 -143.25,0 z"
-       id="path5545" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath12)"
-       d="m 70.575,78.21469 0,23.24694 46.5,0 0,-23.24694 -46.5,0 z"
-       id="path5547"
-       transform="translate(112.83943,322.9021)" />
-    <rect
-       style="fill:none;stroke:#000000;stroke-width:0.99358916;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.98076741, 0.99358914;stroke-dashoffset:0"
-       id="rect4458"
-       width="193.90961"
-       height="146.43498"
-       x="155.25899"
-       y="342.90326" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 183.41443,401.11679 46.5,0 0,23.24694 -46.5,0 z"
-       id="path5549" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath13)"
-       d="m 120.075,78.21469 0,23.24694 84,0 0,-23.24694 -84,0 z"
-       id="path5551"
-       transform="translate(112.83943,322.9021)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 232.91443,401.11679 84,0 0,23.24694 -84,0 z"
-       id="path5553" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath14)"
-       d="m 70.575,104.46123 0,41.99446 46.5,0 0,-41.99446 -46.5,0 z"
-       id="path5555"
-       transform="translate(112.83943,322.9021)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 183.41443,427.36333 46.5,0 0,41.99446 -46.5,0 z"
-       id="path5557" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 232.91443,427.36333 0,42.74437 84,0 0,-42.74437 -84,0 z"
-       id="path5559" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 232.91443,427.36333 84,0 0,42.74437 -84,0 z"
-       id="path5561" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 408.38397,422.83307 0,100.48675 162,0 0,-100.48675 -162,0 z"
-       id="path5563" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 408.38397,422.83307 162,0 0,100.48675 -162,0 z"
-       id="path5565" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath15)"
-       d="m 303.825,134.45728 0,23.24693 55.2,0 0,-23.24693 -55.2,0 z"
-       id="path5567"
-       transform="translate(109.80897,319.87164)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 413.63397,454.32892 55.2,0 0,23.24693 -55.2,0 z"
-       id="path5569" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath16)"
-       d="m 362.775,134.45728 0,23.24693 90.9,0 0,-23.24693 -90.9,0 z"
-       id="path5571"
-       transform="translate(112.83943,322.9021)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 475.58964,454.32892 90.9,0 0,23.24693 -90.9,0 z"
-       id="path5573" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath17)"
-       d="m 303.075,161.45372 0,36.74515 55.95,0 0,-36.74515 -55.95,0 z"
-       id="path5575"
-       transform="translate(112.83943,322.9021)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 412.88397,481.32536 55.95,0 0,36.74515 -55.95,0 z"
-       id="path5577" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 473.33397,481.32536 0,36.74515 90.15,0 0,-36.74515 -90.15,0 z"
-       id="path5579" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 473.33397,481.32536 90.15,0 0,36.74515 -90.15,0 z"
-       id="path5581" />
-    <rect
-       style="fill:#ffffff;fill-opacity:1;stroke:none"
-       id="rect3945-45"
-       width="15.714286"
-       height="18.571428"
-       x="147.94077"
-       y="392.37076" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 149.51443,392.7179 3.25312,0 c 0.35625,0 0.64688,0.29996 0.64688,0.65616 l 0,16.74154 -3.9,0 z"
-       id="path5583" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 153.41443,392.56792 3.25312,0 c 0.35625,0 0.64688,0.29996 0.64688,0.65616 l 0,16.89152 -3.9,0 z"
-       id="path5585" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 157.31443,392.7179 3.13125,0 c 0.34687,0 0.61875,0.28121 0.61875,0.62804 l 0,16.76966 -3.75,0 z"
-       id="path5587" />
-    <rect
-       style="fill:#ffffff;fill-opacity:1;stroke:none"
-       id="rect3945-5"
-       width="15.714286"
-       height="18.571428"
-       x="147.76219"
-       y="439.6922" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 149.51443,439.96167 3.25312,0 c 0.35625,0 0.64688,0.29996 0.64688,0.65616 l 0,16.74155 -3.9,0 z"
-       id="path5589" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 153.41443,439.81169 3.25312,0 c 0.35625,0 0.64688,0.29996 0.64688,0.65616 l 0,16.89153 -3.9,0 z"
-       id="path5591" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 157.31443,439.96167 3.13125,0 c 0.34687,0 0.61875,0.28121 0.61875,0.62804 l 0,16.76967 -3.75,0 z"
-       id="path5593" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.009;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.009,0.009;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 132.43318,402.51348 12.10312,-0.32808 -0.0375,-1.24671 -12.09375,0.32808 0.0281,1.24671 z m 12.08437,-0.95612 -2.39062,3.81512 7.3875,-3.95573 -7.59375,-3.53391 2.59687,3.67452 z"
-       id="path5595" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.009;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.009,0.009;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 161.83318,402.51348 12.10312,-0.32808 -0.0375,-1.24671 -12.09375,0.32808 0.0281,1.24671 z m 12.08437,-0.95612 -2.39062,3.81512 7.3875,-3.95573 -7.59375,-3.53391 2.59687,3.67452 z"
-       id="path5597" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.009375;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.009375,0.009375;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 161.08318,449.00735 12.10312,-0.32808 -0.0375,-1.24671 -12.09375,0.32808 0.0281,1.24671 z m 12.08437,-0.95612 -2.39062,3.81512 7.3875,-3.95573 -7.59375,-3.53391 2.59687,3.67452 z"
-       id="path5599" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.009;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.009,0.009;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 132.43318,449.00735 12.10312,-0.32808 -0.0375,-1.24671 -12.09375,0.32808 0.0281,1.24671 z m 12.08437,-0.95612 -2.39062,3.81512 7.3875,-3.95573 -7.59375,-3.53391 2.59687,3.67452 z"
-       id="path5601" />
-    <rect
-       style="fill:#ffffff;fill-opacity:1;stroke:none"
-       id="rect3945-2"
-       width="15.714286"
-       height="18.571428"
-       x="341.36935"
-       y="371.26364" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 343.61443,372.17061 3.13125,0 c 0.34687,0 0.61875,0.28121 0.61875,0.62804 l 0,16.76966 -3.75,0 z"
-       id="path5603" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 347.36443,372.17061 3.25312,0 c 0.35625,0 0.64688,0.29996 0.64688,0.65616 l 0,16.74154 -3.9,0 z"
-       id="path5605" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 351.26443,372.17061 3.25312,0 c 0.35625,0 0.64688,0.29996 0.64688,0.65616 l 0,16.74154 -3.9,0 z"
-       id="path5607" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.009375;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.009375,0.009375;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 323.21443,378.75099 13.7625,0 0,1.24671 -13.7625,0 0,-1.24671 z m 13.7625,0.61867 -2.50312,-3.74951 7.5,3.74951 -7.5,3.7495 2.50312,-3.7495 z"
-       id="path5609" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.009375;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.009375, 0.009375;stroke-dashoffset:0"
-       d="m 356.53318,380.16643 259.24599,-0.32809 -0.0375,-1.24671 -259.23661,0.32809 0.0281,1.24671 z m 259.22723,-0.95613 -2.39062,3.81512 7.3875,-3.95572 -7.59375,-3.53391 z"
-       id="path5611"
-       sodipodi:nodetypes="ccccccccccc" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 590.51443,465.15835 3.13125,0 c 0.35625,0 0.61875,0.28121 0.61875,0.63741 l 0,16.91027 -3.75,0 z"
-       id="path5613" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 594.26443,465.15835 3.2625,0 c 0.35625,0 0.6375,0.29996 0.6375,0.65616 l 0,16.74154 -3.9,0 z"
-       id="path5615" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 598.16443,465.15835 3.2625,0 c 0.35625,0 0.6375,0.29996 0.6375,0.65616 l 0,16.89152 -3.9,0 z"
-       id="path5617" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01875;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.01875,0.01875;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 572.68318,473.76346 12.1125,-0.33745 -0.0375,-1.25609 -12.09375,0.33746 0.0188,1.25608 z m 12.09375,-0.95612 -2.4,3.80575 7.3875,-3.95573 -7.59375,-3.52454 2.60625,3.67452 z"
-       id="path5619" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01875;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.01875,0.01875;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 603.43318,473.31352 12.1125,-0.33745 -0.0375,-1.25609 -12.09375,0.33746 0.0188,1.25608 z m 12.09375,-0.95612 -2.4,3.80575 7.3875,-3.95573 -7.59375,-3.52454 2.60625,3.67452 z"
-       id="path5621" />
-    <rect
-       style="fill:#ffffff;fill-opacity:1;stroke:none"
-       id="rect3945-8"
-       width="15.714286"
-       height="18.571428"
-       x="342.40506"
-       y="438.62076" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 343.61443,439.96167 3.13125,0 c 0.34687,0 0.61875,0.28121 0.61875,0.62804 l 0,16.76967 -3.75,0 z"
-       id="path5623" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 347.36443,439.96167 3.25312,0 c 0.35625,0 0.64688,0.29996 0.64688,0.65616 l 0,16.74155 -3.9,0 z"
-       id="path5625" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 351.26443,439.96167 3.25312,0 c 0.35625,0 0.64688,0.29996 0.64688,0.65616 l 0,16.74155 -3.9,0 z"
-       id="path5627" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.009375;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.009375,0.009375;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 323.21443,446.54205 13.7625,0 0,1.24671 -13.7625,0 0,-1.24671 z m 13.7625,0.61867 -2.50312,-3.74951 7.5,3.74951 -7.5,3.74951 2.50312,-3.74951 z"
-       id="path5629" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01777934;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.01777934, 0.01777934;stroke-dashoffset:0"
-       d="m 356.50859,445.94165 25.2708,0 0,30.18438 -0.55633,-0.61869 20.19642,0 0,1.23737 -20.7696,0 0,-30.18438 0.57318,0.63744 -24.71447,0 0,-1.25612 z m 44.91089,30.18438 -2.24217,-3.74961 6.74338,3.74961 -6.74338,3.74961 2.24217,-3.74961 z"
-       id="path5631" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 256.12693,502.50342 0,36.37021 2.4375,0 -4.875,4.87436 -4.875,-4.87436 2.4375,0 0,-36.37021 z"
-       id="path5633" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 256.12693,502.50342 0,36.37021 2.4375,0 -4.875,4.87436 -4.875,-4.87436 2.4375,0 0,-36.37021 z"
-       id="path5635" />
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="224.7719"
-       y="353.7381"
-       id="text4458-5-6-8-7"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="224.7719"
-         y="353.7381"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5">Pipeline 1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="233.06458"
-       y="387.51147"
-       id="text4458-5-6-8-7-0"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="233.06458"
-         y="387.51147"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-6">Table 1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="191.77844"
-       y="416.61282"
-       id="text4458-5-6-8-7-0-1"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="191.77844"
-         y="416.61282"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-6-3">Route</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="251.78381"
-       y="415.58426"
-       id="text4458-5-6-8-7-0-1-8"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="251.78381"
-         y="415.58426"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-6-3-9">Next Hop</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="462.5943"
-       y="411.55435"
-       id="text4458-5-6-8-7-3"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="462.5943"
-         y="411.55435"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-4">Pipeline 2</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="471.90912"
-       y="442.29727"
-       id="text4458-5-6-8-7-0-4"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="471.90912"
-         y="442.29727"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-6-6">Table 2</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="431.39413"
-       y="468.73193"
-       id="text4458-5-6-8-7-0-4-0"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="431.39413"
-         y="468.73193"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-6-6-6">Key</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="486.88754"
-       y="469.8894"
-       id="text4458-5-6-8-7-0-4-0-6"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="486.88754"
-         y="469.8894"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-6-6-6-1">MAC Address</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="334.64691"
-       y="584.99622"
-       id="text4458-5-6-8-7-8"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="334.64691"
-         y="584.99622"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-49">Pipeline 1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="197.47844"
-       y="642.03308"
-       id="text4458-5-6-8-7-0-1-6"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="197.47844"
-         y="642.03308"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-6-3-3">Route</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="257.48383"
-       y="641.00452"
-       id="text4458-5-6-8-7-0-1-8-7"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="257.48383"
-         y="641.00452"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-6-3-9-8">Next Hop</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="392.87457"
-       y="697.18268"
-       id="text4458-5-6-8-7-0-4-0-8"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="392.87457"
-         y="697.18268"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-6-6-6-2">Key</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="445.36234"
-       y="698.34015"
-       id="text4458-5-6-8-7-0-4-0-6-9"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="445.36234"
-         y="698.34015"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-6-6-6-1-1">MAC Address</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="238.76457"
-       y="611.66492"
-       id="text4458-5-6-8-7-0-3"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="238.76457"
-         y="611.66492"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-6-5">Table 1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="432.66986"
-       y="666.95581"
-       id="text4458-5-6-8-7-0-4-9"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="432.66986"
-         y="666.95581"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-6-6-8">Table 2</tspan></text>
-  </g>
-</svg>
diff --git a/doc/guides/sample_app_ug/img/ip_pipelines_3.svg b/doc/guides/sample_app_ug/img/ip_pipelines_3.svg
deleted file mode 100644
index 1cf5413..0000000
--- a/doc/guides/sample_app_ug/img/ip_pipelines_3.svg
+++ /dev/null
@@ -1,826 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="469.492"
-   height="382.11536"
-   id="svg6126"
-   version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="ipPipelines_3_update.svg">
-  <defs
-     id="defs6128">
-    <clipPath
-       id="clipEmfPath1"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect6139"
-         height="406.59448"
-         width="585"
-         y="0"
-         x="0" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath2"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect6142"
-         height="134.38165"
-         width="277.79999"
-         y="247.76617"
-         x="49.650002" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath3"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect6145"
-         height="93.137283"
-         width="230.55"
-         y="280.01178"
-         x="72.150002" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath4"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect6148"
-         height="13.648136"
-         width="45.900002"
-         y="308.50787"
-         x="76.650002" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath5"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect6151"
-         height="13.648136"
-         width="83.400002"
-         y="308.50787"
-         x="126.15" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath6"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect6154"
-         height="137.38124"
-         width="208.2"
-         y="18.147522"
-         x="240.75" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath7"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect6157"
-         height="137.38124"
-         width="190.2"
-         y="18.147522"
-         x="42.75" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath8"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect6160"
-         height="93.137283"
-         width="142.64999"
-         y="54.592545"
-         x="66.449997" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath9"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect6163"
-         height="13.648136"
-         width="45.900002"
-         y="83.088654"
-         x="70.949997" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath10"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect6166"
-         height="13.648136"
-         width="83.400002"
-         y="83.088654"
-         x="120.45" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath11"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect6169"
-         height="90.887589"
-         width="161.39999"
-         y="53.092751"
-         x="265.20001" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath12"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect6172"
-         height="13.648136"
-         width="54.599998"
-         y="84.588448"
-         x="270.45001" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath13"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect6175"
-         height="13.648136"
-         width="90.150002"
-         y="84.588448"
-         x="329.54999" />
-    </clipPath>
-    <clipPath
-       id="clipEmfPath14"
-       clipPathUnits="userSpaceOnUse">
-      <rect
-         id="rect6178"
-         height="13.648136"
-         width="83.400002"
-         y="308.50787"
-         x="213.89999" />
-    </clipPath>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.979899"
-     inkscape:cx="228.24994"
-     inkscape:cy="175.22545"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1033"
-     inkscape:window-height="1284"
-     inkscape:window-x="86"
-     inkscape:window-y="249"
-     inkscape:window-maximized="0"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     showborder="true"
-     borderlayer="false" />
-  <metadata
-     id="metadata6131">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-156.65375,-367.02875)">
-    <text
-       xml:space="preserve"
-       x="626.14575"
-       y="749.1441"
-       style="font-size:13.80000019px;font-style:normal;font-weight:normal;text-align:start;text-anchor:start;fill:#000000;font-family:Calibri"
-       id="text6182"> </text>
-    <rect
-       style="fill:none;stroke:#000000;stroke-width:1.1530993;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3.45929811, 1.15309937;stroke-dashoffset:0"
-       id="rect3114"
-       width="279.14426"
-       height="142.7157"
-       x="186.01018"
-       y="597.78625" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath2)"
-       d="m 71.775,275.13743 0,102.73597 231.15,0 0,-102.73597 -231.15,0 z"
-       id="path6188"
-       transform="translate(137.14575,354.09808)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 208.92075,629.23551 231.15,0 0,102.73597 -231.15,0 z"
-       id="path6190" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath3)"
-       d="m 76.275,303.63354 0,23.24683 46.5,0 0,-23.24683 -46.5,0 z"
-       id="path6192"
-       transform="translate(137.14575,354.09808)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 213.42075,657.73162 46.5,0 0,23.24683 -46.5,0 z"
-       id="path6194" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath4)"
-       d="m 125.775,303.63354 0,23.24683 84,0 0,-23.24683 -84,0 z"
-       id="path6196"
-       transform="translate(137.14575,354.09808)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 262.92075,657.73162 84,0 0,23.24683 -84,0 z"
-       id="path6198" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath5)"
-       d="m 76.275,329.87996 0,41.99426 46.5,0 0,-41.99426 -46.5,0 z"
-       id="path6200"
-       transform="translate(137.14575,354.09808)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 213.42075,683.97804 46.5,0 0,41.99426 -46.5,0 z"
-       id="path6202" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 262.92075,683.97804 0,42.74416 84,0 0,-42.74416 -84,0 z"
-       id="path6204" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 262.92075,683.97804 84,0 0,42.74416 -84,0 z"
-       id="path6206" />
-    <rect
-       style="fill:#ffffff;fill-opacity:1;stroke:none"
-       id="rect3920-48"
-       width="16.515228"
-       height="21.21936"
-       x="177.68185"
-       y="647.82019" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 179.52075,649.33277 3.2625,0 c 0.35625,0 0.6375,0.29996 0.6375,0.65616 l 0,16.74146 -3.9,0 z"
-       id="path6208" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 183.42075,649.18279 3.13125,0 c 0.35625,0 0.61875,0.28121 0.61875,0.63741 l 0,16.91019 -3.75,0 z"
-       id="path6210" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 187.17075,649.33277 3.2625,0 c 0.35625,0 0.6375,0.29996 0.6375,0.65616 l 0,16.74146 -3.9,0 z"
-       id="path6212" />
-    <rect
-       style="fill:#ffffff;fill-opacity:1;stroke:none"
-       id="rect3920-48-8"
-       width="16.515228"
-       height="21.21936"
-       x="176.61043"
-       y="694.24872" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 179.52075,696.57632 3.2625,0 c 0.35625,0 0.6375,0.29996 0.6375,0.65616 l 0,16.74146 -3.9,0 z"
-       id="path6214" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 183.42075,696.42634 3.13125,0 c 0.35625,0 0.61875,0.28121 0.61875,0.63741 l 0,16.91019 -3.75,0 z"
-       id="path6216" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 187.17075,696.57632 3.2625,0 c 0.35625,0 0.6375,0.29996 0.6375,0.65616 l 0,16.74146 -3.9,0 z"
-       id="path6218" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01875;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.01875,0.01875;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 162.4395,659.13768 12.1125,-0.33745 -0.0375,-1.25608 -12.09375,0.33745 0.0188,1.25608 z m 12.09375,-0.95612 -2.4,3.80573 7.3875,-3.95571 -7.59375,-3.52452 2.60625,3.6745 z"
-       id="path6220" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01875;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.01875,0.01875;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 191.8395,659.13768 12.1125,-0.33745 -0.0375,-1.25608 -12.09375,0.33745 0.0187,1.25608 z m 12.09375,-0.95612 -2.4,3.80573 7.3875,-3.95571 -7.59375,-3.52452 2.60625,3.6745 z"
-       id="path6222" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01875;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.01875,0.0375;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 191.0895,705.63133 12.1125,-0.33745 -0.0375,-1.25608 -12.09375,0.33745 0.0187,1.25608 z m 12.09375,-0.95612 -2.4,3.80573 7.3875,-3.95571 -7.59375,-3.52452 2.60625,3.6745 z"
-       id="path6224" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01875;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.01875,0.01875;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 162.4395,705.63133 12.1125,-0.33745 -0.0375,-1.25608 -12.09375,0.33745 0.0188,1.25608 z m 12.09375,-0.95612 -2.4,3.80573 7.3875,-3.95571 -7.59375,-3.52452 2.60625,3.6745 z"
-       id="path6226" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 377.52075,367.37127 0,146.97993 208.8,0 0,-146.97993 -208.8,0 z"
-       id="path6228" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath6)"
-       d="m 42.375,13.273188 0,146.979932 190.8,0 0,-146.979932 -190.8,0 z"
-       id="path6232"
-       transform="translate(137.14575,354.09808)" />
-    <rect
-       style="fill:none;stroke:#000000;stroke-width:1.1530993;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3.45929801, 1.15309934;stroke-dashoffset:0"
-       id="rect3114-1"
-       width="191.96552"
-       height="148.42998"
-       x="180.02544"
-       y="368.29129" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath7)"
-       d="m 66.075,49.718211 0,102.735969 143.25,0 0,-102.735969 -143.25,0 z"
-       id="path6236"
-       transform="translate(137.14575,354.09808)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 203.22075,403.81629 143.25,0 0,102.73597 -143.25,0 z"
-       id="path6238" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath8)"
-       d="m 70.575,78.21432 0,23.24683 46.5,0 0,-23.24683 -46.5,0 z"
-       id="path6240"
-       transform="translate(137.14575,354.09808)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 207.72075,432.3124 46.5,0 0,23.24683 -46.5,0 z"
-       id="path6242" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath9)"
-       d="m 120.075,78.21432 0,23.24683 84,0 0,-23.24683 -84,0 z"
-       id="path6244"
-       transform="translate(137.14575,354.09808)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 257.22075,432.3124 84,0 0,23.24683 -84,0 z"
-       id="path6246" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath10)"
-       d="m 70.575,104.46074 0,41.99426 46.5,0 0,-41.99426 -46.5,0 z"
-       id="path6248"
-       transform="translate(137.14575,354.09808)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 207.72075,458.55882 46.5,0 0,41.99426 -46.5,0 z"
-       id="path6250" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 257.22075,458.55882 0,42.74416 84,0 0,-42.74416 -84,0 z"
-       id="path6252" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 257.22075,458.55882 84,0 0,42.74416 -84,0 z"
-       id="path6254" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 401.97075,402.3165 0,100.48628 162,0 0,-100.48628 -162,0 z"
-       id="path6256" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 401.97075,402.3165 162,0 0,100.48628 -162,0 z"
-       id="path6258" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath11)"
-       d="m 270.075,79.714116 0,23.246824 55.2,0 0,-23.246824 -55.2,0 z"
-       id="path6260"
-       transform="translate(137.14575,354.09808)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 407.22075,433.8122 55.2,0 0,23.24682 -55.2,0 z"
-       id="path6262" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath12)"
-       d="m 329.025,79.714116 0,23.246824 90.9,0 0,-23.246824 -90.9,0 z"
-       id="path6264"
-       transform="translate(137.14575,354.09808)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 466.17075,433.8122 90.9,0 0,23.24682 -90.9,0 z"
-       id="path6266" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath13)"
-       d="m 269.325,106.71043 0,36.74498 55.95,0 0,-36.74498 -55.95,0 z"
-       id="path6268"
-       transform="translate(137.14575,354.09808)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 406.47075,460.80851 55.95,0 0,36.74498 -55.95,0 z"
-       id="path6270" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 466.92075,460.80851 0,36.74498 90.15,0 0,-36.74498 -90.15,0 z"
-       id="path6272" />
-    <rect
-       style="fill:none;stroke:#000000;stroke-width:1.1530993;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3.45929818, 1.15309941;stroke-dashoffset:0"
-       id="rect3114-1-7"
-       width="208.7556"
-       height="148.37921"
-       x="377.85892"
-       y="367.84274" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 466.92075,460.80851 90.15,0 0,36.74498 -90.15,0 z"
-       id="path6274" />
-    <rect
-       style="fill:#ffffff;fill-opacity:1;stroke:none"
-       id="rect3920-9"
-       width="16.515228"
-       height="21.21936"
-       x="171.55568"
-       y="422.16541" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 173.82075,423.91355 3.25312,0 c 0.35625,0 0.64688,0.29996 0.64688,0.65616 l 0,16.74146 -3.9,0 z"
-       id="path6276" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 177.72075,423.76357 3.25312,0 c 0.35625,0 0.64688,0.29996 0.64688,0.65616 l 0,16.89144 -3.9,0 z"
-       id="path6278" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 181.62075,423.91355 3.13125,0 c 0.34687,0 0.61875,0.28121 0.61875,0.62804 l 0,16.76958 -3.75,0 z"
-       id="path6280" />
-    <rect
-       style="fill:#ffffff;fill-opacity:1;stroke:none"
-       id="rect3920-0"
-       width="16.515228"
-       height="21.21936"
-       x="171.50339"
-       y="469.72925" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 173.82075,471.1571 3.25312,0 c 0.35625,0 0.64688,0.29996 0.64688,0.65616 l 0,16.74146 -3.9,0 z"
-       id="path6282" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 177.72075,471.00712 3.25312,0 c 0.35625,0 0.64688,0.29996 0.64688,0.65616 l 0,16.89144 -3.9,0 z"
-       id="path6284" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 181.62075,471.1571 3.13125,0 c 0.34687,0 0.61875,0.28121 0.61875,0.62804 l 0,16.76958 -3.75,0 z"
-       id="path6286" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.009375;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.009375,0.009375;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 156.7395,433.70908 12.10312,-0.32808 -0.0375,-1.2467 -12.09375,0.32808 0.0281,1.24671 z m 12.08437,-0.95611 -2.39062,3.8151 7.3875,-3.95571 -7.59375,-3.53389 2.59687,3.6745 z"
-       id="path6288" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.009375;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.009375,0.009375;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 186.1395,433.70908 12.10312,-0.32808 -0.0375,-1.2467 -12.09375,0.32808 0.0281,1.24671 z m 12.08437,-0.95611 -2.39062,3.8151 7.3875,-3.95571 -7.59375,-3.53389 2.59687,3.6745 z"
-       id="path6290" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.009375;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.009375,0.009375;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 185.3895,480.20274 12.10312,-0.32808 -0.0375,-1.24671 -12.09375,0.32808 0.0281,1.24671 z m 12.08437,-0.95612 -2.39062,3.8151 7.3875,-3.95571 -7.59375,-3.53389 2.59687,3.6745 z"
-       id="path6292" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.009375;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.009375,0.009375;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 156.7395,480.20274 12.10312,-0.32808 -0.0375,-1.24671 -12.09375,0.32808 0.0281,1.24671 z m 12.08437,-0.95612 -2.39062,3.8151 7.3875,-3.95571 -7.59375,-3.53389 2.59687,3.6745 z"
-       id="path6294" />
-    <rect
-       style="fill:#ffffff;fill-opacity:1;stroke:none"
-       id="rect3920-4"
-       width="16.515228"
-       height="21.21936"
-       x="578.84741"
-       y="448.11557" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 581.07075,450.6099 3.13125,0 c 0.35625,0 0.61875,0.28121 0.61875,0.63741 l 0,16.9102 -3.75,0 z"
-       id="path6296" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 584.82075,450.6099 3.2625,0 c 0.35625,0 0.6375,0.29996 0.6375,0.65616 l 0,16.74147 -3.9,0 z"
-       id="path6298" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 588.72075,450.6099 3.2625,0 c 0.35625,0 0.6375,0.29996 0.6375,0.65616 l 0,16.89145 -3.9,0 z"
-       id="path6300" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01875;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.01875,0.01875;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 563.2395,459.21498 12.1125,-0.33746 -0.0375,-1.25608 -12.09375,0.33746 0.0188,1.25608 z m 12.09375,-0.95612 -2.4,3.80573 7.3875,-3.95571 -7.59375,-3.52452 2.60625,3.6745 z"
-       id="path6302" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01875;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.01875,0.01875;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 593.9895,458.76504 12.1125,-0.33746 -0.0375,-1.25607 -12.09375,0.33745 0.0188,1.25608 z m 12.09375,-0.95612 -2.4,3.80573 7.3875,-3.95571 -7.59375,-3.52452 2.60625,3.6745 z"
-       id="path6304" />
-    <rect
-       style="fill:#ffffff;fill-opacity:1;stroke:none"
-       id="rect3920"
-       width="16.515228"
-       height="21.21936"
-       x="366.35788"
-       y="448.70401" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 368.67075,450.90986 3.13125,0 c 0.34687,0 0.61875,0.28121 0.61875,0.62804 l 0,16.76959 -3.75,0 z"
-       id="path6306" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 372.42075,450.90986 3.25312,0 c 0.35625,0 0.64688,0.29996 0.64688,0.65616 l 0,16.74147 -3.9,0 z"
-       id="path6308" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 376.32075,450.90986 3.25312,0 c 0.35625,0 0.64688,0.29996 0.64688,0.65616 l 0,16.74147 -3.9,0 z"
-       id="path6310" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.009375;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.009375,0.009375;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 347.52075,457.79017 13.7625,0 0,1.24671 -13.7625,0 0,-1.24671 z m 13.7625,0.61867 -2.50312,-3.74949 7.5,3.74949 -7.5,3.74949 2.50312,-3.74949 z"
-       id="path6312" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.009375;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.009375,0.009375;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 381.27075,457.79017 13.7625,0 0,1.24671 -13.7625,0 0,-1.24671 z m 13.7625,0.61867 -2.50313,-3.74949 7.5,3.74949 -7.5,3.74949 2.50313,-3.74949 z"
-       id="path6314" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 350.67075,657.73162 0,23.24683 84,0 0,-23.24683 -84,0 z"
-       id="path6316" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 350.67075,657.73162 84,0 0,23.24683 -84,0 z"
-       id="path6318" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       clip-path="url(#clipEmfPath14)"
-       d="m 213.675,329.87996 0,42.74416 84,0 0,-42.74416 -84,0 z"
-       id="path6320"
-       transform="translate(137.14575,354.09808)" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:0.60000002px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none"
-       d="m 350.82075,683.97804 84,0 0,42.74416 -84,0 z"
-       id="path6322" />
-    <rect
-       style="fill:#ffffff;fill-opacity:1;stroke:none"
-       id="rect3920-48-2"
-       width="16.515228"
-       height="21.21936"
-       x="456.96756"
-       y="669.96301" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 459.57075,671.67972 3.2625,0 c 0.35625,0 0.6375,0.29996 0.6375,0.65616 l 0,16.89144 -3.9,0 z"
-       id="path6324" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 463.47075,671.67972 3.13125,0 c 0.35625,0 0.61875,0.28121 0.61875,0.63741 l 0,16.76021 -3.75,0 z"
-       id="path6326" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 467.22075,671.67972 3.2625,0 c 0.35625,0 0.6375,0.29996 0.6375,0.65616 l 0,16.89144 -3.9,0 z"
-       id="path6328" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01875;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.01875,0.01875;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 440.0895,681.16592 14.475,-0.11248 -0.0188,-1.25608 -14.475,0.11248 0.0188,1.25608 z m 14.45625,-0.73115 -2.45625,3.76824 7.4625,-3.82448 -7.5375,-3.6745 2.53125,3.73074 z"
-       id="path6330" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01875;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.01875,0.0375;stroke-miterlimit:4;stroke-dashoffset:0"
-       d="m 471.12075,679.4599 13.48125,0 0,1.25608 -13.48125,0 0,-1.25608 z m 13.48125,0.61867 -2.5125,-3.74949 7.5,3.74949 -7.5,3.74949 2.5125,-3.74949 z"
-       id="path6332" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 316.58325,533.69856 0,36.37003 2.4375,0 -4.875,4.87434 -4.875,-4.87434 2.4375,0 0,-36.37003 z"
-       id="path6334" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:none;stroke:#000000;stroke-width:1.20000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 316.58325,533.69856 0,36.37003 2.4375,0 -4.875,4.87434 -4.875,-4.87434 2.4375,0 0,-36.37003 z"
-       id="path6336" />
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="251.32822"
-       y="385.15088"
-       id="text4458-5-6-8-7"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="251.32822"
-         y="385.15088"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5">Pipeline 1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="458.32822"
-       y="385.15088"
-       id="text4458-5-6-8-7-4"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="458.32822"
-         y="385.15088"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan6590">Pipeline 2</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="252.12177"
-       y="418.59369"
-       id="text4458-5-6-8-7-7"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="252.12177"
-         y="418.59369"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-6">Flow Table 1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="452.02521"
-       y="418.59369"
-       id="text4458-5-6-8-7-7-3"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="452.02521"
-         y="418.59369"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-6-6">Flow Table 2</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="214.38213"
-       y="447.87283"
-       id="text4458-5-6-8-7-7-1"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="214.38213"
-         y="447.87283"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-6-5">Flow #</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="418.23212"
-       y="449.37262"
-       id="text4458-5-6-8-7-7-1-4"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="418.23212"
-         y="449.37262"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-6-5-2">Flow #</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="489.28775"
-       y="449.32428"
-       id="text4458-5-6-8-7-7-1-4-0"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="489.28775"
-         y="449.32428"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan6678">Actions 2</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="277.60748"
-       y="447.82449"
-       id="text4458-5-6-8-7-7-1-4-0-7"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="277.60748"
-         y="447.82449"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan6678-3">Actions 1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="302.02823"
-       y="613.45862"
-       id="text4458-5-6-8-7-72"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="302.02823"
-         y="613.45862"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-60">Pipeline 1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="293.5502"
-       y="644.90143"
-       id="text4458-5-6-8-7-7-16"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="293.5502"
-         y="644.90143"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-6-57">Flow Table 1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="220.08212"
-       y="673.29205"
-       id="text4458-5-6-8-7-7-1-5"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="220.08212"
-         y="673.29205"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan4668-2-5-6-5-4">Flow #</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="283.30746"
-       y="673.24371"
-       id="text4458-5-6-8-7-7-1-4-0-7-1"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="283.30746"
-         y="673.24371"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan6678-3-2">Actions 1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-       x="370.33774"
-       y="673.24371"
-       id="text4458-5-6-8-7-7-1-4-0-7-1-0"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="370.33774"
-         y="673.24371"
-         style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
-         id="tspan6678-3-2-0">Actions 2</tspan></text>
-  </g>
-</svg>
diff --git a/doc/guides/sample_app_ug/ip_pipeline.rst b/doc/guides/sample_app_ug/ip_pipeline.rst
index 69af6b8..660798d 100644
--- a/doc/guides/sample_app_ug/ip_pipeline.rst
+++ b/doc/guides/sample_app_ug/ip_pipeline.rst
@@ -1,5 +1,5 @@
 ..  SPDX-License-Identifier: BSD-3-Clause
-    Copyright(c) 2015-2016 Intel Corporation.
+    Copyright(c) 2015-2018 Intel Corporation.
 
 Internet Protocol (IP) Pipeline Application
 ===========================================
@@ -8,1163 +8,521 @@ Application overview
 --------------------
 
 The *Internet Protocol (IP) Pipeline* application is intended to be a vehicle for rapid development of packet processing
-applications running on multi-core CPUs.
+applications on multi-core CPUs.
 
-The application provides a library of reusable functional blocks called pipelines.
-These pipelines can be seen as prefabricated blocks that can be instantiated and inter-connected through packet queues
+Following OpenFlow and P4 design principles, the application can be used to create functional blocks called pipelines out
+of input/output ports, tables and actions in a modular way. Multiple pipelines can be inter-connected through packet queues
 to create complete applications (super-pipelines).
 
-Pipelines are created and inter-connected through the application configuration file.
-By using different configuration files, different applications are effectively created, therefore this application
-can be seen as an application generator.
-The configuration of each pipeline can be updated at run-time through the application Command Line Interface (CLI).
+The pipelines are mapped to application threads, with each pipeline executed by a single thread and each thread able to run
+one or several pipelines. The possibilities of creating pipelines out of ports, tables and actions, connecting multiple
+pipelines together and mapping the pipelines to execution threads are endless, therefore this application can be seen as
+a true application generator.
 
-Main application components are:
+Pipelines are created and managed through Command Line Interface (CLI):
 
-**A Library of reusable pipelines**
+ * Any standard TCP client (e.g. telnet, netcat, custom script, etc) is typically able to connect to the application, send
+   commands through the network and wait for the response before pushing the next command.
 
- * Each pipeline represents a functional block, e.g. flow classification, firewall, routing, master, etc.
-
- * Each pipeline type can be instantiated several times in the same application, which each instance configured
-   separately and mapped to a single CPU core.
-   Each CPU core can run one or several pipeline instances, which can be of same or different type.
-
- * Pipeline instances are inter-connected through packet queues (for packet processing) and message queues
-   (for run-time configuration).
-
- * Pipelines are implemented using DPDK Packet Framework.
-
- * More pipeline types can always be built and added to the existing pipeline types.
-
-**The Configuration file**
-
- * The configuration file defines the application structure.
-   By using different configuration files, different applications are created.
-
- * All the application resources are created and configured through the application configuration file:
-   pipeline instances, buffer pools, links (i.e. network interfaces), hardware device RX/TX queues,
-   software queues, traffic manager devices, EAL startup arguments, etc.
-
- * The configuration file syntax is “define by reference”, meaning that resources are defined as they are referenced.
-   First time a resource name is detected, it is registered with default parameters.
-   Optionally, the resource parameters can be further refined through a configuration file section dedicated to
-   that resource.
-
- * Command Line Interface (CLI)
-
-**Global CLI commands: link configuration, etc.**
-
- * Common pipeline CLI commands: ping (keep-alive), statistics, etc.
-
- * Pipeline type specific CLI commands: used to configure instances of specific pipeline type.
-   These commands are registered with the application when the pipeline type is registered.
-   For example, the commands for routing pipeline instances include: route add, route delete, route list, etc.
-
- * CLI commands can be grouped into scripts that can be invoked at initialization and at runtime.
-
-
-Design goals
-------------
-
-
-Rapid development
-~~~~~~~~~~~~~~~~~
-
-This application enables rapid development through quick connectivity of standard components called pipelines.
-These components are built using DPDK Packet Framework and encapsulate packet processing features at different levels:
-ports, tables, actions, pipelines and complete applications.
-
-Pipeline instances are instantiated, configured and inter-connected through low complexity configuration files loaded
-during application initialization.
-Each pipeline instance is mapped to a single CPU core, with each CPU core able to run one or multiple pipeline
-instances of same or different types. By loading a different configuration file, a different application is
-effectively started.
-
-
-Flexibility
-~~~~~~~~~~~
-
-Each packet processing application is typically represented as a chain of functional stages which is often called
-the functional pipeline of the application.
-These stages are mapped to CPU cores to create chains of CPU cores (pipeline model), clusters of CPU cores
-(run-to-completion model) or chains of clusters of CPU cores (hybrid model).
-
-This application allows all the above programming models.
-By applying changes to the configuration file, the application provides the flexibility to reshuffle its
-building blocks in different ways until the configuration providing the best performance is identified.
-
-
-Move pipelines around
-^^^^^^^^^^^^^^^^^^^^^
-
-The mapping of pipeline instances to CPU cores can be reshuffled through the configuration file.
-One or several pipeline instances can be mapped to the same CPU core.
-
-.. _figure_ip_pipelines_1:
-
-.. figure:: img/ip_pipelines_1.*
-
-   Example of moving pipeline instances across different CPU cores
-
-
-Move tables around
-^^^^^^^^^^^^^^^^^^
-
-There is some degree of flexibility for moving tables from one pipeline instance to another.
-Based on the configuration arguments passed to each pipeline instance in the configuration file, specific tables
-can be enabled or disabled.
-This way, a specific table can be “moved” from pipeline instance A to pipeline instance B by simply disabling its
-associated functionality for pipeline instance A while enabling it for pipeline instance B.
-
-Due to requirement to have simple syntax for the configuration file, moving tables across different pipeline
-instances is not as flexible as the mapping of pipeline instances to CPU cores, or mapping actions to pipeline tables.
-Complete flexibility in moving tables from one pipeline to another could be achieved through a complex pipeline
-description language that would detail the structural elements of the pipeline (ports, tables and actions) and
-their connectivity, resulting in complex syntax for the configuration file, which is not acceptable.
-Good configuration file readability through simple syntax is preferred.
-
-*Example*: the IP routing pipeline can run the routing function only (with ARP function run by a different
-pipeline instance), or it can run both the routing and ARP functions as part of the same pipeline instance.
-
-
-.. _figure_ip_pipelines_2:
-
-.. figure:: img/ip_pipelines_2.*
-
-   Example of moving tables across different pipeline instances
-
-
-Move actions around
-^^^^^^^^^^^^^^^^^^^
-
-When it makes sense, packet processing actions can be moved from one pipeline instance to another.
-Based on the configuration arguments passed to each pipeline instance in the configuration file, specific actions
-can be enabled or disabled.
-This way, a specific action can be "moved" from pipeline instance A to pipeline instance B by simply disabling its
-associated functionality for pipeline instance A while enabling it for pipeline instance B.
-
-*Example*: The flow actions of accounting, traffic metering, application identification, NAT, etc can be run as part
-of the flow classification pipeline instance or split across several flow actions pipeline instances, depending on
-the number of flow instances and their compute requirements.
-
-
-.. _figure_ip_pipelines_3:
-
-.. figure:: img/ip_pipelines_3.*
-
-   Example of moving actions across different tables and pipeline instances
-
-
-Performance
-~~~~~~~~~~~
-
-Performance of the application is the highest priority requirement.
-Flexibility is not provided at the expense of performance.
-
-The purpose of flexibility is to provide an incremental development methodology that allows monitoring the
-performance evolution:
-
-* Apply incremental changes in the configuration (e.g. mapping on pipeline instances to CPU cores)
-  in order to identify the configuration providing the best performance for a given application;
-
-* Add more processing incrementally (e.g. by enabling more actions for specific pipeline instances) until
-  the application is feature complete while checking the performance impact at each step.
-
-
-Debug capabilities
-~~~~~~~~~~~~~~~~~~
-
-The application provides a significant set of debug capabilities:
-
-* Command Line Interface (CLI) support for statistics polling: pipeline instance ping (keep-alive checks),
-  pipeline instance statistics per input port/output port/table, link statistics, etc;
-
-* Logging: Turn on/off application log messages based on priority level;
+ * All the application objects are created and managed through CLI commands:
+    * 'Primitive' objects used to create pipeline ports: memory pools, links (i.e. network interfaces), SW queues, traffic managers, etc.
+    * Action profiles: used to define the actions to be executed by pipeline input/output ports and tables.
+    * Pipeline components: input/output ports, tables, pipelines, mapping of pipelines to execution threads.
 
 Running the application
 -----------------------
 
 The application startup command line is::
 
-   ip_pipeline [-f CONFIG_FILE] [-s SCRIPT_FILE] -p PORT_MASK [-l LOG_LEVEL]
+   ip_pipeline [EAL_ARGS] -- [-s SCRIPT_FILE] [-h HOST] [-p PORT]
 
 The application startup arguments are:
 
-``-f CONFIG_FILE``
-
- * Optional: Yes
-
- * Default: ``./config/ip_pipeline.cfg``
-
- * Argument: Path to the configuration file to be loaded by the application.
-   Please refer to the :ref:`ip_pipeline_configuration_file` for details on how to write the configuration file.
-
 ``-s SCRIPT_FILE``
 
  * Optional: Yes
 
  * Default: Not present
 
- * Argument: Path to the CLI script file to be run by the master pipeline at application startup.
-   No CLI script file will be run at startup if this argument is not present.
-
-``-p PORT_MASK``
-
- * Optional: No
-
- * Default: N/A
+ * Argument: Path to the CLI script file to be run at application startup.
+   No CLI script file will run at startup if this argument is not present.
 
- * Argument: Hexadecimal mask of NIC port IDs to be used by the application.
-   First port enabled in this mask will be referenced as LINK0 as part of the application configuration file,
-   next port as LINK1, etc.
-
-``-l LOG_LEVEL``
+``-h HOST``
 
  * Optional: Yes
 
- * Default: 1 (High priority)
-
- * Argument: Log level to determine which application messages are to be printed to standard output.
-   Available log levels are: 0 (None), 1 (High priority), 2 (Low priority).
-   Only application messages whose priority is higher than or equal to the application log level will be printed.
-
-
-Application stages
-------------------
-
+ * Default: ``0.0.0.0``
 
-Configuration
-~~~~~~~~~~~~~
+ * Argument: IP Address of the host running ip pipeline application to be used by
+   remote TCP based client (telnet, netcat, etc.) for connection.
 
-During this stage, the application configuration file is parsed and its content is loaded into the application data
-structures.
-In case of any configuration file parse error, an error message is displayed and the application is terminated.
-Please refer to the :ref:`ip_pipeline_configuration_file` for a description of the application configuration file format.
+``-p PORT``
 
+ * Optional: Yes
 
-Configuration checking
-~~~~~~~~~~~~~~~~~~~~~~
-
-In the absence of any parse errors, the loaded content of application data structures is checked for overall consistency.
-In case of any configuration check error, an error message is displayed and the application is terminated.
-
-
-Initialization
-~~~~~~~~~~~~~~
-
-During this stage, the application resources are initialized and the handles to access them are saved into the
-application data structures.
-In case of any initialization error, an error message is displayed and the application is terminated.
-
-The typical resources to be initialized are: pipeline instances, buffer pools, links (i.e. network interfaces),
-hardware device RX/TX queues, software queues, traffic management devices, etc.
-
-
-.. _ip_pipeline_runtime:
-
-Run-time
-~~~~~~~~
-
-Each CPU core runs the pipeline instances assigned to it in time sharing mode and in round robin order:
-
-1. *Packet processing task*: The pipeline run-time code is typically a packet *processing* task built on top of
-   DPDK Packet Framework rte_pipeline library, which reads bursts of packets from the pipeline input ports,
-   performs table lookups and executes the identified actions for all tables in the pipeline, with packet
-   eventually written to pipeline output ports or dropped.
-
-2. *Message handling task*: Each CPU core will also periodically execute the *message handling* code of each
-   of the pipelines mapped to it.
-   The pipeline message handling code is processing the messages that are pending in the pipeline input message
-   queues, which are typically sent by the master CPU core for the on-the-fly pipeline configuration: check
-   that pipeline is still alive (ping), add/delete entries in the pipeline tables, get statistics, etc.
-   The frequency of executing the message handling code is usually much smaller than the frequency of executing
-   the packet processing work.
+ * Default: ``8086``
 
-Please refer to the :ref:`ip_pipeline_pipeline_section` for more details about the application pipeline module encapsulation.
+ * Argument: TCP port number at which the ip pipeline is running.
+   This port number should be used by remote TCP client (such as telnet, netcat, etc.) to connect to host application.
 
-.. _ip_pipeline_configuration_file:
+Refer to *DPDK Getting Started Guide* for general information on running applications and the Environment Abstraction Layer (EAL) options.
 
-Configuration file syntax
--------------------------
+The following is an example command to run ip pipeline application configured for layer 2 forwarding:
 
-Syntax overview
-~~~~~~~~~~~~~~~
+.. code-block:: console
 
-The syntax of the configuration file is designed to be simple, which favors readability.
-The configuration file is parsed using the DPDK library librte_cfgfile, which supports simple
-`INI file format <http://en.wikipedia.org/wiki/INI_file>`__ for configuration files.
+    $ ./build/ip_pipeline -c 0x3 -- -s examples/route_ecmp.cli
 
-As result, the configuration file is split into several sections, with each section containing one or more entries.
-The scope of each entry is its section, and each entry specifies a variable that is assigned a specific value.
-Any text after the ``;`` character is considered a comment and is therefore ignored.
+The application should start successfully and display as follows:
 
-The following are application specific: number of sections, name of each section, number of entries of each section,
-name of the variables used for each section entry, the value format (e.g. signed/unsigned integer, string, etc)
-and range of each section entry variable.
+.. code-block:: console
 
-Generic example of configuration file section:
+    EAL: Detected 40 lcore(s)
+    EAL: Detected 2 NUMA nodes
+    EAL: Multi-process socket /var/run/.rte_unix
+    EAL: Probing VFIO support...
+    EAL: PCI device 0000:02:00.0 on NUMA socket 0
+    EAL:   probe driver: 8086:10fb net_ixgbe
+    ...
 
-.. code-block:: ini
+To run remote client (e.g. telnet) to communicate with the ip pipeline application:
 
-    [<section_name>]
+.. code-block:: console
 
-    <variable_name_1> = <value_1>
+    $ telnet 127.0.0.1 8086
 
-    ; ...
+When running a telnet client as above, command prompt is displayed:
 
-    <variable_name_N> = <value_N>
+.. code-block:: console
 
+    Trying 127.0.0.1...
+    Connected to 127.0.0.1.
+    Escape character is '^]'.
 
-Application resources present in the configuration file
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    Welcome to IP Pipeline!
 
-.. _table_ip_pipelines_resource_name:
+    pipeline>
 
-.. tabularcolumns:: |p{4cm}|p{6cm}|p{6cm}|
+Once application and telnet client start running, messages can be sent from client to application.
+At any stage, telnet client can be terminated using the quit command.
 
-.. table:: Application resource names in the configuration file
 
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Resource type              | Format                      | Examples                                        |
-   +============================+=============================+=================================================+
-   | Pipeline                   | ``PIPELINE<ID>``            | ``PIPELINE0``, ``PIPELINE1``                    |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Mempool                    | ``MEMPOOL<ID>``             | ``MEMPOOL0``, ``MEMPOOL1``                      |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Link (network interface)   | ``LINK<ID>``                | ``LINK0``, ``LINK1``                            |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Link RX queue              | ``RXQ<LINK_ID>.<QUEUE_ID>`` | ``RXQ0.0``, ``RXQ1.5``                          |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Link TX queue              | ``TXQ<LINK_ID>.<QUEUE_ID>`` | ``TXQ0.0``, ``TXQ1.5``                          |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Software queue             | ``SWQ<ID>``                 | ``SWQ0``, ``SWQ1``                              |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Traffic Manager            | ``TM<LINK_ID>``             | ``TM0``, ``TM1``                                |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | KNI (kernel NIC interface) | ``KNI<LINK_ID>``            | ``KNI0``, ``KNI1``                              |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Source                     | ``SOURCE<ID>``              | ``SOURCE0``, ``SOURCE1``                        |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Sink                       | ``SINK<ID>``                | ``SINK0``, ``SINK1``                            |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-   | Message queue              | ``MSGQ<ID>``                | ``MSGQ0``, ``MSGQ1``,                           |
-   |                            | ``MSGQ-REQ-PIPELINE<ID>``   | ``MSGQ-REQ-PIPELINE2``, ``MSGQ-RSP-PIPELINE2,`` |
-   |                            | ``MSGQ-RSP-PIPELINE<ID>``   | ``MSGQ-REQ-CORE-s0c1``, ``MSGQ-RSP-CORE-s0c1``  |
-   |                            | ``MSGQ-REQ-CORE-<CORE_ID>`` |                                                 |
-   |                            | ``MSGQ-RSP-CORE-<CORE_ID>`` |                                                 |
-   +----------------------------+-----------------------------+-------------------------------------------------+
-
-``LINK`` instances are created implicitly based on the ``PORT_MASK`` application startup argument.
-``LINK0`` is the first port enabled in the ``PORT_MASK``, port 1 is the next one, etc.
-The LINK ID is different than the DPDK PMD-level NIC port ID, which is the actual position in the bitmask mentioned above.
-For example, if bit 5 is the first bit set in the bitmask, then ``LINK0`` is having the PMD ID of 5.
-This mechanism creates a contiguous LINK ID space and isolates the configuration file against changes in the board
-PCIe slots where NICs are plugged in.
-
-``RXQ``, ``TXQ``, ``TM`` and ``KNI`` instances have the LINK ID as part of their name.
-For example, ``RXQ2.1``, ``TXQ2.1`` and ``TM2`` are all associated with ``LINK2``.
-
-
-Rules to parse the configuration file
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The main rules used to parse the configuration file are:
-
-1. Application resource name determines the type of resource based on the name prefix.
-
-   *Example*: all software queues need to start with ``SWQ`` prefix, so ``SWQ0`` and ``SWQ5`` are valid software
-   queue names.
-
-2. An application resource is defined by creating a configuration file section with its name.
-   The configuration file section allows fine tuning on any of the resource parameters.
-   Some resource parameters are mandatory, in which case it is required to have them specified as part of the
-   section, while some others are optional, in which case they get assigned their default value when not present.
-
-   *Example*: section ``SWQ0`` defines a software queue named SWQ0, whose parameters are detailed as part of this section.
-
-3. An application resource can also be defined by referencing it.
-   Referencing a resource takes place by simply using its name as part of the value assigned to a variable in any
-   configuration file section.
-   In this case, the resource is registered with all its parameters having their default values.
-   Optionally, a section with the resource name can be added to the configuration file to fine tune some or all
-   of the resource parameters.
-
-   *Example*: in section ``PIPELINE3``, variable ``pktq_in`` includes ``SWQ5`` as part of its list, which results
-   in defining a software queue named ``SWQ5``; when there is no ``SWQ5`` section present in the configuration file,
-   ``SWQ5`` gets registered with default parameters.
-
-
-.. _ip_pipeline_pipeline_section:
-
-PIPELINE section
-~~~~~~~~~~~~~~~~
-
-.. _table_ip_pipelines_pipeline_section_1:
-
-.. tabularcolumns:: |p{2.5cm}|p{7cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}|
-
-.. table:: Configuration file PIPELINE section (1/2)
-
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-   | Section       | Description                                               | Optional      | Range                  | Default value  |
-   +===============+===========================================================+===============+========================+================+
-   | type          | Pipeline type. Defines the functionality to be            | NO            | See "List              | N/A            |
-   |               | executed.                                                 |               | of pipeline types"     |                |
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-   | core          | CPU core to run the current pipeline.                     | YES           | See "CPU Core          | CPU socket 0,  |
-   |               |                                                           |               | notation"              | core 0,        |
-   |               |                                                           |               |                        | hyper-thread 0 |
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-   | pktq_in       | Packet queues to serve as input ports for the             | YES           | List of input          | Empty list     |
-   |               | current pipeline instance. The acceptable packet          |               | packet queue IDs       |                |
-   |               | queue types are: ``RXQ``, ``SWQ``, ``TM`` and ``SOURCE``. |               |                        |                |
-   |               | First device in this list is used as pipeline input port  |               |                        |                |
-   |               | 0, second as pipeline input port 1, etc.                  |               |                        |                |
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-   | pktq_out      | Packet queues to serve as output ports for the            | YES           | List of output         | Empty list     |
-   |               | current pipeline instance. The acceptable packet          |               | packet queue IDs.      |                |
-   |               | queue types are: ``TXQ``, ``SWQ``, ``TM`` and ``SINK``.   |               |                        |                |
-   |               | First device in this list is used as pipeline output      |               |                        |                |
-   |               | port 0, second as pipeline output port 1, etc.            |               |                        |                |
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-
-.. _table_ip_pipelines_pipeline_section_2:
-
-.. tabularcolumns:: |p{2.5cm}|p{7cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}|
-
-.. table:: Configuration file PIPELINE section (2/2)
-
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-   | Section       | Description                                               | Optional      | Range                  | Default value  |
-   +===============+===========================================================+===============+========================+================+
-   | msgq_in       | Input message queues. These queues contain                | YES           | List of message        | Empty list     |
-   |               | request messages that need to be handled by the           |               | queue IDs              |                |
-   |               | current pipeline instance. The type and format of         |               |                        |                |
-   |               | request messages is defined by the pipeline type.         |               |                        |                |
-   |               | For each pipeline instance, there is an input             |               |                        |                |
-   |               | message queue defined implicitly, whose name is:          |               |                        |                |
-   |               | ``MSGQ-REQ-<PIPELINE_ID>``. This message queue            |               |                        |                |
-   |               | should not be mentioned as part of msgq_in list.          |               |                        |                |
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-   | msgq_out      | Output message queues. These queues are used by           | YES           | List of message        | Empty list     |
-   |               | the current pipeline instance to write response           |               | queue IDs              |                |
-   |               | messages as result of request messages being              |               |                        |                |
-   |               | handled. The type and format of response                  |               |                        |                |
-   |               | messages is defined by the pipeline type.                 |               |                        |                |
-   |               | For each pipeline instance, there is an output            |               |                        |                |
-   |               | message queue defined implicitly, whose name is:          |               |                        |                |
-   |               | ``MSGQ-RSP-<PIPELINE_ID>``. This message queue            |               |                        |                |
-   |               | should not be mentioned as part of msgq_out list.         |               |                        |                |
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-   | timer_period  | Time period, measured in milliseconds,                    | YES           | milliseconds           | 1 ms           |
-   |               | for handling the input message queues.                    |               |                        |                |
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-   | <any other>   | Arguments to be passed to the current pipeline            | Depends on    | Depends on             | Depends on     |
-   |               | instance. Format of the arguments, their type,            | pipeline type | pipeline type          | pipeline type  |
-   |               | whether each argument is optional or mandatory            |               |                        |                |
-   |               | and its default value (when optional) are defined         |               |                        |                |
-   |               | by the pipeline type.                                     |               |                        |                |
-   |               | The value of the arguments is applicable to the           |               |                        |                |
-   |               | current pipeline instance only.                           |               |                        |                |
-   +---------------+-----------------------------------------------------------+---------------+------------------------+----------------+
-
-
-CPU core notation
-^^^^^^^^^^^^^^^^^
-
-The CPU Core notation is::
-
-    <CPU core> ::= [s|S<CPU socket ID>][c|C]<CPU core ID>[h|H]
-
-For example::
-
-    CPU socket 0, core 0, hyper-thread 0: 0, c0, s0c0
-
-    CPU socket 0, core 0, hyper-thread 1: 0h, c0h, s0c0h
-
-    CPU socket 3, core 9, hyper-thread 1: s3c9h
-
-
-MEMPOOL section
-~~~~~~~~~~~~~~~
+Application stages
+------------------
 
-.. _table_ip_pipelines_mempool_section:
-
-.. tabularcolumns:: |p{2.5cm}|p{6cm}|p{1.5cm}|p{1.5cm}|p{3cm}|
-
-.. table:: Configuration file MEMPOOL section
-
-   +---------------+-----------------------------------------------+----------+----------+---------------------------+
-   | Section       | Description                                   | Optional | Type     | Default value             |
-   +===============+===============================================+==========+==========+===========================+
-   | buffer_size   | Buffer size (in bytes) for the current        | YES      | uint32_t | 2048                      |
-   |               | buffer pool.                                  |          |          | + sizeof(struct rte_mbuf) |
-   |               |                                               |          |          | + HEADROOM                |
-   +---------------+-----------------------------------------------+----------+----------+---------------------------+
-   | pool_size     | Number of buffers in the current buffer pool. | YES      | uint32_t | 32K                       |
-   +---------------+-----------------------------------------------+----------+----------+---------------------------+
-   | cache_size    | Per CPU thread cache size (in number of       | YES      | uint32_t | 256                       |
-   |               | buffers) for the current buffer pool.         |          |          |                           |
-   +---------------+-----------------------------------------------+----------+----------+---------------------------+
-   | cpu           | CPU socket ID where to allocate memory for    | YES      | uint32_t | 0                         |
-   |               | the current buffer pool.                      |          |          |                           |
-   +---------------+-----------------------------------------------+----------+----------+---------------------------+
-
-
-LINK section
-~~~~~~~~~~~~
-
-.. _table_ip_pipelines_link_section:
-
-.. tabularcolumns:: |p{3cm}|p{7cm}|p{1.5cm}|p{1.5cm}|p{2cm}|
-
-.. table:: Configuration file LINK section
-
-   +-----------------+----------------------------------------------+----------+----------+-------------------+
-   | Section entry   | Description                                  | Optional | Type     | Default value     |
-   +=================+==============================================+==========+==========+===================+
-   | arp_q           | NIC RX queue where ARP packets should        | YES      | 0 .. 127 | 0 (default queue) |
-   |                 | be filtered.                                 |          |          |                   |
-   +-----------------+----------------------------------------------+----------+----------+-------------------+
-   | tcp_syn_local_q | NIC RX queue where TCP packets with SYN      | YES      | 0 .. 127 | 0 (default queue) |
-   |                 | flag should be filtered.                     |          |          |                   |
-   +-----------------+----------------------------------------------+----------+----------+-------------------+
-   | ip_local_q      | NIC RX queue where IP packets with local     | YES      | 0 .. 127 | 0 (default queue) |
-   |                 | destination should be filtered.              |          |          |                   |
-   |                 | When TCP, UDP and SCTP local queues are      |          |          |                   |
-   |                 | defined, they take higher priority than this |          |          |                   |
-   |                 | queue.                                       |          |          |                   |
-   +-----------------+----------------------------------------------+----------+----------+-------------------+
-   | tcp_local_q     | NIC RX queue where TCP packets with local    | YES      | 0 .. 127 | 0 (default queue) |
-   |                 | destination should be filtered.              |          |          |                   |
-   +-----------------+----------------------------------------------+----------+----------+-------------------+
-   | udp_local_q     | NIC RX queue where TCP packets with local    | YES      | 0 .. 127 | 0 (default queue) |
-   |                 | destination should be filtered.              |          |          |                   |
-   +-----------------+----------------------------------------------+----------+----------+-------------------+
-   | sctp_local_q    | NIC RX queue where TCP packets with local    | YES      | 0 .. 127 | 0 (default queue) |
-   |                 | destination should be filtered.              |          |          |                   |
-   +-----------------+----------------------------------------------+----------+----------+-------------------+
-   | promisc         | Indicates whether current link should be     | YES      | YES/NO   | YES               |
-   |                 | started in promiscuous mode.                 |          |          |                   |
-   +-----------------+----------------------------------------------+----------+----------+-------------------+
-
-
-RXQ section
-~~~~~~~~~~~
-
-.. _table_ip_pipelines_rxq_section:
-
-.. tabularcolumns:: |p{3cm}|p{7cm}|p{1.5cm}|p{1.5cm}|p{2cm}|
-
-.. table:: Configuration file RXQ section
-
-   +---------------+--------------------------------------------+----------+----------+---------------+
-   | Section       | Description                                | Optional | Type     | Default value |
-   +===============+============================================+==========+==========+===============+
-   | mempool       | Mempool to use for buffer allocation for   | YES      | uint32_t | MEMPOOL0      |
-   |               | current NIC RX queue. The mempool ID has   |          |          |               |
-   |               | to be associated with a valid instance     |          |          |               |
-   |               | defined in the mempool entry of the global |          |          |               |
-   |               | section.                                   |          |          |               |
-   +---------------+--------------------------------------------+----------+----------+---------------+
-   | Size          | NIC RX queue size (number of descriptors)  | YES      | uint32_t | 128           |
-   +---------------+--------------------------------------------+----------+----------+---------------+
-   | burst         | Read burst size (number of descriptors)    | YES      | uint32_t | 32            |
-   +---------------+--------------------------------------------+----------+----------+---------------+
-
-
-TXQ section
-~~~~~~~~~~~
-
-.. _table_ip_pipelines_txq_section:
-
-.. tabularcolumns:: |p{2.5cm}|p{7cm}|p{1.5cm}|p{2cm}|p{1.5cm}|
-
-.. table:: Configuration file TXQ section
-
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | Section       | Description                                  | Optional | Type             | Default value |
-   +===============+==============================================+==========+==================+===============+
-   | size          | NIC TX queue size (number of descriptors)    | YES      | uint32_t         | 512           |
-   |               |                                              |          | power of 2       |               |
-   |               |                                              |          | > 0              |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | burst         | Write burst size (number of descriptors)     | YES      | uint32_t         | 32            |
-   |               |                                              |          | power of 2       |               |
-   |               |                                              |          | 0 < burst < size |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | dropless      | When dropless is set to NO, packets can be   | YES      | YES/NO           | NO            |
-   |               | dropped if not enough free slots are         |          |                  |               |
-   |               | currently available in the queue, so the     |          |                  |               |
-   |               | write operation to the queue is non-         |          |                  |               |
-   |               | blocking.                                    |          |                  |               |
-   |               | When dropless is set to YES, packets cannot  |          |                  |               |
-   |               | be dropped if not enough free slots are      |          |                  |               |
-   |               | currently available in the queue, so the     |          |                  |               |
-   |               | write operation to the queue is blocking, as |          |                  |               |
-   |               | the write operation is retried until enough  |          |                  |               |
-   |               | free slots become available and all the      |          |                  |               |
-   |               | packets are successfully written to the      |          |                  |               |
-   |               | queue.                                       |          |                  |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | n_retries     | Number of retries. Valid only when dropless  | YES      | uint32_t         | 0             |
-   |               | is set to YES. When set to 0, it indicates   |          |                  |               |
-   |               | unlimited number of retries.                 |          |                  |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-
-
-SWQ section
-~~~~~~~~~~~
-
-.. _table_ip_pipelines_swq_section:
-
-.. tabularcolumns:: |p{2.5cm}|p{7cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}|
-
-.. table:: Configuration file SWQ section
-
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | Section       | Description                                  | Optional | Type             | Default value |
-   +===============+==============================================+==========+==================+===============+
-   | size          | Queue size (number of packets)               | YES      | uint32_t         | 256           |
-   |               |                                              |          | power of 2       |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | burst_read    | Read burst size (number of packets)          | YES      | uint32_t         | 32            |
-   |               |                                              |          | power of 2       |               |
-   |               |                                              |          | 0 < burst < size |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | burst_write   | Write burst size (number of packets)         | YES      | uint32_t         | 32            |
-   |               |                                              |          | power of 2       |               |
-   |               |                                              |          | 0 < burst < size |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | dropless      | When dropless is set to NO, packets can be   | YES      | YES/NO           | NO            |
-   |               | dropped if not enough free slots are         |          |                  |               |
-   |               | currently available in the queue, so the     |          |                  |               |
-   |               | write operation to the queue is non-         |          |                  |               |
-   |               | blocking.                                    |          |                  |               |
-   |               | When dropless is set to YES, packets cannot  |          |                  |               |
-   |               | be dropped if not enough free slots are      |          |                  |               |
-   |               | currently available in the queue, so the     |          |                  |               |
-   |               | write operation to the queue is blocking, as |          |                  |               |
-   |               | the write operation is retried until enough  |          |                  |               |
-   |               | free slots become available and all the      |          |                  |               |
-   |               | packets are successfully written to the      |          |                  |               |
-   |               | queue.                                       |          |                  |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | n_retries     | Number of retries. Valid only when dropless  | YES      | uint32_t         | 0             |
-   |               | is set to YES. When set to 0, it indicates   |          |                  |               |
-   |               | unlimited number of retries.                 |          |                  |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | cpu           | CPU socket ID where to allocate memory       | YES      | uint32_t         | 0             |
-   |               | for this SWQ.                                |          |                  |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-
-
-TM section
-~~~~~~~~~~
-
-.. _table_ip_pipelines_tm_section:
-
-.. tabularcolumns:: |p{2.5cm}|p{7cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}|
-
-.. table:: Configuration file TM section
-
-   +---------------+---------------------------------------------+----------+----------+---------------+
-   | Section       | Description                                 | Optional | Type     | Default value |
-   +===============+=============================================+==========+==========+===============+
-   | Cfg           | File name to parse for the TM configuration | YES      | string   | tm_profile    |
-   |               | to be applied. The syntax of this file is   |          |          |               |
-   |               | described in the examples/qos_sched DPDK    |          |          |               |
-   |               | application documentation.                  |          |          |               |
-   +---------------+---------------------------------------------+----------+----------+---------------+
-   | burst_read    | Read burst size (number of packets)         | YES      | uint32_t | 64            |
-   +---------------+---------------------------------------------+----------+----------+---------------+
-   | burst_write   | Write burst size (number of packets)        | YES      | uint32_t | 32            |
-   +---------------+---------------------------------------------+----------+----------+---------------+
-
-
-KNI section
-~~~~~~~~~~~
-
-.. _table_ip_pipelines_kni_section:
-
-.. tabularcolumns:: |p{2.5cm}|p{7cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}|
-
-.. table:: Configuration file KNI section
-
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | Section       | Description                                  | Optional | Type             | Default value |
-   +===============+==============================================+==========+==================+===============+
-   | core          | CPU core to run the KNI kernel thread.       | YES      | See "CPU Core    | Not set       |
-   |               | When core config is set, the KNI kernel      |          | notation"        |               |
-   |               | thread will be bound to the particular core. |          |                  |               |
-   |               | When core config is not set, the KNI kernel  |          |                  |               |
-   |               | thread will be scheduled by the OS.          |          |                  |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | mempool       | Mempool to use for buffer allocation for     | YES      | uint32_t         | MEMPOOL0      |
-   |               | current KNI port. The mempool ID has         |          |                  |               |
-   |               | to be associated with a valid instance       |          |                  |               |
-   |               | defined in the mempool entry of the global   |          |                  |               |
-   |               | section.                                     |          |                  |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | burst_read    | Read burst size (number of packets)          | YES      | uint32_t         | 32            |
-   |               |                                              |          | power of 2       |               |
-   |               |                                              |          | 0 < burst < size |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | burst_write   | Write burst size (number of packets)         | YES      | uint32_t         | 32            |
-   |               |                                              |          | power of 2       |               |
-   |               |                                              |          | 0 < burst < size |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | dropless      | When dropless is set to NO, packets can be   | YES      | YES/NO           | NO            |
-   |               | dropped if not enough free slots are         |          |                  |               |
-   |               | currently available in the queue, so the     |          |                  |               |
-   |               | write operation to the queue is non-         |          |                  |               |
-   |               | blocking.                                    |          |                  |               |
-   |               | When dropless is set to YES, packets cannot  |          |                  |               |
-   |               | be dropped if not enough free slots are      |          |                  |               |
-   |               | currently available in the queue, so the     |          |                  |               |
-   |               | write operation to the queue is blocking, as |          |                  |               |
-   |               | the write operation is retried until enough  |          |                  |               |
-   |               | free slots become available and all the      |          |                  |               |
-   |               | packets are successfully written to the      |          |                  |               |
-   |               | queue.                                       |          |                  |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-   | n_retries     | Number of retries. Valid only when dropless  | YES      | uint64_t         | 0             |
-   |               | is set to YES. When set to 0, it indicates   |          |                  |               |
-   |               | unlimited number of retries.                 |          |                  |               |
-   +---------------+----------------------------------------------+----------+------------------+---------------+
-
-
-SOURCE section
+Initialization
 ~~~~~~~~~~~~~~
 
-.. _table_ip_pipelines_source_section:
-
-.. tabularcolumns:: |p{2.5cm}|p{7cm}|p{1.5cm}|p{1.5cm}|p{2cm}|
-
-.. table:: Configuration file SOURCE section
-
-   +---------------+---------------------------------------+----------+----------+---------------+
-   | Section       | Description                           | Optional | Type     | Default value |
-   +===============+=======================================+==========+==========+===============+
-   | Mempool       | Mempool to use for buffer allocation. | YES      | uint32_t | MEMPOOL0      |
-   +---------------+---------------------------------------+----------+----------+---------------+
-   | Burst         | Read burst size (number of packets)   |          | uint32_t | 32            |
-   +---------------+---------------------------------------+----------+----------+---------------+
-
-
-SINK section
-~~~~~~~~~~~~
-
-Currently, there are no parameters to be passed to a sink device, so
-SINK section is not allowed.
+During this stage, EAL layer is initialised and application specific arguments are parsed. Furthermore, the data strcutures
+(i.e. linked lists) for application objects are initialized. In case of any initialization error, an error message
+is displayed and the application is terminated.
 
-MSGQ section
-~~~~~~~~~~~~
+.. _ip_pipeline_runtime:
 
-.. _table_ip_pipelines_msgq_section:
+Run-time
+~~~~~~~~
 
-.. tabularcolumns:: |p{2.5cm}|p{7cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}|
+The master thread is creating and managing all the application objects based on CLI input.
 
-.. table:: Configuration file MSGQ section
+Each data plane thread runs one or several pipelines previously assigned to it in round-robin order. Each data plane thread
+executes two tasks in time-sharing mode:
 
-   +---------+--------------------------------------------+----------+------------+---------------+
-   | Section | Description                                | Optional | Type       | Default value |
-   +=========+============================================+==========+============+===============+
-   | size    | Queue size (number of packets)             | YES      | uint32_t   | 64            |
-   |         |                                            |          | != 0       |               |
-   |         |                                            |          | power of 2 |               |
-   +---------+--------------------------------------------+----------+------------+---------------+
-   | cpu     | CPU socket ID where to allocate memory for | YES      | uint32_t   | 0             |
-   |         | the current queue.                         |          |            |               |
-   +---------+--------------------------------------------+----------+------------+---------------+
+1. *Packet processing task*: Process bursts of input packets read from the pipeline input ports.
 
+2. *Message handling task*: Periodically, the data plane thread pauses the packet processing task and polls for request
+   messages send by the master thread. Examples: add/remove pipeline to/from current data plane thread, add/delete rules
+   to/from given table of a specific pipeline owned by the current data plane thread, read statistics, etc.
 
-EAL section
-~~~~~~~~~~~
+Examples
+--------
 
-The application generates the EAL parameters rather than reading them from the command line.
+.. _table_examples:
 
-The CPU core mask parameter is generated based on the core entry of all PIPELINE sections.
-All the other EAL parameters can be set from this section of the application configuration file.
+.. tabularcolumns:: |p{3cm}|p{5cm}|p{4cm}|p{4cm}|
 
+.. table:: Pipeline examples provided with the application
+
+   +-----------------------+----------------------+----------------+------------------------------------+
+   | Name                  | Table(s)             | Actions        | Messages                           |
+   +=======================+======================+================+====================================+
+   | L2fwd                 | Stub                 | Forward        | 1. Mempool create                  |
+   |                       |                      |                | 2. Link create                     |
+   | Note: Implemented     |                      |                | 3. Pipeline create                 |
+   | using pipeline with   |                      |                | 4. Pipeline port in/out            |
+   | a simple pass-through |                      |                | 5. Pipeline table                  |
+   | connection between    |                      |                | 6. Pipeline port in table          |
+   | input and output      |                      |                | 7. Pipeline enable                 |
+   | ports.                |                      |                | 8. Pipeline table rule add         |
+   +-----------------------+----------------------+----------------+------------------------------------+
+   | Flow classification   | Exact match          | Forward        | 1. Mempool create                  |
+   |                       |                      |                | 2. Link create                     |
+   |                       | * Key = byte array   |                | 3. Pipeline create                 |
+   |                       |    (16 bytes)        |                | 4. Pipeline port in/out            |
+   |                       | * Offset = 278       |                | 5. Pipeline table                  |
+   |                       | * Table size = 64K   |                | 6. Pipeline port in table          |
+   |                       |                      |                | 7. Pipeline enable                 |
+   |                       |                      |                | 8. Pipeline table rule add default |
+   |                       |                      |                | 9. Pipeline table rule add         |
+   +-----------------------+----------------------+----------------+------------------------------------+
+   | KNI                   | Stub                 | Forward        | 1. Mempool create                  |
+   |                       |                      |                | 2. Link create                     |
+   |                       |                      |                | 3. Pipeline create                 |
+   |                       |                      |                | 4. Pipeline port in/out            |
+   |                       |                      |                | 5. Pipeline table                  |
+   |                       |                      |                | 6. Pipeline port in table          |
+   |                       |                      |                | 7. Pipeline enable                 |
+   |                       |                      |                | 8. Pipeline table rule add         |
+   +-----------------------+----------------------+----------------+------------------------------------+
+   | Firewall              | ACL                  | Allow/Drop     | 1. Mempool create                  |
+   |                       |                      |                | 2. Link create                     |
+   |                       | * Key = n-tuple      |                | 3. Pipeline create                 |
+   |                       | * Offset = 270       |                | 4. Pipeline port in/out            |
+   |                       | * Table size = 4K    |                | 5. Pipeline table                  |
+   |                       |                      |                | 6. Pipeline port in table          |
+   |                       |                      |                | 7. Pipeline enable                 |
+   |                       |                      |                | 8. Pipeline table rule add default |
+   |                       |                      |                | 9. Pipeline table rule add         |
+   +-----------------------+----------------------+----------------+------------------------------------+
+   | IP routing            | LPM (IPv4)           | Forward        | 1. Mempool Create                  |
+   |                       |                      |                | 2. Link create                     |
+   |                       | * Key = IP dest addr |                | 3. Pipeline creat                  |
+   |                       | * Offset = 286       |                | 4. Pipeline port in/out            |
+   |                       | * Table size = 4K    |                | 5. Pipeline table                  |
+   |                       |                      |                | 6. Pipeline port in table          |
+   |                       |                      |                | 7. Pipeline enable                 |
+   |                       |                      |                | 8. Pipeline table rule add default |
+   |                       |                      |                | 9. Pipeline table rule add         |
+   +-----------------------+----------------------+----------------+------------------------------------+
+   | Equal-cost multi-path | LPM (IPv4)           | Forward,       | 1. Mempool Create                  |
+   | routing (ECMP)        |                      | load balance,  | 2. Link create                     |
+   |                       | * Key = IP dest addr | encap ether    | 3. Pipeline create                 |
+   |                       | * Offset = 286       |                | 4. Pipeline port in/out            |
+   |                       | * Table size = 4K    |                | 5. Pipeline table (LPM)            |
+   |                       |                      |                | 6. Pipeline table (Array)          |
+   |                       |                      |                | 7. Pipeline port in table (LPM)    |
+   |                       | Array                |                | 8. Pipeline enable                 |
+   |                       |                      |                | 9. Pipeline table rule add default |
+   |                       | * Key = Array index  |                | 10. Pipeline table rule add(LPM)   |
+   |                       | * Offset = 256       |                | 11. Pipeline table rule add(Array) |
+   |                       | * Size = 64K         |                |                                    |
+   |                       |                      |                |                                    |
+   +-----------------------+----------------------+----------------+------------------------------------+
 
-Library of pipeline types
--------------------------
+Command Line Interface (CLI)
+----------------------------
 
-Pipeline module
-~~~~~~~~~~~~~~~
-
-A pipeline is a self-contained module that implements a packet processing function and is typically implemented on
-top of the DPDK Packet Framework *librte_pipeline* library.
-The application provides a run-time mechanism to register different pipeline types.
-
-Depending on the required configuration, each registered pipeline type (pipeline class) is instantiated one or
-several times, with each pipeline instance (pipeline object) assigned to one of the available CPU cores.
-Each CPU core can run one or more pipeline instances, which might be of same or different types.
-For more information of the CPU core threading model, please refer to the :ref:`ip_pipeline_runtime` section.
-
-
-Pipeline type
-^^^^^^^^^^^^^
-
-Each pipeline type is made up of a back-end and a front-end. The back-end represents the packet processing engine
-of the pipeline, typically implemented using the DPDK Packet Framework libraries, which reads packets from the
-input packet queues, handles them and eventually writes them to the output packet queues or drops them.
-The front-end represents the run-time configuration interface of the pipeline, which is exposed as CLI commands.
-The front-end communicates with the back-end through message queues.
-
-.. _table_ip_pipelines_back_end:
-
-.. tabularcolumns:: |p{1cm}|p{2cm}|p{12cm}|
-
-.. table:: Pipeline back-end
-
-   +------------+------------------+--------------------------------------------------------------------+
-   | Field name | Field type       | Description                                                        |
-   +============+==================+====================================================================+
-   | f_init     | Function pointer | Function to initialize the back-end of the current pipeline        |
-   |            |                  | instance. Typical work implemented by this function for the        |
-   |            |                  | current pipeline instance:                                         |
-   |            |                  | Memory allocation;                                                 |
-   |            |                  | Parse the pipeline type specific arguments;                        |
-   |            |                  | Initialize the pipeline input ports, output ports and tables,      |
-   |            |                  | interconnect input ports to tables;                                |
-   |            |                  | Set the message handlers.                                          |
-   +------------+------------------+--------------------------------------------------------------------+
-   | f_free     | Function pointer | Function to free the resources allocated by the back-end of the    |
-   |            |                  | current pipeline instance.                                         |
-   +------------+------------------+--------------------------------------------------------------------+
-   | f_run      | Function pointer | Set to NULL for pipelines implemented using the DPDK library       |
-   |            |                  | librte_pipeline (typical case), and to non-NULL otherwise. This    |
-   |            |                  | mechanism is made available to support quick integration of        |
-   |            |                  | legacy code.                                                       |
-   |            |                  | This function is expected to provide the packet processing         |
-   |            |                  | related code to be called as part of the CPU thread dispatch       |
-   |            |                  | loop, so this function is not allowed to contain an infinite loop. |
-   +------------+------------------+--------------------------------------------------------------------+
-   | f_timer    | Function pointer | Function to read the pipeline input message queues, handle         |
-   |            |                  | the request messages, create response messages and write           |
-   |            |                  | the response queues. The format of request and response            |
-   |            |                  | messages is defined by each pipeline type, with the exception      |
-   |            |                  | of some requests which are mandatory for all pipelines (e.g.       |
-   |            |                  | ping, statistics).                                                 |
-   +------------+------------------+--------------------------------------------------------------------+
+Link
+~~~~
 
+ Link configuration ::
 
-.. _table_ip_pipelines_front_end:
-
-.. tabularcolumns:: |p{1cm}|p{2cm}|p{12cm}|
+   link <link_name>
+    dev <device_name>|port <port_id>
+    rxq <n_queues> <queue_size> <mempool_name>
+    txq <n_queues> <queue_size> promiscuous on | off
+    [rss <qid_0> ... <qid_n>]
 
-.. table:: Pipeline front-end
-
-   +------------+-----------------------+-------------------------------------------------------------------+
-   | Field name | Field type            | Description                                                       |
-   +============+=======================+===================================================================+
-   | f_init     | Function pointer      | Function to initialize the front-end of the current pipeline      |
-   |            |                       | instance.                                                         |
-   +------------+-----------------------+-------------------------------------------------------------------+
-   | f_post_init| Function pointer      | Function to run once after f_init.                                |
-   +------------+-----------------------+-------------------------------------------------------------------+
-   | f_track    | Function pointer      | See section Tracking pipeline output port to physical link.       |
-   +------------+-----------------------+-------------------------------------------------------------------+
-   | f_free     | Function pointer      | Function to free the resources allocated by the front-end of      |
-   |            |                       | the current pipeline instance.                                    |
-   +------------+-----------------------+-------------------------------------------------------------------+
-   | cmds       | Array of CLI commands | Array of CLI commands to be registered to the application CLI     |
-   |            |                       | for the current pipeline type. Even though the CLI is executed    |
-   |            |                       | by a different pipeline (typically, this is the master pipeline), |
-   |            |                       | from modularity perspective is more efficient to keep the         |
-   |            |                       | message client side (part of the front-end) together with the     |
-   |            |                       | message server side (part of the back-end).                       |
-   +------------+-----------------------+-------------------------------------------------------------------+
 
+Mempool
+~~~~~~~
 
-Tracking pipeline output port to physical link
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Each pipeline instance is a standalone block that does not have visibility into the other pipeline instances or
-the application-level pipeline inter-connectivity.
-In some cases, it is useful for a pipeline instance to get application level information related to pipeline
-connectivity, such as to identify the output link (e.g. physical NIC port) where one of its output ports connected,
-either directly or indirectly by traversing other pipeline instances.
+ Mempool create ::
 
-Tracking can be successful or unsuccessful.
-Typically, tracking for a specific pipeline instance is successful when each one of its input ports can be mapped
-to a single output port, meaning that all packets read from the current input port can only go out on a single
-output port.
-Depending on the pipeline type, some exceptions may be allowed: a small portion of the packets, considered exception
-packets, are sent out on an output port that is pre-configured for this purpose.
-
-For pass-through pipeline type, the tracking is always successful.
-For pipeline types as flow classification, firewall or routing, the tracking is only successful when the number of
-output ports for the current pipeline instance is 1.
-
-This feature is used by the IP routing pipeline for adding/removing implicit routes every time a link is brought
-up/down.
+   mempool <mempool_name> buffer <buffer_size>
+   pool <pool_size> cache <cache_size> cpu <cpu_id>
 
 
-Table copies
-^^^^^^^^^^^^
-
-Fast table copy: pipeline table used by pipeline for the packet processing task, updated through messages, table
-data structures are optimized for lookup operation.
-
-Slow table copy: used by the configuration layer, typically updated through CLI commands, kept in sync with the fast
-copy (its update triggers the fast copy update).
-Required for executing advanced table queries without impacting the packet processing task, therefore the slow copy
-is typically organized using different criteria than the fast copy.
-
-Examples:
-
-* Flow classification: Search through current set of flows (e.g. list all flows with a specific source IP address);
-
-* Firewall: List rules in descending order of priority;
-
-* Routing table: List routes sorted by prefix depth and their type (local, remote, default);
-
-* ARP: List entries sorted per output interface.
-
-
-Packet meta-data
-^^^^^^^^^^^^^^^^
-
-Packet meta-data field offsets provided as argument to pipeline instances are essentially defining the data structure
-for the packet meta-data used by the current application use-case.
-It is very useful to put it in the configuration file as a comment in order to facilitate the readability of the
-configuration file.
-
-The reason to use field offsets for defining the data structure for the packet meta-data is due to the C language
-limitation of not being able to define data structures at run-time.
-Feature to consider: have the configuration file parser automatically generate and print the data structure defining
-the packet meta-data for the current application use-case.
-
-Packet meta-data typically contains:
+Software queue
+~~~~~~~~~~~~~~
 
-1. Pure meta-data: intermediate data per packet that is computed internally, passed between different tables of
-   the same pipeline instance (e.g. lookup key for the ARP table is obtained from the routing table), or between
-   different pipeline instances (e.g. flow ID, traffic metering color, etc);
+  Create software queue ::
 
-2. Packet fields: typically, packet header fields that are read directly from the packet, or read from the packet
-   and saved (duplicated) as a working copy at a different location within the packet meta-data (e.g. Diffserv
-   5-tuple, IP destination address, etc).
+   swq <swq_name> size <size> cpu <cpu_id>
 
-Several strategies are used to design the packet meta-data, as described in the next subsections.
 
+Traffic manager
+~~~~~~~~~~~~~~~
 
-Store packet meta-data in a different cache line as the packet headers
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+ Add traffic manager subport profile ::
 
-This approach is able to support protocols with variable header length, like MPLS, where the offset of IP header
-from the start of the packet (and, implicitly, the offset of the IP header in the packet buffer) is not fixed.
-Since the pipelines typically require the specification of a fixed offset to the packet fields (e.g. Diffserv
-5-tuple, used by the flow classification pipeline, or the IP destination address, used by the IP routing pipeline),
-the workaround is to have the packet RX pipeline copy these fields at fixed offsets within the packet meta-data.
+  tmgr subport profile
+   <tb_rate> <tb_size>
+   <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate>
+   <tc_period>
 
-As this approach duplicates some of the packet fields, it requires accessing more cache lines per packet for filling
-in selected packet meta-data fields (on RX), as well as flushing selected packet meta-data fields into the
-packet (on TX).
 
-Example:
+ Add traffic manager pipe profile ::
 
-.. code-block:: ini
+  tmgr pipe profile
+   <tb_rate> <tb_size>
+   <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate>
+   <tc_period>
+   <tc_ov_weight> <wrr_weight0..15>
 
+ Create traffic manager port ::
 
-    ; struct app_pkt_metadata {
-    ;	uint32_t ip_da;
-    ;      uint32_t hash;
-    ;      uint32_t flow_id;
-    ;      uint32_t color;
-    ; } __attribute__((__packed__));
-    ;
+  tmgr <tmgr_name>
+   rate <rate>
+   spp <n_subports_per_port>
+   pps <n_pipes_per_subport>
+   qsize <qsize_tc0>
+   <qsize_tc1> <qsize_tc2> <qsize_tc3>
+   fo <frame_overhead> mtu <mtu> cpu <cpu_id>
 
-    [PIPELINE1]
-    ; Packet meta-data offsets
-    ip_da_offset = 0;   Used by: routing
-    hash_offset = 4;    Used by: RX, flow classification
-    flow_id_offset = 8; Used by: flow classification, flow actions
-    color_offset = 12;  Used by: flow actions, routing
+ Configure traffic manager subport ::
 
+  tmgr <tmgr_name>
+   subport <subport_id>
+   profile <subport_profile_id>
 
-Overlay the packet meta-data in the same cache line with the packet headers
-"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+ Configure traffic manager pipe ::
 
-This approach is minimizing the number of cache line accessed per packet by storing the packet metadata in the
-same cache line with the packet headers.
-To enable this strategy, either some headroom is reserved for meta-data at the beginning of the packet headers
-cache line (e.g. if 16 bytes are needed for meta-data, then the packet headroom can be set to 128+16 bytes, so
-that NIC writes the first byte of the packet at offset 16 from the start of the first packet cache line),
-or meta-data is reusing the space of some packet headers that are discarded from the packet (e.g. input Ethernet
-header).
+  tmgr <tmgr_name>
+   subport <subport_id>
+   pipe from <pipe_id_first> to <pipe_id_last>
+   profile <pipe_profile_id>
 
-Example:
 
-.. code-block:: ini
+Tap
+~~~
 
-    ; struct app_pkt_metadata {
-    ;     uint8_t headroom[RTE_PKTMBUF_HEADROOM]; /* 128 bytes (default) */
-    ;     union {
-    ;         struct {
-    ;             struct ether_hdr ether; /* 14 bytes */
-    ;             struct qinq_hdr qinq; /* 8 bytes */
-    ;         };
-    ;         struct {
-    ;             uint32_t hash;
-    ;             uint32_t flow_id;
-    ;             uint32_t color;
-    ;         };
-    ;     };
-    ;     struct ipv4_hdr ip; /* 20 bytes */
-    ; } __attribute__((__packed__));
-    ;
-    [PIPELINE2]
-    ; Packet meta-data offsets
-    qinq_offset = 142;    Used by: RX, flow classification
-    ip_da_offset = 166;   Used by: routing
-    hash_offset = 128;    Used by: RX, flow classification
-    flow_id_offset = 132; Used by: flow classification, flow actions
-    color_offset = 136;   Used by: flow actions, routing
+ Create tap port ::
 
+  tap <name>
 
-List of pipeline types
-~~~~~~~~~~~~~~~~~~~~~~
 
-.. _table_ip_pipelines_types:
+Kni
+~~~
 
-.. tabularcolumns:: |p{3cm}|p{5cm}|p{4cm}|p{4cm}|
+  Create kni port ::
 
-.. table:: List of pipeline types provided with the application
-
-   +-----------------------+-----------------------------+-----------------------+------------------------------------------+
-   | Name                  | Table(s)                    | Actions               | Messages                                 |
-   +=======================+=============================+=======================+==========================================+
-   | Pass-through          | Passthrough                 | 1. Pkt metadata build | 1. Ping                                  |
-   |                       |                             | 2. Flow hash          | 2. Stats                                 |
-   | Note: depending on    |                             | 3. Pkt checks         |                                          |
-   | port type, can be     |                             | 4. Load balancing     |                                          |
-   | used for RX, TX, IP   |                             |                       |                                          |
-   | fragmentation, IP     |                             |                       |                                          |
-   | reassembly or Traffic |                             |                       |                                          |
-   | Management            |                             |                       |                                          |
-   +-----------------------+-----------------------------+-----------------------+------------------------------------------+
-   | Flow classification   | Exact match                 | 1. Flow ID            | 1. Ping                                  |
-   |                       |                             |                       |                                          |
-   |                       | * Key = byte array          | 2. Flow stats         | 2. Stats                                 |
-   |                       |   (source: pkt metadata)    | 3. Metering           | 3. Flow stats                            |
-   |                       | * Data = action dependent   | 4. Network Address    | 4. Action stats                          |
-   |                       |                             | 5. Translation (NAT)  | 5. Flow add/ update/ delete              |
-   |                       |                             |                       | 6. Default flow add/ update/ delete      |
-   |                       |                             |                       | 7. Action update                         |
-   +-----------------------+-----------------------------+-----------------------+------------------------------------------+
-   | Flow actions          | Array                       | 1. Flow stats         | 1. Ping                                  |
-   |                       |                             |                       |                                          |
-   |                       | * Key = Flow ID             | 2. Metering           | 2. Stats                                 |
-   |                       |   (source: pkt metadata)    | 3. Network Address    | 3. Action stats                          |
-   |                       | * Data = action dependent   | 4. Translation (NAT)  | 4. Action update                         |
-   +-----------------------+-----------------------------+-----------------------+------------------------------------------+
-   | Firewall              | ACL                         | 1. Allow/Drop         | 1. Ping                                  |
-   |                       |                             |                       |                                          |
-   |                       | * Key = n-tuple             |                       | 2. Stats                                 |
-   |                       |   (source: pkt headers)     |                       | 3. Rule add/ update/ delete              |
-   |                       | * Data = none               |                       | 4. Default rule add/ update/ delete      |
-   +-----------------------+-----------------------------+-----------------------+------------------------------------------+
-   | IP routing            | LPM (IPv4 or IPv6,          | 1. TTL decrement and  | 1. Ping                                  |
-   |                       | depending on pipeline type) | 2. IPv4 checksum      | 2. Stats                                 |
-   |                       |                             |                       |                                          |
-   |                       | * Key = IP destination      | 3. update             | 3. Route add/ update/ delete             |
-   |                       |   (source: pkt metadata)    | 4. Header             | 4. Default route add/ update/ delete     |
-   |                       | * Data = Dependent on       | 5. encapsulation      | 5. ARP entry add/ update/ delete         |
-   |                       |   actions and next hop      | 6. (based on next hop | 6. Default ARP entry add/ update/ delete |
-   |                       |   type                      | 7. type)              |                                          |
-   |                       |                             |                       |                                          |
-   |                       | Hash table (for ARP, only   |                       |                                          |
-   |                       |                             |                       |                                          |
-   |                       | when ARP is enabled)        |                       |                                          |
-   |                       |                             |                       |                                          |
-   |                       | * Key = (Port ID,           |                       |                                          |
-   |                       |   next hop IP address)      |                       |                                          |
-   |                       |   (source: pkt meta-data)   |                       |                                          |
-   |                       | * Data: MAC address         |                       |                                          |
-   +-----------------------+-----------------------------+-----------------------+------------------------------------------+
+   kni <kni_name>
+    link <link_name>
+    mempool <mempool_name>
+    [thread <thread_id>]
 
 
+Action profile
+~~~~~~~~~~~~~~
 
-Command Line Interface (CLI)
-----------------------------
+ Create action profile for pipeline input port ::
+
+  port in action profile <profile_name>
+   [filter match | mismatch offset <key_offset> mask <key_mask> key <key_value> port <port_id>]
+   [balance offset <key_offset> mask <key_mask> port <port_id0> ... <port_id15>]
+
+ Create action profile for the pipeline table ::
+
+  table action profile <profile_name>
+   ipv4 | ipv6
+   offset <ip_offset>
+   fwd
+   [balance offset <key_offset> mask <key_mask> outoffset <out_offset>]
+   [meter srtcm | trtcm
+       tc <n_tc>
+       stats none | pkts | bytes | both]
+   [tm spp <n_subports_per_port> pps <n_pipes_per_subport>]
+   [encap ether | vlan | qinq | mpls | pppoe]
+   [nat src | dst
+       proto udp | tcp]
+   [ttl drop | fwd
+       stats none | pkts]
+   [stats pkts | bytes | both]
+   [time]
+
+
+Pipeline
+~~~~~~~~
 
-Global CLI commands
-~~~~~~~~~~~~~~~~~~~
+Create pipeline ::
+
+  pipeline <pipeline_name>
+   period <timer_period_ms>
+   offset_port_id <offset_port_id>
+   cpu <cpu_id>
+
+Create pipeline input port ::
+
+  pipeline <pipeline_name> port in
+   bsz <burst_size>
+   link <link_name> rxq <queue_id>
+   | swq <swq_name>
+   | tmgr <tmgr_name>
+   | tap <tap_name> mempool <mempool_name> mtu <mtu>
+   | kni <kni_name>
+   | source mempool <mempool_name> file <file_name> bpp <n_bytes_per_pkt>
+   [action <port_in_action_profile_name>]
+   [disabled]
+
+Create pipeline output port ::
+
+  pipeline <pipeline_name> port out
+   bsz <burst_size>
+   link <link_name> txq <txq_id>
+   | swq <swq_name>
+   | tmgr <tmgr_name>
+   | tap <tap_name>
+   | kni <kni_name>
+   | sink [file <file_name> pkts <max_n_pkts>]
+
+Create pipeline table ::
+
+  pipeline <pipeline_name> table
+       match
+       acl
+           ipv4 | ipv6
+           offset <ip_header_offset>
+           size <n_rules>
+       | array
+           offset <key_offset>
+           size <n_keys>
+       | hash
+           ext | lru
+           key <key_size>
+           mask <key_mask>
+           offset <key_offset>
+           buckets <n_buckets>
+           size <n_keys>
+       | lpm
+           ipv4 | ipv6
+           offset <ip_header_offset>
+           size <n_rules>
+       | stub
+   [action <table_action_profile_name>]
+
+Connect pipeline input port to table ::
+
+  pipeline <pipeline_name> port in <port_id> table <table_id>
+
+Display statistics for specific pipeline input port, output port
+or table ::
+
+  pipeline <pipeline_name> port in <port_id> stats read [clear]
+  pipeline <pipeline_name> port out <port_id> stats read [clear]
+  pipeline <pipeline_name> table <table_id> stats read [clear]
+
+Enable given input port for specific pipeline instance ::
+
+  pipeline <pipeline_name> port out <port_id> disable
+
+Disable given input port for specific pipeline instance ::
+
+  pipeline <pipeline_name> port out <port_id> disable
+
+Add default rule to table for specific pipeline instance ::
+
+  pipeline <pipeline_name> table <table_id> rule add
+     match
+        default
+     action
+        fwd
+           drop
+           | port <port_id>
+           | meta
+           | table <table_id>
+
+Add rule to table for specific pipeline instance ::
+
+  pipeline <pipeline_name> table <table_id> rule add
+
+  match
+     acl
+        priority <priority>
+        ipv4 | ipv6 <sa> <sa_depth> <da> <da_depth>
+        <sp0> <sp1> <dp0> <dp1> <proto>
+     | array <pos>
+     | hash
+        raw <key>
+        | ipv4_5tuple <sa> <da> <sp> <dp> <proto>
+        | ipv6_5tuple <sa> <da> <sp> <dp> <proto>
+        | ipv4_addr <addr>
+        | ipv6_addr <addr>
+        | qinq <svlan> <cvlan>
+     | lpm
+        ipv4 | ipv6 <addr> <depth>
+
+  action
+     fwd
+        drop
+        | port <port_id>
+        | meta
+        | table <table_id>
+     [balance <out0> ... <out7>]
+     [meter
+        tc0 meter <meter_profile_id> policer g <pa> y <pa> r <pa>
+        [tc1 meter <meter_profile_id> policer g <pa> y <pa> r <pa>
+        tc2 meter <meter_profile_id> policer g <pa> y <pa> r <pa>
+        tc3 meter <meter_profile_id> policer g <pa> y <pa> r <pa>]]
+     [tm subport <subport_id> pipe <pipe_id>]
+     [encap
+        ether <da> <sa>
+        | vlan <da> <sa> <pcp> <dei> <vid>
+        | qinq <da> <sa> <pcp> <dei> <vid> <pcp> <dei> <vid>
+        | mpls unicast | multicast
+           <da> <sa>
+           label0 <label> <tc> <ttl>
+           [label1 <label> <tc> <ttl>
+           [label2 <label> <tc> <ttl>
+           [label3 <label> <tc> <ttl>]]]
+        | pppoe <da> <sa> <session_id>]
+     [nat ipv4 | ipv6 <addr> <port>]
+     [ttl dec | keep]
+     [stats]
+     [time]
+
+  where:
+     <pa> ::= g | y | r | drop
+
+Add bulk rules to table for specific pipeline instance ::
+
+  pipeline <pipeline_name> table <table_id> rule add bulk <file_name> <n_rules>
 
-.. _table_ip_pipelines_cli_commands:
+  Where:
+  - file_name = path to file
+  - File line format = match <match> action <action>
 
-.. tabularcolumns:: |p{3cm}|p{6cm}|p{6cm}|
+Delete table rule for specific pipeline instance ::
 
-.. table:: Global CLI commands
+  pipeline <pipeline_name> table <table_id> rule delete
+     match <match>
 
-   +---------+---------------------------------------+--------------------------------------------+
-   | Command | Description                           | Syntax                                     |
-   +=========+=======================================+============================================+
-   | run     | Run CLI commands script file.         | run <file>                                 |
-   |         |                                       | <file> = path to file with CLI commands to |
-   |         |                                       | execute                                    |
-   +---------+---------------------------------------+--------------------------------------------+
-   | quit    | Gracefully terminate the application. | quit                                       |
-   +---------+---------------------------------------+--------------------------------------------+
+Delete default table rule for specific pipeline instance ::
 
+  pipeline <pipeline_name> table <table_id> rule delete
+     match
+        default
 
-CLI commands for link configuration
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Add meter profile to the table for specific pipeline instance ::
 
-.. _table_ip_pipelines_runtime_config:
+  pipeline <pipeline_name> table <table_id> meter profile <meter_profile_id>
+   add srtcm cir <cir> cbs <cbs> ebs <ebs>
+   | trtcm cir <cir> pir <pir> cbs <cbs> pbs <pbs>
 
-.. tabularcolumns:: |p{3cm}|p{6cm}|p{6cm}|
+Delete meter profile from the table for specific pipeline instance ::
 
-.. table:: List of run-time configuration commands for link configuration
+  pipeline <pipeline_name> table <table_id>
+   meter profile <meter_profile_id> delete
 
-   +-------------+--------------------+--------------------------------------------+
-   | Command     | Description        | Syntax                                     |
-   +=============+====================+============================================+
-   | link config | Link configuration | link <link ID> config <IP address> <depth> |
-   +-------------+--------------------+--------------------------------------------+
-   | link up     | Link up            | link <link ID> up                          |
-   +-------------+--------------------+--------------------------------------------+
-   | link down   | Link down          | link <link ID> down                        |
-   +-------------+--------------------+--------------------------------------------+
-   | link ls     | Link list          | link ls                                    |
-   +-------------+--------------------+--------------------------------------------+
 
+Update the dscp table for meter or traffic manager action for specific
+pipeline instance ::
 
-CLI commands common for all pipeline types
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+   pipeline <pipeline_name> table <table_id> dscp <file_name>
 
-.. _table_ip_pipelines_mandatory:
+   Where:
+      - file_name = path to file
+      - exactly 64 lines
+      - File line format = <tc_id> <tc_queue_id> <color>, with <color> as: g | y | r
+
+
+Pipeline enable/disable
+~~~~~~~~~~~~~~~~~~~~~~~
 
-.. tabularcolumns:: |p{3cm}|p{6cm}|p{6cm}|
+   Enable given pipeline instance for specific data plane thread ::
 
-.. table:: CLI commands mandatory for all pipelines
+    thread <thread_id> pipeline <pipeline_name> enable
 
-   +--------------------+------------------------------------------------------+----------------------------------------------+
-   | Command            | Description                                          | Syntax                                       |
-   +====================+======================================================+==============================================+
-   | ping               | Check whether specific pipeline instance is alive.   | p <pipeline ID> ping                         |
-   |                    | The master pipeline sends a ping request             |                                              |
-   |                    | message to given pipeline instance and waits for     |                                              |
-   |                    | a response message back.                             |                                              |
-   |                    | Timeout message is displayed when the response       |                                              |
-   |                    | message is not received before the timer             |                                              |
-   |                    | expires.                                             |                                              |
-   +--------------------+------------------------------------------------------+----------------------------------------------+
-   | stats              | Display statistics for specific pipeline input port, | p <pipeline ID> stats port in <port in ID>   |
-   |                    | output port or table.                                | p <pipeline ID> stats port out <port out ID> |
-   |                    |                                                      | p <pipeline ID> stats table <table ID>       |
-   +--------------------+------------------------------------------------------+----------------------------------------------+
-   | input port enable  | Enable given input port for specific pipeline        | p <pipeline ID> port in <port ID> enable     |
-   |                    | instance.                                            |                                              |
-   +--------------------+------------------------------------------------------+----------------------------------------------+
-   | input port disable | Disable given input port for specific pipeline       | p <pipeline ID> port in <port ID> disable    |
-   |                    | instance.                                            |                                              |
-   +--------------------+------------------------------------------------------+----------------------------------------------+
 
-Pipeline type specific CLI commands
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+   Disable given pipeline instance for specific data plane thread ::
 
-The pipeline specific CLI commands are part of the pipeline type front-end.
+    thread <thread_id> pipeline <pipeline_name> disable
-- 
2.9.3

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [dpdk-dev] [PATCH v2] doc/ip_pipeline: update sample app user guide
  2018-05-24 11:59 ` [dpdk-dev] [PATCH v2] " Jasvinder Singh
@ 2018-05-28  1:11   ` Thomas Monjalon
  0 siblings, 0 replies; 3+ messages in thread
From: Thomas Monjalon @ 2018-05-28  1:11 UTC (permalink / raw)
  To: Jasvinder Singh, cristian.dumitrescu; +Cc: dev, john.mcnamara, marko.kovacevic

24/05/2018 13:59, Jasvinder Singh:
> Update sample app user guide with ip pipeline documentation.
> 
> Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
> Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>
> 
> Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>

Applied, thanks

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-05-28  1:11 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-24 11:05 [dpdk-dev] [PATCH] doc/ip_pipeline: update sample app user guide Jasvinder Singh
2018-05-24 11:59 ` [dpdk-dev] [PATCH v2] " Jasvinder Singh
2018-05-28  1:11   ` Thomas Monjalon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).