This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/develop by this push:
     new 69dfa8a  plc4x: major dependency updates (#252)
69dfa8a is described below

commit 69dfa8a8a705804fa91d67529e8b0ab6f5b49a32
Author: Sebastian Rühl <sru...@apache.org>
AuthorDate: Thu Sep 2 15:56:30 2021 +0200

    plc4x: major dependency updates (#252)
    
    * plc4x: major dependency updates
    
    * Updated with upstream changes
    
    Co-authored-by: cdutz <christofer.d...@c-ware.de>
---
 .../s7/include/alarm_message_object_ack_type.h     |   2 +-
 .../s7/include/s7_data_alarm_message.h             |   4 +-
 .../s7/include/s7_payload_user_data_item.h         |   6 +-
 .../s7/src/alarm_message_object_ack_type.c         |   8 +-
 .../s7/src/s7_data_alarm_message.c                 |  14 +-
 .../s7/src/s7_payload_user_data_item.c             |  24 +--
 .../knxnetip/readwrite/model/KnxManufacturer.go    |  42 ++++-
 plc4j/integrations/apache-camel/pom.xml            |   7 +-
 .../java/org/apache/plc4x/camel/Plc4XEndpoint.java |   9 -
 .../apache/plc4x/camel/Plc4XPollingConsumer.java   | 185 ---------------------
 .../java/org/apache/plc4x/camel/ManualTest.java    |   2 +-
 .../org/apache/plc4x/camel/Plc4XEndpointTest.java  |   7 +-
 .../plc4x/camel/Plc4XPollingConsumerTest.java      |  65 --------
 plc4j/integrations/apache-kafka/pom.xml            |   2 +-
 plc4j/integrations/apache-nifi/pom.xml             |   7 +-
 .../java/opcuaserver/backend/Plc4xNamespace.java   |   2 +-
 plc4j/osgi/pom.xml                                 |   2 +-
 plc4j/pom.xml                                      |   2 +-
 pom.xml                                            |  54 +++---
 protocols/knxnetip/pom.xml                         |   2 +-
 20 files changed, 116 insertions(+), 330 deletions(-)

diff --git a/plc4c/generated-sources/s7/include/alarm_message_object_ack_type.h 
b/plc4c/generated-sources/s7/include/alarm_message_object_ack_type.h
index 5a270fd..baf4bf6 100644
--- a/plc4c/generated-sources/s7/include/alarm_message_object_ack_type.h
+++ b/plc4c/generated-sources/s7/include/alarm_message_object_ack_type.h
@@ -37,8 +37,8 @@ extern "C" {
 
 
 // Constant values.
-uint8_t PLC4C_S7_READ_WRITE_ALARM_MESSAGE_OBJECT_ACK_TYPE_LENGTH();
 uint8_t PLC4C_S7_READ_WRITE_ALARM_MESSAGE_OBJECT_ACK_TYPE_VARIABLE_SPEC();
+uint8_t PLC4C_S7_READ_WRITE_ALARM_MESSAGE_OBJECT_ACK_TYPE_LENGTH();
 
 struct plc4c_s7_read_write_alarm_message_object_ack_type {
   /* Properties */
diff --git a/plc4c/generated-sources/s7/include/s7_data_alarm_message.h 
b/plc4c/generated-sources/s7/include/s7_data_alarm_message.h
index 1326d54..5ac6f0f 100644
--- a/plc4c/generated-sources/s7/include/s7_data_alarm_message.h
+++ b/plc4c/generated-sources/s7/include/s7_data_alarm_message.h
@@ -56,10 +56,10 @@ typedef enum plc4c_s7_read_write_s7_data_alarm_message_type 
plc4c_s7_read_write_
 plc4c_s7_read_write_s7_data_alarm_message_discriminator 
plc4c_s7_read_write_s7_data_alarm_message_get_discriminator(plc4c_s7_read_write_s7_data_alarm_message_type
 type);
 
 // Constant values.
-uint8_t PLC4C_S7_READ_WRITE_S7_MESSAGE_OBJECT_REQUEST_VARIABLE_SPEC();
 uint8_t PLC4C_S7_READ_WRITE_S7_MESSAGE_OBJECT_REQUEST_LENGTH();
-uint8_t PLC4C_S7_READ_WRITE_S7_DATA_ALARM_MESSAGE_FUNCTION_ID();
 uint8_t PLC4C_S7_READ_WRITE_S7_DATA_ALARM_MESSAGE_NUMBER_MESSAGE_OBJ();
+uint8_t PLC4C_S7_READ_WRITE_S7_DATA_ALARM_MESSAGE_FUNCTION_ID();
+uint8_t PLC4C_S7_READ_WRITE_S7_MESSAGE_OBJECT_REQUEST_VARIABLE_SPEC();
 
 struct plc4c_s7_read_write_s7_data_alarm_message {
   /* This is an abstract type so this property saves the type of this typed 
union */
diff --git a/plc4c/generated-sources/s7/include/s7_payload_user_data_item.h 
b/plc4c/generated-sources/s7/include/s7_payload_user_data_item.h
index 5f07d42..6a3485a 100644
--- a/plc4c/generated-sources/s7/include/s7_payload_user_data_item.h
+++ b/plc4c/generated-sources/s7/include/s7_payload_user_data_item.h
@@ -81,12 +81,12 @@ typedef enum 
plc4c_s7_read_write_s7_payload_user_data_item_type plc4c_s7_read_wr
 plc4c_s7_read_write_s7_payload_user_data_item_discriminator 
plc4c_s7_read_write_s7_payload_user_data_item_get_discriminator(plc4c_s7_read_write_s7_payload_user_data_item_type
 type);
 
 // Constant values.
+uint16_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_READ_SZL_RESPONSE_SZL_ITEM_LENGTH();
+uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_FUNCTION_ID();
 uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_NUMBER_MESSAGE_OBJ();
+uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_LENGTH();
 uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_VARIABLE_SPEC();
 uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_RESPONSE_NUMBER_MESSAGE_OBJ();
-uint16_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_READ_SZL_RESPONSE_SZL_ITEM_LENGTH();
-uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_LENGTH();
-uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_FUNCTION_ID();
 uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_RESPONSE_FUNCTION_ID();
 
 struct plc4c_s7_read_write_s7_payload_user_data_item {
diff --git a/plc4c/generated-sources/s7/src/alarm_message_object_ack_type.c 
b/plc4c/generated-sources/s7/src/alarm_message_object_ack_type.c
index 541b793..ed4bc26 100644
--- a/plc4c/generated-sources/s7/src/alarm_message_object_ack_type.c
+++ b/plc4c/generated-sources/s7/src/alarm_message_object_ack_type.c
@@ -25,14 +25,14 @@
 
 
 // Constant values.
-static const uint8_t 
PLC4C_S7_READ_WRITE_ALARM_MESSAGE_OBJECT_ACK_TYPE_LENGTH_const = 0x08;
-uint8_t PLC4C_S7_READ_WRITE_ALARM_MESSAGE_OBJECT_ACK_TYPE_LENGTH() {
-  return PLC4C_S7_READ_WRITE_ALARM_MESSAGE_OBJECT_ACK_TYPE_LENGTH_const;
-}
 static const uint8_t 
PLC4C_S7_READ_WRITE_ALARM_MESSAGE_OBJECT_ACK_TYPE_VARIABLE_SPEC_const = 0x12;
 uint8_t PLC4C_S7_READ_WRITE_ALARM_MESSAGE_OBJECT_ACK_TYPE_VARIABLE_SPEC() {
   return PLC4C_S7_READ_WRITE_ALARM_MESSAGE_OBJECT_ACK_TYPE_VARIABLE_SPEC_const;
 }
+static const uint8_t 
PLC4C_S7_READ_WRITE_ALARM_MESSAGE_OBJECT_ACK_TYPE_LENGTH_const = 0x08;
+uint8_t PLC4C_S7_READ_WRITE_ALARM_MESSAGE_OBJECT_ACK_TYPE_LENGTH() {
+  return PLC4C_S7_READ_WRITE_ALARM_MESSAGE_OBJECT_ACK_TYPE_LENGTH_const;
+}
 
 // Parse function.
 plc4c_return_code 
plc4c_s7_read_write_alarm_message_object_ack_type_parse(plc4c_spi_read_buffer* 
readBuffer, plc4c_s7_read_write_alarm_message_object_ack_type** _message) {
diff --git a/plc4c/generated-sources/s7/src/s7_data_alarm_message.c 
b/plc4c/generated-sources/s7/src/s7_data_alarm_message.c
index 2b30566..f446389 100644
--- a/plc4c/generated-sources/s7/src/s7_data_alarm_message.c
+++ b/plc4c/generated-sources/s7/src/s7_data_alarm_message.c
@@ -48,21 +48,21 @@ plc4c_s7_read_write_s7_data_alarm_message 
plc4c_s7_read_write_s7_data_alarm_mess
 
 
 // Constant values.
-static const uint8_t 
PLC4C_S7_READ_WRITE_S7_MESSAGE_OBJECT_REQUEST_VARIABLE_SPEC_const = 0x12;
-uint8_t PLC4C_S7_READ_WRITE_S7_MESSAGE_OBJECT_REQUEST_VARIABLE_SPEC() {
-  return PLC4C_S7_READ_WRITE_S7_MESSAGE_OBJECT_REQUEST_VARIABLE_SPEC_const;
-}
 static const uint8_t 
PLC4C_S7_READ_WRITE_S7_MESSAGE_OBJECT_REQUEST_LENGTH_const = 0x08;
 uint8_t PLC4C_S7_READ_WRITE_S7_MESSAGE_OBJECT_REQUEST_LENGTH() {
   return PLC4C_S7_READ_WRITE_S7_MESSAGE_OBJECT_REQUEST_LENGTH_const;
 }
+static const uint8_t 
PLC4C_S7_READ_WRITE_S7_DATA_ALARM_MESSAGE_NUMBER_MESSAGE_OBJ_const = 0x01;
+uint8_t PLC4C_S7_READ_WRITE_S7_DATA_ALARM_MESSAGE_NUMBER_MESSAGE_OBJ() {
+  return PLC4C_S7_READ_WRITE_S7_DATA_ALARM_MESSAGE_NUMBER_MESSAGE_OBJ_const;
+}
 static const uint8_t 
PLC4C_S7_READ_WRITE_S7_DATA_ALARM_MESSAGE_FUNCTION_ID_const = 0x00;
 uint8_t PLC4C_S7_READ_WRITE_S7_DATA_ALARM_MESSAGE_FUNCTION_ID() {
   return PLC4C_S7_READ_WRITE_S7_DATA_ALARM_MESSAGE_FUNCTION_ID_const;
 }
-static const uint8_t 
PLC4C_S7_READ_WRITE_S7_DATA_ALARM_MESSAGE_NUMBER_MESSAGE_OBJ_const = 0x01;
-uint8_t PLC4C_S7_READ_WRITE_S7_DATA_ALARM_MESSAGE_NUMBER_MESSAGE_OBJ() {
-  return PLC4C_S7_READ_WRITE_S7_DATA_ALARM_MESSAGE_NUMBER_MESSAGE_OBJ_const;
+static const uint8_t 
PLC4C_S7_READ_WRITE_S7_MESSAGE_OBJECT_REQUEST_VARIABLE_SPEC_const = 0x12;
+uint8_t PLC4C_S7_READ_WRITE_S7_MESSAGE_OBJECT_REQUEST_VARIABLE_SPEC() {
+  return PLC4C_S7_READ_WRITE_S7_MESSAGE_OBJECT_REQUEST_VARIABLE_SPEC_const;
 }
 
 // Parse function.
diff --git a/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c 
b/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c
index b79c1f6..cc2a0eb 100644
--- a/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c
+++ b/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c
@@ -80,10 +80,22 @@ plc4c_s7_read_write_s7_payload_user_data_item 
plc4c_s7_read_write_s7_payload_use
 
 
 // Constant values.
+static const uint16_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_READ_SZL_RESPONSE_SZL_ITEM_LENGTH_const
 = 28;
+uint16_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_READ_SZL_RESPONSE_SZL_ITEM_LENGTH()
 {
+  return 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_READ_SZL_RESPONSE_SZL_ITEM_LENGTH_const;
+}
+static const uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_FUNCTION_ID_const
 = 0x00;
+uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_FUNCTION_ID()
 {
+  return 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_FUNCTION_ID_const;
+}
 static const uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_NUMBER_MESSAGE_OBJ_const
 = 0x01;
 uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_NUMBER_MESSAGE_OBJ()
 {
   return 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_NUMBER_MESSAGE_OBJ_const;
 }
+static const uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_LENGTH_const
 = 0x08;
+uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_LENGTH() 
{
+  return 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_LENGTH_const;
+}
 static const uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_VARIABLE_SPEC_const
 = 0x12;
 uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_VARIABLE_SPEC()
 {
   return 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_VARIABLE_SPEC_const;
@@ -92,18 +104,6 @@ static const uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_
 uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_RESPONSE_NUMBER_MESSAGE_OBJ()
 {
   return 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_RESPONSE_NUMBER_MESSAGE_OBJ_const;
 }
-static const uint16_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_READ_SZL_RESPONSE_SZL_ITEM_LENGTH_const
 = 28;
-uint16_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_READ_SZL_RESPONSE_SZL_ITEM_LENGTH()
 {
-  return 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_READ_SZL_RESPONSE_SZL_ITEM_LENGTH_const;
-}
-static const uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_LENGTH_const
 = 0x08;
-uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_LENGTH() 
{
-  return 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_LENGTH_const;
-}
-static const uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_FUNCTION_ID_const
 = 0x00;
-uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_FUNCTION_ID()
 {
-  return 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_FUNCTION_ID_const;
-}
 static const uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_RESPONSE_FUNCTION_ID_const
 = 0x00;
 uint8_t 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_RESPONSE_FUNCTION_ID()
 {
   return 
PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_ALARM_QUERY_RESPONSE_FUNCTION_ID_const;
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go
index 764ae9a..a097ec7 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go
@@ -598,8 +598,10 @@ const (
        KnxManufacturer_M_WONDERFUL_CITY_TECHNOLOGY                          
KnxManufacturer = 560
        KnxManufacturer_M_QBICTECHNOLOGY                                     
KnxManufacturer = 561
        KnxManufacturer_M_EMBEDDED_AUTOMATION_EQUIPMENT_SHANGHAI_LIMITED     
KnxManufacturer = 562
-       KnxManufacturer_M_ABB___RESERVED                                     
KnxManufacturer = 563
-       KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED                    
KnxManufacturer = 564
+       KnxManufacturer_M_ONEWORK                                            
KnxManufacturer = 563
+       KnxManufacturer_M_PL_LINK                                            
KnxManufacturer = 564
+       KnxManufacturer_M_ABB___RESERVED                                     
KnxManufacturer = 565
+       KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED                    
KnxManufacturer = 566
 )
 
 var KnxManufacturerValues []KnxManufacturer
@@ -1170,6 +1172,8 @@ func init() {
                KnxManufacturer_M_WONDERFUL_CITY_TECHNOLOGY,
                KnxManufacturer_M_QBICTECHNOLOGY,
                
KnxManufacturer_M_EMBEDDED_AUTOMATION_EQUIPMENT_SHANGHAI_LIMITED,
+               KnxManufacturer_M_ONEWORK,
+               KnxManufacturer_M_PL_LINK,
                KnxManufacturer_M_ABB___RESERVED,
                KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED,
        }
@@ -3243,10 +3247,18 @@ func (e KnxManufacturer) Number() uint16 {
                }
        case 563:
                { /* '563' */
-                       return 43954
+                       return 620
                }
        case 564:
                { /* '564' */
+                       return 621
+               }
+       case 565:
+               { /* '565' */
+                       return 43954
+               }
+       case 566:
+               { /* '566' */
                        return 43959
                }
        case 57:
@@ -5521,10 +5533,18 @@ func (e KnxManufacturer) Name() string {
                }
        case 563:
                { /* '563' */
-                       return "ABB - reserved"
+                       return "onework"
                }
        case 564:
                { /* '564' */
+                       return "PL LINK"
+               }
+       case 565:
+               { /* '565' */
+                       return "ABB - reserved"
+               }
+       case 566:
+               { /* '566' */
                        return "Busch-Jaeger Elektro - reserved"
                }
        case 57:
@@ -6765,8 +6785,12 @@ func KnxManufacturerByValue(value uint16) 
KnxManufacturer {
        case 562:
                return 
KnxManufacturer_M_EMBEDDED_AUTOMATION_EQUIPMENT_SHANGHAI_LIMITED
        case 563:
-               return KnxManufacturer_M_ABB___RESERVED
+               return KnxManufacturer_M_ONEWORK
        case 564:
+               return KnxManufacturer_M_PL_LINK
+       case 565:
+               return KnxManufacturer_M_ABB___RESERVED
+       case 566:
                return KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED
        case 57:
                return KnxManufacturer_M_ORAS
@@ -7900,6 +7924,10 @@ func KnxManufacturerByName(value string) KnxManufacturer 
{
                return KnxManufacturer_M_QBICTECHNOLOGY
        case "M_EMBEDDED_AUTOMATION_EQUIPMENT_SHANGHAI_LIMITED":
                return 
KnxManufacturer_M_EMBEDDED_AUTOMATION_EQUIPMENT_SHANGHAI_LIMITED
+       case "M_ONEWORK":
+               return KnxManufacturer_M_ONEWORK
+       case "M_PL_LINK":
+               return KnxManufacturer_M_PL_LINK
        case "M_ABB___RESERVED":
                return KnxManufacturer_M_ABB___RESERVED
        case "M_BUSCH_JAEGER_ELEKTRO___RESERVED":
@@ -9066,6 +9094,10 @@ func (e KnxManufacturer) name() string {
                return "M_QBICTECHNOLOGY"
        case KnxManufacturer_M_EMBEDDED_AUTOMATION_EQUIPMENT_SHANGHAI_LIMITED:
                return "M_EMBEDDED_AUTOMATION_EQUIPMENT_SHANGHAI_LIMITED"
+       case KnxManufacturer_M_ONEWORK:
+               return "M_ONEWORK"
+       case KnxManufacturer_M_PL_LINK:
+               return "M_PL_LINK"
        case KnxManufacturer_M_ABB___RESERVED:
                return "M_ABB___RESERVED"
        case KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED:
diff --git a/plc4j/integrations/apache-camel/pom.xml 
b/plc4j/integrations/apache-camel/pom.xml
index 233d83f..c65f763 100644
--- a/plc4j/integrations/apache-camel/pom.xml
+++ b/plc4j/integrations/apache-camel/pom.xml
@@ -33,7 +33,7 @@
   <description>Integration module for integrating PLC4X into Apache 
Camel.</description>
 
   <properties>
-    <camel.version>3.1.0</camel.version>
+    <camel.version>3.10.0</camel.version>
   </properties>
 
   <build>
@@ -159,6 +159,11 @@
     </dependency>
     <dependency>
       <groupId>org.apache.camel</groupId>
+      <artifactId>camel-core-model</artifactId>
+      <version>${camel.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
       <artifactId>camel-api</artifactId>
       <version>${camel.version}</version>
     </dependency>
diff --git 
a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
 
b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
index 3733e46..c1c23b4 100644
--- 
a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
+++ 
b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
@@ -121,15 +121,6 @@ public class Plc4XEndpoint extends DefaultEndpoint {
     }
 
     @Override
-    public PollingConsumer createPollingConsumer() throws Exception {
-        //Checking if connection is still up and reconnecting if not
-        if (!connection.isConnected()) {
-            connection = 
plcDriverManager.getConnection(uri.replaceFirst("plc4x:/?/?", ""));
-        }
-        return new Plc4XPollingConsumer(this);
-    }
-
-    @Override
     public boolean isSingleton() {
         return true;
     }
diff --git 
a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XPollingConsumer.java
 
b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XPollingConsumer.java
deleted file mode 100644
index 622ba0f..0000000
--- 
a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XPollingConsumer.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.plc4x.camel;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.PollingConsumer;
-import org.apache.camel.Processor;
-import org.apache.camel.spi.ExceptionHandler;
-import org.apache.camel.support.LoggingExceptionHandler;
-import org.apache.plc4x.java.api.PlcConnection;
-import org.apache.plc4x.java.api.exceptions.PlcException;
-import org.apache.plc4x.java.api.exceptions.PlcIncompatibleDatatypeException;
-import org.apache.plc4x.java.api.messages.PlcReadRequest;
-import org.apache.plc4x.java.api.messages.PlcReadResponse;
-import org.apache.plc4x.java.scraper.config.ScraperConfiguration;
-import org.apache.plc4x.java.scraper.exception.ScraperException;
-import org.apache.plc4x.java.scraper.triggeredscraper.TriggeredScraperImpl;
-import 
org.apache.plc4x.java.scraper.triggeredscraper.triggerhandler.collector.TriggerCollector;
-import 
org.apache.plc4x.java.scraper.triggeredscraper.triggerhandler.collector.TriggerCollectorImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.*;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-public class Plc4XPollingConsumer implements PollingConsumer {
-    private static final Logger LOGGER = 
LoggerFactory.getLogger(Plc4XPollingConsumer.class);
-
-    private Plc4XEndpoint plc4XEndpoint;
-    private ExceptionHandler exceptionHandler;
-    private PlcConnection plcConnection;
-    private PlcReadRequest.Builder requestBuilder;
-    private  Map<String,Object> tags;
-    private String trigger;
-
-//TODO Is this still needed with the scraper working?
-    public Plc4XPollingConsumer(Plc4XEndpoint endpoint) throws PlcException {
-        plc4XEndpoint=endpoint;
-        this.exceptionHandler = new 
LoggingExceptionHandler(endpoint.getCamelContext(), getClass());
-        String plc4xURI = endpoint.getEndpointUri().replaceFirst("plc4x:/?/?", 
"");
-        this.plcConnection = endpoint.getConnection();
-        this.tags = endpoint.getTags();
-        this.trigger= endpoint.getTrigger();
-    }
-
-    @Override
-    public String toString() {
-        return "Plc4XConsumer[" + plc4XEndpoint + "]";
-    }
-
-    @Override
-    public Endpoint getEndpoint() {
-        return plc4XEndpoint;
-    }
-
-    public ExceptionHandler getExceptionHandler() {
-        return exceptionHandler;
-    }
-
-    public void setExceptionHandler(ExceptionHandler exceptionHandler) {
-        this.exceptionHandler = exceptionHandler;
-    }
-
-    @Override
-    public Exchange receive() {/**
-        Exchange exchange = plc4XEndpoint.createExchange();
-        try {
-            PlcReadResponse read = createReadRequest().execute().get();
-            if(plc4XEndpoint.getTags().size()==1) {
-                TagData tag = plc4XEndpoint.getTags().get(0);
-                tag.setValue(read.getAllObjects(tag.getTagName()));
-                exchange.getIn().setBody(tag);
-            }
-            else{
-                List<TagData> values = new ArrayList<>();
-                for(TagData tag : plc4XEndpoint.getTags()){
-                    tag.setValue(read.getObject(tag.getTagName()));
-                    values.add(tag);
-                }
-                exchange.getIn().setBody(values);
-            }
-        } catch (InterruptedException e) {
-            Thread.currentThread().interrupt();
-            exchange.setException(e);
-        } catch (ExecutionException e) {
-            exchange.setException(e);
-        }
-        return exchange;*/
-    return null;
-    }
-
-    @Override
-    public Exchange receiveNoWait() {
-        return null;
-    }
-
-    @Override
-    public Exchange receive(long timeout) {/**
-        Exchange exchange = plc4XEndpoint.createExchange();
-        CompletableFuture<? extends PlcReadResponse> read = 
createReadRequest().execute();
-        try {
-            PlcReadResponse plcReadResponse = read.get(timeout, 
TimeUnit.MILLISECONDS);
-            if(plc4XEndpoint.getTags().size()==1) {
-                TagData tag = plc4XEndpoint.getTags().get(0);
-                tag.setValue(plcReadResponse.getAllObjects(tag.getTagName()));
-                exchange.getIn().setBody(tag);
-            }
-            else{
-                List<TagData> values = new ArrayList<>();
-                for(TagData tag : plc4XEndpoint.getTags()){
-                    tag.setValue(plcReadResponse.getObject(tag.getTagName()));
-                    values.add(tag);
-                }
-                exchange.getIn().setBody(values);
-            }
-            } catch(InterruptedException e){
-                Thread.currentThread().interrupt();
-                exchange.setException(e);
-            } catch(ExecutionException | TimeoutException e){
-                exchange.setException(e);
-            }
-        return exchange;*/
-    return null;
-    }
-
-
-    private PlcReadRequest createReadRequest() {/**
-        requestBuilder = plcConnection.readRequestBuilder();
-        if (plc4XEndpoint.getTags().size()>1){
-            for(TagData tag : plc4XEndpoint.getTags()){
-                requestBuilder.addItem(tag.getTagName(),tag.getQuery());
-            }
-        }
-        else{
-            TagData tag = plc4XEndpoint.getTags().get(0);
-            requestBuilder.addItem(tag.getTagName(),tag.getQuery());
-        }
-        return requestBuilder.build();
-    */return null;}
-
-    private Object unwrapIfSingle(Collection collection) {
-        if (collection.isEmpty()) {
-            return null;
-        }
-        if (collection.size() == 1) {
-            return collection.iterator().next();
-        }
-        return collection;
-    }
-
-    @Override
-    public Processor getProcessor() {
-        return null;
-    }
-
-    @Override
-    public void start() {
-
-    }
-
-    @Override
-    public void stop() {
-
-    }
-}
diff --git 
a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ManualTest.java
 
b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ManualTest.java
index 45ae8c5..04cd151 100644
--- 
a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ManualTest.java
+++ 
b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ManualTest.java
@@ -39,7 +39,7 @@ public class ManualTest {
         // bind MyBean into the registry
         main.bind("foo", new MyBean());
         // add routes
-        main.addRoutesBuilder(new MyRouteBuilder());
+        main.getCamelContext().addRoutes(new MyRouteBuilder());
         // add event listener
         main.addMainListener(new Events());
         // set the properties from a file
diff --git 
a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
 
b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
index f07c2cb..34e3790 100644
--- 
a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
+++ 
b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
@@ -20,13 +20,14 @@ package org.apache.plc4x.camel;
 
 import org.apache.camel.Component;
 import org.apache.camel.Processor;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import static org.hamcrest.core.Is.is;
 import static org.hamcrest.core.IsNull.notNullValue;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.*;
 
 public class Plc4XEndpointTest {
 
@@ -34,7 +35,9 @@ public class Plc4XEndpointTest {
 
     @BeforeEach
     public void setUp() throws Exception {
-        SUT = new Plc4XEndpoint("plc4x:mock:10.10.10.1/1/1", 
mock(Component.class));
+        Component mockComponent = mock(Component.class, RETURNS_DEEP_STUBS);
+        when(mockComponent.getCamelContext()).thenReturn(new 
DefaultCamelContext());
+        SUT = new Plc4XEndpoint("plc4x:mock:10.10.10.1/1/1", mockComponent);
     }
 
     // TODO: figure out what this is
diff --git 
a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XPollingConsumerTest.java
 
b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XPollingConsumerTest.java
deleted file mode 100644
index beaa1e8..0000000
--- 
a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XPollingConsumerTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.plc4x.camel;
-
-import org.junit.jupiter.api.Test;
-
-//TODO: implement me
-public class Plc4XPollingConsumerTest {
-
-    @Test
-    public void toStringTest() {
-    }
-
-    @Test
-    public void getEndpoint() {
-    }
-
-    @Test
-    public void getExceptionHandler() {
-    }
-
-    @Test
-    public void setExceptionHandler() {
-    }
-
-    @Test
-    public void receive() {
-    }
-
-    @Test
-    public void receiveNoWait() {
-    }
-
-    @Test
-    public void receive1() {
-    }
-
-    @Test
-    public void getReader() {
-    }
-
-    @Test
-    public void doStart() {
-    }
-
-    @Test
-    public void doStop() {
-    }
-}
\ No newline at end of file
diff --git a/plc4j/integrations/apache-kafka/pom.xml 
b/plc4j/integrations/apache-kafka/pom.xml
index a555b7e..8a6e93f 100644
--- a/plc4j/integrations/apache-kafka/pom.xml
+++ b/plc4j/integrations/apache-kafka/pom.xml
@@ -33,7 +33,7 @@
 
   <properties>
     <kafka.version>2.5.0</kafka.version>
-    
<kafka.connect.maven.plugin.version>0.11.3</kafka.connect.maven.plugin.version>
+    
<kafka.connect.maven.plugin.version>0.12.0</kafka.connect.maven.plugin.version>
   </properties>
 
   <repositories>
diff --git a/plc4j/integrations/apache-nifi/pom.xml 
b/plc4j/integrations/apache-nifi/pom.xml
index fae93f5..8da4ab2 100644
--- a/plc4j/integrations/apache-nifi/pom.xml
+++ b/plc4j/integrations/apache-nifi/pom.xml
@@ -33,7 +33,7 @@
   <description>Integration module for integrating PLC4X into Apache 
Nifi.</description>
 
   <properties>
-    <nifi.version>1.12.1</nifi.version>
+    <nifi.version>1.13.2</nifi.version>
   </properties>
 
   <modules>
@@ -107,6 +107,11 @@
         <type>pom</type>
         <scope>import</scope>
       </dependency>
+      <dependency>
+        <groupId>io.swagger</groupId>
+        <artifactId>swagger-annotations</artifactId>
+        <version>1.6.0</version>
+      </dependency>
     </dependencies>
   </dependencyManagement>
 
diff --git 
a/plc4j/integrations/opcua-server/src/main/java/org/apache/plc4x/java/opcuaserver/backend/Plc4xNamespace.java
 
b/plc4j/integrations/opcua-server/src/main/java/org/apache/plc4x/java/opcuaserver/backend/Plc4xNamespace.java
index 70d7dbe..f32abae 100644
--- 
a/plc4j/integrations/opcua-server/src/main/java/org/apache/plc4x/java/opcuaserver/backend/Plc4xNamespace.java
+++ 
b/plc4j/integrations/opcua-server/src/main/java/org/apache/plc4x/java/opcuaserver/backend/Plc4xNamespace.java
@@ -31,9 +31,9 @@ import org.eclipse.milo.opcua.sdk.core.Reference;
 import org.eclipse.milo.opcua.sdk.core.ValueRank;
 import org.eclipse.milo.opcua.sdk.server.OpcUaServer;
 import org.eclipse.milo.opcua.sdk.server.api.DataItem;
-import org.eclipse.milo.opcua.sdk.server.api.DataTypeDictionaryManager;
 import org.eclipse.milo.opcua.sdk.server.api.ManagedNamespaceWithLifecycle;
 import org.eclipse.milo.opcua.sdk.server.api.MonitoredItem;
+import org.eclipse.milo.opcua.sdk.server.dtd.DataTypeDictionaryManager;
 import org.eclipse.milo.opcua.sdk.server.nodes.UaFolderNode;
 import org.eclipse.milo.opcua.sdk.server.nodes.UaVariableNode;
 import org.eclipse.milo.opcua.sdk.server.nodes.filters.AttributeFilters;
diff --git a/plc4j/osgi/pom.xml b/plc4j/osgi/pom.xml
index 9e9655d..194b407 100644
--- a/plc4j/osgi/pom.xml
+++ b/plc4j/osgi/pom.xml
@@ -35,7 +35,7 @@
     <dependency>
       <groupId>org.osgi</groupId>
       <artifactId>osgi.core</artifactId>
-      <version>6.0.0</version>
+      <version>8.0.0</version>
       <scope>compile</scope>
     </dependency>
     <dependency>
diff --git a/plc4j/pom.xml b/plc4j/pom.xml
index 985a745..5288430 100644
--- a/plc4j/pom.xml
+++ b/plc4j/pom.xml
@@ -340,7 +340,7 @@
     <dependency>
       <groupId>org.codehaus.groovy</groupId>
       <artifactId>groovy-test-junit5</artifactId>
-      <version>2.5.3</version>
+      <version>3.0.8</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/pom.xml b/pom.xml
index 3446edc..88ad845 100644
--- a/pom.xml
+++ b/pom.xml
@@ -87,7 +87,7 @@
     <!--
       At least 3.3.3 required for camel-package-maven-plugin
     -->
-    <maven.version>3.3.3</maven.version>
+    <maven.version>3.8.1</maven.version>
 
     <java.version>1.8</java.version>
 
@@ -105,17 +105,17 @@
 
     
<plc4x-code-generation.version>1.5.0-SNAPSHOT</plc4x-code-generation.version>
 
-    <antlr.version>4.9.1</antlr.version>
-    <apiguardian.version>1.1.0</apiguardian.version>
-    <assertj.version>3.18.1</assertj.version>
-    <awaitility.version>3.0.0</awaitility.version>
+    <antlr.version>4.9.2</antlr.version>
+    <apiguardian.version>1.1.1</apiguardian.version>
+    <assertj.version>3.19.0</assertj.version>
+    <awaitility.version>3.1.6</awaitility.version>
     <!-- TODO: the currently available version is 2.0.5 and anything above 
1.4.3 is no longer compatible with our code -->
     <bit-io.version>1.4.3</bit-io.version>
-    <bouncycastle.version>1.67</bouncycastle.version>
+    <bouncycastle.version>1.68</bouncycastle.version>
     <boost.version>1.76.0</boost.version>
     <boost.version.underline-short>1_76</boost.version.underline-short>
     
<boost.version.underline>${boost.version.underline-short}_0</boost.version.underline>
-    <byte-buddy.version>1.10.18</byte-buddy.version>
+    <byte-buddy.version>1.11.0</byte-buddy.version>
     <!-- Be sure to keep this version set to the version of the 
cmake-maven-plugin -->
     <cmake-version>3.18.4</cmake-version>
     <commons-beanutils.version>1.9.4</commons-beanutils.version>
@@ -125,7 +125,7 @@
     <commons-compress.version>1.20</commons-compress.version>
     <commons-configuration2.version>2.7</commons-configuration2.version>
     <commons-io.version>2.8.0</commons-io.version>
-    <commons-lang3.version>3.11</commons-lang3.version>
+    <commons-lang3.version>3.12.0</commons-lang3.version>
     <commons-logging.version>1.2</commons-logging.version>
     <commons-math3.version>3.6.1</commons-math3.version>
     <commons-pool2.version>2.9.0</commons-pool2.version>
@@ -133,38 +133,38 @@
     <commons-csv.version>1.8</commons-csv.version>
     <dom4j.version>2.1.3</dom4j.version>
     <elasticsearch.version>7.10.0</elasticsearch.version>
-    <equalsverifier.version>3.5</equalsverifier.version>
-    <freemarker.version>2.3.30</freemarker.version>
-    <groovy.version>3.0.6</groovy.version>
-    <gson.version>2.8.6</gson.version>
-    <guava.version>30.0-jre</guava.version>
+    <equalsverifier.version>3.6.1</equalsverifier.version>
+    <freemarker.version>2.3.31</freemarker.version>
+    <groovy.version>3.0.8</groovy.version>
+    <gson.version>2.8.7</gson.version>
+    <guava.version>30.1.1-jre</guava.version>
     <hamcrest.version>2.2</hamcrest.version>
     <httpclient.version>4.5.13</httpclient.version>
-    <httpcore.version>4.4.13</httpcore.version>
-    <jackson.version>2.11.3</jackson.version>
+    <httpcore.version>4.4.14</httpcore.version>
+    <jackson.version>2.12.3</jackson.version>
     <jaxb.version>2.3.3</jaxb.version>
-    <jetty-util.version>9.4.32.v20200930</jetty-util.version>
-    <jna.version>5.3.1</jna.version>
-    <joda-time.version>2.10.8</joda-time.version>
-    <jserialcom.version>2.6.2</jserialcom.version>
+    <jetty-util.version>11.0.3</jetty-util.version>
+    <jna.version>5.8.0</jna.version>
+    <joda-time.version>2.10.10</joda-time.version>
+    <jserialcom.version>2.7.0</jserialcom.version>
     <junit.jupiter.version>5.7.0</junit.jupiter.version>
     <junit.platform.version>1.7.0</junit.platform.version>
-    <log4j.version>2.11.1</log4j.version>
+    <log4j.version>2.14.1</log4j.version>
     <logback.version>1.2.3</logback.version>
-    <milo.version>0.5.4</milo.version>
-    <mockito.version>3.6.28</mockito.version>
+    <milo.version>0.6.1</milo.version>
+    <mockito.version>3.10.0</mockito.version>
     <netty.version>4.1.54.Final</netty.version>
-    <owasp-dependency-check.version>6.0.3</owasp-dependency-check.version>
+    <owasp-dependency-check.version>6.1.6</owasp-dependency-check.version>
     <pcap4j.version>1.8.2</pcap4j.version>
     <slf4j.version>1.7.30</slf4j.version>
     <thrift.version>0.13.0</thrift.version>
     <vavr.version>0.10.3</vavr.version>
-    <xmlunit.version>2.8.1</xmlunit.version>
+    <xmlunit.version>2.8.2</xmlunit.version>
 
     <!-- Site properties -->
     <asciidoctor.maven.plugin.version>2.1.0</asciidoctor.maven.plugin.version>
-    <asciidoctorj.version>2.4.2</asciidoctorj.version>
-    <asciidoctorj.diagram.version>2.0.5</asciidoctorj.diagram.version>
+    <asciidoctorj.version>2.5.1</asciidoctorj.version>
+    <asciidoctorj.diagram.version>2.1.2</asciidoctorj.diagram.version>
   </properties>
 
   <modules>
@@ -634,7 +634,7 @@
       <dependency>
         <groupId>org.objenesis</groupId>
         <artifactId>objenesis</artifactId>
-        <version>3.1</version>
+        <version>3.2</version>
       </dependency>
     </dependencies>
   </dependencyManagement>
diff --git a/protocols/knxnetip/pom.xml b/protocols/knxnetip/pom.xml
index fe4801c..bfbc8cc 100644
--- a/protocols/knxnetip/pom.xml
+++ b/protocols/knxnetip/pom.xml
@@ -121,7 +121,7 @@
     <dependency>
       <groupId>org.json</groupId>
       <artifactId>json</artifactId>
-      <version>20201115</version>
+      <version>20210307</version>
       <scope>test</scope>
     </dependency>
     <dependency>

Reply via email to