Netdev List
 help / color / mirror / Atom feed
* Re: [PATCH net-next V2 3/3] tap: XDP support
From: Michael S. Tsirkin @ 2017-08-14 16:01 UTC (permalink / raw)
  To: Jason Wang; +Cc: Jakub Kicinski, davem, netdev, linux-kernel, Daniel Borkmann
In-Reply-To: <8876b3d1-699c-d033-e855-34b24a709c81@redhat.com>

On Sat, Aug 12, 2017 at 10:48:49AM +0800, Jason Wang wrote:
> 
> 
> On 2017年08月12日 07:12, Jakub Kicinski wrote:
> > On Fri, 11 Aug 2017 19:41:18 +0800, Jason Wang wrote:
> > > This patch tries to implement XDP for tun. The implementation was
> > > split into two parts:
> > > 
> > > - fast path: small and no gso packet. We try to do XDP at page level
> > >    before build_skb(). For XDP_TX, since creating/destroying queues
> > >    were completely under control of userspace, it was implemented
> > >    through generic XDP helper after skb has been built. This could be
> > >    optimized in the future.
> > > - slow path: big or gso packet. We try to do it after skb was created
> > >    through generic XDP helpers.
> > > 
> > > Test were done through pktgen with small packets.
> > > 
> > > xdp1 test shows ~41.1% improvement:
> > > 
> > > Before: ~1.7Mpps
> > > After:  ~2.3Mpps
> > > 
> > > xdp_redirect to ixgbe shows ~60% improvement:
> > > 
> > > Before: ~0.8Mpps
> > > After:  ~1.38Mpps
> > > 
> > > Suggested-by: Michael S. Tsirkin <mst@redhat.com>
> > > Signed-off-by: Jason Wang <jasowang@redhat.com>
> > Looks OK to me now :)
> > 
> > Out of curiosity, you say the build_skb() is for "small packets", and it
> > seems you are always reserving the 256B regardless of XDP being
> > installed.  Does this have no performance impact on non-XDP case?
> 
> Have a test, only less than 1% were noticed which I think could be ignored.
> 
> Thanks

What did you test btw? The biggest issue would be with something like
UDP with short packets.

-- 
MST

^ permalink raw reply

* [net 1/1] tipc: accept PACKET_MULTICAST packets
From: Jon Maloy @ 2017-08-14 15:55 UTC (permalink / raw)
  To: davem, netdev; +Cc: parthasarathy.bhuvaragan, ying.xue, tipc-discussion

On L2 bearers, the TIPC broadcast function is sending out packets using
the corresponding L2 broadcast address. At reception, we filter such
packets under the assumption that they will also be delivered as
broadcast packets.

This assumption doesn't always hold true. Under high load, we have seen
that a switch may convert the destination address and deliver the packet
as a PACKET_MULTICAST, something leading to inadvertently dropped
packets and a stale and reset broadcast link.

We fix this by extending the reception filtering to accept packets of
type PACKET_MULTICAST.

Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
---
 net/tipc/bearer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c
index d174ee3..767e053 100644
--- a/net/tipc/bearer.c
+++ b/net/tipc/bearer.c
@@ -596,7 +596,7 @@ static int tipc_l2_rcv_msg(struct sk_buff *skb, struct net_device *dev,
 	rcu_read_lock();
 	b = rcu_dereference_rtnl(dev->tipc_ptr);
 	if (likely(b && test_bit(0, &b->up) &&
-		   (skb->pkt_type <= PACKET_BROADCAST))) {
+		   (skb->pkt_type <= PACKET_MULTICAST))) {
 		skb->next = NULL;
 		tipc_rcv(dev_net(dev), skb, b);
 		rcu_read_unlock();
-- 
2.1.4

^ permalink raw reply related

* [PATCH v10 5/5] net/cxgb4vf: Use new PCI_DEV_FLAGS_NO_RELAXED_ORDERING flag
From: Ding Tianhong @ 2017-08-14 15:44 UTC (permalink / raw)
  To: leedom, ashok.raj, bhelgaas, helgaas, werner, ganeshgr,
	asit.k.mallick, patrick.j.cramer, Suravee.Suthikulpanit, Bob.Shaw,
	l.stach, amira, gabriele.paoloni, David.Laight, jeffrey.t.kirsher,
	catalin.marinas, will.deacon, mark.rutland, robin.murphy, davem,
	alexander.duyck, linux-arm-kernel, netdev, linux-pci,
	linux-kernel, linuxarm
  Cc: Ding Tianhong
In-Reply-To: <1502725499-11276-1-git-send-email-dingtianhong@huawei.com>

From: Casey Leedom <leedom@chelsio.com>

cxgb4vf Ethernet driver now queries PCIe configuration space to
determine if it can send TLPs to it with the Relaxed Ordering
Attribute set, just like the pf did.

Signed-off-by: Casey Leedom <leedom@chelsio.com>
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
Reviewed-by: Casey Leedom <leedom@chelsio.com>
---
 drivers/net/ethernet/chelsio/cxgb4vf/adapter.h      |  1 +
 drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 18 ++++++++++++++++++
 drivers/net/ethernet/chelsio/cxgb4vf/sge.c          |  3 +++
 3 files changed, 22 insertions(+)

diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h b/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h
index 109bc63..08c6ddb 100644
--- a/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h
+++ b/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h
@@ -408,6 +408,7 @@ enum { /* adapter flags */
 	USING_MSI          = (1UL << 1),
 	USING_MSIX         = (1UL << 2),
 	QUEUES_BOUND       = (1UL << 3),
+	ROOT_NO_RELAXED_ORDERING = (1UL << 4),
 };
 
 /*
diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
index ac7a150..2b85b87 100644
--- a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
@@ -2888,6 +2888,24 @@ static int cxgb4vf_pci_probe(struct pci_dev *pdev,
 	 */
 	adapter->name = pci_name(pdev);
 	adapter->msg_enable = DFLT_MSG_ENABLE;
+
+	/* If possible, we use PCIe Relaxed Ordering Attribute to deliver
+	 * Ingress Packet Data to Free List Buffers in order to allow for
+	 * chipset performance optimizations between the Root Complex and
+	 * Memory Controllers.  (Messages to the associated Ingress Queue
+	 * notifying new Packet Placement in the Free Lists Buffers will be
+	 * send without the Relaxed Ordering Attribute thus guaranteeing that
+	 * all preceding PCIe Transaction Layer Packets will be processed
+	 * first.)  But some Root Complexes have various issues with Upstream
+	 * Transaction Layer Packets with the Relaxed Ordering Attribute set.
+	 * The PCIe devices which under the Root Complexes will be cleared the
+	 * Relaxed Ordering bit in the configuration space, So we check our
+	 * PCIe configuration space to see if it's flagged with advice against
+	 * using Relaxed Ordering.
+	 */
+	if (!pcie_relaxed_ordering_enabled(pdev))
+		adapter->flags |= ROOT_NO_RELAXED_ORDERING;
+
 	err = adap_init0(adapter);
 	if (err)
 		goto err_unmap_bar;
diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/sge.c b/drivers/net/ethernet/chelsio/cxgb4vf/sge.c
index e37dde2..05498e7 100644
--- a/drivers/net/ethernet/chelsio/cxgb4vf/sge.c
+++ b/drivers/net/ethernet/chelsio/cxgb4vf/sge.c
@@ -2205,6 +2205,7 @@ int t4vf_sge_alloc_rxq(struct adapter *adapter, struct sge_rspq *rspq,
 	struct port_info *pi = netdev_priv(dev);
 	struct fw_iq_cmd cmd, rpl;
 	int ret, iqandst, flsz = 0;
+	int relaxed = !(adapter->flags & ROOT_NO_RELAXED_ORDERING);
 
 	/*
 	 * If we're using MSI interrupts and we're not initializing the
@@ -2300,6 +2301,8 @@ int t4vf_sge_alloc_rxq(struct adapter *adapter, struct sge_rspq *rspq,
 			cpu_to_be32(
 				FW_IQ_CMD_FL0HOSTFCMODE_V(SGE_HOSTFCMODE_NONE) |
 				FW_IQ_CMD_FL0PACKEN_F |
+				FW_IQ_CMD_FL0FETCHRO_V(relaxed) |
+				FW_IQ_CMD_FL0DATARO_V(relaxed) |
 				FW_IQ_CMD_FL0PADEN_F);
 
 		/* In T6, for egress queue type FL there is internal overhead
-- 
1.8.3.1

^ permalink raw reply related

* [PATCH v10 4/5] net/cxgb4: Use new PCI_DEV_FLAGS_NO_RELAXED_ORDERING flag
From: Ding Tianhong @ 2017-08-14 15:44 UTC (permalink / raw)
  To: leedom, ashok.raj, bhelgaas, helgaas, werner, ganeshgr,
	asit.k.mallick, patrick.j.cramer, Suravee.Suthikulpanit, Bob.Shaw,
	l.stach, amira, gabriele.paoloni, David.Laight, jeffrey.t.kirsher,
	catalin.marinas, will.deacon, mark.rutland, robin.murphy, davem,
	alexander.duyck, linux-arm-kernel, netdev, linux-pci,
	linux-kernel, linuxarm
  Cc: Ding Tianhong
In-Reply-To: <1502725499-11276-1-git-send-email-dingtianhong@huawei.com>

From: Casey Leedom <leedom@chelsio.com>

cxgb4 Ethernet driver now queries PCIe configuration space to determine
if it can send TLPs to it with the Relaxed Ordering Attribute set.

Remove the enable_pcie_relaxed_ordering() to avoid enable PCIe Capability
Device Control[Relaxed Ordering Enable] at probe routine, to make sure
the driver will not send the Relaxed Ordering TLPs to the Root Complex which
could not deal the Relaxed Ordering TLPs.

Signed-off-by: Casey Leedom <leedom@chelsio.com>
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
Reviewed-by: Casey Leedom <leedom@chelsio.com>
---
 drivers/net/ethernet/chelsio/cxgb4/cxgb4.h      |  1 +
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 23 +++++++++++++++++------
 drivers/net/ethernet/chelsio/cxgb4/sge.c        |  5 +++--
 3 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
index ef4be78..09ea62e 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
@@ -529,6 +529,7 @@ enum {                                 /* adapter flags */
 	USING_SOFT_PARAMS  = (1 << 6),
 	MASTER_PF          = (1 << 7),
 	FW_OFLD_CONN       = (1 << 9),
+	ROOT_NO_RELAXED_ORDERING = (1 << 10),
 };
 
 enum {
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
index e403fa1..33bb867 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
@@ -4654,11 +4654,6 @@ static void print_port_info(const struct net_device *dev)
 		    dev->name, adap->params.vpd.id, adap->name, buf);
 }
 
-static void enable_pcie_relaxed_ordering(struct pci_dev *dev)
-{
-	pcie_capability_set_word(dev, PCI_EXP_DEVCTL, PCI_EXP_DEVCTL_RELAX_EN);
-}
-
 /*
  * Free the following resources:
  * - memory used for tables
@@ -4908,7 +4903,6 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 	}
 
 	pci_enable_pcie_error_reporting(pdev);
-	enable_pcie_relaxed_ordering(pdev);
 	pci_set_master(pdev);
 	pci_save_state(pdev);
 
@@ -4947,6 +4941,23 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 	adapter->msg_enable = DFLT_MSG_ENABLE;
 	memset(adapter->chan_map, 0xff, sizeof(adapter->chan_map));
 
+	/* If possible, we use PCIe Relaxed Ordering Attribute to deliver
+	 * Ingress Packet Data to Free List Buffers in order to allow for
+	 * chipset performance optimizations between the Root Complex and
+	 * Memory Controllers.  (Messages to the associated Ingress Queue
+	 * notifying new Packet Placement in the Free Lists Buffers will be
+	 * send without the Relaxed Ordering Attribute thus guaranteeing that
+	 * all preceding PCIe Transaction Layer Packets will be processed
+	 * first.)  But some Root Complexes have various issues with Upstream
+	 * Transaction Layer Packets with the Relaxed Ordering Attribute set.
+	 * The PCIe devices which under the Root Complexes will be cleared the
+	 * Relaxed Ordering bit in the configuration space, So we check our
+	 * PCIe configuration space to see if it's flagged with advice against
+	 * using Relaxed Ordering.
+	 */
+	if (!pcie_relaxed_ordering_enabled(pdev))
+		adapter->flags |= ROOT_NO_RELAXED_ORDERING;
+
 	spin_lock_init(&adapter->stats_lock);
 	spin_lock_init(&adapter->tid_release_lock);
 	spin_lock_init(&adapter->win0_lock);
diff --git a/drivers/net/ethernet/chelsio/cxgb4/sge.c b/drivers/net/ethernet/chelsio/cxgb4/sge.c
index ede1220..4ef68f6 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/sge.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/sge.c
@@ -2719,6 +2719,7 @@ int t4_sge_alloc_rxq(struct adapter *adap, struct sge_rspq *iq, bool fwevtq,
 	struct fw_iq_cmd c;
 	struct sge *s = &adap->sge;
 	struct port_info *pi = netdev_priv(dev);
+	int relaxed = !(adap->flags & ROOT_NO_RELAXED_ORDERING);
 
 	/* Size needs to be multiple of 16, including status entry. */
 	iq->size = roundup(iq->size, 16);
@@ -2772,8 +2773,8 @@ int t4_sge_alloc_rxq(struct adapter *adap, struct sge_rspq *iq, bool fwevtq,
 
 		flsz = fl->size / 8 + s->stat_len / sizeof(struct tx_desc);
 		c.iqns_to_fl0congen |= htonl(FW_IQ_CMD_FL0PACKEN_F |
-					     FW_IQ_CMD_FL0FETCHRO_F |
-					     FW_IQ_CMD_FL0DATARO_F |
+					     FW_IQ_CMD_FL0FETCHRO_V(relaxed) |
+					     FW_IQ_CMD_FL0DATARO_V(relaxed) |
 					     FW_IQ_CMD_FL0PADEN_F);
 		if (cong >= 0)
 			c.iqns_to_fl0congen |=
-- 
1.8.3.1

^ permalink raw reply related

* [PATCH v10 3/5] PCI: Disable Relaxed Ordering Attributes for AMD A1100
From: Ding Tianhong @ 2017-08-14 15:44 UTC (permalink / raw)
  To: leedom, ashok.raj, bhelgaas, helgaas, werner, ganeshgr,
	asit.k.mallick, patrick.j.cramer, Suravee.Suthikulpanit, Bob.Shaw,
	l.stach, amira, gabriele.paoloni, David.Laight, jeffrey.t.kirsher,
	catalin.marinas, will.deacon, mark.rutland, robin.murphy, davem,
	alexander.duyck, linux-arm-kernel, netdev, linux-pci,
	linux-kernel, linuxarm
  Cc: Ding Tianhong
In-Reply-To: <1502725499-11276-1-git-send-email-dingtianhong@huawei.com>

Casey reported that the AMD ARM A1100 SoC has a bug in its PCIe
Root Port where Upstream Transaction Layer Packets with the Relaxed
Ordering Attribute clear are allowed to bypass earlier TLPs with
Relaxed Ordering set, it would cause Data Corruption, so we need
to disable Relaxed Ordering Attribute when Upstream TLPs to the
Root Port.

Signed-off-by: Casey Leedom <leedom@chelsio.com>
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
Acked-by: Alexander Duyck <alexander.h.duyck@intel.com>
Acked-by: Ashok Raj <ashok.raj@intel.com>
---
 drivers/pci/quirks.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 1272f7e..1407604 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4089,6 +4089,22 @@ static void quirk_relaxedordering_disable(struct pci_dev *dev)
 			      quirk_relaxedordering_disable);
 
 /*
+ * The AMD ARM A1100 (AKA "SEATTLE") SoC has a bug in its PCIe Root Complex
+ * where Upstream Transaction Layer Packets with the Relaxed Ordering
+ * Attribute clear are allowed to bypass earlier TLPs with Relaxed Ordering
+ * set.  This is a violation of the PCIe 3.0 Transaction Ordering Rules
+ * outlined in Section 2.4.1 (PCI Express(r) Base Specification Revision 3.0
+ * November 10, 2010).  As a result, on this platform we can't use Relaxed
+ * Ordering for Upstream TLPs.
+ */
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_AMD, 0x1a00, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_AMD, 0x1a01, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_AMD, 0x1a02, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+
+/*
  * Per PCIe r3.0, sec 2.2.9, "Completion headers must supply the same
  * values for the Attribute as were supplied in the header of the
  * corresponding Request, except as explicitly allowed when IDO is used."
-- 
1.8.3.1

^ permalink raw reply related

* [PATCH v10 2/5] PCI: Disable Relaxed Ordering for some Intel processors
From: Ding Tianhong @ 2017-08-14 15:44 UTC (permalink / raw)
  To: leedom, ashok.raj, bhelgaas, helgaas, werner, ganeshgr,
	asit.k.mallick, patrick.j.cramer, Suravee.Suthikulpanit, Bob.Shaw,
	l.stach, amira, gabriele.paoloni, David.Laight, jeffrey.t.kirsher,
	catalin.marinas, will.deacon, mark.rutland, robin.murphy, davem,
	alexander.duyck, linux-arm-kernel, netdev, linux-pci,
	linux-kernel, linuxarm
  Cc: Ding Tianhong
In-Reply-To: <1502725499-11276-1-git-send-email-dingtianhong@huawei.com>

According to the Intel spec section 3.9.1 said:

    3.9.1 Optimizing PCIe Performance for Accesses Toward Coherent Memory
          and Toward MMIO Regions (P2P)

    In order to maximize performance for PCIe devices in the processors
    listed in Table 3-6 below, the soft- ware should determine whether the
    accesses are toward coherent memory (system memory) or toward MMIO
    regions (P2P access to other devices). If the access is toward MMIO
    region, then software can command HW to set the RO bit in the TLP
    header, as this would allow hardware to achieve maximum throughput for
    these types of accesses. For accesses toward coherent memory, software
    can command HW to clear the RO bit in the TLP header (no RO), as this
    would allow hardware to achieve maximum throughput for these types of
    accesses.

    Table 3-6. Intel Processor CPU RP Device IDs for Processors Optimizing
               PCIe Performance

    Processor                            CPU RP Device IDs

    Intel Xeon processors based on       6F01H-6F0EH
    Broadwell microarchitecture

    Intel Xeon processors based on       2F01H-2F0EH
    Haswell microarchitecture

It means some Intel processors has performance issue when use the Relaxed
Ordering Attribute, so disable Relaxed Ordering for these root port.

Signed-off-by: Casey Leedom <leedom@chelsio.com>
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
Acked-by: Alexander Duyck <alexander.h.duyck@intel.com>
Acked-by: Ashok Raj <ashok.raj@intel.com>
---
 drivers/pci/quirks.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 61b59bf..1272f7e 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4027,6 +4027,68 @@ static void quirk_relaxedordering_disable(struct pci_dev *dev)
 }
 
 /*
+ * Intel Xeon processors based on Broadwell/Haswell microarchitecture Root
+ * Complex has a Flow Control Credit issue which can cause performance
+ * problems with Upstream Transaction Layer Packets with Relaxed Ordering set.
+ */
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f01, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f02, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f03, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f04, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f05, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f06, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f07, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f08, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f09, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0a, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0b, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0c, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0d, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0e, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f01, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f02, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f03, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f04, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f05, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f06, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f07, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f08, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f09, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0a, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0b, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0c, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0d, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0e, PCI_CLASS_NOT_DEFINED, 8,
+			      quirk_relaxedordering_disable);
+
+/*
  * Per PCIe r3.0, sec 2.2.9, "Completion headers must supply the same
  * values for the Attribute as were supplied in the header of the
  * corresponding Request, except as explicitly allowed when IDO is used."
-- 
1.8.3.1

^ permalink raw reply related

* [PATCH v10 1/5] PCI: Disable PCIe Relaxed Ordering if unsupported
From: Ding Tianhong @ 2017-08-14 15:44 UTC (permalink / raw)
  To: leedom, ashok.raj, bhelgaas, helgaas, werner, ganeshgr,
	asit.k.mallick, patrick.j.cramer, Suravee.Suthikulpanit, Bob.Shaw,
	l.stach, amira, gabriele.paoloni, David.Laight, jeffrey.t.kirsher,
	catalin.marinas, will.deacon, mark.rutland, robin.murphy, davem,
	alexander.duyck, linux-arm-kernel, netdev, linux-pci,
	linux-kernel, linuxarm
  Cc: Ding Tianhong
In-Reply-To: <1502725499-11276-1-git-send-email-dingtianhong@huawei.com>

When bit4 is set in the PCIe Device Control register, it indicates
whether the device is permitted to use relaxed ordering.
On some platforms using relaxed ordering can have performance issues or
due to erratum can cause data-corruption. In such cases devices must avoid
using relaxed ordering.

The patch adds a new flag PCI_DEV_FLAGS_NO_RELAXED_ORDERING to indicate that
Relaxed Ordering (RO) attribute should not be used for Transaction Layer
Packets (TLP) targeted towards these affected root complexes.

This patch checks if there is any node in the hierarchy that indicates that
using relaxed ordering is not safe. In such cases the patch turns off the
relaxed ordering by clearing the capability for this device.

Signed-off-by: Casey Leedom <leedom@chelsio.com>
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
Acked-by: Ashok Raj <ashok.raj@intel.com>
Acked-by: Alexander Duyck <alexander.h.duyck@intel.com>
Acked-by: Casey Leedom <leedom@chelsio.com>
---
 drivers/pci/probe.c  | 43 +++++++++++++++++++++++++++++++++++++++++++
 drivers/pci/quirks.c | 11 +++++++++++
 include/linux/pci.h  |  3 +++
 3 files changed, 57 insertions(+)

diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index c31310d..779e646 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -1762,6 +1762,48 @@ static void pci_configure_extended_tags(struct pci_dev *dev)
 					 PCI_EXP_DEVCTL_EXT_TAG);
 }
 
+/**
+ * pcie_relaxed_ordering_enabled - Probe for PCIe relaxed ordering enable
+ * @dev: PCI device to query
+ *
+ * Returns true if the device has enabled relaxed ordering attribute.
+ */
+bool pcie_relaxed_ordering_enabled(struct pci_dev *dev)
+{
+	u16 v;
+
+	pcie_capability_read_word(dev, PCI_EXP_DEVCTL, &v);
+
+	return !!(v & PCI_EXP_DEVCTL_RELAX_EN);
+}
+EXPORT_SYMBOL(pcie_relaxed_ordering_enabled);
+
+static void pci_configure_relaxed_ordering(struct pci_dev *dev)
+{
+	struct pci_dev *root;
+
+	/* PCI_EXP_DEVICE_RELAX_EN is RsvdP in VFs */
+	if (dev->is_virtfn)
+		return;
+
+	if (!pcie_relaxed_ordering_enabled(dev))
+		return;
+
+	/*
+	 * For now, we only deal with Relaxed Ordering issues with Root
+	 * Ports. Peer-to-Peer DMA is another can of worms.
+	 */
+	root = pci_find_pcie_root_port(dev);
+	if (!root)
+		return;
+
+	if (root->dev_flags & PCI_DEV_FLAGS_NO_RELAXED_ORDERING) {
+		pcie_capability_clear_word(dev, PCI_EXP_DEVCTL,
+					   PCI_EXP_DEVCTL_RELAX_EN);
+		dev_info(&dev->dev, "Disable Relaxed Ordering because the Root Port didn't support it\n");
+	}
+}
+
 static void pci_configure_device(struct pci_dev *dev)
 {
 	struct hotplug_params hpp;
@@ -1769,6 +1811,7 @@ static void pci_configure_device(struct pci_dev *dev)
 
 	pci_configure_mps(dev);
 	pci_configure_extended_tags(dev);
+	pci_configure_relaxed_ordering(dev);
 
 	memset(&hpp, 0, sizeof(hpp));
 	ret = pci_get_hp_params(dev, &hpp);
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 6967c6b..61b59bf 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4016,6 +4016,17 @@ static void quirk_tw686x_class(struct pci_dev *pdev)
 			      quirk_tw686x_class);
 
 /*
+ * Some devices have problems with Transaction Layer Packets with the Relaxed
+ * Ordering Attribute set.  Such devices should mark themselves and other
+ * Device Drivers should check before sending TLPs with RO set.
+ */
+static void quirk_relaxedordering_disable(struct pci_dev *dev)
+{
+	dev->dev_flags |= PCI_DEV_FLAGS_NO_RELAXED_ORDERING;
+	dev_info(&dev->dev, "Disable Relaxed Ordering Attributes to avoid PCIe Completion erratum\n");
+}
+
+/*
  * Per PCIe r3.0, sec 2.2.9, "Completion headers must supply the same
  * values for the Attribute as were supplied in the header of the
  * corresponding Request, except as explicitly allowed when IDO is used."
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 4869e66..29606fb 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -188,6 +188,8 @@ enum pci_dev_flags {
 	 * the direct_complete optimization.
 	 */
 	PCI_DEV_FLAGS_NEEDS_RESUME = (__force pci_dev_flags_t) (1 << 11),
+	/* Don't use Relaxed Ordering for TLPs directed at this device */
+	PCI_DEV_FLAGS_NO_RELAXED_ORDERING = (__force pci_dev_flags_t) (1 << 12),
 };
 
 enum pci_irq_reroute_variant {
@@ -1125,6 +1127,7 @@ int pci_add_ext_cap_save_buffer(struct pci_dev *dev,
 void pci_pme_wakeup_bus(struct pci_bus *bus);
 void pci_d3cold_enable(struct pci_dev *dev);
 void pci_d3cold_disable(struct pci_dev *dev);
+bool pcie_relaxed_ordering_enabled(struct pci_dev *dev);
 
 /* PCI Virtual Channel */
 int pci_save_vc_state(struct pci_dev *dev);
-- 
1.8.3.1

^ permalink raw reply related

* [PATCH v10 0/5] Add new PCI_DEV_FLAGS_NO_RELAXED_ORDERING flag
From: Ding Tianhong @ 2017-08-14 15:44 UTC (permalink / raw)
  To: leedom, ashok.raj, bhelgaas, helgaas, werner, ganeshgr,
	asit.k.mallick, patrick.j.cramer, Suravee.Suthikulpanit, Bob.Shaw,
	l.stach, amira, gabriele.paoloni, David.Laight, jeffrey.t.kirsher,
	catalin.marinas, will.deacon, mark.rutland, robin.murphy, davem,
	alexander.duyck, linux-arm-kernel, netdev, linux-pci,
	linux-kernel, linuxarm
  Cc: Ding Tianhong

Some devices have problems with Transaction Layer Packets with the Relaxed
Ordering Attribute set.  This patch set adds a new PCIe Device Flag,
PCI_DEV_FLAGS_NO_RELAXED_ORDERING, a set of PCI Quirks to catch some known
devices with Relaxed Ordering issues, and a use of this new flag by the
cxgb4 driver to avoid using Relaxed Ordering with problematic Root Complex
Ports.

It's been years since I've submitted kernel.org patches, I appolgise for the
almost certain submission errors.

v2: Alexander point out that the v1 was only a part of the whole solution,
    some platform which has some issues could use the new flag to indicate
    that it is not safe to enable relaxed ordering attribute, then we need
    to clear the relaxed ordering enable bits in the PCI configuration when
    initializing the device. So add a new second patch to modify the PCI
    initialization code to clear the relaxed ordering enable bit in the
    event that the root complex doesn't want relaxed ordering enabled.

    The third patch was base on the v1's second patch and only be changed
    to query the relaxed ordering enable bit in the PCI configuration space
    to allow the Chelsio NIC to send TLPs with the relaxed ordering attributes
    set.

    This version didn't plan to drop the defines for Intel Drivers to use the
    new checking way to enable relaxed ordering because it is not the hardest
    part of the moment, we could fix it in next patchset when this patches
    reach the goal.

v3: Redesigned the logic for pci_configure_relaxed_ordering when configuration,
    If a PCIe device didn't enable the relaxed ordering attribute default,
    we should not do anything in the PCIe configuration, otherwise we
    should check if any of the devices above us do not support relaxed
    ordering by the PCI_DEV_FLAGS_NO_RELAXED_ORDERING flag, then base on
    the result if we get a return that indicate that the relaxed ordering
    is not supported we should update our device to disable relaxed ordering
    in configuration space. If the device above us doesn't exist or isn't
    the PCIe device, we shouldn't do anything and skip updating relaxed ordering
    because we are probably running in a guest.

v4: Rename the functions pcie_get_relaxed_ordering and pcie_disable_relaxed_ordering
    according John's suggestion, and modify the description, use the true/false
    as the return value.

    We shouldn't enable relaxed ordering attribute by the setting in the root
    complex configuration space for PCIe device, so fix it for cxgb4.

    Fix some format issues.

v5: Removed the unnecessary code for some function which only return the bool
    value, and add the check for VF device.

    Make this patch set base on 4.12-rc5.

v6: Fix the logic error in the need to enable the relaxed ordering attribute for cxgb4.

v7: The cxgb4 drivers will enable the PCIe Capability Device Control[Relaxed
    Ordering Enable] in PCI Probe() routine, this will break our current
    solution for some platform which has problematic when enable the relaxed
    ordering attribute. According to the latest recommendations, remove the
    enable_pcie_relaxed_ordering(), although it could not cover the Peer-to-Peer
    scene, but we agree to leave this problem until we really trigger it.

    Make this patch set base on 4.12 release version.

v8: Change the second patch title and description to make it more reasonable,
    add the acked-by from Alex and Ashok.

    Add a new patch to enable the Relaxed Ordering Attribute for cxgb4vf driver.

    Make this patch set base on 4.13-rc2.

v9: The document (https://software.intel.com/sites/default/files/managed/9e/
    bc/64-ia-32-architectures-optimization-manual.pdf) indicate that the Xeon
    processors based on Broadwell/Haswell microarchitecture has the problem
    with Relaxed Ordering Attribute enabled, so add the whole list Device ID
    from Intel to the patch.

v10: Significant rework based on Bjorn's feedback, reorganize the first 2 patches,
     now the Intel and AMD erratum soc has been divided to the different patches,
     rename the pcie_relaxed_ordering_supported() to pcie_relaxed_ordering_enabled(),
     and no need to check every intervening switch except the root ports, update
     some commits.

Casey Leedom (2):
  net/cxgb4: Use new PCI_DEV_FLAGS_NO_RELAXED_ORDERING flag
  net/cxgb4vf: Use new PCI_DEV_FLAGS_NO_RELAXED_ORDERING flag

Ding Tianhong (3):
  PCI: Disable PCIe Relaxed Ordering if unsupported
  PCI: Disable Relaxed Ordering for some Intel processors
  PCI: Disable Relaxed Ordering Attributes for AMD A1100

 drivers/net/ethernet/chelsio/cxgb4/cxgb4.h         |  1 +
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c    | 23 ++++--
 drivers/net/ethernet/chelsio/cxgb4/sge.c           |  5 +-
 drivers/net/ethernet/chelsio/cxgb4vf/adapter.h     |  1 +
 .../net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c    | 18 +++++
 drivers/net/ethernet/chelsio/cxgb4vf/sge.c         |  3 +
 drivers/pci/probe.c                                | 43 +++++++++++
 drivers/pci/quirks.c                               | 89 ++++++++++++++++++++++
 include/linux/pci.h                                |  3 +
 9 files changed, 178 insertions(+), 8 deletions(-)

-- 
1.8.3.1

^ permalink raw reply

* Re: [PATCH net] ipv4: route: fix inet_rtm_getroute induced crash
From: Eric Dumazet @ 2017-08-14 15:42 UTC (permalink / raw)
  To: Florian Westphal; +Cc: netdev, Roopa Prabhu, David Ahern
In-Reply-To: <20170813225258.16001-1-fw@strlen.de>

On Mon, 2017-08-14 at 00:52 +0200, Florian Westphal wrote:
> "ip route get $daddr iif eth0 from $saddr" causes:
>  BUG: KASAN: use-after-free in ip_route_input_rcu+0x1535/0x1b50
>  Call Trace:
>   ip_route_input_rcu+0x1535/0x1b50
>   ip_route_input_noref+0xf9/0x190
>   tcp_v4_early_demux+0x1a4/0x2b0
>   ip_rcv+0xbcb/0xc05
>   __netif_receive_skb+0x9c/0xd0
>   netif_receive_skb_internal+0x5a8/0x890
> 
> Problem is that inet_rtm_getroute calls either ip_route_input_rcu (if an
> iif was provided) or ip_route_output_key_hash_rcu.
> 
> But ip_route_input_rcu, unlike ip_route_output_key_hash_rcu, already
> associates the dst_entry with the skb.  This clears the SKB_DST_NOREF
> bit (i.e. skb_dst_drop will release/free the entry while it should not).
> 
> Thus only set the dst if we called ip_route_output_key_hash_rcu().
> 
> I tested this patch by running:
>  while true;do ip r get 10.0.1.2;done > /dev/null &
>  while true;do ip r get 10.0.1.2 iif eth0  from 10.0.1.1;done > /dev/null &
> ... and saw no crash or memory leak.
> 
> Cc: Roopa Prabhu <roopa@cumulusnetworks.com>
> Cc: David Ahern <dsahern@gmail.com>
> Fixes: ba52d61e0ff ("ipv4: route: restore skb_dst_set in inet_rtm_getroute")
> Signed-off-by: Florian Westphal <fw@strlen.de>
> ---

Ouch

Acked-by: Eric Dumazet <edumazet@google.com>

^ permalink raw reply

* (unknown), 
From: agar2000 @ 2017-08-14 15:35 UTC (permalink / raw)
  To: netdev

[-- Attachment #1: 4869945.zip --]
[-- Type: application/zip, Size: 10508 bytes --]

^ permalink raw reply

* Re: [PATCH net] datagram: When peeking datagrams with offset < 0 don't skip empty skbs
From: Paolo Abeni @ 2017-08-14 15:31 UTC (permalink / raw)
  To: Willem de Bruijn, Matthew Dawson; +Cc: Network Development, Macieira, Thiago
In-Reply-To: <CAF=yD-L9CpW-DRtKfWWWKcNKcPSWvXOkTGZoKBq6=fQMrcKVWQ@mail.gmail.com>

On Mon, 2017-08-14 at 11:03 -0400, Willem de Bruijn wrote:
> > I'm actually surprised that only unix sockets can have negative values.  Is
> > there a reason for that?  I had assumed that sk_set_peek_off would allow
> > negative values as the code already has to support negative values due to what
> > the initial value is.
> 
> A negative initial value indicates that PEEK_OFF is disabled. It only
> makes sense to peek from a positive offset from the start of the data.

With the current code, the user space can disable peeking with offset
setting a negative offset value, after that peeking with offset has
been enabled. But only for UNIX sockets. I think the same should be
allowed for UDP sockets.

> > > I'm wondering adding an explicit SOCK_PEEK_OFF/MSG_PEEK_OFF socket flag
> > > would help simplyifing the code:
> 
> The behavior needs to be bifurcated between peeking with
> offset and without offset.
> 
> When peeking with offset is enabled by setting SO_PEEK_OFF,
> subsequent reads do move the offset, so the observed behavior
> is correct.
> 
> When sk->sk_peek_offset is negative, offset mode is disabled
> and the same packet must be read twice.
> 
> An explicit boolean flag to discern between the two may make
> the code simpler to understand, not sure whether that is logically
> required.

Yes, an explicit PEEK_OFF flag is just to keep the code simpler, so
that there is no need to add checks at every sk_peek_offset() call site
and the relevant logic can be fully encapsulated under the MSG_PEEK
branch in __skb_try_recv_from_queue(), I think/hope.
It's not a functional requirement.

Cheers,

Paolo

^ permalink raw reply

* Re: Kernel 4.13.0-rc4-next-20170811 - IP Routing / Forwarding performance vs Core/RSS number / HT on
From: Paweł Staszewski @ 2017-08-14 15:07 UTC (permalink / raw)
  To: Alexander Duyck; +Cc: Jesper Dangaard Brouer, Linux Kernel Network Developers
In-Reply-To: <CAKgT0UcvR2cYnzt5BGz9Dt-uwYhuTZVtt6kQ9nuvJK2HzLyqYA@mail.gmail.com>



W dniu 2017-08-14 o 02:07, Alexander Duyck pisze:
> On Sat, Aug 12, 2017 at 10:27 AM, Paweł Staszewski
> <pstaszewski@itcare.pl> wrote:
>> Hi and thanks for reply
>>
>>
>>
>> W dniu 2017-08-12 o 14:23, Jesper Dangaard Brouer pisze:
>>> On Fri, 11 Aug 2017 19:51:10 +0200 Paweł Staszewski
>>> <pstaszewski@itcare.pl> wrote:
>>>
>>>> Hi
>>>>
>>>> I made some tests for performance comparison.
>>> Thanks for doing this. Feel free to Cc me, if you do more of these
>>> tests (so I don't miss them on the mailing list).
>>>
>>> I don't understand stand if you are reporting a potential problem?
>>>
>>> It would be good if you can provide a short summary section (of the
>>> issue) in the _start_ of the email, and then provide all this nice data
>>> afterwards, to back your case.
>>>
>>> My understanding is, you report:
>>>
>>> 1. VLANs on ixgbe show a 30-40% slowdown
>>> 2. System stopped scaling after 7+ CPUs
> So I had read through most of this before I realized what it was you
> were reporting. As far as the behavior there are a few things going
> on. I have some additional comments below but they are mostly based on
> what I had read up to that point.
>
> As far as possible issues for item 1. The VLAN adds 4 bytes of data of
> the payload, when it is stripped it can result in a packet that is 56
> bytes. These missing 8 bytes can cause issues as it forces the CPU to
> do a read/modify/write every time the device writes to the 64B cache
> line instead of just doing it as a single write. This can be very
> expensive and hurt performance. In addition it adds 4 bytes on the
> wire, so if you are sending the same 64B packets over the VLAN
> interface it is bumping them up to 68B to make room for the VLAN tag.
> I am suspecting you are encountering one of these type of issues. You
> might try tweaking the packet sizes in increments of 4 to see if there
> is a sweet spot that you might be falling out of or into.
No this is not a problem with 4byte header or soo

Cause topology is like this

TX generator (pktgen) physical interface no vlan -> RX physical 
interface (no vlan) [ FORWARDING HOST ] TX vlan interface binded to 
physical interface -> SINK

below data for packet size 70 (pktgen PKT_SIZE: 70)

ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX

0;16;70;7246720;434749440;7245917;420269856
1;16;70;7249152;434872320;7248885;420434344
2;16;70;7249024;434926080;7249225;420401400
3;16;70;7249984;434952960;7249448;420435736
4;16;70;7251200;435064320;7250990;420495244
5;16;70;7241408;434592000;7241781;420068074
6;16;70;7229696;433689600;7229750;419268196
7;16;70;7236032;434127360;7236133;419669092
8;16;70;7236608;434161920;7236274;419695830
9;16;70;7226496;433578240;7227501;419107826

100% cpu load on all 16 cores

the difference vlan/no vlan currently on this host varries from 40 to 
even 50% (but cant check if can reach 50% performance degradation cause 
pktgen can give me only 10Mpps with 70% of cpu load for forwarding host 
(soo still place to forward maybee at line rate 14Mpps)

> Item 2 is a known issue with the NICs supported by ixgbe, at least for
> anything 82599 and later. The issue here is that there isn't really an
> Rx descriptor cache so to try and optimize performance the hardware
> will try to write back as many descriptors it has ready for the ring
> requesting writeback. The problem is as you add more rings it means
> the writes get smaller as they are triggering more often. So what you
> end up seeing is that for each additional ring you add the performance
> starts dropping as soon as the rings are no longer being fully
> saturated. You can tell this has happened when the CPUs in use
> suddenly all stop reporting 100% softirq use. So for example to
> perform at line rate with 64B packets you would need something like
> XDP and to keep the ring count small, like maybe 2 rings. Any more
> than that and the performance will start to drop as you hit PCIe
> bottlenecks.
>
>> This is not only problem/bug report  - but some kind of comparision plus
>> some toughts about possible problems :)
>> And can help somebody when searching the net for possible expectations :)
>> Also - dono better list where are the smartest people that know what is
>> going in kernel with networking :)
>>
>> Next time i will place summary on top - sorry :)
>>
>>>> Tested HW (FORWARDING HOST):
>>>>
>>>> Intel(R) Xeon(R) Gold 6132 CPU @ 2.60GHz
>>> Interesting, I've not heard about a Intel CPU called "Gold" before now,
>>> but it does exist:
>>>
>>> https://ark.intel.com/products/123541/Intel-Xeon-Gold-6132-Processor-19_25M-Cache-2_60-GHz
>>>
>>>
>>>> Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
>>> This is one of my all time favorite NICs!
>> Yes this is a good NIC - will have connectx-4 2x100G by monday so will also
>> do some tests
>>
>>>> Test diagram:
>>>>
>>>>
>>>> TRAFFIC GENERATOR (ethX) -> (enp216s0f0 - RX Traffic) FORWARDING HOST
>>>> (enp216s0f1(vlan1000) - TX Traffic) -> (ethY) SINK
>>>>
>>>> Forwarder traffic: UDP random ports from 9 to 19 with random hosts from
>>>> 172.16.0.1 to 172.16.0.255
>>>>
>>>> TRAFFIC GENERATOR TX is stable 9.9Mpps (in kernel pktgen)
>>> What kind of traffic flow?  E.g. distribution, many/few source IPs...
>>
>> Traffic generator is pktgen so udp flows - better paste parameters from
>> pktgen:
>>      UDP_MIN=9
>>      UDP_MAX=19
>>
>>      pg_set $dev "dst_min 172.16.0.1"
>>      pg_set $dev "dst_max 172.16.0.100"
>>
>>      # Setup random UDP port src range
>>      #pg_set $dev "flag UDPSRC_RND"
>>      pg_set $dev "flag UDPSRC_RND"
>>      pg_set $dev "udp_src_min $UDP_MIN"
>>      pg_set $dev "udp_src_max $UDP_MAX"
>>
>>
>>>
>>>> Settings used for FORWARDING HOST (changed param. was only number of RSS
>>>> combined queues + set affinity assignment for them to fit with first
>>>> numa node where 2x10G port card is installed)
>>>>
>>>> ixgbe driver used from kernel (in-kernel build - not a module)
>>>>
>>> Nice with a script showing you setup, thanks. I would be good if it had
>>> comments, telling why you think this is a needed setup adjustment.
>>>
>>>> #!/bin/sh
>>>> ifc='enp216s0f0 enp216s0f1'
>>>> for i in $ifc
>>>>            do
>>>>            ip link set up dev $i
>>>>            ethtool -A $i autoneg off rx off tx off
>>> Good:
>>>    Turning off Ethernet flow control, to avoid receiver being the
>>>    bottleneck via pause-frames.
>> Yes - enabled flow controll is really bad :)
>>>>            ethtool -G $i rx 4096 tx 1024
>>> You adjust the RX and TX ring queue sizes, this have effects that you
>>> don't realize.  Especially for the ixgbe driver, which have a page
>>> recycle trick tied to the RX ring queue size.
>> rx ring 4096 and tx ring 1024
>> - this is because have best performance then with average packet size from
>> 64 to 1500 bytes
> The problem is this has huge negative effects on the CPU caches.
> Generally less is more. When I perform tests I will usually drop the
> ring size for Tx to 128 and Rx to 256. That reduces the descriptor
> caches per ring to 1 page each for the Tx and Rx. With an increased
> interrupt rate you should be able to service this optimally without
> too much issue.
>
> Also for these type of tests the Tx ring never really gets over 64
> packets anyway since a single Tx ring is always populated by a single
> Rx ring so as long as there isn't any flow control in play the Tx
> queue should always be empty when the Rx clean-up begins and it will
> only be populated with up to NAPI poll weight worth of packets.
Will check different ring sizes also to compare this.


>
>> Can be a little better performance for smaller frames like 64 - with rx ring
>> set to 1024
>> below 1 core/1 RSS queue with rx ring set to 1024
>>
>> 0;1;64;1530112;91772160;1529919;88724208
>> 1;1;64;1531584;91872000;1531520;88813196
>> 2;1;64;1531392;91895040;1531262;88831930
>> 3;1;64;1530880;91875840;1531201;88783558
>> 4;1;64;1530688;91829760;1530688;88768826
>> 5;1;64;1530432;91810560;1530624;88764940
>> 6;1;64;1530880;91868160;1530878;88787328
>> 7;1;64;1530496;91845120;1530560;88765114
>> 8;1;64;1530496;91837440;1530687;88772538
>> 9;1;64;1530176;91795200;1530496;88735360
>>
>> so from 1.47Mpps to 1.53Mpps
>>
>> But with bigger packets > 200 performance is better when rx is set to 4096
> This is likely due to the interrupt moderation on the adapter. Instead
> of adjusting the ring size up you might try pushing the time between
> interrupts down. I have generally found around 25 usecs is best. You
> can change the rx-usecs value via ethtool -C to get the rate you want.
> You should find that it will perform better that way since you put
> less stress on the CPU caches.
>
>>>>            ip link set $i txqueuelen 1000
>>> Setting tx queue len to the default 1000 seems redundant.
>> Yes cause i'm changing this parameter also to see if any impact on
>> performance we have
>>>
>>>>            ethtool -C $i rx-usecs 10
>>> Adjusting this also have effects you might not realize.  This actually
>>> also affect the page recycle scheme of ixgbe.  And can sometimes be
>>> used to solve stalling on DMA TX completions, which could be you issue
>>> here.
>> same here - rx-usecs - setting to 10 was kind of compromise to have good
>> performance with big ans small packet sizes
> >From my personal experience I can say that 10 is probably too
> aggressive. The logic for trying to find an ideal interrupt rate for
> these kind of tests is actually pretty simple. What you want to do is
> have the updates coming fast enough that you never hit the point of
> descriptor starvation, but at the same time you don't want them coming
> too quickly otherwise you limit how many descriptors can be coalesced
> into a single PCI DMA write since the descriptors have to be flushed
> when an interrupt is triggered.
>
>> Same test as above with rx ring 1024 tx ring 1024 and rxusecs set to 256
>> (1Core/1RSS queue):
>> 0;1;64;1506304;90424320;1506626;87402868
>> 1;1;64;1505536;90343680;1504830;87321088
>> 2;1;64;1506880;90416640;1507522;87388120
>> 3;1;64;1511040;90700800;1511682;87684864
>> 4;1;64;1511040;90681600;1511102;87662476
>> 5;1;64;1511488;90712320;1511614;87673728
>> 6;1;64;1511296;90700800;1511038;87669900
>> 7;1;64;1513344;90773760;1513280;87751680
>> 8;1;64;1513536;90850560;1513470;87807360
>> 9;1;64;1512128;90696960;1512000;87696000
>>
>> And rx-usecs set to 1
>> 0;1;64;1533632;92037120;1533504;88954368
>> 1;1;64;1533632;92006400;1533570;88943348
>> 2;1;64;1533504;91994880;1533504;88931980
>> 3;1;64;1532864;91979520;1532674;88902516
>> 4;1;64;1533952;92044800;1534080;88961792
>> 5;1;64;1533888;92048640;1534270;88969100
>> 6;1;64;1533952;92037120;1534082;88969216
>> 7;1;64;1533952;92021760;1534208;88969332
>> 8;1;64;1533056;91983360;1532930;88883724
>> 9;1;64;1533760;92021760;1533886;88946828
>>
>> rx-useck set to 2
>> 0;1;64;1522432;91334400;1522304;88301056
>> 1;1;64;1521920;91330560;1522496;88286208
>> 2;1;64;1522496;91322880;1522432;88304768
>> 3;1;64;1523456;91422720;1523649;88382762
>> 4;1;64;1527680;91676160;1527424;88601728
>> 5;1;64;1527104;91626240;1526912;88572032
>> 6;1;64;1527424;91641600;1527424;88590592
>> 7;1;64;1526336;91572480;1526912;88523776
>> 8;1;64;1527040;91637760;1526912;88579456
>> 9;1;64;1527040;91595520;1526784;88553472
>>
>> rx-usecs set to 3
>> 0;1;64;1526272;91549440;1526592;88527488
>> 1;1;64;1526528;91560960;1526272;88516352
>> 2;1;64;1525952;91580160;1525888;88527488
>> 3;1;64;1525504;91511040;1524864;88456960
>> 4;1;64;1526272;91568640;1526208;88494080
>> 5;1;64;1525568;91545600;1525312;88494080
>> 6;1;64;1526144;91584000;1526080;88512640
>> 7;1;64;1525376;91530240;1525376;88482944
>> 8;1;64;1526784;91607040;1526592;88549760
>> 9;1;64;1526208;91560960;1526528;88512640
>>
>>
>>>>            ethtool -L $i combined 16
>>>>            ethtool -K $i gro on tso on gso off sg on l2-fwd-offload off
>>>> tx-nocache-copy on ntuple on
>>> Here are many setting above.
>> Yes mostly NIC defaults besides the ntuple that is on (for testing some nfc
>> drop filters - and trying to test also tc-offload )
>>
>>> GRO/GSO/TSO for _forwarding_ is actually bad... in my tests, enabling
>>> this result in approx 10% slowdown.
>> Ok lets give a try :)
>> gro off tso off gso off sg on l2-fwd-offload off tx-nocache-copy on ntuple
>> on
>> rx-usecs 10
>> 1 CPU / 1 RSS QUEUE
>>
>> 0;1;64;1609344;96537600;1609279;93327104
>> 1;1;64;1608320;96514560;1608256;93293812
>> 2;1;64;1608000;96487680;1608125;93267770
>> 3;1;64;1608320;96522240;1608576;93297524
>> 4;1;64;1605888;96387840;1606211;93148986
>> 5;1;64;1601472;96072960;1601600;92870644
>> 6;1;64;1602624;96180480;1602243;92959674
>> 7;1;64;1601728;96107520;1602113;92907764
>> 8;1;64;1602176;96122880;1602176;92933806
>> 9;1;64;1603904;96253440;1603777;93045208
>>
>> A little better performance 1.6Mpps
>> But wondering if disabling tso will have no performance impact for tcp
>> traffic ...
> If you were passing TCP traffic through the router GRO/TSO would
> impact things, but for UDP it just adds overhead.
>
>> Will try to get some pktgen like pktgen-dpdk that can generate also tcp
>> traffic - to compare this.
>>
>>
>>> AFAIK "tx-nocache-copy on" was also determined to be a bad option.
>> I set this to on cause i have better performance (a little 10kpps for this
>> test)
>> below same test as above  with tx-nocache-copy off
>>
>> 0;1;64;1591552;95496960;1591230;92313654
>> 1;1;64;1596224;95738880;1595842;92555066
>> 2;1;64;1595456;95700480;1595201;92521774
>> 3;1;64;1595456;95723520;1595072;92528966
>> 4;1;64;1595136;95692800;1595457;92503040
>> 5;1;64;1594624;95631360;1594496;92473402
>> 6;1;64;1596224;95761920;1595778;92551180
>> 7;1;64;1595200;95700480;1595331;92521542
>> 8;1;64;1595584;95692800;1595457;92521426
>> 9;1;64;1594624;95662080;1594048;92469574
> If I recall it should have no actual impact one way or the other. The
> tx-nocache-copy option should only impact socket traffic, not routing
> since if I recall correctly it only impacts copies from userspace.
>
>>> The "ntuple on" AFAIK disables the flow-director in the NIC.  I though
>>> this would actually help VLAN traffic, but I guess not.
>> yes I enabled this cause was thinking that can help with traffic on vlans
>>
>> below same test with ntuple off
>> so all settings for ixgbe:
>> gro off tso off gso off sg on l2-fwd-offload off tx-nocache-copy off ntuple
>> off
>> rx-usecs 10
>> rx-flow-hash udp4 sdfn
>>
>> 0;1;64;1611840;96691200;1611905;93460794
>> 1;1;64;1610688;96645120;1610818;93427328
>> 2;1;64;1610752;96668160;1610497;93442176
>> 3;1;64;1610624;96664320;1610817;93427212
>> 4;1;64;1610752;96652800;1610623;93412480
>> 5;1;64;1610048;96614400;1610112;93404940
>> 6;1;64;1611264;96641280;1611390;93427212
>> 7;1;64;1611008;96691200;1610942;93468160
>> 8;1;64;1610048;96652800;1609984;93408652
>> 9;1;64;1611136;96641280;1610690;93434636
>>
>> Performance is a little better
>> and now with tx-nocache-copy on
>>
>> 0;1;64;1597248;95834880;1597311;92644096
>> 1;1;64;1597888;95865600;1597824;92677446
>> 2;1;64;1597952;95834880;1597822;92644038
>> 3;1;64;1597568;95877120;1597375;92685044
>> 4;1;64;1597184;95827200;1597314;92629190
>> 5;1;64;1597696;95842560;1597565;92625652
>> 6;1;64;1597312;95834880;1597376;92644038
>> 7;1;64;1597568;95873280;1597634;92647924
>> 8;1;64;1598400;95919360;1598849;92699602
>> 9;1;64;1597824;95873280;1598208;92684928
>>
>>
>> That is weird - so enabling tx-nocache-copy with disabled ntuple have bad
>> performance impact - but with enabled ntuple there is no performance impact
> I would leave the ntuple feature enabled if you are routing simply
> because that disables the ixgbe feature ATR which can have a negative
> impact on routing tests (causes reordering).
>
>>>
>>>>            ethtool -N $i rx-flow-hash udp4 sdfn
>>> Why do you change the NICs flow-hash?
>> whan used 16 cores / 16 rss queues - there was better load distribution over
>> all cores when sdfn rx-flow-hash enabled
> That is to be expected. The default hash will only has on IPv4
> addresses. Enabling the use of UDP ports would allow for more entropy.
> If you want similar performance without resorting to hashing on ports
> you would have to change the source/destination IP addresses.
>
>>>>            done
>>>>
>>>> ip link set up dev enp216s0f0
>>>> ip link set up dev enp216s0f1
>>>>
>>>> ip a a 10.0.0.1/30 dev enp216s0f0
>>>>
>>>> ip link add link enp216s0f1 name vlan1000 type vlan id 1000
>>>> ip link set up dev vlan1000
>>>> ip a a 10.0.0.5/30 dev vlan1000
>>>>
>>>>
>>>> ip route add 172.16.0.0/12 via 10.0.0.6
>>>>
>>>> ./set_irq_affinity.sh -x 14-27,42-43 enp216s0f0
>>>> ./set_irq_affinity.sh -x 14-27,42-43 enp216s0f1
>>>> #cat  /sys/devices/system/node/node1/cpulist
>>>> #14-27,42-55
>>>> #cat  /sys/devices/system/node/node0/cpulist
>>>> #0-13,28-41
>>> Is this a NUMA system?
>> This is 2x CPU 6132 - so have two separate pcie access to the nic - need to
>> check what cpu is assigned to pcie where network card is connected to have
>> network card on local cpu where all irq's are binded
>>
>>>
>>>> #################################################
>>>>
>>>>
>>>> Looks like forwarding performance when using vlans on ixgbe is less that
>>>> without vlans for about 30-40% (wondering if this is some vlan
>>>> offloading problem and ixgbe)
>>> I would see this as a problem/bug that enabling VLANs cost this much.
>> Yes - was thinking that with tx/rx vlan offloading there will be not much
>> performance impact when vlans used.
> What is the rate difference? Also did you account for the header size
> when noticing that there is a difference in rates? I just want to make
> sure we aren't seen an issue where you are expecting a rate of
> 14.88Mpps when VLAN tags drop the rate due to header overhead down to
> something like 14.2Mpps if I recall correctly.

As reply above - the difference is
With vlan: 7Mpps (100%cpu on 16Cores with 16RSS queues)
Without vlan: 10Mpps (70% cpu load on 16Cores with 16RSS queues)

So this is really big difference.

>
>>>> settings below:
>>>>
>>>> ethtool -k enp216s0f0
>>>> Features for enp216s0f0:
>>>> Cannot get device udp-fragmentation-offload settings: Operation not
>>>> supported
>>>> rx-checksumming: on
>>>> tx-checksumming: on
>>>>            tx-checksum-ipv4: off [fixed]
>>>>            tx-checksum-ip-generic: on
>>>>            tx-checksum-ipv6: off [fixed]
>>>>            tx-checksum-fcoe-crc: off [fixed]
>>>>            tx-checksum-sctp: on
>>>> scatter-gather: on
>>>>            tx-scatter-gather: on
>>>>            tx-scatter-gather-fraglist: off [fixed]
>>>> tcp-segmentation-offload: on
>>>>            tx-tcp-segmentation: on
>>>>            tx-tcp-ecn-segmentation: off [fixed]
>>>>            tx-tcp-mangleid-segmentation: on
>>>>            tx-tcp6-segmentation: on
>>>> udp-fragmentation-offload: off
>>>> generic-segmentation-offload: off
>>>> generic-receive-offload: on
>>>> large-receive-offload: off
>>>> rx-vlan-offload: on
>>>> tx-vlan-offload: on
>>>> ntuple-filters: on
>>>> receive-hashing: on
>>>> highdma: on [fixed]
>>>> rx-vlan-filter: on
>>>> vlan-challenged: off [fixed]
>>>> tx-lockless: off [fixed]
>>>> netns-local: off [fixed]
>>>> tx-gso-robust: off [fixed]
>>>> tx-fcoe-segmentation: off [fixed]
>>>> tx-gre-segmentation: on
>>>> tx-gre-csum-segmentation: on
>>>> tx-ipxip4-segmentation: on
>>>> tx-ipxip6-segmentation: on
>>>> tx-udp_tnl-segmentation: on
>>>> tx-udp_tnl-csum-segmentation: on
>>>> tx-gso-partial: on
>>>> tx-sctp-segmentation: off [fixed]
>>>> tx-esp-segmentation: off [fixed]
>>>> fcoe-mtu: off [fixed]
>>>> tx-nocache-copy: on
>>>> loopback: off [fixed]
>>>> rx-fcs: off [fixed]
>>>> rx-all: off
>>>> tx-vlan-stag-hw-insert: off [fixed]
>>>> rx-vlan-stag-hw-parse: off [fixed]
>>>> rx-vlan-stag-filter: off [fixed]
>>>> l2-fwd-offload: off
>>>> hw-tc-offload: off
>>>> esp-hw-offload: off [fixed]
>>>> esp-tx-csum-hw-offload: off [fixed]
>>>> rx-udp_tunnel-port-offload: on
>>>>
>>>>
>>>> Another thing is that forwarding performance does not scale with number
>>>> of cores when 7+ cores are reached
>>> I've seen problems with using Hyper-Threading CPUs.  Could it be that
>>> above 7 CPUs you are starting to use sibling-cores ?
>>>
> I would suspect that it may be more than likely the case. One thing
> you might look at doing is CPU pinning the interrupts for the NIC in a
> 1:1 fashion so that the queues are all bound to separate cores without
> them sharing between Hyper-threads.
>
>> Turbostats can help here:
>> Package Core    CPU     Avg_MHz Busy%   Bzy_MHz TSC_MHz IRQ SMI     C1
>> C2      C1%     C2%     CPU%c1  CPU%c6  CoreTmp PkgTmp  PkgWatt RAMWatt
>> PKG_%   RAM_%
>> -       -       -       72      2.27    3188    2600    194844 0       64
>> 69282   0.07    97.83   18.38   79.36   -4 54      123.49  16.08   0.00
>> 0.00
>> 0       0       0       8       0.74    1028    2600    1513 0       32
>> 1462    1.50    97.99   10.92   88.34   47 51      58.34   5.34    0.00
>> 0.00
>> 0       0       28      7       0.67    1015    2600    1255 0       12
>> 1249    0.96    98.61   10.99
>> 0       1       1       7       0.68    1019    2600    1260 0       0
>> 1260    0.00    99.54   8.44    90.88   49
>> 0       1       29      9       0.71    1208    2600    1252 0       0
>> 1253    0.00    99.48   8.41
>> 0       2       2       7       0.67    1019    2600    1261 0       0
>> 1260    0.00    99.54   8.44    90.89   48
>> 0       2       30      7       0.67    1017    2600    1255 0       0
>> 1255    0.00    99.55   8.44
>> 0       3       3       7       0.68    1019    2600    1260 0       0
>> 1259    0.00    99.53   8.46    90.86   -4
>> 0       3       31      7       0.67    1017    2600    1256 0       0
>> 1256    0.00    99.55   8.46
>> 0       4       4       7       0.67    1027    2600    1260 0       0
>> 1260    0.00    99.54   8.43    90.90   -4
>> 0       4       32      7       0.66    1018    2600    1255 0       0
>> 1255    0.00    99.55   8.44
>> 0       5       5       7       0.68    1020    2600    1260 0       0
>> 1257    0.00    99.54   8.44    90.89   50
>> 0       5       33      7       0.68    1019    2600    1255 0       0
>> 1255    0.00    99.55   8.43
>> 0       6       6       7       0.70    1019    2600    1260 0       0
>> 1259    0.00    99.53   8.43    90.87   -4
>> 0       6       34      7       0.70    1019    2600    1255 0       0
>> 1255    0.00    99.54   8.43
>> 0       8       7       7       0.68    1019    2600    1262 0       0
>> 1261    0.00    99.52   8.42    90.90   50
>> 0       8       35      7       0.67    1019    2600    1255 0       0
>> 1255    0.00    99.55   8.43
>> 0       9       8       7       0.68    1019    2600    1260 0       0
>> 1257    0.00    99.54   8.40    90.92   49
>> 0       9       36      7       0.66    1017    2600    1255 0       0
>> 1255    0.00    99.55   8.41
>> 0       10      9       7       0.66    1018    2600    1257 0       0
>> 1257    0.00    99.54   8.40    90.94   -4
>> 0       10      37      7       0.66    1018    2600    1255 0       0
>> 1255    0.00    99.55   8.41
>> 0       11      10      7       0.66    1019    2600    1257 0       0
>> 1259    0.00    99.54   8.56    90.77   -4
>> 0       11      38      7       0.66    1018    2600    1255 0       3
>> 1252    0.19    99.36   8.57
>> 0       12      11      7       0.67    1019    2600    1260 0       0
>> 1260    0.00    99.54   8.44    90.88   -4
>> 0       12      39      7       0.67    1019    2600    1255 0       0
>> 1256    0.00    99.55   8.44
>> 0       13      12      7       0.68    1019    2600    1257 0       4
>> 1254    0.32    99.22   8.67    90.65   -4
>> 0       13      40      7       0.69    1019    2600    1256 0       4
>> 1253    0.24    99.31   8.66
>> 0       14      13      7       0.71    1020    2600    1260 0       0
>> 1259    0.00    99.53   8.41    90.88   -4
>> 0       14      41      7       0.72    1020    2600    1255 0       0
>> 1255    0.00    99.54   8.40
>> 1       0       14      3564    99.19   3594    2600    125472 0       0
>> 0       0.00    0.00    0.81    0.00    54 54      65.15   10.74   0.00
>> 0.00
>> 1       0       42      3       0.07    3701    2600    1255 0       0
>> 1255    0.00    99.95   99.93
>> 1       1       15      11      0.32    3301    2600    1257 0       0
>> 1257    0.00    99.81   26.37   73.31   42
>> 1       1       43      10      0.31    3301    2600    1255 0       0
>> 1255    0.00    99.82   26.38
>> 1       2       16      10      0.31    3301    2600    1257 0       0
>> 1257    0.00    99.81   26.37   73.32   39
>> 1       2       44      10      0.32    3301    2600    1255 0       0
>> 1255    0.00    99.82   26.36
>> 1       3       17      10      0.32    3301    2600    1257 0       0
>> 1257    0.00    99.81   26.40   73.28   39
>> 1       3       45      11      0.32    3301    2600    1255 0       0
>> 1255    0.00    99.81   26.40
>> 1       4       18      10      0.32    3301    2600    1257 0       0
>> 1257    0.00    99.82   26.40   73.28   40
>> 1       4       46      11      0.32    3301    2600    1255 0       0
>> 1255    0.00    99.82   26.40
>> 1       5       19      11      0.33    3301    2600    1257 0       0
>> 1257    0.00    99.81   26.40   73.27   39
>> 1       5       47      11      0.33    3300    2600    1255 0       0
>> 1255    0.00    99.82   26.40
>> 1       6       20      12      0.35    3301    2600    1257 0       0
>> 1257    0.00    99.81   26.38   73.27   42
>> 1       6       48      12      0.36    3301    2600    1255 0       0
>> 1255    0.00    99.81   26.37
>> 1       8       21      11      0.33    3301    2600    1257 0       0
>> 1257    0.00    99.82   26.37   73.29   42
>> 1       8       49      11      0.33    3301    2600    1255 0       0
>> 1255    0.00    99.82   26.38
>> 1       9       22      10      0.32    3300    2600    1257 0       0
>> 1257    0.00    99.82   26.35   73.34   41
>> 1       9       50      10      0.30    3301    2600    1255 0       0
>> 1255    0.00    99.82   26.36
>> 1       10      23      10      0.31    3301    2600    1257 0       0
>> 1257    0.00    99.82   26.37   73.33   41
>> 1       10      51      10      0.31    3301    2600    1255 0       0
>> 1255    0.00    99.82   26.36
>> 1       11      24      10      0.32    3301    2600    1257 0       0
>> 1257    0.00    99.81   26.62   73.06   41
>> 1       11      52      10      0.32    3301    2600    1255 0       4
>> 1251    0.32    99.50   26.62
>> 1       12      25      11      0.33    3301    2600    1257 0       0
>> 1257    0.00    99.81   26.39   73.28   41
>> 1       12      53      11      0.33    3301    2600    1258 0       0
>> 1254    0.00    99.82   26.38
>> 1       13      26      12      0.36    3317    2600    1259 0       0
>> 1258    0.00    99.79   26.41   73.23   39
>> 1       13      54      11      0.34    3301    2600    1255 0       0
>> 1254    0.00    99.82   26.42
>> 1       14      27      12      0.36    3301    2600    1257 0       5
>> 1251    0.24    99.58   26.54   73.10   41
>> 1       14      55      12      0.36    3300    2600    1255 0       0
>> 1254    0.00    99.82   26.54
>>
>>
>> So it looks like in all tests i'm using core+sibling
>> But side effect of this is that :
>> 33 * 100.0 = 3300.0 MHz max turbo 28 active cores
>> 33 * 100.0 = 3300.0 MHz max turbo 24 active cores
>> 33 * 100.0 = 3300.0 MHz max turbo 20 active cores
>> 33 * 100.0 = 3300.0 MHz max turbo 14 active cores
>> 34 * 100.0 = 3400.0 MHz max turbo 12 active cores
>> 34 * 100.0 = 3400.0 MHz max turbo 8 active cores
>> 35 * 100.0 = 3500.0 MHz max turbo 4 active cores
>> 37 * 100.0 = 3700.0 MHz max turbo 2 active cores
>>
>> So more cores = less MHz per core/sibling
> Yes that is always a trade off. Also the ixgbe is limited in terms of
> PCIe bus bandwidth. The more queues you add the worse the descriptor
> overhead will be. Generally I have found that about 6 queues is ideal.
> As you start getting to more than 8 the performance for 64B packets
> will start to drop off as each additional queue will hurt the
> descriptor cache performance as it starts writing back fewer and fewer
> descriptors per write which will increase the PCIe bus overhead for
> the writes.
>
>>>> perf top:
>>>>
>>>>     PerfTop:   77835 irqs/sec  kernel:99.7%  exact:  0.0% [4000Hz
>>>> cycles],  (all, 56 CPUs)
>>>>
>>>> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>>>
>>>>        16.32%  [kernel]       [k] skb_dst_force
>>>>        16.30%  [kernel]       [k] dst_release
>>>>        15.11%  [kernel]       [k] rt_cache_valid
>>>>        12.62%  [kernel]       [k] ipv4_mtu
>>> It seems a little strange that these 4 functions are on the top
>> Yes dono why there is ipv4_mtu called and taking soo much cycles
>>
>>>>         5.60%  [kernel]       [k] do_raw_spin_lock
>>> Why is calling/taking this lock? (Use perf call-graph recording).
>> can be hard to paste it here:)
>> attached file
>>
>>>>         3.03%  [kernel]       [k] fib_table_lookup
>>>>         2.70%  [kernel]       [k] ip_finish_output2
>>>>         2.10%  [kernel]       [k] dev_gro_receive
>>>>         1.89%  [kernel]       [k] eth_type_trans
>>>>         1.81%  [kernel]       [k] ixgbe_poll
>>>>         1.15%  [kernel]       [k] ixgbe_xmit_frame_ring
>>>>         1.06%  [kernel]       [k] __build_skb
>>>>         1.04%  [kernel]       [k] __dev_queue_xmit
>>>>         0.97%  [kernel]       [k] ip_rcv
>>>>         0.78%  [kernel]       [k] netif_skb_features
>>>>         0.74%  [kernel]       [k] ipt_do_table
>>> Unloading netfilter modules, will give more performance, but it
>>> semifake to do so.
>> Compiled in kernel - only in filter mode - with ipv4+ipv6 - no other modules
>> conntrack or other .
>>
>>>>         0.70%  [kernel]       [k] acpi_processor_ffh_cstate_enter
>>>>         0.64%  [kernel]       [k] ip_forward
>>>>         0.59%  [kernel]       [k] __netif_receive_skb_core
>>>>         0.55%  [kernel]       [k] dev_hard_start_xmit
>>>>         0.53%  [kernel]       [k] ip_route_input_rcu
>>>>         0.53%  [kernel]       [k] ip_rcv_finish
>>>>         0.51%  [kernel]       [k] page_frag_free
>>>>         0.50%  [kernel]       [k] kmem_cache_alloc
>>>>         0.50%  [kernel]       [k] udp_v4_early_demux
>>>>         0.44%  [kernel]       [k] skb_release_data
>>>>         0.42%  [kernel]       [k] inet_gro_receive
>>>>         0.40%  [kernel]       [k] sch_direct_xmit
>>>>         0.39%  [kernel]       [k] __local_bh_enable_ip
>>>>         0.33%  [kernel]       [k] netdev_pick_tx
>>>>         0.33%  [kernel]       [k] validate_xmit_skb
>>>>         0.28%  [kernel]       [k] fib_validate_source
>>>>         0.27%  [kernel]       [k] deliver_ptype_list_skb
>>>>         0.25%  [kernel]       [k] eth_header
>>>>         0.23%  [kernel]       [k] get_dma_ops
>>>>         0.22%  [kernel]       [k] skb_network_protocol
>>>>         0.21%  [kernel]       [k] ip_output
>>>>         0.21%  [kernel]       [k] vlan_dev_hard_start_xmit
>>>>         0.20%  [kernel]       [k] ixgbe_alloc_rx_buffers
>>>>         0.18%  [kernel]       [k] nf_hook_slow
>>>>         0.18%  [kernel]       [k] apic_timer_interrupt
>>>>         0.18%  [kernel]       [k] virt_to_head_page
>>>>         0.18%  [kernel]       [k] build_skb
>>>>         0.16%  [kernel]       [k] swiotlb_map_page
>>>>         0.16%  [kernel]       [k] ip_finish_output
>>>>         0.16%  [kernel]       [k] udp4_gro_receive
>>>>
>>>>
>>>> RESULTS:
>>>>
>>>> CSV format - delimeter ";"
>>>>
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;1;64;1470912;88247040;1470720;85305530
>>>> 1;1;64;1470912;88285440;1470977;85335110
>>>> 2;1;64;1470464;88247040;1470402;85290508
>>>> 3;1;64;1471424;88262400;1471230;85353728
>>>> 4;1;64;1468736;88166400;1468672;85201652
>>>> 5;1;64;1470016;88181760;1469949;85234944
>>>> 6;1;64;1470720;88247040;1470466;85290624
>>>> 7;1;64;1471232;88277760;1471167;85346246
>>>> 8;1;64;1469184;88170240;1469249;85216326
>>>> 9;1;64;1470592;88227840;1470847;85294394
>>> Single core 1.47Mpps seems a little low, I would expect 2Mpps.
>>>
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;2;64;2413120;144802560;2413245;139975924
>>>> 1;2;64;2415296;144913920;2415356;140098188
>>>> 2;2;64;2416768;144898560;2416573;140105670
>>>> 3;2;64;2418176;145056000;2418110;140261806
>>>> 4;2;64;2416512;144990720;2416509;140172950
>>>> 5;2;64;2415168;144860160;2414466;140064780
>>>> 6;2;64;2416960;144983040;2416833;140190930
>>>> 7;2;64;2413632;144768000;2413568;140001734
>>>> 8;2;64;2415296;144898560;2414589;140087168
>>>> 9;2;64;2416576;144963840;2416892;140190930
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;3;64;3419008;205155840;3418882;198239244
>>>> 1;3;64;3428032;205585920;3427971;198744234
>>>> 2;3;64;3425472;205536000;3425344;198677260
>>>> 3;3;64;3425088;205470720;3425156;198603136
>>>> 4;3;64;3427648;205693440;3426883;198773888
>>>> 5;3;64;3426880;205670400;3427392;198796044
>>>> 6;3;64;3429120;205678080;3430140;198848186
>>>> 7;3;64;3422976;205355520;3423490;198458136
>>>> 8;3;64;3423168;205336320;3423486;198495372
>>>> 9;3;64;3424384;205493760;3425538;198617868
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;4;64;4406464;264364800;4405244;255560296
>>>> 1;4;64;4404672;264349440;4405122;255541504
>>>> 2;4;64;4402368;264049920;4403326;255188864
>>>> 3;4;64;4401344;264076800;4400702;255207134
>>>> 4;4;64;4385536;263074560;4386620;254312716
>>>> 5;4;64;4386560;263189760;4385404;254379532
>>>> 6;4;64;4398784;263857920;4399031;255025288
>>>> 7;4;64;4407232;264445440;4407998;255637900
>>>> 8;4;64;4413184;264698880;4413758;255875816
>>>> 9;4;64;4411328;264526080;4411906;255712372
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;5;64;5094464;305871360;5094464;295657262
>>>> 1;5;64;5090816;305514240;5091201;295274810
>>>> 2;5;64;5088384;305387520;5089792;295175108
>>>> 3;5;64;5079296;304869120;5079484;294680368
>>>> 4;5;64;5092992;305544960;5094207;295349166
>>>> 5;5;64;5092416;305502720;5093372;295334260
>>>> 6;5;64;5080896;304896000;5081090;294677004
>>>> 7;5;64;5085376;305114880;5086401;294933058
>>>> 8;5;64;5092544;305575680;5092036;295356938
>>>> 9;5;64;5093056;305652480;5093832;295449506
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;6;64;5705088;342351360;5705784;330965110
>>>> 1;6;64;5710272;342743040;5707591;331373952
>>>> 2;6;64;5703424;342182400;5701826;330776552
>>>> 3;6;64;5708736;342604800;5707963;331147462
>>>> 4;6;64;5710144;342654720;5712067;331202910
>>>> 5;6;64;5712064;342777600;5711361;331292288
>>>> 6;6;64;5710144;342585600;5708607;331144272
>>>> 7;6;64;5699840;342021120;5697853;330609222
>>>> 8;6;64;5701184;342124800;5702909;330653592
>>>> 9;6;64;5711360;342735360;5713283;331247686
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;7;64;6244416;374603520;6243591;362180072
>>>> 1;7;64;6230912;374016000;6231490;361534126
>>>> 2;7;64;6244800;374776320;6244866;362224326
>>>> 3;7;64;6238720;374376960;6238261;361838510
>>>> 4;7;64;6218816;373079040;6220413;360683962
>>>> 5;7;64;6224320;373566720;6225086;361017404
>>>> 6;7;64;6224000;373570560;6221370;360936088
>>>> 7;7;64;6210048;372741120;6210627;360212654
>>>> 8;7;64;6231616;374035200;6231537;361445502
>>>> 9;7;64;6227840;373724160;6228802;361162752
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;8;64;6251840;375144960;6251849;362609678
>>>> 1;8;64;6250816;375014400;6250881;362547038
>>>> 2;8;64;6257728;375432960;6257160;362911104
>>>> 3;8;64;6255552;375325440;6255622;362822074
>>>> 4;8;64;6243776;374576640;6243270;362120622
>>>> 5;8;64;6237184;374296320;6237690;361790080
>>>> 6;8;64;6240960;374415360;6240714;361927366
>>>> 7;8;64;6222784;373317120;6223746;360854424
>>>> 8;8;64;6225920;373593600;6227014;361154980
>>>> 9;8;64;6238528;374304000;6237701;361845238
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;14;64;6486144;389184000;6486135;376236488
>>>> 1;14;64;6454912;387390720;6454222;374466734
>>>> 2;14;64;6441152;386480640;6440431;373572780
>>>> 3;14;64;6450240;386972160;6450870;374070014
>>>> 4;14;64;6465600;387997440;6467221;375089654
>>>> 5;14;64;6448384;386860800;6448000;373980230
>>>> 6;14;64;6452352;387095040;6452148;374168904
>>>> 7;14;64;6441984;386507520;6443203;373665058
>>>> 8;14;64;6456704;387340800;6455744;374429092
>>>> 9;14;64;6464640;387901440;6465218;374949004
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;16;64;6939008;416325120;6938696;402411192
>>>> 1;16;64;6941952;416444160;6941745;402558918
>>>> 2;16;64;6960576;417584640;6960707;403698718
>>>> 3;16;64;6940736;416486400;6941820;402503876
>>>> 4;16;64;6927680;415741440;6927420;401853870
>>>> 5;16;64;6929792;415687680;6929917;401839196
>>>> 6;16;64;6950400;416989440;6950661;403026166
>>>> 7;16;64;6953664;417216000;6953454;403260544
>>>> 8;16;64;6948480;416851200;6948800;403023266
>>>> 9;16;64;6924160;415422720;6924092;401542468
>>> I've seen Linux scale beyond 6.9Mpps, thus I also see this as an
>>> issue/bug.  You could be stalling on DMA TX completion being too slow,
>>> but you already increased the interval and increased the TX ring queue
>>> size.  You could play with those setting and see if it changes this?
>>>
>>> Could you try my napi_monitor tool in:
>>>
>>> https://github.com/netoptimizer/prototype-kernel/tree/master/kernel/samples/bpf
>>>
>>> Also provide the output from:
>>>    mpstat -P ALL -u -I SCPU -I SUM 2
>> with 16 cores / 16 RSS queues
>> Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft %steal
>> %guest  %gnice   %idle
>> Average:     all    0.00    0.00    0.01    0.00    0.00   28.57 0.00
>> 0.00    0.00   71.42
>> Average:       0    0.00    0.00    0.04    0.00    0.00    0.08 0.00
>> 0.00    0.00   99.88
>> Average:       1    0.00    0.00    0.12    0.00    0.00    0.00 0.00
>> 0.00    0.00   99.88
>> Average:       2    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:       3    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:       4    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:       5    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:       6    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:       7    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:       8    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:       9    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      10    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      11    0.08    0.00    0.04    0.00    0.00    0.00 0.00
>> 0.00    0.00   99.88
>> Average:      12    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      13    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      14    0.00    0.00    0.00    0.00    0.00  100.00 0.00
>> 0.00    0.00    0.00
>> Average:      15    0.00    0.00    0.00    0.00    0.00  100.00 0.00
>> 0.00    0.00    0.00
>> Average:      16    0.00    0.00    0.00    0.00    0.00  100.00 0.00
>> 0.00    0.00    0.00
>> Average:      17    0.00    0.00    0.00    0.00    0.00  100.00 0.00
>> 0.00    0.00    0.00
>> Average:      18    0.00    0.00    0.00    0.00    0.00  100.00 0.00
>> 0.00    0.00    0.00
>> Average:      19    0.00    0.00    0.00    0.00    0.00  100.00 0.00
>> 0.00    0.00    0.00
>> Average:      20    0.00    0.00    0.00    0.00    0.00  100.00 0.00
>> 0.00    0.00    0.00
>> Average:      21    0.00    0.00    0.00    0.00    0.00  100.00 0.00
>> 0.00    0.00    0.00
>> Average:      22    0.00    0.00    0.00    0.00    0.00  100.00 0.00
>> 0.00    0.00    0.00
>> Average:      23    0.00    0.00    0.00    0.00    0.00  100.00 0.00
>> 0.00    0.00    0.00
>> Average:      24    0.00    0.00    0.00    0.00    0.00  100.00 0.00
>> 0.00    0.00    0.00
>> Average:      25    0.00    0.00    0.00    0.00    0.00  100.00 0.00
>> 0.00    0.00    0.00
>> Average:      26    0.00    0.00    0.00    0.00    0.00  100.00 0.00
>> 0.00    0.00    0.00
>> Average:      27    0.00    0.00    0.00    0.00    0.00  100.00 0.00
>> 0.00    0.00    0.00
>> Average:      28    0.00    0.00    0.04    0.00    0.00    0.00 0.00
>> 0.00    0.00   99.96
>> Average:      29    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      30    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      31    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      32    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      33    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      34    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      35    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      36    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      37    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      38    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      39    0.04    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00   99.96
>> Average:      40    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      41    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      42    0.00    0.00    0.00    0.00    0.00  100.00 0.00
>> 0.00    0.00    0.00
>> Average:      43    0.00    0.00    0.00    0.00    0.00  100.00 0.00
>> 0.00    0.00    0.00
>> Average:      44    0.00    0.00    0.04    0.17    0.00    0.00 0.00
>> 0.00    0.00   99.79
>> Average:      45    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      46    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      47    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      48    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      49    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      50    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      51    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      52    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      53    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      54    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>> Average:      55    0.00    0.00    0.00    0.00    0.00    0.00 0.00
>> 0.00    0.00  100.00
>>
>> Average:     CPU    intr/s
>> Average:     all 123596.08
>> Average:       0    646.38
>> Average:       1    500.54
>> Average:       2    511.67
>> Average:       3    534.25
>> Average:       4    542.21
>> Average:       5    531.54
>> Average:       6    554.58
>> Average:       7    535.88
>> Average:       8    544.58
>> Average:       9    536.42
>> Average:      10    575.46
>> Average:      11    601.12
>> Average:      12    502.08
>> Average:      13    575.46
>> Average:      14   5917.92
>> Average:      15   5949.58
>> Average:      16   7021.29
>> Average:      17   7299.71
>> Average:      18   7391.67
>> Average:      19   7354.25
>> Average:      20   7543.42
>> Average:      21   7354.25
>> Average:      22   7322.33
>> Average:      23   7368.71
>> Average:      24   7429.00
>> Average:      25   7406.46
>> Average:      26   7400.67
>> Average:      27   7447.21
>> Average:      28    517.00
>> Average:      29    549.54
>> Average:      30    529.33
>> Average:      31    533.83
>> Average:      32    541.25
>> Average:      33    541.17
>> Average:      34    532.50
>> Average:      35    545.17
>> Average:      36    528.96
>> Average:      37    509.92
>> Average:      38    520.12
>> Average:      39    523.29
>> Average:      40    530.75
>> Average:      41    542.33
>> Average:      42   5921.71
>> Average:      43   5949.42
>> Average:      44    503.04
>> Average:      45    542.75
>> Average:      46    582.50
>> Average:      47    581.71
>> Average:      48    495.29
>> Average:      49    524.38
>> Average:      50    527.92
>> Average:      51    528.12
>> Average:      52    456.38
>> Average:      53    477.00
>> Average:      54    440.92
>> Average:      55    568.83
>>
>> Average:     CPU       HI/s    TIMER/s   NET_TX/s   NET_RX/s BLOCK/s
>> IRQ_POLL/s  TASKLET/s    SCHED/s  HRTIMER/s      RCU/s
>> Average:       0       0.00     250.00       0.17      87.00 0.00       0.00
>> 45.46     250.00       0.00      13.75
>> Average:       1       0.00     233.42       0.00       0.00 0.00       0.00
>> 0.00     249.92       0.00      17.21
>> Average:       2       0.00     249.04       0.00       0.00 0.00       0.00
>> 0.00     249.96       0.00      12.67
>> Average:       3       0.00     249.92       0.00       0.00 0.00       0.00
>> 0.00     249.92       0.00      34.42
>> Average:       4       0.00     248.67       0.17       0.00 0.00       0.00
>> 0.00     249.96       0.00      43.42
>> Average:       5       0.00     249.46       0.00       0.00 0.00       0.00
>> 0.00     249.92       0.00      32.17
>> Average:       6       0.00     249.79       0.00       0.00 0.00       0.00
>> 0.00     249.87       0.00      54.92
>> Average:       7       0.00     240.12       0.00       0.00 0.00       0.00
>> 0.00     249.96       0.00      45.79
>> Average:       8       0.00     247.42       0.00       0.00 0.00       0.00
>> 0.00     249.92       0.00      47.25
>> Average:       9       0.00     249.29       0.00       0.00 0.00       0.00
>> 0.00     249.96       0.00      37.17
>> Average:      10       0.00     248.75       0.00       0.00 0.00       0.00
>> 0.00     249.92       0.00      76.79
>> Average:      11       0.00     249.29       0.00       0.00 0.00       0.00
>> 42.79     249.83       0.00      59.21
>> Average:      12       0.00     249.83       0.00       0.00 0.00       0.00
>> 0.00     249.96       0.00       2.29
>> Average:      13       0.00     249.92       0.00       0.00 0.00       0.00
>> 0.00     249.92       0.00      75.62
>> Average:      14       0.00     148.21       0.17    5758.04 0.00       0.00
>> 0.00       8.42       0.00       3.08
>> Average:      15       0.00     148.42       0.46    5789.25 0.00       0.00
>> 0.00       8.33       0.00       3.12
>> Average:      16       0.00     142.62       0.79    6866.46 0.00       0.00
>> 0.00       8.29       0.00       3.12
>> Average:      17       0.00     143.17       0.42    7145.00 0.00       0.00
>> 0.00       8.08       0.00       3.04
>> Average:      18       0.00     153.62       0.42    7226.42 0.00       0.00
>> 0.00       8.04       0.00       3.17
>> Average:      19       0.00     150.46       0.46    7192.21 0.00       0.00
>> 0.00       8.04       0.00       3.08
>> Average:      20       0.00     145.21       0.17    7386.50 0.00       0.00
>> 0.00       8.29       0.00       3.25
>> Average:      21       0.00     150.96       0.46    7191.37 0.00       0.00
>> 0.00       8.25       0.00       3.21
>> Average:      22       0.00     146.67       0.54    7163.96 0.00       0.00
>> 0.00       8.04       0.00       3.12
>> Average:      23       0.00     151.38       0.42    7205.75 0.00       0.00
>> 0.00       8.00       0.00       3.17
>> Average:      24       0.00     153.33       0.17    7264.12 0.00       0.00
>> 0.00       8.08       0.00       3.29
>> Average:      25       0.00     153.21       0.17    7241.83 0.00       0.00
>> 0.00       7.96       0.00       3.29
>> Average:      26       0.00     153.96       0.17    7234.88 0.00       0.00
>> 0.00       8.38       0.00       3.29
>> Average:      27       0.00     151.71       0.79    7283.25 0.00       0.00
>> 0.00       8.04       0.00       3.42
>> Average:      28       0.00     245.71       0.00       0.00 0.00       0.00
>> 0.00     249.50       0.00      21.79
>> Average:      29       0.00     233.21       0.00       0.00 0.00       0.00
>> 0.00     249.87       0.00      66.46
>> Average:      30       0.00     248.92       0.00       0.00 0.00       0.00
>> 0.00     250.00       0.00      30.42
>> Average:      31       0.00     249.92       0.00       0.00 0.00       0.00
>> 0.00     249.96       0.00      33.96
>> Average:      32       0.00     248.67       0.00       0.00 0.00       0.00
>> 0.00     249.96       0.00      42.62
>> Average:      33       0.00     249.46       0.00       0.00 0.00       0.00
>> 0.00     249.92       0.00      41.79
>> Average:      34       0.00     249.79       0.00       0.00 0.00       0.00
>> 0.00     249.87       0.00      32.83
>> Average:      35       0.00     240.12       0.00       0.00 0.00       0.00
>> 0.00     249.96       0.00      55.08
>> Average:      36       0.00     247.42       0.00       0.00 0.00       0.00
>> 0.00     249.96       0.00      31.58
>> Average:      37       0.00     249.29       0.00       0.00 0.00       0.00
>> 0.00     249.92       0.00      10.71
>> Average:      38       0.00     248.75       0.00       0.00 0.00       0.00
>> 0.00     249.87       0.00      21.50
>> Average:      39       0.00     249.50       0.00       0.00 0.00       0.00
>> 0.00     249.83       0.00      23.96
>> Average:      40       0.00     249.83       0.00       0.00 0.00       0.00
>> 0.00     249.96       0.00      30.96
>> Average:      41       0.00     249.92       0.00       0.00 0.00       0.00
>> 0.00     249.92       0.00      42.50
>> Average:      42       0.00     148.38       0.71    5761.00 0.00       0.00
>> 0.00       8.25       0.00       3.38
>> Average:      43       0.00     147.21       0.50    5790.33 0.00       0.00
>> 0.00       8.00       0.00       3.38
>> Average:      44       0.00     248.96       0.00       0.00 0.00       0.00
>> 0.00     248.13       0.00       5.96
>> Average:      45       0.00     249.04       0.00       0.00 0.00       0.00
>> 0.00     248.88       0.00      44.83
>> Average:      46       0.00     248.96       0.00       0.00 0.00       0.00
>> 0.00     248.58       0.00      84.96
>> Average:      47       0.00     249.00       0.00       0.00 0.00       0.00
>> 0.00     248.75       0.00      83.96
>> Average:      48       0.00     249.12       0.00       0.00 0.00       0.00
>> 0.00     132.83       0.00     113.33
>> Average:      49       0.00     249.12       0.00       0.00 0.00       0.00
>> 0.00     248.62       0.00      26.62
>> Average:      50       0.00     248.92       0.00       0.00 0.00       0.00
>> 0.00     248.58       0.00      30.42
>> Average:      51       0.00     249.08       0.00       0.00 0.00       0.00
>> 0.00     248.42       0.00      30.63
>> Average:      52       0.00     249.21       0.00       0.00 0.00       0.00
>> 0.00     131.96       0.00      75.21
>> Average:      53       0.00     249.08       0.00       0.00 0.00       0.00
>> 0.00     136.12       0.00      91.79
>> Average:      54       0.00     249.00       0.00       0.00 0.00       0.00
>> 0.00     136.79       0.00      55.12
>> Average:      55       0.00     249.04       0.00       0.00 0.00       0.00
>> 0.00     248.71       0.00      71.08
>>
>>
>>
>

^ permalink raw reply

* Re: [PATCH net] datagram: When peeking datagrams with offset < 0 don't skip empty skbs
From: Willem de Bruijn @ 2017-08-14 15:03 UTC (permalink / raw)
  To: Matthew Dawson; +Cc: Paolo Abeni, Network Development, Macieira, Thiago
In-Reply-To: <1846443.VTclhqQinN@ring00>

> I'm actually surprised that only unix sockets can have negative values.  Is
> there a reason for that?  I had assumed that sk_set_peek_off would allow
> negative values as the code already has to support negative values due to what
> the initial value is.

A negative initial value indicates that PEEK_OFF is disabled. It only
makes sense to peek from a positive offset from the start of the data.

>> I'm wondering adding an explicit SOCK_PEEK_OFF/MSG_PEEK_OFF socket flag
>> would help simplyifing the code:

The behavior needs to be bifurcated between peeking with
offset and without offset.

When peeking with offset is enabled by setting SO_PEEK_OFF,
subsequent reads do move the offset, so the observed behavior
is correct.

When sk->sk_peek_offset is negative, offset mode is disabled
and the same packet must be read twice.

An explicit boolean flag to discern between the two may make
the code simpler to understand, not sure whether that is logically
required.

>> no need for negative offset; set such
>> flag when SOL_SOCKET/SO_PEEK_OFF with a non negative value is called
>> (and clear it when a negative value is used), forward such flag to
>> __skb_try_recv_datagram/__skb_try_recv_from_queue and use it to select
>> the proper peek behaviour.
> The negative value is documented and supported for unix sockets, so I don't
> think we can just reject all negative values.

What is the documented behavior on those sockets? The original
patch that introduced it explicitly mentions peek mode as disabled
when the value is negative:

  https://www.spinics.net/lists/netdev/msg189589.html

> However, I do see a way to
> implement that while supporting user space sending negative values.  If that
> is preferred let me know and I'll see what I can make.
>
> I assume that would make this patch target net-next?

I suspect that we can fix this with a small enough patch to be able
to send to net.

> Would it be possible to
> pull this into net so it can fix this regression for the next kernel release,
> while I work on getting the better solution finished?  I'm happy to to make
> __skb_try_recv_datagram/__skb_try_recv_from_queue accept the extra parameter
> so they don't see an offset less then 0 in this patch.
>
> --
> Matthew

^ permalink raw reply

* Re: [PATCH net] udp: consistently apply ufo or fragmentation
From: Willem de Bruijn @ 2017-08-14 14:53 UTC (permalink / raw)
  To: Vasily Averin
  Cc: Linux Kernel Network Developers, Willem de Bruijn,
	David S. Miller, Andrey Konovalov
In-Reply-To: <a9b32d53-5b3c-9596-7309-e56e3945a110@virtuozzo.com>

> ip*_ufo_append_data() is called now for each skb_is_gso() packet.
> Before the patch it was called for UDP packets only.
>
> Could you please clarify, is it correct?

__ip_append_data is called for udp, raw, icmp and ping sockets.
Of these, only udp packets have a path to get skb_is_gso() set:
when __ip_append_data has been called before on this packet
(using MSG_MORE) and the path entered ip_ufo_append_data
in that call through the other conditions in the branch, which
include sk->sk_type == SOCK_DGRAM.

This function is not reached from other segmentable protocols
like tcp, which call ip_queue_xmit in the ip layer. The exceptions
are sending in ip_send_unicast_reply, but those will not have gso.

^ permalink raw reply

* Re: [PATCH net] datagram: When peeking datagrams with offset < 0 don't skip empty skbs
From: Matthew Dawson @ 2017-08-14 14:05 UTC (permalink / raw)
  To: Paolo Abeni; +Cc: netdev, Macieira, Thiago, willemdebruijn.kernel
In-Reply-To: <1502702846.8411.25.camel@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 4132 bytes --]

On Monday, August 14, 2017 5:27:26 AM EDT Paolo Abeni wrote:
> On Mon, 2017-08-14 at 01:52 -0400, Matthew Dawson wrote:
> > Due to commit e6afc8ace6dd5cef5e812f26c72579da8806f5ac ("udp: remove
> > headers from UDP packets before queueing"), when udp packets are being
> > peeked the requested extra offset is always 0 as there is no need to skip
> > the udp header.  However, when the offset is 0 and the next skb is
> > of length 0, it is only returned once.  The behaviour can be seen with
> > the following python script:
> > 
> > #!/usr/bin/env python3
> > from socket import *;
> > f=socket(AF_INET6, SOCK_DGRAM | SOCK_NONBLOCK, 0);
> > g=socket(AF_INET6, SOCK_DGRAM | SOCK_NONBLOCK, 0);
> > f.bind(('::', 0));
> > addr=('::1', f.getsockname()[1]);
> > g.sendto(b'', addr)
> > g.sendto(b'b', addr)
> > print(f.recvfrom(10, MSG_PEEK));
> > print(f.recvfrom(10, MSG_PEEK));
> > 
> > Where the expected output should be the empty string twice.
> > 
> > Instead, make sk_peek_offset return negative values, and pass those values
> > to __skb_try_recv_datagram/__skb_try_recv_from_queue.  If the passed
> > offset
> > to __skb_try_recv_from_queue is negative, the checked skb is never
> > skipped.
> > After the call, the offset is set to 0 if negative to ensure all further
> > calculations are correct.
> > 
> > Also simplify the if condition in __skb_try_recv_from_queue.  If _off is
> > greater then 0, and off is greater then or equal to skb->len, then (_off
> > ||
> > skb->len) must always be true assuming skb->len >= 0 is always true.
> > 
> > Also remove a redundant check around a call to sk_peek_offset in
> > af_unix.c,
> > as it double checked if MSG_PEEK was set in the flags.
> > 
> > Signed-off-by: Matthew Dawson <matthew@mjdsystems.ca>
> > ---
> > 
> >  include/net/sock.h  | 4 +---
> >  net/core/datagram.c | 4 ++--
> >  net/ipv4/udp.c      | 4 ++++
> >  net/ipv6/udp.c      | 4 ++++
> >  net/unix/af_unix.c  | 8 +++++---
> >  5 files changed, 16 insertions(+), 8 deletions(-)
> > 
> > diff --git a/include/net/sock.h b/include/net/sock.h
> > index 7c0632c7e870..aeeec62992ca 100644
> > --- a/include/net/sock.h
> > +++ b/include/net/sock.h
> > @@ -507,9 +507,7 @@ int sk_set_peek_off(struct sock *sk, int val);
> > 
> >  static inline int sk_peek_offset(struct sock *sk, int flags)
> >  {
> >  
> >  	if (unlikely(flags & MSG_PEEK)) {
> > 
> > -		s32 off = READ_ONCE(sk->sk_peek_off);
> > -		if (off >= 0)
> > -			return off;
> > +		return READ_ONCE(sk->sk_peek_off);
> > 
> >  	}
> >  	
> >  	return 0;
> 
> You probably want/must also update sk_set_peek_off() to allow negative
> values, elsewhere this will break as soon as the user will do
> SOL_SOCKET/SO_PEEK_OFF.
I'm happy to do this either in this patch or as a second patch and make this a 
series, whatever the networking community prefers.

I'm actually surprised that only unix sockets can have negative values.  Is 
there a reason for that?  I had assumed that sk_set_peek_off would allow 
negative values as the code already has to support negative values due to what 
the initial value is.

> I'm wondering adding an explicit SOCK_PEEK_OFF/MSG_PEEK_OFF socket flag
> would help simplyifing the code: no need for negative offset; set such
> flag when SOL_SOCKET/SO_PEEK_OFF with a non negative value is called
> (and clear it when a negative value is used), forward such flag to
> __skb_try_recv_datagram/__skb_try_recv_from_queue and use it to select
> the proper peek behaviour.
The negative value is documented and supported for unix sockets, so I don't 
think we can just reject all negative values.  However, I do see a way to 
implement that while supporting user space sending negative values.  If that 
is preferred let me know and I'll see what I can make.

I assume that would make this patch target net-next?  Would it be possible to 
pull this into net so it can fix this regression for the next kernel release, 
while I work on getting the better solution finished?  I'm happy to to make 
__skb_try_recv_datagram/__skb_try_recv_from_queue accept the extra parameter 
so they don't see an offset less then 0 in this patch.

-- 
Matthew

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply

* Re: [patch v2 2/2] Change Kconfig description
From: Jiri Pirko @ 2017-08-14 13:55 UTC (permalink / raw)
  To: Ohad Oz; +Cc: davem, netdev, saeedm, vadimp, system-sw-low-level
In-Reply-To: <1502725102-182550-3-git-send-email-ohado@mellanox.com>

Mon, Aug 14, 2017 at 05:38:22PM CEST, ohado@mellanox.com wrote:
>This patch apply Mellanox network vendor which includes:
>- Mellanox card devices: ConnectX-4, ConnectX-5 and Connect-IB cards.
>- Mellanox switch device: SwitchX-2 Switch-IB, Spectrum.
>Therefore rephrasing help.
>
>Signed-off-by: Ohad Oz <ohado@mellanox.com>
>Acked-by: Leon Romanovsky <leonro@mellanox.com>

Acked-by: Jiri Pirko <jiri@mellanox.com>

^ permalink raw reply

* Re: [patch v2 1/2] Allow Mellanox switch devices to be configured if only I2C bus is set
From: Jiri Pirko @ 2017-08-14 13:55 UTC (permalink / raw)
  To: Ohad Oz; +Cc: davem, netdev, saeedm, vadimp, system-sw-low-level
In-Reply-To: <1502725102-182550-2-git-send-email-ohado@mellanox.com>

Mon, Aug 14, 2017 at 05:38:21PM CEST, ohado@mellanox.com wrote:
>Mellanox switches (mlxsw) supports I2C systems without PCI, in order to
>give the ability to the users to use such functionality, there is need
>to update Kconfig.
>
>Signed-off-by: Ohad Oz <ohado@mellanox.com>
>Acked-by: Leon Romanovsky <leonro@mellanox.com>

Acked-by: Jiri Pirko <jiri@mellanox.com>

^ permalink raw reply

* Re: [PATCH v2] net: phy: Use tab for indentation in Kconfig
From: Michal Simek @ 2017-08-14 13:51 UTC (permalink / raw)
  To: Andrew Lunn, Michal Simek
  Cc: linux-kernel, monstr, David Miller, netdev, Florian Fainelli
In-Reply-To: <20170811133312.GA25615@lunn.ch>

On 11.8.2017 15:33, Andrew Lunn wrote:
> On Fri, Aug 11, 2017 at 02:48:53PM +0200, Michal Simek wrote:
>> Using tabs instead of space for indentaion
>>
>> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
>> Reviewed-by: Andrew Lunn <andrew@lunn.ch>
> 
> Hi Michal
> 
> Thanks for rebasing. 
> 
> FYI:
> 
> It is normal to put net-next in the patch subject to indicate this:
> 
> [Patch v2 net-next] Using tabs instead of space for indentaion
> 
> Ah! I just noticed. 'indentation' has a second T.

ok. I have sent v3 with this fix and add net-next there.

Thanks,
Michal

^ permalink raw reply

* [PATCH net-next v3] net: phy: Use tab for indentation in Kconfig
From: Michal Simek @ 2017-08-14 13:43 UTC (permalink / raw)
  To: linux-kernel, monstr; +Cc: David Miller, netdev, Andrew Lunn, Florian Fainelli

Using tabs instead of space for indentation.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
---

Changes in v3:
- Fix commit message s/indentaion/indentation./
  reported-by Andrew Lunn
- Rebase on the top of net-next.
  HEAD commit: f5b589488ea5ed3bb6168b1a4e7f7b95841d8513

Changes in v2:
- Rebased on the top of net-next.
  HEAD commit: 3b2b69efeca734b78bc85fd02253b0465bb2bec7
  Suggested by David Miller

 drivers/net/phy/Kconfig | 42 +++++++++++++++++++++---------------------
 1 file changed, 21 insertions(+), 21 deletions(-)

diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
index 8c919203291a..5afe6fdcc968 100644
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -5,7 +5,7 @@
 menuconfig MDIO_DEVICE
 	tristate "MDIO bus device drivers"
 	help
-	   MDIO devices and driver infrastructure code.
+	  MDIO devices and driver infrastructure code.
 
 config MDIO_BUS
 	tristate
@@ -117,11 +117,11 @@ config MDIO_I2C
 	  This is library mode.
 
 config MDIO_MOXART
-        tristate "MOXA ART MDIO interface support"
-        depends on ARCH_MOXART
-        help
-          This driver supports the MDIO interface found in the network
-          interface units of the MOXA ART SoC
+	tristate "MOXA ART MDIO interface support"
+	depends on ARCH_MOXART
+	help
+	  This driver supports the MDIO interface found in the network
+	  interface units of the MOXA ART SoC
 
 config MDIO_OCTEON
 	tristate "Octeon and some ThunderX SOCs MDIO buses"
@@ -192,7 +192,7 @@ config LED_TRIGGER_PHY
 	  state change will trigger the events, for consumption by an
 	  LED class driver.  There are triggers for each link speed currently
 	  supported by the phy, and are of the form:
-	       <mii bus id>:<phy>:<speed>
+	      <mii bus id>:<phy>:<speed>
 
 	  Where speed is in the form:
 		<Speed in megabits>Mbps or <Speed in gigabits>Gbps
@@ -211,9 +211,9 @@ config AMD_PHY
 	  Currently supports the am79c874
 
 config AQUANTIA_PHY
-        tristate "Aquantia PHYs"
-        ---help---
-          Currently supports the Aquantia AQ1202, AQ2104, AQR105, AQR405
+	tristate "Aquantia PHYs"
+	---help---
+	  Currently supports the Aquantia AQ1202, AQ2104, AQR105, AQR405
 
 config AT803X_PHY
 	tristate "AT803X PHYs"
@@ -382,21 +382,21 @@ config STE10XP
 	  This is the driver for the STe100p and STe101p PHYs.
 
 config TERANETICS_PHY
-        tristate "Teranetics PHYs"
-        ---help---
-          Currently supports the Teranetics TN2020
+	tristate "Teranetics PHYs"
+	---help---
+	  Currently supports the Teranetics TN2020
 
 config VITESSE_PHY
-        tristate "Vitesse PHYs"
-        ---help---
-          Currently supports the vsc8244
+	tristate "Vitesse PHYs"
+	---help---
+	  Currently supports the vsc8244
 
 config XILINX_GMII2RGMII
-       tristate "Xilinx GMII2RGMII converter driver"
-       ---help---
-         This driver support xilinx GMII to RGMII IP core it provides
-         the Reduced Gigabit Media Independent Interface(RGMII) between
-         Ethernet physical media devices and the Gigabit Ethernet controller.
+	tristate "Xilinx GMII2RGMII converter driver"
+	---help---
+	  This driver support xilinx GMII to RGMII IP core it provides
+	  the Reduced Gigabit Media Independent Interface(RGMII) between
+	  Ethernet physical media devices and the Gigabit Ethernet controller.
 
 endif # PHYLIB
 
-- 
1.9.1

^ permalink raw reply related

* [patch v2 1/2] Allow Mellanox switch devices to be configured if only I2C bus is set
From: Ohad Oz @ 2017-08-14 15:38 UTC (permalink / raw)
  To: davem; +Cc: netdev, jiri, saeedm, vadimp, system-sw-low-level, Ohad Oz
In-Reply-To: <1502725102-182550-1-git-send-email-ohado@mellanox.com>

Mellanox switches (mlxsw) supports I2C systems without PCI, in order to
give the ability to the users to use such functionality, there is need
to update Kconfig.

Signed-off-by: Ohad Oz <ohado@mellanox.com>
Acked-by: Leon Romanovsky <leonro@mellanox.com>
---
v1->v2
Comments pointed out by Leon Romanovsky <leonro@mellanox.com>
- Rephrase change description.
---
 drivers/net/ethernet/mellanox/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/mellanox/Kconfig b/drivers/net/ethernet/mellanox/Kconfig
index 84a2007..0949741 100644
--- a/drivers/net/ethernet/mellanox/Kconfig
+++ b/drivers/net/ethernet/mellanox/Kconfig
@@ -5,7 +5,7 @@
 config NET_VENDOR_MELLANOX
 	bool "Mellanox devices"
 	default y
-	depends on PCI
+	depends on PCI || I2C
 	---help---
 	  If you have a network (Ethernet) card belonging to this class, say Y.
 
-- 
2.1.4

^ permalink raw reply related

* [patch v2 0/2] Enable Mellanox switch device in I2C mode
From: Ohad Oz @ 2017-08-14 15:38 UTC (permalink / raw)
  To: davem; +Cc: netdev, jiri, saeedm, vadimp, system-sw-low-level, Ohad Oz

The following patch set updates global to Mellanox Kconfig files to support
configuration of Mellanox Switch (mlxsw) without PCI and with I2C only.

Ohad Oz (2):
  Allow Mellanox switch devices to be configured if only I2C bus is set
  Change Kconfig description

 drivers/net/ethernet/mellanox/Kconfig | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

-- 
2.1.4

^ permalink raw reply

* [patch v2 2/2] Change Kconfig description
From: Ohad Oz @ 2017-08-14 15:38 UTC (permalink / raw)
  To: davem; +Cc: netdev, jiri, saeedm, vadimp, system-sw-low-level, Ohad Oz
In-Reply-To: <1502725102-182550-1-git-send-email-ohado@mellanox.com>

This patch apply Mellanox network vendor which includes:
- Mellanox card devices: ConnectX-4, ConnectX-5 and Connect-IB cards.
- Mellanox switch device: SwitchX-2 Switch-IB, Spectrum.
Therefore rephrasing help.

Signed-off-by: Ohad Oz <ohado@mellanox.com>
Acked-by: Leon Romanovsky <leonro@mellanox.com>
---
v1->v2
Comments pointed out by Leon Romanovsky <leonro@mellanox.com>
- Include RDMA as part of mlnx network devices.
- Rephrase change description
---
 drivers/net/ethernet/mellanox/Kconfig | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/mellanox/Kconfig b/drivers/net/ethernet/mellanox/Kconfig
index 0949741..872548c 100644
--- a/drivers/net/ethernet/mellanox/Kconfig
+++ b/drivers/net/ethernet/mellanox/Kconfig
@@ -7,7 +7,8 @@ config NET_VENDOR_MELLANOX
 	default y
 	depends on PCI || I2C
 	---help---
-	  If you have a network (Ethernet) card belonging to this class, say Y.
+	  If you have a network (Ethernet or RDMA) device belonging to this
+	  class, say Y.
 
 	  Note that the answer to this question doesn't directly affect the
 	  kernel: saying N will just cause the configurator to skip all
-- 
2.1.4

^ permalink raw reply related

* Коммерческое предложение по рекламе в интернете
From: Дмитрий (Сервис рекламы) @ 2017-08-14 12:32 UTC (permalink / raw)


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 470 bytes --]

Content-Type: text/plain; charset=UTF-8;



Здравствуйте!

Я скомпоновал коммерческое предложение - ознакомьтесь пожалуйста.

Если у Вас будут какие-то вопросы - звоните - объясню все более детально.

Также чтобы начать работу - мне нужен текст объявления.

С уважением, Дмитрий.



[-- Attachment #2: Type: text/plain, Size: 129716 bytes --]

Content-Type: application/msword; name="rassilki.doc"

Content-Transfer-Encoding: base64



0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAACAAAAsgAAAAAAAAAA

EAAAtQAAAAEAAAD+////AAAAALAAAACxAAAA////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////s

pcEAecAZBAAA8BK/AAAAAAAAEAAAAAAACAAAvnwAAA4AYmpiar0RvREAAAAAAAAAAAAAAAAAAAAA

AAAZBBYANMgAAN97AADfewAAOhEAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAA

AAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAALcAAAAAABoPAAAAAAAAGg8AAJMc

AAAAAAAAkxwAAAAAAACTHAAAAAAAAJMcAAAAAAAAkxwAABQAAAAAAAAAAAAAAP////8AAAAApxwA

AAAAAACnHAAAAAAAAKccAAA4AAAA3xwAADQAAAATHQAARAIAAKccAAAAAAAAezEAABoCAABXHwAA

AAAAAFcfAAAAAAAAVx8AAAAAAABXHwAAAAAAAFcfAAAAAAAARiAAAAAAAABGIAAAAAAAAEYgAAAA

AAAAEjEAAAIAAAAUMQAAAAAAABQxAAAAAAAAFDEAAAAAAAAUMQAAAAAAABQxAAAAAAAAFDEAAAAA

AACVMwAAsgIAAEc2AAA+AAAAFDEAACEAAAAAAAAAAAAAAAAAAAAAAAAAkxwAAAAAAABGIAAAAAAA

AAAAAAAAAAAAAAAAAAAAAABGIAAAAAAAAEYgAAAAAAAARiAAAAAAAABGIAAAAAAAABQxAAAAAAAA

AAAAAAAAAACTHAAAAAAAAJMcAAAAAAAAVx8AAAAAAAAAAAAAAAAAAFcfAADvAAAANTEAABYAAAD6

IQAAAAAAAPohAAAAAAAA+iEAAAAAAABGIAAAcAAAAJMcAAAAAAAAVx8AAAAAAACTHAAAAAAAAFcf

AAAAAAAAEjEAAAAAAAAAAAAAAAAAAPohAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAARiAAAAAAAAASMQAAAAAAAAAAAAAAAAAA+iEAAAAAAAD6IQAA

OgAAADInAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcicAAAAAAABXHwAAAAAAAP////8AAAAA8KMP97AR

0wEAAAAAAAAAAP////8AAAAAtiAAAEAAAABeJwAACgAAAAAAAAAAAAAA/jAAABQAAABLMQAAMAAA

AHsxAAAAAAAAaCcAAAoAAACFNgAAAAAAAPYgAACUAAAAhTYAABQAAAByJwAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy

JwAAEAgAAIU2AAAAAAAAAAAAAAAAAACTHAAAAAAAAIIvAAB8AQAARiAAAAAAAABGIAAAAAAAAPoh

AAAAAAAARiAAAAAAAABGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARiAA

AAAAAABGIAAAAAAAAEYgAAAAAAAAFDEAAAAAAAAUMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAiiEAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEYgAAAA

AAAARiAAAAAAAABGIAAAAAAAAHsxAAAAAAAARiAAAAAAAABGIAAAAAAAAEYgAAAAAAAARiAAAAAA

AAAAAAAAAAAAAP////8AAAAA/////wAAAAD/////AAAAAAAAAAAAAAAA/////wAAAAD/////AAAA

AP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA

/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAIU2AAAAAAAARiAAAAAAAABG

IAAAAAAAAEYgAAAAAAAARiAAAAAAAABGIAAAAAAAAEYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGIAAAAAAAAEYgAAAAAAAARiAA

AAAAAAAaDwAAPwwAAFkbAAA6AQAABQASAQAAGQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwEEAQh

BCEEHgQSBCsEFQQgACAEEAQhBCEEKwQbBBoEGAQLAA0AGgQ+BDwEPAQ1BEAERwQ1BEEEOgQ+BDUE

IAA/BEAENQQ0BDsEPgQ2BDUEPQQ4BDUEOgANAB8EQAQ1BDQEOwQwBDMEMAQ1BDwEIAA+BEAEMwQw

BD0EOAQ3BD4EMgQwBEIETAQgADwEMARBBEEEPgQyBEMETgQgAEAEMARBBEEESwQ7BDoEQwQgABIE

MARIBDUEOQQgAEAENQQ6BDsEMAQ8BEsEIAA/BD4EIAAwBDQEQAQ1BEEEMAQ8BCAAPwQ+BDsETAQ3

BD4EMgQwBEIENQQ7BDUEOQQgAE0EOwQ1BDoEQgRABD4EPQQ9BD4EOQQgAD8EPgRHBEIESwQuACAA

DQAgBD4EQQRBBDgETwQgACgAQAQwBEEEQQRLBDsEOgQ4BCAAPwQ+BCAAPwRABDUENAQ/BEAEOARP

BEIEOARPBDwEKQAHAAcAIAQ+BEEEQQQ4BE8EBwAfBEAENQQ0BD8EQAQ4BE8EQgQ4BE8EBwA4ACwA

NwAgADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcAOQAgADkAMAAwACAAQARDBDEELgAHAAcAIAQ+

BEEEQQQ4BE8EBwAfBEAENQQ0BD8EQAQ4BE8EQgQ4BE8EIAArACAAMAQ0BEAENQRBBDAEIABBBD4E

QgRABEMENAQ9BDgEOgQ+BDIEBwAxADIALAA2ACAAPAQ7BD0ELgAgADAENARABDUEQQQ+BDIEBwAx

ADIAIAA5ADAAMAAgAEAEQwQxBC4ABwAHACAEPgRBBEEEOARPBAcAHwRABDUENAQ/BEAEOARPBEIE

OARPBCAAKwAgADAENARABDUEQQQwBCAAQQQ+BEIEQARDBDQEPQQ4BDoEPgQyBCAAKAAxAC8AMgAg

ADEEMAQ3BEsEKQAHADYALAAzACAAPAQ7BD0ELgAgADAENARABDUEQQQ+BDIEBwA3ACAAOQAwADAA

IABABEMEMQQuAAcABwAgBD4EQQRBBDgETwQHAB8EQAQ1BDQEPwRABDgETwRCBDgETwQgACsAIAAw

BDQEQAQ1BEEEMAQgAEEEPgRCBEAEQwQ0BD0EOAQ6BD4EMgQgACgAMQAvADMAIAAxBDAENwRLBCkA

BwA0ACwAMgAgADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcANgAgADkAMAAwACAAQARDBDEELgAH

AAcAIAQ+BEEEQQQ4BE8EBwAfBEAENQQ0BD8EQAQ4BE8EQgQ4BE8EBwAxACAAPAQ7BD0ELgAgADAE

NARABDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwAgBD4EQQRBBDgETwQgACgAQAQw

BEEEQQRLBDsEOgQ4BCAAPwQ+BCAARAQ4BDcEOARHBDUEQQQ6BDgEPAQgADsEOARGBDAEPAQpAAcA

BwAgBD4EQQRBBDgETwQHACcEMARBBEIEPQRLBDUEIAA7BDgERgQwBAcAMgA0ACAAPAQ7BD0ELgAg

ADAENARABDUEQQQ+BDIEBwAyADUAIAAwADAAMAAgAEAEQwQxBC4ABwAHACAEPgRBBEEEOARPBAcA

JwQwBEEEQgQ9BEsENQQgADsEOARGBDAEIAAoADEALwAyACAAMQQwBDcESwQpAAcAOQAgADwEOwQ9

BC4AIAAwBDQEQAQ1BEEEPgQyBAcAMQAyACAANQAwADAAIABABEMEMQQuAAcABwAgBD4EQQRBBDgE

TwQHACcEMARBBEIEPQRLBDUEIAA7BDgERgQwBCAAKAAxAC8AMwAgADEEMAQ3BEsEKQAHADgAIAA8

BDsEPQQuACAAMAQ0BEAENQRBBD4EMgQHADEAMAAgADkAMAAwACAAQARDBDEELgAHAAcAIAQ+BEEE

QQQ4BE8EBwAnBDAEQQRCBD0ESwQ1BCAAOwQ4BEYEMAQgACgAMQAvADQAIAAxBDAENwRLBCkABwA2

ACAAPAQ7BD0ELgAgADAENARABDUEQQQ+BDIEBwA4ACAAOQAwADAAIABABEMEMQQuAAcABwAgBD4E

QQRBBDgETwQHACcEMARBBEIEPQRLBDUEIAA7BDgERgQwBAcAMQAgADwEOwQ9BC4AIAAwBDQEQAQ1

BEEEPgQyBAcAMwAgADkAMAAwACAAQARDBDEELgAHAAcAIAQ+BEEEQQQ4BE8EIAAoACAEMARBBEEE

SwQ7BDoEOAQgAD8EPgQgAD8EQAQ1BDQEPwRABDgETwRCBDgETwQ8BCAAOAQgAEQEOAQ3BDgERwQ1

BEEEOgQ4BDwEIAA7BDgERgQwBDwEKQAHAAcAIAQ+BEEEQQQ4BE8EBwAfBEAENQQ0BD8EQAQ4BE8E

QgQ4BE8EIAArACAAJwQwBEEEQgQ9BEsENQQgADsEOARGBDAEBwAzADcALAAyACAAPAQ7BD0ELgAg

ADAENARABDUEQQQ+BDIEBwAzADcAIAAwADAAMAAgAEAEQwQxBC4AIAAHAAcAIAQ+BEEEQQQ4BE8E

BwAfBEAENQQ0BD8EQAQ4BE8EQgQ4BE8EIAArACAAJwQwBEEEQgQ9BEsENQQgADsEOARGBDAEIAAo

ADEALwAyACAAMQQwBDcESwQpAAcAMQA4ACwANgAgADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcA

MQA4ACAANQAwADAAIABABEMEMQQuAAcABwAgBD4EQQRBBDgETwQHAB8EQAQ1BDQEPwRABDgETwRC

BDgETwQgACsAIAAnBDAEQQRCBD0ESwQ1BCAAOwQ4BEYEMAQgACgAMQAvADQAIAAxBDAENwRLBCkA

BwA5ACwAMwAgADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcAOQAgADIANQAwACAAQARDBDEELgAH

AAcAIAQ+BEEEQQQ4BE8EBwAfBEAENQQ0BD8EQAQ4BE8EQgQ4BE8EIAArACAAJwQwBEEEQgQ9BEsE

NQQgADsEOARGBDAEIAAoADEALwA2ACAAMQQwBDcESwQpAAcANgAsADIAIAA8BDsEPQQuACAAMAQ0

BEAENQRBBD4EMgQHADcAIAA5ADAAMAAgAEAEQwQxBC4ABwAHACAEPgRBBEEEOARPBAcAHwRABDUE

NAQ/BEAEOARPBEIEOARPBCAAKwAgACcEMARBBEIEPQRLBDUEIAA7BDgERgQwBCAAKAAxAC8AOAAg

ADEEMAQ3BEsEKQAHADYALAAyACAAPAQ7BD0ELgAgADAENARABDUEQQQ+BDIEBwA3ACAAOQAwADAA

IABABEMEMQQuAAcABwAgBD4EQQRBBDgETwQHAB8EQAQ1BDQEPwRABDgETwRCBDgETwQgACsAIAAn

BDAEQQRCBD0ESwQ1BCAAOwQ4BEYEMAQHADQALAA2ACAAPAQ7BD0ELgAgADAENARABDUEQQQ+BDIE

BwA2ACAAOQAwADAAIABABEMEMQQuAAcABwAgBD4EQQRBBDgETwQHAB8EQAQ1BDQEPwRABDgETwRC

BDgETwQgACsAIAAnBDAEQQRCBD0ESwQ1BCAAOwQ4BEYEMAQHADEAIAA8BDsEPQQuACAAMAQ0BEAE

NQRBBD4EMgQHADMAIAA5ADAAMAAgAEAEQwQxBC4ABwAHACAEPgRBBEEEOARPBCAAKAAyBEsEMQQ+

BEAEOgQ4BCAAPwQ+BCAAOgQwBEIENQQzBD4EQAQ4BE8EPAQpAAcABwAgBD4EQQRBBDgETwQHABwE

QwQ2BEcEOAQ9BEsEBwAyACwANgAgADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcANQAgADIAMAAw

ACAAQARDBDEELgAgAAcABwAgBD4EQQRBBDgETwQHABYENQQ9BEkEOAQ9BEsEBwAyACwAOAAgADwE

OwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcANQAgADIAMAAwACAAQARDBDEELgAgAAcABwAgBD4EQQRB

BDgETwQHACAEQwQ6BD4EMgQ+BDQEOARCBDUEOwQ4BCAAPwRABDUENAQ/BEAEOARPBEIEOAQ5BAcA

OAA5ADAAIABCBEsEQQQuACAAMAQ0BEAENQRBBD4EMgQHADQAIAAyADAAMAAgAEAEQwQxBC4ABwAH

ACAEPgRBBEEEOARPBAcAGAQ9BDIENQRBBEIEPgRABEsEIAA4BCAAQwRHBDAEQQRCBD0EOAQ6BDgE

IABmAG8AcgBlAHgABwAxACwANgAgADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcANQAgADIAMAAw

ACAAQARDBDEELgAHAAcAIAQ+BEEEQQQ4BE8EBwAeBEIENAQ1BDsESwQgAD8EQAQ+BDQEMAQ2BAcA

MQA1ADAAIABCBEsEQQQuACAAMAQ0BEAENQRBBD4EMgQHADMAIAA5ADAAMAAgAEAEQwQxBC4ABwAH

ACAEPgRBBEEEOARPBAcAHgRCBDQENQQ7BEsEIABABDUEOgQ7BDAEPARLBAcAMQA0ADAAIABCBEsE

QQQuACAAMAQ0BEAENQRBBD4EMgQHADMAIAA5ADAAMAAgAEAEQwQxBC4ABwAHACAEPgRBBEEEOARP

BAcAHwQ+BEEENQRCBDgEQgQ1BDsEOAQgAEEENQQ8BDgEPQQwBEAEPgQyBCwAIAAyBDUEMQQ4BD0E

MARABD4EMgQsACAAQgRABDUEPQQ4BD0EMwQ+BDIEBwAzACwAMwAgADwEOwQ9BC4AIAAwBDQEQAQ1

BEEEPgQyBAcANQAgADkAMAAwACAAQARDBDEELgAHAAcAIAQ+BEEEQQQ4BE8EBwAhBDUEOgRABDUE

QgQwBEAEOAQHADYAMAAgAEIESwRBBC4AIAAwBDQEQAQ1BEEEPgQyBAcAMwAgADkAMAAwACAAQARD

BDEELgAHAAcAIAQ+BEEEQQQ4BE8EBwAhBD0EMAQxBDYENQQ9BEYESwQHADEANwAgAEIESwRBBC4A

IAAwBDQEQAQ1BEEEPgQyBAcAMwAgADkAMAAwACAAQARDBDEELgAHAAcAIAQ+BEEEQQQ4BE8EBwAR

BEMERQQzBDAEOwRCBDUEQARLBAcAMQAyADUAIABCBEsEQQQuACAAMAQ0BEAENQRBBD4EMgQHADMA

IAA5ADAAMAAgAEAEQwQxBC4ABwAHACAEPgRBBEEEOARPBAcASQB0ACAAQQQ/BDUERgQ4BDAEOwQ4

BEEEQgRLBAcAMgA2ADAAIABCBEsEQQQuACAAMAQ0BEAENQRBBD4EMgQHADMAOQAwADAAIABABEME

MQQuACAABwAHABwEPgRBBDoEMgQwBCAAKABABDAEQQRBBEsEOwQ6BDgEIAA/BD4EIAA/BEAENQQ0

BD8EQAQ4BE8EQgQ4BE8EPAQpAAcABwAcBD4EQQQ6BDIEMAQHAB8EQAQ1BDQEPwRABDgETwRCBDgE

TwQHADEALAA1ACAAPAQ7BD0ELgAgADAENARABDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQu

AAcABwAcBD4EQQQ6BDIEMAQHAB8EQAQ1BDQEPwRABDgETwRCBDgETwQgACsAIAAwBDQEQAQ1BEEE

MAQgAEEEPgRCBEAEQwQ0BD0EOAQ6BD4EMgQHADIALAAzACAAPAQ7BD0ELgAgADAENARABDUEQQQ+

BDIEBwA0ACAANQAwADAAIABABEMEMQQuAAcABwAcBD4EQQQ6BDIEMAQgACgAQAQwBEEEQQRLBDsE

OgQ4BCAAPwQ+BCAARAQ4BDcEOARHBDUEQQQ6BDgEPAQgADsEOARGBDAEPAQpAAcABwAcBD4EQQQ6

BDIEMAQHACcEMARBBEIEPQRLBDUEIAA7BDgERgQwBAcANgAsADQAIAA8BDsEPQQuACAAMAQ0BEAE

NQRBBD4EMgQHADkAIAA5ADAAMAAgAEAEQwQxBC4ABwAHABwEPgRBBDoEMgQwBAcAJwQwBEEEQgQ9

BEsENQQgADsEOARGBDAEIAAoADEALwAyACAAMQQwBDcESwQpAAcAMwAsADIAIAA8BDsEPQQuACAA

MAQ0BEAENQRBBD4EMgQHADYAIAA1ADAAMAAgAEAEQwQxBC4ABwAHABwEPgRBBDoEMgQwBAcAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAQCAAAEggAACII

AAAkCAAAJggAAFgIAABaCAAAiggAAMgIAAAgCQAAIgkAACQJAABoCQAAagkAAHgJAACyCQAAyAkA

APDdyryxo5WMg4x9bVlKOi06ABkVaOMsKAAWaOMsKABCKgFeSgMAcGgAAAAAHxVo4ywoABZo4ywo

ADUIgUIqAVwIgV5KAwBwaAAAAAAcFWjjLCgAFmjjLCgAQ0oUAE9KAABRSgAAYUoUAAAnFWjjLCgA

FmjjLCgANQiBQioBQ0ocAFwIgV5KAwBhShwAcGgAAAAAHhZojig+ADUIgUIqD0NKIABeSgMAYUog

AHBoNl+RAAAKFmiOKD4AXkoDAAAQFWjvAacAFmiqO+8AXkoDAAAQFWjvAacAFmgtRTMAXkoDAAAb

FWjjLCgAFmjjLCgANQiBQ0ogAF5KAwBhSiAAGxVo7wGnABZokCPnADUIgUNKIABeSgMAYUogABUW

aOMsKAA1CIFDSiAAXkoDAGFKIAAbFWg3E4IAFmiQI+cANQiBQ0ogAF5KAwBhSiAAJBVorGyAABZo

kCPnADUIgUIqAkNKMABeSgMAYUowAHBoVI3UAAAkFWisbIAAFmiZG+AANQiBQioCQ0owAF5KAwBh

SjAAcGhUjdQAAB4WaGhorwA1CIFCKgJDSjAAXkoDAGFKMABwaFSN1AARAAgAACYIAABaCAAAJAkA

AGgJAABqCQAAeAkAAJAJAACyCQAAyAkAAPcAAAAAAAAAAAAAAAD3AAAAAAAAAAAAAAAA7wAAAAAA

AAAAAAAAAN4AAAAAAAAAAAAAAACGAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAA

AAB4AAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAA

EmTwAAEAFKQAABYkAUlmAQAAAGdk4ywoAFgAAGtkAAAAABYkARckAUlmAQAAAAKWbAAHlCwBCNYa

AAHx//UogEYEKQQBAAAEAQAABAEAAAQBAAAJ1gIBAQp0AACgBBLWCgAAAADc5vEAAAAU9gMEKRU2

ARf2AwAAGPYDAAAa1gQAAAD/G9YEAAAA/xzWBAAAAP8d1gQAAAD/NNYGAAEFAwAANNYGAAEKA2wA

QtYDAAEBYfYDXQBw1goAAAAA3ObxAAAAeXTjLCgAEQAAAyQBEmTwAAEAFKQAABYkAUlmAQAAAGEk

AWdk4ywoAAAHAAADJAFhJAFnZEguGgAABwAAAyQBYSQBZ2TjLCgAAAnICQAAygkAANgJAAAaCgAA

PgoAAFYKAABoAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAA

AAAAWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAA

AQAUpAAAFiQBSWYBAAAAZ2TjLCgAlwAAa2SJAAAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/

SQdJG6Uj9SiARlgH/////wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////

////BAEAAAQBAACARlAF//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrW

EP////////////////////8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3W

EAAAAP8AAAD/AAAA/wAAAP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/

AAAAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABcgJAADKCQAA2AkAAD4KAABW

CgAAWAoAAGYKAADgCgAA9goAAPgKAAAGCwAAgAsAAJYLAACYCwAApgsAANwLAADyCwAA9AsAAEAM

AABCDAAAUAwAAIoMAACiDAAApAwAALIMAAAADQAAGA0AABoNAAAoDQAAdg0AAI4NAACQDQAAng0A

AOwNAAACDgAABA4AABIOAABKDgAAYA4AAGIOAADMDgAAzg4AANwOAAA2DwAAUA8AAFIPAABgDwAA

0A8AAOgPAADqDwAA+A8AAGYQAAB8EAAAfhAAAIwQAAD6EAAAEBEAABIRAAAgEQAAjhEAAKQRAACm

EQAAtBEAAAwSAAAiEgAAJBIAADISAACGEgAAnBIAAJ4SAADcEgAA3hIAAOwSAAAeEwAANhMAADgT

AABGEwAA8eHU4fHh1OHx4dTh8eHU4fHA8eHU4fHh1OHx4dTh8eHU4fHh1OHxwPHh1OHx4dTh8eHU

4fHh1OHx4dTh8eHU4fHh1OHxwPHh1OHx4ScVaOMsKAAWaOMsKAA1CIFCKgFDShwAXAiBXkoDAGFK

HABwaAAAAAAZFWjjLCgAFmjjLCgAQioBXkoDAHBoAAAAAB8VaOMsKAAWaOMsKAA1CIFCKgFcCIFe

SgMAcGgAAAAAHBVo4ywoABZo4ywoAENKFABPSgAAUUoAAGFKFABMVgoAAFgKAABmCgAAvgoAAOAK

AAD2CgAAaAAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAA

AFoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEA

FKQAABYkAUlmAQAAAGdk4ywoAJcAAGtkcgEAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kH

SRulI/UogEZYB/////8EAQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj/////////

/wQBAAAEAQAAgEZQBf//////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/

////////////////////G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAA

AAD/AAAA/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAA

AAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgAAAX2CgAA+AoAAAYLAABeCwAAgAsA

AJYLAABoAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAA

WgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAU

pAAAFiQBSWYBAAAAZ2TjLCgAlwAAa2RbAgAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJ

G6Uj9SiARlgH/////wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////

BAEAAAQBAACARlAF//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP//

//////////////////8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAA

AP8AAAD/AAAA/wAAAP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAA

AAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABZYLAACYCwAApgsAAL4LAADcCwAA

8gsAAGgAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABa

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSk

AAAWJAFJZgEAAABnZOMsKACXAABrZEQDAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kb

pSP1KIBGWAf/////BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8E

AQAABAEAAIBGUAX//////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ////

/////////////////xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA

/wAAAP8AAAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAA

AP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAAF8gsAAPQLAABADAAAaAAAAAAAAAAA

AAAAAFcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAyQBEmTwAAEAFKQAABYk

AUlmAQAAAGEkAWdk4ywoAJcAAGtkLQQAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRul

I/UogEZYB/////8EAQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQB

AAAEAQAAgEZQBf//////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////

////////////////G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/

AAAA/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA

/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgAAAJADAAAQgwAAFAMAABqDAAAigwAAKIM

AACnAAAAAAAAAAAAAAAAmQAAAAAAAAAAAAAAAJkAAAAAAAAAAAAAAACZAAAAAAAAAAAAAAAAmQAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO

AAASZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgAWAAAa2QWBQAAFiQBFyQBSWYBAAAAApZsAAeULAEI

1hoAAfH/9SiARgQpBAEAAAQBAAAEAQAABAEAAAnWAgEBCnQAAKAEEtYKAAAAANzm8QAAABT2AwQp

FTYBF/YDAAAY9gMAABrWBAAAAP8b1gQAAAD/HNYEAAAA/x3WBAAAAP801gYAAQUDAAA01gYAAQoD

bABC1gMAAQFh9gNdAHDWCgAAAADc5vEAAAB5dOMsKAAABaIMAACkDAAAsgwAAOIMAAAADQAAGA0A

AGgAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAW

JAFJZgEAAABnZOMsKACXAABrZJ8FAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1

KIBGWAf/////BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAA

BAEAAIBGUAX//////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ////////

/////////////xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAA

AP8AAAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8A

AAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAAFGA0AABoNAAAoDQAAWA0AAHYNAACODQAA

aAAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYk

AUlmAQAAAGdk4ywoAJcAAGtkiAYAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/Uo

gEZYB/////8EAQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAE

AQAAgEZQBf//////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////

////////////G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA

/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAA

AP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgAAAWODQAAkA0AAJ4NAADODQAA7A0AAAIOAABo

AAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQB

SWYBAAAAZ2TjLCgAlwAAa2RxBwAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiA

RlgH/////wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQB

AACARlAF//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP//////////

//////////8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/

AAAA/wAAAP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA

/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABQIOAAAEDgAAEg4AACwOAABKDgAAYA4AAGgA

AAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAWJAFJ

ZgEAAABnZOMsKACXAABrZFoIAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBG

WAf/////BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAABAEA

AIBGUAX//////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ////////////

/////////xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8A

AAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/

AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAAFYA4AAGIOAADMDgAAaAAAAAAAAAAAAAAAAFcA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAyQBEmTwAAEAFKQAABYkAUlmAQAA

AGEkAWdk4ywoAJcAAGtkQwkAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZY

B/////8EAQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAA

gEZQBf//////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////

////////G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAA

AP8AAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8A

AAAAAP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgAAALMDgAAzg4AANwOAAASDwAANg8AAFAPAACnAAAA

AAAAAAAAAAAAmQAAAAAAAAAAAAAAAJkAAAAAAAAAAAAAAACZAAAAAAAAAAAAAAAAmQAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAA

AQAUpAAAFiQBSWYBAAAAZ2TjLCgAWAAAa2QsCgAAFiQBFyQBSWYBAAAAApZsAAeULAEI1hoAAfH/

9SiARgQpBAEAAAQBAAAEAQAABAEAAAnWAgEBCnQAAKAEEtYKAAAAANzm8QAAABT2AwQpFTYBF/YD

AAAY9gMAABrWBAAAAP8b1gQAAAD/HNYEAAAA/x3WBAAAAP801gYAAQUDAAA01gYAAQoDbABC1gMA

AQFh9gNdAHDWCgAAAADc5vEAAAB5dOMsKAAABVAPAABSDwAAYA8AAKwPAADQDwAA6A8AAGgAAAAA

AAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAWJAFJZgEA

AABnZOMsKACXAABrZLUKAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBGWAf/

////BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAABAEAAIBG

UAX//////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ////////////////

/////xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8AAAD/

AAAA/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/AAAA

AAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAAF6A8AAOoPAAD4DwAARBAAAGYQAAB8EAAAaAAAAAAA

AAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYkAUlmAQAA

AGdk4ywoAJcAAGtkngsAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB///

//8EAQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQ

Bf//////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////

////G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8A

AAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8AAAAA

AP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgAAAV8EAAAfhAAAIwQAADYEAAA+hAAABARAABoAAAAAAAA

AAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAA

Z2TjLCgAlwAAa2SHDAAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiARlgH////

/wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQBAACARlAF

//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP//////////////////

//8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/AAAA/wAA

AP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA

/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABRARAAASEQAAIBEAAGwRAACOEQAApBEAAGgAAAAAAAAA

AAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAWJAFJZgEAAABn

ZOMsKACXAABrZHANAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBGWAf/////

BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAABAEAAIBGUAX/

/////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ////////////////////

/xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA

/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/

AAAA/wAAAAAA/wAAAP8AAHl04ywoAAAFpBEAAKYRAAC0EQAA6hEAAAwSAAAiEgAAaAAAAAAAAAAA

AAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYkAUlmAQAAAGdk

4ywoAJcAAGtkWQ4AABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB/////8E

AQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQBf//

////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////////

G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8AAAD/

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

lwAAa2SdEQAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiARlgH/////wQBAAAE

AQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQBAACARlAF////////

//8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP////////////////////8b1hAA

AAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/AAAA/wAAAP801gYA

AQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8A

AAAAAP8AAAD/AAB5dOMsKAAABUYTAAB4EwAAkBMAAJITAACgEwAA9BMAAAoUAAAMFAAAGhQAADIU

AABEFAAAdBQAAIoUAACMFAAAmhQAANgUAADuFAAA8BQAAP4UAAA+FQAAVBUAAFYVAABkFQAA3BUA

APIVAAD0FQAAAhYAADYWAABMFgAAThYAAFwWAACQFgAAphYAAKgWAAC2FgAA7hYAAAQXAAAGFwAA

FBcAAFQXAABqFwAAbBcAALAXAACyFwAAwBcAAPoXAAAQGAAAEhgAACAYAACEGAAAmhgAAJwYAADo

GAAA6hgAAPgYAAA0GQAAShkAAEwZAABaGQAArBkAAMIZAADEGQAA0hkAAABsAABSbAAAaGwAAGps

AAB4bAAAsGwAAMZsAADy4tPi8uLT4vLG8uLT4vLi0+Ly4tPi8uLT4vLi0+Ly4tPi8uLT4vLi07LT

4vLi0+Ly4tOy0+Ly4tPi8uLT4rDy4tPi8uIAAAADVQgBJxVo4ywoABZo4ywoADUIgUIqAUNKHABc

CIFeSgMAYUocAHBoAAAAABkVaOMsKAAWaAISSQBCKgFeSgMAcGgAAAAAHBVo4ywoABZo4ywoAENK

FABPSgAAUUoAAGFKFAAAHxVo4ywoABZo4ywoADUIgUIqAVwIgV5KAwBwaAAAAAAZFWjjLCgAFmjj

LCgAQioBXkoDAHBoAAAAAABFkBMAAJITAACgEwAA0hMAAPQTAAAKFAAAaAAAAAAAAAAAAAAAAFoA

AAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYkAUlmAQAAAGdk4ywoAJcA

AGtkhhIAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB/////8EAQAABAEA

AAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQBf//////////

BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////////G9YQAAAA

/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8AAAD/NNYGAAEF

AwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAAA

AAD/AAAA/wAAeXTjLCgAAAUKFAAADBQAABoUAABSFAAAdBQAAIoUAABoAAAAAAAAAAAAAAAAWgAA

AAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgAlwAA

a2RvEwAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiARlgH/////wQBAAAEAQAA

BAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQBAACARlAF//////////8E

AQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP////////////////////8b1hAAAAD/

////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/AAAA/wAAAP801gYAAQUD

AAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAAAA

AP8AAAD/AAB5dOMsKAAABYoUAACMFAAAmhQAALYUAADYFAAA7hQAAGgAAAAAAAAAAAAAAABaAAAA

AAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAWJAFJZgEAAABnZOMsKACXAABr

ZFgUAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBGWAf/////BAEAAAQBAAAE

AQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAABAEAAIBGUAX//////////wQB

AAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ/////////////////////xvWEAAAAP//

//////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgABBQMA

ADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA

/wAAAP8AAHl04ywoAAAF7hQAAPAUAAD+FAAAHBUAAD4VAABUFQAAaAAAAAAAAAAAAAAAAFoAAAAA

AAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYkAUlmAQAAAGdk4ywoAJcAAGtk

QRUAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB/////8EAQAABAEAAAQB

AACARgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQBf//////////BAEA

AAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////////G9YQAAAA////

/////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8AAAD/NNYGAAEFAwAA

NNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/

AAAA/wAAeXTjLCgAAAVUFQAAVhUAAGQVAAC6FQAA3BUAAPIVAABoAAAAAAAAAAAAAAAAWgAAAAAA

AAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgAlwAAa2Qq

FgAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiARlgH/////wQBAAAEAQAABAEA

AIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQBAACARlAF//////////8EAQAA

BAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP////////////////////8b1hAAAAD/////

////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/AAAA/wAAAP801gYAAQUDAAA0

1gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8A

AAD/AAB5dOMsKAAABfIVAAD0FQAAAhYAABYWAAA2FgAATBYAAGgAAAAAAAAAAAAAAABaAAAAAAAA

AAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAWJAFJZgEAAABnZOMsKACXAABrZBMX

AAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBGWAf/////BAEAAAQBAAAEAQAA

gEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAABAEAAIBGUAX//////////wQBAAAE

AQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ/////////////////////xvWEAAAAP//////

//////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgABBQMAADTW

BgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAA

AP8AAHl04ywoAAAFTBYAAE4WAABcFgAAcBYAAJAWAACmFgAAaAAAAAAAAAAAAAAAAFoAAAAAAAAA

AAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYkAUlmAQAAAGdk4ywoAJcAAGtk/BcA

ABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB/////8EAQAABAEAAAQBAACA

RgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQBf//////////BAEAAAQB

AAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////////G9YQAAAA////////

/////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8AAAD/NNYGAAEFAwAANNYG

AAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA

/wAAeXTjLCgAAAWmFgAAqBYAALYWAADMFgAA7hYAAAQXAABoAAAAAAAAAAAAAAAAWgAAAAAAAAAA

AAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgAlwAAa2TlGAAA

FiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiARlgH/////wQBAAAEAQAABAEAAIBG

ABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQBAACARlAF//////////8EAQAABAEA

AAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP////////////////////8b1hAAAAD/////////

////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/AAAA/wAAAP801gYAAQUDAAA01gYA

AQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/

AAB5dOMsKAAABQQXAAAGFwAAFBcAADIXAABUFwAAahcAAGgAAAAAAAAAAAAAAABaAAAAAAAAAAAA

AAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAWJAFJZgEAAABnZOMsKACXAABrZM4ZAAAW

JAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBGWAf/////BAEAAAQBAAAEAQAAgEYA

FP//////////BAEAAAQBAACARlwI//////////8EAQAABAEAAIBGUAX//////////wQBAAAEAQAA

CnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ/////////////////////xvWEAAAAP//////////

//////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgABBQMAADTWBgAB

CgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8A

AHl04ywoAAAFahcAAGwXAACwFwAAaAAAAAAAAAAAAAAAAFcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAEQAAAyQBEmTwAAEAFKQAABYkAUlmAQAAAGEkAWdk4ywoAJcAAGtktxoAABYk

ARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB/////8EAQAABAEAAAQBAACARgAU

//////////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQBf//////////BAEAAAQBAAAK

dAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////////G9YQAAAA////////////

/////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEK

A2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAA

eXTjLCgAAAKwFwAAshcAAMAXAADYFwAA+hcAABAYAACnAAAAAAAAAAAAAAAAmQAAAAAAAAAAAAAA

AJkAAAAAAAAAAAAAAACZAAAAAAAAAAAAAAAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgA

WAAAa2SgGwAAFiQBFyQBSWYBAAAAApZsAAeULAEI1hoAAfH/9SiARgQpBAEAAAQBAAAEAQAABAEA

AAnWAgEBCnQAAKAEEtYKAAAAANzm8QAAABT2AwQpFTYBF/YDAAAY9gMAABrWBAAAAP8b1gQAAAD/

HNYEAAAA/x3WBAAAAP801gYAAQUDAAA01gYAAQoDbABC1gMAAQFh9gNdAHDWCgAAAADc5vEAAAB5

dOMsKAAABRAYAAASGAAAIBgAAGIYAACEGAAAmhgAAGgAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAA

WgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAWJAFJZgEAAABnZOMsKACXAABrZCkcAAAWJAEX

JAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBGWAf/////BAEAAAQBAAAEAQAAgEYAFP//

////////BAEAAAQBAACARlwI//////////8EAQAABAEAAIBGUAX//////////wQBAAAEAQAACnQA

AKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ/////////////////////xvWEAAAAP//////////////

//8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgABBQMAADTWBgABCgNs

AELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl0

4ywoAAAFmhgAAJwYAADoGAAAaAAAAAAAAAAAAAAAAFcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAEQAAAyQBEmTwAAEAFKQAABYkAUlmAQAAAGEkAWdk4ywoAJcAAGtkEh0AABYkARck

AUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB/////8EAQAABAEAAAQBAACARgAU////

//////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQBf//////////BAEAAAQBAAAKdAAA

oAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////////G9YQAAAA////////////////

/xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEKA2wA

QtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXTj

LCgAAALoGAAA6hgAAPgYAAASGQAANBkAAEoZAACnAAAAAAAAAAAAAAAAmQAAAAAAAAAAAAAAAJkA

AAAAAAAAAAAAAACZAAAAAAAAAAAAAAAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgAWAAA

a2T7HQAAFiQBFyQBSWYBAAAAApZsAAeULAEI1hoAAfH/9SiARgQpBAEAAAQBAAAEAQAABAEAAAnW

AgEBCnQAAKAEEtYKAAAAANzm8QAAABT2AwQpFTYBF/YDAAAY9gMAABrWBAAAAP8b1gQAAAD/HNYE

AAAA/x3WBAAAAP801gYAAQUDAAA01gYAAQoDbABC1gMAAQFh9gNdAHDWCgAAAADc5vEAAAB5dOMs

KAAABUoZAABMGQAAWhkAAIoZAACsGQAAwhkAAGgAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAA

AAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAWJAFJZgEAAABnZOMsKACXAABrZIQeAAAWJAEXJAFJ

ZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBGWAf/////BAEAAAQBAAAEAQAAgEYAFP//////

////BAEAAAQBAACARlwI//////////8EAQAABAEAAIBGUAX//////////wQBAAAEAQAACnQAAKAE

FPYDBCkVNgEX9gMAABj2AwAAGtYQ/////////////////////xvWEAAAAP////////////////8c

1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELW

AwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywo

AAAFwhkAAMQZAADSGQAAMGwAAFJsAABobAAAaAAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAA

AAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYkAUlmAQAAAGdk4ywoAJcAAGtkbR8AABYkARckAUlm

AQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB/////8EAQAABAEAAAQBAACARgAU////////

//8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQBf//////////BAEAAAQBAAAKdAAAoAQU

9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////////G9YQAAAA/////////////////xzW

EAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYD

AAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgA

AAUnBDAEQQRCBD0ESwQ1BCAAOwQ4BEYEMAQgACgAMQAvADMAIAAxBDAENwRLBCkABwAyACwAMQAg

ADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcANQAgADUAMAAwACAAQARDBDEELgAHAAcAHAQ+BEEE

OgQyBDAEBwAnBDAEQQRCBD0ESwQ1BCAAOwQ4BEYEMAQHADEAIAA8BDsEPQQuACAAMAQ0BEAENQRB

BD4EMgQHADMAIAA5ADAAMAAgAEAEQwQxBC4ABwAHABwEPgRBBDoEMgQwBCAAKABABDAEQQRBBEsE

OwQ6BDgEIAA/BD4EIAA/BEAENQQ0BD8EQAQ4BE8EQgQ4BE8EPAQgADgEIABEBDgENwQ4BEcENQRB

BDoEOAQ8BCAAOwQ4BEYEMAQ8BCkABwAHABwEPgRBBDoEMgQwBAcAHwRABDUENAQ/BEAEOARPBEIE

OARPBCAAKwAgACcEMARBBEIEPQRLBDUEIAA7BDgERgQwBAcAOAAsADQAIAA8BDsEPQQuACAAMAQ0

BEAENQRBBD4EMgQHADEAMgAgADAAMAAwACAAQARDBDEELgAgAAcABwAcBD4EQQQ6BDIEMAQHAB8E

QAQ1BDQEPwRABDgETwRCBDgETwQgACsAIAAnBDAEQQRCBD0ESwQ1BCAAOwQ4BEYEMAQgACgAMQAv

ADIAIAAxBDAENwRLBCkABwA0ACAAPAQ7BD0ELgAgADAENARABDUEQQQ+BDIEBwA3ACAANQAwADAA

IABABEMEMQQuAAcABwAcBD4EQQQ6BDIEMAQHAB8EQAQ1BDQEPwRABDgETwRCBDgETwQgACsAIAAn

BDAEQQRCBD0ESwQ1BCAAOwQ4BEYEMAQgACgAMQAvADMAIAAxBDAENwRLBCkABwAyACwANwAgADwE

OwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcANgAgADAAMAAwACAAQARDBDEELgAHAAcAHAQ+BEEEOgQy

BDAEBwAfBEAENQQ0BD8EQAQ4BE8EQgQ4BE8EIAArACAAJwQwBEEEQgQ9BEsENQQgADsEOARGBDAE

IAAoADEALwA0ACAAMQQwBDcESwQpAAcAMgAgADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcANQAg

ADUAMAAwACAAQARDBDEELgAHAAcAHAQ+BEEEOgQyBDAEBwAfBEAENQQ0BD8EQAQ4BE8EQgQ4BE8E

IAArACAAJwQwBEEEQgQ9BEsENQQgADsEOARGBDAEBwAxACAAPAQ7BD0ELgAgADAENARABDUEQQQ+

BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwAcBD4EQQQ6BDIEMAQgACgAQAQwBEEEQQRLBDsE

OgQ4BCAAPwQ+BCAAPwRABDUENAQ/BEAEOARPBEIEOARPBDwEKQAHAAcAHAQ+BEEEOgQyBDAEBwAc

BEMENgRHBDgEPQRLBAcAMQAsADQAIAA8BDsEPQQuACAAMAQ0BEAENQRBBD4EMgQHADMAIAA5ADAA

MAAgAEAEQwQxBC4AIAAHAAcAHAQ+BEEEOgQyBDAEBwAWBDUEPQRJBDgEPQRLBAcAMQAsADQAIAA8

BDsEPQQuACAAMAQ0BEAENQRBBD4EMgQHADMAIAA5ADAAMAAgAEAEQwQxBC4AIAAHAAcAHAQ+BEEE

OgQyBDAEBwAgBEMEOgQ+BDIEPgQ0BDgEQgQ1BDsEOAQgAD8EQAQ1BDQEPwRABDgETwRCBDgEOQQH

ADMANQAwACAAQgRLBEEELgAgADAENARABDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcA

BwAcBD4EQQQ6BDIEMAQHABgEPQQyBDUEQQRCBD4EQARLBAcAMQA1ACAAQgRLBEEELgAgADAENARA

BDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwAcBD4EQQQ6BDIEMAQHAB4EQgQ0BDUE

OwRLBCAAPwRABD4ENAQwBDYEBwAzADgAIABCBEsEQQQuACAAMAQ0BEAENQRBBD4EMgQHADMAIAA5

ADAAMAAgAEAEQwQxBC4ABwAHABwEPgRBBDoEMgQwBAcAHgRCBDQENQQ7BEsEIABABDUEOgQ7BDAE

PARLBAcAMwA0ACAAQgRLBEEELgAgADAENARABDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQu

AAcABwAcBD4EQQQ6BDIEMAQHACEENQQ6BEAENQRCBDAEQAQ4BAcAMQA1ACAAQgRLBEEELgAgADAE

NARABDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwAcBD4EQQQ6BDIEMAQHACEEPQQw

BDEENgQ1BD0ERgRLBAcANAAgAEIESwRBBC4AIAAwBDQEQAQ1BEEEPgQyBAcAMwAgADkAMAAwACAA

QARDBDEELgAHAAcAHAQ+BEEEOgQyBDAEBwARBEMERQQzBDAEOwRCBDUEQARLBAcAMwA0ACAAQgRL

BEEELgAgADAENARABDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwAcBD4EQQQ6BDIE

MAQHAEkAdAAgAEEEPwQ1BEYEOAQwBDsEOARBBEIESwQHADMANgAgAEIESwRBBC4AIAAwBDQEQAQ1

BEEEPgQyBAcAMwAgADkAMAAwACAAQARDBDEELgAHAAcAHAQ+BEEEOgQyBDAEIAAoAEAEMARBBEEE

SwQ7BDoEOAQgAD8EPgQgAD8EQAQ1BDQEPwRABDgETwRCBDgETwQ8BCAAOAQgAEQEOAQ3BC4AIAA7

BDgERgQwBDwEKQAHAAcAIQQwBD0EOgRCBC0AHwQ1BEIENQRABDEEQwRABDMEBwAfBEAENQQ0BD8E

QAQ4BE8EQgQ4BE8EIAArACAAMAQ0BEAENQRBBDAEIABBBD4EQgRABEMENAQ9BDgEOgQ+BDIEBwAx

ACwAMwAgADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcAMwAgADkAMAAwACAAQARDBDEELgAHAAcA

IQQwBD0EOgRCBC0AHwQ1BEIENQRABDEEQwRABDMEBwAfBEAENQQ0BD8EQAQ4BE8EQgQ4BE8EIAAr

ACAARAQ4BDcELgAgADsEOARGBDAEBwAzACwANQAgADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcA

NgAgADkAMAAwACAAQARDBDEELgAHAAcAIQQwBD0EOgRCBC0AHwQ1BEIENQRABDEEQwRABDMEBwAf

BEAENQQ0BD8EQAQ4BE8EQgQ4BE8EIAArACAARAQ4BDcELgAgADsEOARGBDAEBwAxACAAPAQ7BD0E

LgAgADAENARABDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwAhBDAEPQQ6BEIELQAf

BDUEQgQ1BEAEMQRDBEAEMwQHACQEOAQ3BC4AIAA7BDgERgQwBAcAMQAsADcAIAA8BDsEPQQuACAA

MAQ0BEAENQRBBD4EMgQHADQAIAA1ADAAMAAgAEAEQwQxBC4ABwAHABwEPgRBBDoEMgQwBCAAKAAy

BEsEMQQ+BEAEOgQ4BCAAPwQ+BCAAOgQwBEIENQQzBD4EQAQ4BE8EPAQpAAcABwAhBDAEPQQ6BEIE

LQAfBDUEQgQ1BEAEMQRDBEAEMwQHABwEQwQ2BEcEOAQ9BEsEBwA0ADcAMAAgAEIESwRBBC4AIAAw

BDQEQAQ1BEEEPgQyBAcAMwAgADkAMAAwACAAQARDBDEELgAgAAcABwAhBDAEPQQ6BEIELQAfBDUE

QgQ1BEAEMQRDBEAEMwQHABYENQQ9BEkEOAQ9BEsEBwAyADkANQAgAEIESwRBBC4AIAAwBDQEQAQ1

BEEEPgQyBAcAMwAgADkAMAAwACAAQARDBDEELgAgAAcABwAhBDAEPQQ6BEIELQAfBDUEQgQ1BEAE

MQRDBEAEMwQHAB4EQgQ0BDUEOwRLBCAAPwRABD4ENAQwBDYEBwAxADYAIABCBEsEQQQuACAAMAQ0

BEAENQRBBD4EMgQHADMAIAA5ADAAMAAgAEAEQwQxBC4ABwAHACEEMAQ9BDoEQgQtAB8ENQRCBDUE

QAQxBEMEQAQzBAcAHgRCBDQENQQ7BEsEIABABDUEOgQ7BDAEPARLBAcAMQAxACAAQgRLBEEELgAg

ADAENARABDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwAhBDAEPQQ6BEIELQAfBDUE

QgQ1BEAEMQRDBEAEMwQHACEENQQ6BEAENQRCBDAEQAQ4BAcAMgAyACAAQgRLBEEELgAgADAENARA

BDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwAhBDAEPQQ6BEIELQAfBDUEQgQ1BEAE

MQRDBEAEMwQHABEEQwRFBDMEMAQ7BEIENQRABEsEBwAzADkAIABCBEsEQQQuACAAMAQ0BEAENQRB

BD4EMgQHADMAIAA5ADAAMAAgAEAEQwQxBC4ABwAHACEEMAQ9BDoEQgQtAB8ENQRCBDUEQAQxBEME

QAQzBAcASQB0ACAAQQQ/BDUERgQ4BDAEOwQ4BEEEQgRLBAcAMwA0ACAAQgRLBEEELgAgADAENARA

BDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwAhBDAEPQQ6BEIELQAfBDUEQgQ1BEAE

MQRDBEAEMwQHABgEPQQyBDUEQQRCBD4EQARLBAcAMQAxACAAQgRLBEEELgAgADAENARABDUEQQQ+

BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwALAB0EEAQoBBgEIAAfBCAEFQQYBBwEIwQpBBUE

IgQSBBAEOgALAC0AIAARBDUEQQQ/BDsEMARCBD0EPgQ1BCAAOAQ3BDMEPgRCBD4EMgQ7BDUEPQQ4

BDUEIAA8BDAEOgQ1BEIEMAQ7AAsALQAgABEENQRBBD8EOwQwBEIEPQRLBDkEIAAyBEsENQQ3BDQE

IAA6BEMEQARMBDUEQAQwBDsACwAtACAAHwRABDgEIAA3BDAEOgQwBDcENQQgADIALQBFBCAAQAQw

BEEEQQRLBDsEPgQ6BCwAIAAzAC0ATgQgABIESwQgAD8EPgQ7BEMERwQwBDUEQgQ1BCAAMQQ1BEEE

PwQ7BDAEQgQ9BD4EOwALAC0AIAAbBE4EMQRLBDUEIABEBD4EQAQ8BEsEIAA+BD8EOwQwBEIESwQ7

AAsALQAgABIESwRBBD4EOgQwBE8EIABNBEQERAQ1BDoEQgQ4BDIEPQQ+BEEEQgRMBCAAPQQwBEgE

NQQ5BCAAQAQ1BDoEOwQwBDwESwQ7AAsALQAgABIEPgQ3BDwEPgQ2BD0EPgRBBEIETAQgADIEOAQ3

BEMEMAQ7BEwEPQQ+BDMEPgQgAD0EMAQxBDsETgQ0BDUEPQQ4BE8EIAA3BDAEIABFBD4ENAQ+BDwE

IABABDAEQQRBBEsEOwQ6BDgELgANAA0AGgQeBB0EIgQQBBoEIgQdBCsEFQQgABQEEAQdBB0EKwQV

BDoACwAiBDUEOwQ1BEQEPgQ9BDoAIAAoADQAOQA1ACkANQAwADIAIAA2ADEAIAA4ADUACwBoAHQA

dABwADoALwAvAEIAZQBzAHQAUgBhAHMAcwBpAGwAawBhAC4AcgB1AA0AAwANAA0ABAANAA0AAwAN

AA0ABAANAA0ADQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABobAAAamwA

AHhsAACSbAAAsGwAAMZsAABoAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABa

AAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAOAAASZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgAlwAAa2RWIAAAFiQBFyQBSWYBAAAAApZsAAeU

LAEI1lwABPH/SQdJG6Uj9SiARlgH/////wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAA

gEZcCP//////////BAEAAAQBAACARlAF//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YD

AAAY9gMAABrWEP////////////////////8b1hAAAAD/////////////////HNYQAAAA/wAAAP8A

AAD/AAAA/x3WEAAAAP8AAAD/AAAA/wAAAP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDW

KAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABcZsAADIbAAA

Mm0AAGgAAAAAAAAAAAAAAABXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAMk

ARJk8AABABSkAAAWJAFJZgEAAABhJAFnZOMsKACXAABrZD8hAAAWJAEXJAFJZgEAAAAClmwAB5Qs

AQjWXAAE8f9JB0kbpSP1KIBGWAf/////BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACA

RlwI//////////8EAQAABAEAAIBGUAX//////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMA

ABj2AwAAGtYQ/////////////////////xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAA

AP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYo

AAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAACxmwAAMhsAAAy

bQAANG0AAEJtAACabQAAtG0AALZtAADEbQAALm4AAERuAABGbgAAVG4AAMJuAADYbgAA2m4AAOhu

AABSbwAAaG8AAGpvAAB4bwAArm8AALBvAADMbwAA4m8AAORvAAAocAAAKnAAADhwAABqcAAAgnAA

AIRwAACScAAAxHAAANxwAADecAAA7HAAAEBxAABWcQAAWHEAAGZxAACacQAAsHEAALJxAADAcQAA

/HEAABJyAAAUcgAAInIAAGByAAB2cgAAeHIAAIZyAAC6cgAA0HIAANJyAADgcgAAEnMAAChzAAAq

cwAAOHMAAG5zAACEcwAAhnMAAJRzAADScwAA6HMAAOpzAABIdAAASnQAAGp0AADOdAAA5HQAAPHd

8c3AzfHNwM3xzcDN8c3AzfHNwLbAzfHd8c3AzfHNwM3xzcDN8c3AzfHNwM3xzcDN8c3AzfHNwM3x

zcDN8c3AzfHd8c3AzRMWaFFiYABCKgFeSgMAcGgAAAAAGRVo4ywoABZo4ywoAEIqAV5KAwBwaAAA

AAAfFWjjLCgAFmjjLCgANQiBQioBXAiBXkoDAHBoAAAAACcVaOMsKAAWaOMsKAA1CIFCKgFDShwA

XAiBXkoDAGFKHABwaAAAAAAcFWjjLCgAFmjjLCgAQ0oUAE9KAABRSgAAYUoUAEgybQAANG0AAEJt

AAB4bQAAmm0AALRtAACnAAAAAAAAAAAAAAAAmQAAAAAAAAAAAAAAAJkAAAAAAAAAAAAAAACZAAAA

AAAAAAAAAAAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgAWAAAa2QoIgAAFiQBFyQBSWYB

AAAAApZsAAeULAEI1hoAAfH/9SiARgQpBAEAAAQBAAAEAQAABAEAAAnWAgEBCnQAAKAEEtYKAAAA

ANzm8QAAABT2AwQpFTYBF/YDAAAY9gMAABrWBAAAAP8b1gQAAAD/HNYEAAAA/x3WBAAAAP801gYA

AQUDAAA01gYAAQoDbABC1gMAAQFh9gNdAHDWCgAAAADc5vEAAAB5dOMsKAAABbRtAAC2bQAAxG0A

ABBuAAAubgAARG4AAGgAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAA

AAAAAAAAAABaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4A

ABJk8AABABSkAAAWJAFJZgEAAABnZOMsKACXAABrZLEiAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjW

XAAE8f9JB0kbpSP1KIBGWAf/////BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI

//////////8EAQAABAEAAIBGUAX//////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2

AwAAGtYQ/////////////////////xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8A

AAD/HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA

/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAAFRG4AAEZuAABUbgAA

oG4AAMJuAADYbgAAaAAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAA

AAAAAAAAAFoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAA

EmTwAAEAFKQAABYkAUlmAQAAAGdk4ywoAJcAAGtkmiMAABYkARckAUlmAQAAAAKWbAAHlCwBCNZc

AATx/0kHSRulI/UogEZYB/////8EAQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj/

/////////wQBAAAEAQAAgEZQBf//////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYD

AAAa1hD/////////////////////G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAA

AP8d1hAAAAD/AAAA/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/

AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgAAAXYbgAA2m4AAOhuAAA0

bwAAUm8AAGhvAABoAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAA

AAAAAAAAWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAS

ZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgAlwAAa2SDJAAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwA

BPH/SQdJG6Uj9SiARlgH/////wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//

////////BAEAAAQBAACARlAF//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMA

ABrWEP////////////////////8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA

/x3WEAAAAP8AAAD/AAAA/wAAAP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8A

AAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABWhvAABqbwAAeG8AAK5v

AADMbwAA4m8AAGgAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAA

AAAAAABaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk

8AABABSkAAAWJAFJZgEAAABnZOMsKACXAABrZGwlAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE

8f9JB0kbpSP1KIBGWAf/////BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI////

//////8EAQAABAEAAIBGUAX//////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAA

GtYQ/////////////////////xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/

HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAA

AP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAAF4m8AAORvAAAocAAAaAAA

AAAAAAAAAAAAAFcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAyQBEmTwAAEA

FKQAABYkAUlmAQAAAGEkAWdk4ywoAJcAAGtkVSYAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx

/0kHSRulI/UogEZYB/////8EAQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj/////

/////wQBAAAEAQAAgEZQBf//////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa

1hD/////////////////////G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d

1hAAAAD/AAAA/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA

/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgAAAIocAAAKnAAADhwAABIcAAA

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

BAEAAAQBAACARlAF//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP//

//////////////////8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAA

AP8AAAD/AAAA/wAAAP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAA

AAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABbBxAACycQAAwHEAANxxAAD8cQAA

EnIAAGgAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABa

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSk

AAAWJAFJZgEAAABnZOMsKACXAABrZIIqAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kb

pSP1KIBGWAf/////BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8E

AQAABAEAAIBGUAX//////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ////

/////////////////xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA

/wAAAP8AAAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAA

AP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAAFEnIAABRyAAAicgAAQHIAAGByAAB2

cgAAaAAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQA

ABYkAUlmAQAAAGdk4ywoAJcAAGtkaysAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRul

I/UogEZYB/////8EAQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQB

AAAEAQAAgEZQBf//////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////

////////////////G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/

AAAA/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA

/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgAAAV2cgAAeHIAAIZyAACacgAAunIAANBy

AABoAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAA

FiQBSWYBAAAAZ2TjLCgAlwAAa2RULAAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj

9SiARlgH/////wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEA

AAQBAACARlAF//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP//////

//////////////8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8A

AAD/AAAA/wAAAP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/

AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABdByAADScgAA4HIAAPRyAAAScwAAKHMA

AGgAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAW

JAFJZgEAAABnZOMsKACXAABrZD0tAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1

KIBGWAf/////BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAA

BAEAAIBGUAX//////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ////////

/////////////xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAA

AP8AAAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8A

AAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAAFKHMAACpzAAA4cwAATnMAAG5zAACEcwAA

aAAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYk

AUlmAQAAAGdk4ywoAJcAAGtkJi4AABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/Uo

gEZYB/////8EAQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAE

AQAAgEZQBf//////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////

////////////G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA

/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAA

AP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgAAAWEcwAAhnMAAJRzAACycwAA0nMAAOhzAABo

AAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQB

SWYBAAAAZ2TjLCgAlwAAa2QPLwAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiA

RlgH/////wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQB

AACARlAF//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP//////////

//////////8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/

AAAA/wAAAP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA

/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABehzAADqcwAASHQAAGgAAAAAAAAAAAAAAABX

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAMkARJk8AABABSkAAAWJAFJZgEA

AABhJAFnZOMsKACXAABrZPgvAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBG

WAf/////BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAABAEA

AIBGUAX//////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ////////////

/////////xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8A

AAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/

AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAACSHQAAEp0AABqdAAArHQAAM50AADkdAAApwAA

AAAAAAAAAAAAAJkAAAAAAAAAAAAAAACZAAAAAAAAAAAAAAAAmQAAAAAAAAAAAAAAAJkAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTw

AAEAFKQAABYkAUlmAQAAAGdk4ywoAFgAAGtk4TAAABYkARckAUlmAQAAAAKWbAAHlCwBCNYaAAHx

//UogEYEKQQBAAAEAQAABAEAAAQBAAAJ1gIBAQp0AACgBBLWCgAAAADc5vEAAAAU9gMEKRU2ARf2

AwAAGPYDAAAa1gQAAAD/G9YEAAAA/xzWBAAAAP8d1gQAAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYD

AAEBYfYDXQBw1goAAAAA3ObxAAAAeXTjLCgAAAXkdAAA5nQAAAZ1AAA2dQAAWHUAAG51AABoAAAA

AAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYB

AAAAZ2TjLCgAlwAAa2RqMQAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiARlgH

/////wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQBAACA

RlAF//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP//////////////

//////8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/AAAA

/wAAAP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA/wAA

AAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABeR0AADmdAAABnUAAFh1AABudQAAcHUAAJB1AADe

dQAA9HUAAPZ1AAAWdgAATHYAAGJ2AABkdgAAonYAAKR2AADEdgAA9nYAAA53AAAQdwAAMHcAAGJ3

AAB6dwAAfHcAAJx3AADYdwAA7ncAAPB3AAAQeAAATngAAGR4AABmeAAAhngAALp4AADQeAAA0ngA

APJ4AAAoeQAAPnkAAEB5AABgeQAAnnkAALR5AAC2eQAA1nkAAAp6AAAgegAAInoAACR6AABGegAA

SHoAABp8AADx4dTh8eHU4fHh1OHxwPHh1OHx4dTh8eHU4fHh1OHx4dTh8eHU4fHh1OHx4dTh8bCd

kIMAAAAYFWjjLCgAFmjXA2kAQ0ocAF5KAwBhShwAABgVaO8BpwAWaNcDaQBDSiAAXkoDAGFKIAAA

JBVo7wGnABZo1wNpADUIgUIqD0NKIABeSgMAYUogAHBoNl+RAAAeFmjjLCgANQiBQioPQ0ogAF5K

AwBhSiAAcGg2X5EAACcVaOMsKAAWaOMsKAA1CIFCKgFDShwAXAiBXkoDAGFKHABwaAAAAAAZFWjj

LCgAFmjjLCgAQioBXkoDAHBoAAAAAB8VaOMsKAAWaOMsKAA1CIFCKgFcCIFeSgMAcGgAAAAAHBVo

4ywoABZo4ywoAENKFABPSgAAUUoAAGFKFAAzbnUAAHB1AACQdQAAwHUAAN51AAD0dQAAaAAAAAAA

AAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYkAUlmAQAA

AGdk4ywoAJcAAGtkUzIAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB///

//8EAQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQ

Bf//////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////

////G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8A

AAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8AAAAA

AP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgAAAX0dQAA9nUAABZ2AAAqdgAATHYAAGJ2AABoAAAAAAAA

AAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAA

Z2TjLCgAlwAAa2Q8MwAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiARlgH////

/wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQBAACARlAF

//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP//////////////////

//8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/AAAA/wAA

AP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA

/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABWJ2AABkdgAAonYAAGgAAAAAAAAAAAAAAABXAAAAAAAA

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

lwAAa2RSOAAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiARlgH/////wQBAAAE

AQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQBAACARlAF////////

//8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP////////////////////8b1hAA

AAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/AAAA/wAAAP801gYA

AQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8A

AAAAAP8AAAD/AAB5dOMsKAAABdB4AADSeAAA8ngAAAh5AAAoeQAAPnkAAGgAAAAAAAAAAAAAAABa

AAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAWJAFJZgEAAABnZOMsKACX

AABrZDs5AAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBGWAf/////BAEAAAQB

AAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAABAEAAIBGUAX/////////

/wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ/////////////////////xvWEAAA

AP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgAB

BQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAA

AAAA/wAAAP8AAHl04ywoAAAFPnkAAEB5AABgeQAAfnkAAJ55AAC0eQAAaAAAAAAAAAAAAAAAAFoA

AAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYkAUlmAQAAAGdk4ywoAJcA

AGtkJDoAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB/////8EAQAABAEA

AAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQBf//////////

BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////////G9YQAAAA

/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8AAAD/NNYGAAEF

AwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAAA

AAD/AAAA/wAAeXTjLCgAAAW0eQAAtnkAANZ5AADqeQAACnoAACB6AABoAAAAAAAAAAAAAAAAWgAA

AAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgAlwAA

a2QNOwAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiARlgH/////wQBAAAEAQAA

BAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQBAACARlAF//////////8E

AQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP////////////////////8b1hAAAAD/

////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/AAAA/wAAAP801gYAAQUD

AAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAAAA

AP8AAAD/AAB5dOMsKAAABSB6AAAiegAAHHwAAB58AACifAAApnwAAKh8AACsfAAArnwAALJ8AABo

AAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAVgAAAAAA

AAAAAAAAAFQAAAAAAAAAAAAAAABWAAAAAAAAAAAAAAAAVAAAAAAAAAAAAAAAAFYAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAABAAAACQAAEmTwAAEAFKQAAGdkkANKAAAHAAADJAFhJAFnZA52LgCXAABr

ZPY7AAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBGWAf/////BAEAAAQBAAAE

AQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAABAEAAIBGUAX//////////wQB

AAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ/////////////////////xvWEAAAAP//

//////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgABBQMA

ADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA

/wAAAP8AAHl04ywoAAAJGnwAABx8AAAefAAARHwAAGB8AAByfAAAdHwAAIJ8AACEfAAAinwAAIx8

AACifAAApHwAAKh8AACqfAAArnwAALB8AAC0fAAAtnwAALx8AAC+fAAA8+TWyb+1qJq1mqiSjpKO

ko6SjqgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAGFmiHfVsAAA8DagAAAAAWaId9WwBVCAEaFmgOdi4AQ0ocAF5KAwBhShwA

bUgJBHNICQQAGBVoDnYuABZoDnYuAENKHABeSgMAYUocAAASFmgOdi4AQ0ocAF5KAwBhShwAABIW

aGhorwBDShwAXkoDAGFKHAAAGBVo7wGnABZoHHvyAENKHABeSgMAYUocAAAbFWjvAacAFmgce/IA

NQiBQ0oYAF5KAwBhShgAHRZoDnYuADUIgUNKGABeSgMAYUoYAG1ICQRzSAkEGBVoDnYuABZo4ywo

AENKHABeSgMAYUocABSyfAAAtHwAALh8AAC6fAAAvHwAAL58AAD9AAAAAAAAAAAAAAAA8wAAAAAA

AAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAADJAFhJAFnZA52LgAACQAAEmTwAAEAFKQA

AGdkkANKAAABAAAABTIAMZBoATpwjig+AB+wgi4gsMZBIbDQAiKw0AIjkNACJJDQAiWwAAAXsMQC

GLDEAgyQxAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

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

CwABAf///////+D/L9YLAQQMAAAA/wQBAABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA

/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKADnABYkARckAUlmAQAAAAGWXQAhdgAEaAEjdgAB

WAcjdgECABQjdgIDXAgjdgMEUAU6VgsAApZsAAeULAEKdAAAoAQU9gMEKRU2ARj2AwAALNYDAAQB

NdYFAAEDWAc11gUBAgMAFDXWBQIDA1wINdYFAwQDUAUv1gsAAQ4AAAD/BAEAAC/WCwEEA///////

/+D/L9YLAAEB////////4P8v1gsBBAwAAAD/BAEAAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAA

AP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmBCEAEgABAAsBDwAHAAMAAAAD

AAAABAAIAAAAmAAAAJgAAACYAAAAmAAAAJ4AAACeAAAAngAAAJ4AAACeAAAANgYAADYGAAA2BgAA

NgYAADYGAAA2BgAANgYAADYGAAA2BgAAdgIAAHYCAAB2AgAAdgIAAHYCAAB2AgAAdgIAAHYCAAB2

AgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAAPgIAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYG

AAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYA

ADYGAAA2BgAANgYAADYGAAA2BgAANgYAAKgAAAA2BgAANgYAABYAAAA2BgAANgYAADYGAAA2BgAA

NgYAADYGAAA2BgAANgYAALgAAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2

BgAANgYAADYGAABoAQAASAEAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYG

AAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYA

ADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAA

NgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2

BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAAsAMAADYG

AAAyBgAAGAAAAMADAADQAwAA4AMAAPADAAAABAAAEAQAACAEAAAwBAAAQAQAAFAEAABgBAAAcAQA

AIAEAACQBAAAwAMAANADAADgAwAA8AMAAAAEAAAQBAAAMgYAACgCAADYAQAA6AEAACAEAAAwBAAA

QAQAAFAEAABgBAAAcAQAAIAEAACQBAAAwAMAANADAADgAwAA8AMAAAAEAAAQBAAAIAQAADAEAABA

BAAAUAQAAGAEAABwBAAAgAQAAJAEAADAAwAA0AMAAOADAADwAwAAAAQAABAEAAAgBAAAMAQAAEAE

AABQBAAAYAQAAHAEAACABAAAkAQAAMADAADQAwAA4AMAAPADAAAABAAAEAQAACAEAAAwBAAAQAQA

AFAEAABgBAAAcAQAAIAEAACQBAAAwAMAANADAADgAwAA8AMAAAAEAAAQBAAAIAQAADAEAABABAAA

UAQAAGAEAABwBAAAgAQAAJAEAADAAwAA0AMAAOADAADwAwAAAAQAABAEAAAgBAAAMAQAAEAEAABQ

BAAAYAQAAHAEAACABAAAkAQAADgBAABYAQAA+AEAAAgCAAAYAgAAVgIAAH4CAAAcAAAAT0oDAFFK

AwBfSAEEbUgZBG5IGQRzSBkEdEgZBAAAAABMAABg8f8CAEwADBAAAAwWAAAAAAcAHgQxBEsERwQ9

BEsEOQQAAAwAAAASZBQBAQAUpMgAGABDShYAX0gBBGFKFgBtSBkEc0gZBHRIGQQAAGgAAkABACIA

aAAMEA8AmRvgAJAACwAXBDAEMwQ+BDsEPgQyBD4EOgQgADIAAAAZAAIAEmTwAAEAE6RkABSkZABA

JgFbJAFcJAEAHgA1CAFDSiQAT0oAAFBKAABRSgAAXAgBXkoAAGFKJABkAANAAQACAGQADBAYAFpC

2wCQAAsAFwQwBDMEPgQ7BD4EMgQ+BDoEIAAzAAAAEwADAAUkAQYkAROkyAAUpAAAQCYCAB8ANQgB

QioHT0oEAFBKAABRSgQAXAgBXkoAAHBoT4G9AABqAARAAQACAGoADBAZAFpC2wCQAAsAFwQwBDME

PgQ7BD4EMgQ+BDoEIAA0AAAAEwAEAAUkAQYkAROkyAAUpAAAQCYDACUANQgBNggBQioHT0oEAFBK

AABRSgQAXAgBXQgBXkoAAHBoT4G9AAAAAAAAAAAAAAAAQgBBIPL/oQBCAAwNAAAAAAAAEAAVAB4E

QQQ9BD4EMgQ9BD4EOQQgAEgEQAQ4BEQEQgQgADAEMQQ3BDAERgQwBAAAAABYAGlA8/+zAFgADB0A

AAAAAAAwBg8AHgQxBEsERwQ9BDAETwQgAEIEMAQxBDsEOARGBDAEAAAcABf2AwAANNYGAAEKA2wA

NNYGAAEFAwAAYfYDAAACAAsAAAAuAGsg9P/BAC4AAA0AAAAAAAAwBgoAHQQ1BEIEIABBBD8EOARB

BDoEMAQAAAIADAAAAAAAVgD+b/L/8QBWAAwAAgCZG+AAkAAQABcEMAQzBD4EOwQ+BDIEPgQ6BCAA

MgAgABcEPQQwBDoEAAAeADUIgUNKJABPSgAAUEoAAFFKAABcCIFeSgAAYUokACwAV2Dy/wEBLAAM

EAAAmRvgAGABBwAhBEIEQAQ+BDMEOAQ5BAAABgA1CIFcCIFiAF5AAQASAWIADAgAAJkb4AAwBg0A

HgQxBEsERwQ9BEsEOQQgACgAMgQ1BDEEKQAAABYAEQASZPAAAQATpGQAFKRkAFskAVwkARgAQ0oY

AE9KAABQSgAAUUoAAF5KAABhShgATgD+TwEAIgFOAAwAAACZG+AAAAADAHIAMwBiAAAAFgASABJk

8AABABOkZAAUpGQAWyQBXCQBGABDShgAT0oAAFBKAABRSgAAXkoAAGFKGAA6AFVg8v8xAToADAgA

AJkb4AAwBgsAEwQ4BD8ENQRABEEEQQRLBDsEOgQwBAAADAA+KgFCKgJwaAAA/wBYAP5PAQBCAVgA

DAAAAJkb4AAAAAgAdABhAGIAbABlAHQAdQBzAAAAFgAUABJk8AABABOkZAAUpGQAWyQBXCQBGABD

ShgAT0oAAFBKAABRSgAAXkoAAGFKGABUAP5PAQBSAVQADAAAAJkb4AAAAAYAcgAxAHQAYQBiAGwA

AAAWABUAEmTwAAEAE6RkABSkZABbJAFcJAEYAENKGABPSgAAUEoAAFFKAABeSgAAYUoYAFQAmUAB

AGIBVAAMCRcAmRvgADAGDQAiBDUEOgRBBEIEIAAyBEsEPQQ+BEEEOgQ4BAAADAAWABJk8AABABSk

AAAUAENKEABPSgUAUUoFAF5KBQBhShAAUAD+b/L/cQFQAAwBFgCZG+AAMAYSACIENQQ6BEEEQgQg

ADIESwQ9BD4EQQQ6BDgEIAAXBD0EMAQ6BAAAFABDShAAT0oFAFFKBQBeSgUAYUoQAFgA/m/y/4EB

WAAMAQMAWkLbAJAAEAAXBDAEMwQ+BDsEPgQyBD4EOgQgADMAIAAXBD0EMAQ6BAAAHwA1CIFCKgdP

SgQAUEoAAFFKBABcCIFeSgAAcGhPgb0AAF4A/m/y/5EBXgAMAQQAWkLbAJAAEAAXBDAEMwQ+BDsE

PgQyBD4EOgQgADQAIAAXBD0EMAQ6BAAAJQA1CIE2CIFCKgdPSgQAUEoAAFFKBABcCIFdCIFeSgAA

cGhPgb0AAE4A/k8BAKIBTgAMAAAAWkLbAAAAAwB6AGEAZwAAABYAGgASZPAAAQATpGQAFKRkAFsk

AVwkARgAQ0oYAE9KAABQSgAAUUoAAF5KAABhShgAIgD+D6IAsQEiAAwAAACZamQAAAAFAHQAaQB0

AGwAZQAAAAAA3AHrQLMAwwHcAQwAAACQA0oA8AMcACEEQAQ1BDQEPQRPBE8EIAA3BDAEOwQ4BDIE

OgQwBCAAMQAgAC0AIAAQBDoERgQ1BD0EQgQgADUAAAAtATpWHAAT1jB4wNQACAEAAHjA1AAIAQAA

eMDUAAgBAAB4wNQACAEAAHjA1AAIAQAAAAAA/wAAAABq1iVAAIPWCP////////9/hNYI////////

/3+H1goAAAD/0urxAAAAatYYgACD1gj/////////f4TWCP////////9/atYPEACH1goAAAD/0urx

AAAAatZEAgB/1Ah4wNQABgMAAIDWCHjA1AAIAQAAgdYIeMDUAAgBAACC1gh4wNQACAEAAIPWCP//

//////9/hNYI/////////39q1lEBAH/UCHjA1AAIAQAAgNYIeMDUAAgBAACB1gh4wNQACAEAAILW

CHjA1AAIAQAAg9YI/////////3+E1gj/////////f4fWCgAAAP9LrMYAAACINAGJNAEAKAAcAGbG

EAIAEmTwAAEAE6QAABSkAABmxhABABJk8AABABOkAAAUpAAAMgCFyggIADUIAVwIAYXKCAQANQgB

XAgBhcoIAgA1CAFcCAGFyg4BADUIAVwIAXBo////AIoBrUCzANMBigEMAAAAkANKANADGQAhBDIE

NQRCBDsESwQ5BCAAQQQ/BDgEQQQ+BDoEIAAtACAAEAQ6BEYENQQ9BEIEIAAxAAAA4gA6Vh0AE9Yw

T4G9AAgBAABPgb0ACAEAAE+BvQAIAQAAT4G9AAgBAAAAAAD/AAAAAAAAAP8AAAAAatYuQAB/1AhP

gb0ACAEAAIDWCE+BvQAIAQAAgdYIT4G9AAgBAACC1ghPgb0ACAEAAGrWLhAAf9QIT4G9AAgBAACA

1ghPgb0ACAEAAIHWCE+BvQAIAQAAgtYIT4G9AAgBAABq1i4CAH/UCE+BvQAGAwAAgNYIT4G9AAgB

AACB1ghPgb0ACAEAAILWCE+BvQAIAQAAatYPAQCH1goAAAD/T4G9AAAAiDQBiTQBKAAdAGbGEAIA

EmTwAAEAE6QAABSkAABmxhABABJk8AABABOkAAAUpAAAMgCFyggIADUIAVwIAYXKCAQANQgBXAgB

hcoIAgA1CAFcCAGFyg4BADUIAVwIAXBo////AE4AK0ABAOIBTgAMDR8AkANKADAGFQAiBDUEOgRB

BEIEIAA6BD4EPQRGBDUEMgQ+BDkEIABBBD0EPgRBBDoEOAQAAAIAHgAIAENKFABhShQATAD+D6IA

8QFMAAwBHgCQA0oAMAYaACIENQQ6BEEEQgQgADoEPgQ9BEYENQQyBD4EOQQgAEEEPQQ+BEEEOgQ4

BCAAFwQ9BDAEOgQAAAAARAAqYPL/AQJEAAwNAACQA0oAMAYUABcEPQQwBDoEIAA6BD4EPQRGBDUE

MgQ+BDkEIABBBD0EPgRBBDoEOAQAAAMASCoBAFBLAwQUAAYACAAAACEA6d4Pv/8AAAAcAgAAEwAA

AFtDb250ZW50X1R5cGVzXS54bWyskctOwzAQRfdI/IPlLUqcskAIJemCx47HonzAyJkkFsnYsqdV

+/dM0lRCqCAWbCzZM/eeO+NyvR8HtcOYnKdKr/JCKyTrG0ddpd83T9mtVomBGhg8YaUPmPS6vrwo

N4eASYmaUqV75nBnTLI9jpByH5Ck0vo4Ass1diaA/YAOzXVR3BjriZE448lD1+UDtrAdWD3u5fmY

JOKQtLo/Nk6sSkMIg7PAktTsqPlGyRZCLsq5J/UupCuJoc1ZwlT5GbDoXmU10TWo3iDyC4wSw7AM

iV/PZyAZLea/O56J7NvWWWy83Y6yjnw2XsxOwf8UYPU/6BPTzH9bfwIAAP//AwBQSwMEFAAGAAgA

AAAhAKXWp+fAAAAANgEAAAsAAABfcmVscy8ucmVsc4SPz2rDMAyH74W9g9F9UdLDGCV2L6WQQy+j

fQDhKH9oIhvbG+vbT8cGCrsIhKTv96k9/q6L+eGU5yAWmqoGw+JDP8to4XY9v3+CyYWkpyUIW3hw

hqN727VfvFDRozzNMRulSLYwlRIPiNlPvFKuQmTRyRDSSkXbNGIkf6eRcV/XH5ieGeA2TNP1FlLX

N2Cuj6jJ/7PDMMyeT8F/ryzlRQRuN5RMaeRioagv41O9kKhlqtQe0LW4+db9AQAA//8DAFBLAwQU

AAYACAAAACEAa3mWFoMAAACKAAAAHAAAAHRoZW1lL3RoZW1lL3RoZW1lTWFuYWdlci54bWwMzE0K

wyAQQOF9oXeQ2TdjuyhFYrLLrrv2AEOcGkHHoNKf29fl44M3zt8U1ZtLDVksnAcNimXNLoi38Hws

pxuo2kgcxSxs4ccV5ul4GMm0jRPfSchzUX0j1ZCFrbXdINa1K9Uh7yzdXrkkaj2LR1fo0/cp4kXr

KyYKAjj9AQAA//8DAFBLAwQUAAYACAAAACEApV59LccGAADXGwAAFgAAAHRoZW1lL3RoZW1lL3Ro

ZW1lMS54bWzsWc9uG0UYvyPxDqO9t7ETJ42jOlXs2A20aaPYLepxvB7vTjO7s5oZJ/WtSo9IIERB

HKgEXDggIFKLuLTv4D5DoAiK1Ffgm5nd9U68oUkbQQXNId6d/X3//8w3uxcv3YkY2iVCUh43vOr5

iodI7PMBjYOGd6PXObfsIalwPMCMx6ThjYn0Lq2++85FvKJCEhEE9LFcwQ0vVCpZmZuTPixjeZ4n

JIZnQy4irOBWBHMDgfeAb8Tm5iuVpbkI09hDMY6A7eSbyU+Tx5MDdH04pD7xVjP+bQZCYiX1gs9E

V3MnGdHXT/cnB5Mnk0eTg6d34foJ/H5saAc7VU0hx7LFBNrFrOGB6AHf65E7ykMMSwUPGl7F/Hlz

qxfn8EpKxNQxtAW6jvlL6VKCwc68kSmCfi602qnVL6zn/A2AqVlcu91utas5PwPAvg+WW12KPGud

5Woz41kA2ctZ3q3KYqXm4gv8F2Z0rjebzcV6qotlakD2sjaDX64s1dbmHbwBWfziDL7WXGu1lhy8

AVn80gy+c6G+VHPxBhQyGu/MoHVAO52Uew4ZcrZRCl8G+HIlhU9RkA15tmkRQx6rk+ZehG9z0QEC

TciwojFS44QMsQ+J3sJRX1CsBeIVggtP7JIvZ5a0bCR9QRPV8N5PMBTNlN+Lx9+/ePwQHe4/Otz/

+fDevcP9Hy0jh2oDx0GR6vm3n/z54C764+FXz+9/Vo6XRfyvP3z4y5NPy4FQTlN1nn1+8Nujg2df

fPT7d/dL4GsC94vwHo2IRNfIHtrmERhmvOJqTvridBS9ENMixVocSBxjLaWEf1uFDvraGLM0Oo4e

TeJ68KaAdlIGvDy67SjcDcVI0RLJV8LIAW5yzppclHrhipZVcHNvFAflwsWoiNvGeLdMdgvHTnzb

owT6apaWjuGtkDhqbjEcKxyQmCikn/EdQkqsu0Wp49dN6gsu+VChWxQ1MS11SY/2nWyaEm3QCOIy

LrMZ4u34ZvMmanJWZvU62XWRUBWYlSjfI8xx42U8UjgqY9nDESs6/CpWYZmS3bHwi7i2VBDpgDCO

2gMiZRnNdQH2FoJ+BUMHKw37JhtHLlIoulPG8yrmvIhc5zutEEdJGbZL47CIfU/uQIpitMVVGXyT

uxWi7yEOOD423DcpccL98m5wgwaOStME0U9GoiSWlwl38rc7ZkNMTKuBJu/06ojGf9e4GYXObSWc

XeOGVvnsywcler+pLXsNdq+ymtk40qiPwx1tzy0uBvTN787reBRvESiI2S3qbXN+25y9/3xzPq6e

z74lT7swNGg9i9jB24zh0Ymn8CFlrKvGjFyVZhCXsBcNOrCo+ZhDKslPaUkIl7qyQaCDCwQ2NEhw

9QFVYTfECQzxVU8zCWTKOpAo4RIOk2a5lLfGw0FA2aPooj6k2E4isdrkA7u8oJezs0jOxmgVmANw

JmhBMzipsIULKVOw7VWEVbVSJ5ZWNaqZJulIy03WLjaHeHB5bhos5t6EIQfBaAReXoLXBFo0HH4w

IwPtdxujLCwmCmcZIhniAUljpO2ejVHVBCnLlRlDtB02GfTB8iVeK0ira7avIe0kQSqKqx0jLove

60Qpy+BplIDb0XJkcbE4WYz2Gl59cX7RQz5OGt4Qzs1wGSUQdannSswCeD/lK2HT/qXFbKp8Gs16

ZphbBFV4NWL9PmOw0wcSIdU6lqFNDfMoTQEWa0lW//lFcOtZGVDSjU6mxcIyJMO/pgX40Q0tGQ6J

r4rBLqxo39nbtJXykSKiGw72UJ+NxDaG8OtUBXsGVMLrD9MR9A28u9PeNo/c5pwWXfGNmcHZdcyS

EKftVpdoVskWbhpSroO5K6gHtpXqbow7vSmm5M/IlGIa/89M0fsJvI1YGOgI+PA2WWCkK6XhcaFC

Dl0oCanfETBImN4B2QLvf+ExJBW80za/guzqX1tzlocpazhUqm0aIEFhP1KhIGQL2pLJvpcwq6Z7

l2XJUkYmowrqysSq3Se7hPV0D1zSe7uHQkh1003SNmBwR/PPvU8rqB/oIadYb04ny/deWwP/9ORj

ixmMcvuwGWgy/+cq5uPBdFe19IY823uLhugH0zGrllUFCCtsBfW07F9RhVNutbZjzVg8v5gpB1Gc

tRgW84EogXdKSP+D/Y8Kn9mvI3pD7fFt6K0IPm5oZpA2kNXn7OCBdIO0i30YnOyiTSbNyro2HZ20

17LN+own3VzuEWdrzU4S71M6Ox/OXHFOLZ6ls1MPO762a8e6GiJ7tERhaZgdbExgzJe14pcv3r8N

gV6HbwgjpqRJJviOJTDM0F1TB1D8VqIhXf0LAAD//wMAUEsDBBQABgAIAAAAIQAN0ZCftgAAABsB

AAAnAAAAdGhlbWUvdGhlbWUvX3JlbHMvdGhlbWVNYW5hZ2VyLnhtbC5yZWxzhI9NCsIwFIT3gncI

b2/TuhCRJt2I0K3UA4TkNQ02PyRR7O0NriwILodhvplpu5edyRNjMt4xaKoaCDrplXGawW247I5A

UhZOidk7ZLBggo5vN+0VZ5FLKE0mJFIoLjGYcg4nSpOc0IpU+YCuOKOPVuQio6ZByLvQSPd1faDx

mwF8xSS9YhB71QAZllCa/7P9OBqJZy8fFl3+UUFz2YUFKKLGzOAjm6pMBMpburrE3wAAAP//AwBQ

SwECLQAUAAYACAAAACEA6d4Pv/8AAAAcAgAAEwAAAAAAAAAAAAAAAAAAAAAAW0NvbnRlbnRfVHlw

ZXNdLnhtbFBLAQItABQABgAIAAAAIQCl1qfnwAAAADYBAAALAAAAAAAAAAAAAAAAADABAABfcmVs

cy8ucmVsc1BLAQItABQABgAIAAAAIQBreZYWgwAAAIoAAAAcAAAAAAAAAAAAAAAAABkCAAB0aGVt

ZS90aGVtZS90aGVtZU1hbmFnZXIueG1sUEsBAi0AFAAGAAgAAAAhAKVefS3HBgAA1xsAABYAAAAA

AAAAAAAAAAAA1gIAAHRoZW1lL3RoZW1lL3RoZW1lMS54bWxQSwECLQAUAAYACAAAACEADdGQn7YA

AAAbAQAAJwAAAAAAAAAAAAAAAADRCQAAdGhlbWUvdGhlbWUvX3JlbHMvdGhlbWVNYW5hZ2VyLnht

bC5yZWxzUEsFBgAAAAAFAAUAXQEAAMwKAAAAADw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9

IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjxhOmNsck1hcCB4bWxuczphPSJodHRwOi8vc2No

ZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvZHJhd2luZ21sLzIwMDYvbWFpbiIgYmcxPSJsdDEiIHR4

MT0iZGsxIiBiZzI9Imx0MiIgdHgyPSJkazIiIGFjY2VudDE9ImFjY2VudDEiIGFjY2VudDI9ImFj

Y2VudDIiIGFjY2VudDM9ImFjY2VudDMiIGFjY2VudDQ9ImFjY2VudDQiIGFjY2VudDU9ImFjY2Vu

dDUiIGFjY2VudDY9ImFjY2VudDYiIGhsaW5rPSJobGluayIgZm9sSGxpbms9ImZvbEhsaW5rIi8+

AAAAAEgRAAAOAADIAAAAAP////8AAAAAAwAAAAYAAAAGAAAACQAAAAwAAAAMAAAADAAAAAwAAAAM

AAAADAAAAAwAAAAMAAAADwAAAAAIAADICQAARhMAAMZsAADkdAAAGnwAAL58AAANAAAAEAAAACUA

AABBAAAAVQAAAGIAAAAACAAAyAkAAFYKAAD2CgAAlgsAAPILAABADAAAogwAABgNAACODQAAAg4A

AGAOAADMDgAAUA8AAOgPAAB8EAAAEBEAAKQRAAAiEgAAnBIAANwSAAA2EwAAkBMAAAoUAACKFAAA

7hQAAFQVAADyFQAATBYAAKYWAAAEFwAAahcAALAXAAAQGAAAmhgAAOgYAABKGQAAwhkAAGhsAADG

bAAAMm0AALRtAABEbgAA2G4AAGhvAADibwAAKHAAAIJwAADccAAAVnEAALBxAAAScgAAdnIAANBy

AAAocwAAhHMAAOhzAABIdAAA5HQAAG51AAD0dQAAYnYAAKJ2AAAOdwAAencAAO53AABkeAAA0HgA

AD55AAC0eQAAIHoAALJ8AAC+fAAADgAAAA8AAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAA

GAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACYAAAAn

AAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAAMQAAADIAAAAzAAAANAAAADUA

AAA/AAAAQAAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAA

AE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAABWAAAAVwAAAFgAAABZAAAAWgAAAFsAAABcAAAA

XQAAAF4AAABfAAAAYAAAAGEAAABjAAAADwAA8EwAAAAAAAbwGAAAAAIEAAACAAAAAQAAAAEAAAAB

AAAAAgAAACMAC/AMAAAAhsEAAAAAxcEAAAAAQAAe8RAAAAD//wAAAAD/AICAgAD3AAAQAA8AAvCS

AAAAEAAI8AgAAAABAAAAAQQAAA8AA/AwAAAADwAE8CgAAAABAAnwEAAAAAAAAAAAAAAAAAAAAAAA

AAACAArwCAAAAAAEAAAFAAAADwAE8EIAAAASAArwCAAAAAEEAAAADgAAUwAL8B4AAAC/AQAAEADL

AQAAAAD/AQAACAAEAwkAAAA/AwEAAQAAABHwBAAAAAEAAAAAAAAACAAAAIoHAACMBwAAswwAALUM

AACZDwAAmw8AACsRAAAuEQAAOhEAADwRAAA9EQAAPxEAAEARAABCEQAAQxEAAEURAABJEQAABAAH

ABwABwAcAAcAHAAHABwABwAHAAIABwACAAcAAgAHAAIAAAAAABIAAAA6EQAAPBEAAD0RAAA/EQAA

QBEAAEIRAABDEQAARREAAEkRAAAEAAcABwACAAcAAgAHAAIABwACAAAAAAARAAAAkgAAAPoBAAAh

AgAAMQMAAGcDAAAZBgAAIgYAAE4IAAB1CAAATQkAAIMJAADeDAAADg0AAPoPAAA6EQAAPBEAAD0R

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

AGUAdwAAADsOkAECAAUAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAgAAAAABXAGkAbgBnAGQA

aQBuAGcAcwAAAEEekAHMAAIEBQMFBAYDAgT/AgDg/yQAQgAAAAAAAAAAnwEAAAAAAABDAGEAbQBi

AHIAaQBhACAATQBhAHQAaAAAACIABABxCIgYAPDEAgAAaAEAAAAA3qvxptBSWIdis/HGFQB6AAAA

kgIAAKgOAAACAAgAAAAEAAOQHwAAAJICAACoDgAAAgAIAAAAHwAAAAAAAAAhAwDwEAAAAAEAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAADQAtACtAC0AIGBcjQAAAAAAAAAAAAAAAAAADIRAAAyEQAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AgAAAAAAAAAAAAk/gxEA8BAACAD8/QEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASFAAAAAACfD/

DwABJFAAAOMEAAD///9/////f////3////9/////f////3////9/mRvgAAAEAAAyAAAAAAAAAAAA

AAAAAAAAAAAAAAAAIQQAAAAAAAAAAAAAAAAAAAAAAAAQHAAACAAAAAAAAAAAAHgAAAB4AAAAAAAA

AAAAAACgBQAAAAAAAAsAAAAAAAAA3AAAAP//EgAAAAAAAAAAAAAAAAAAAAUAQQBkAG0AaQBuAAUA

QQBkAG0AaQBuAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAYAAAACAAAAAAAMAAEADAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAP7/AAAGAQIAAAAAAAAAAAAAAAAAAAAAAAEAAADghZ/y+U9oEKuRCAArJ7PZMAAA

AHwBAAASAAAAAQAAAJgAAAACAAAAoAAAAAMAAACsAAAABAAAALgAAAAFAAAAyAAAAAYAAADUAAAA

BwAAAOAAAAAIAAAA8AAAAAkAAAAAAQAAEgAAAAwBAAAKAAAALAEAAAsAAAA4AQAADAAAAEQBAAAN

AAAAUAEAAA4AAABcAQAADwAAAGQBAAAQAAAAbAEAABMAAAB0AQAAAgAAAOMEAAAeAAAABAAAAAAA

AAAeAAAABAAAAAAAAAAeAAAACAAAAEFkbWluAAAAHgAAAAQAAAAAAAAAHgAAAAQAAAAAAAAAHgAA

AAgAAABOb3JtYWwAAB4AAAAIAAAAQWRtaW4AAAAeAAAABAAAADIxAAAeAAAAGAAAAE1pY3Jvc29m

dCBPZmZpY2UgV29yZAAAAEAAAAAAXA8LEQAAAEAAAAAA3HzhH7rLAUAAAAAA1I7rZrnLAUAAAAAA

IFPmsBHTAQMAAAACAAAAAwAAAJICAAADAAAAqA4AAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAD+/wAABgECAAAAAAAAAAAAAAAAAAAAAAABAAAAAtXN1ZwuGxCTlwgAKyz5rjAAAAD0AAAADAAA

AAEAAABoAAAADwAAAHAAAAAFAAAAhAAAAAYAAACMAAAAEQAAAJQAAAAXAAAAnAAAAAsAAACkAAAA

EAAAAKwAAAATAAAAtAAAABYAAAC8AAAADQAAAMQAAAAMAAAA0QAAAAIAAADjBAAAHgAAAAwAAABN

aWNyb3NvZnQAAAADAAAAHwAAAAMAAAAIAAAAAwAAADIRAAADAAAAAAAOAAsAAAAAAAAACwAAAAAA

AAALAAAAAAAAAAsAAAAAAAAAHhAAAAEAAAABAAAAAAwQAAACAAAAHgAAAAkAAADN4Ofi4O3o5QAD

AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIA

AAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAA

ABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAA

HwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAt

AAAALgAAAC8AAAAwAAAAMQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAAAA5AAAAOgAAADsA

AAA8AAAAPQAAAD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAEQAAABFAAAARgAAAEcAAABIAAAASQAA

AEoAAABLAAAATAAAAE0AAABOAAAATwAAAFAAAABRAAAAUgAAAFMAAABUAAAAVQAAAFYAAABXAAAA

WAAAAFkAAABaAAAAWwAAAFwAAABdAAAAXgAAAF8AAABgAAAAYQAAAGIAAABjAAAAZAAAAP7///9m

AAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAAbQAAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAAAHQA

AAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAAB7AAAAfAAAAH0AAAB+AAAAfwAAAIAAAACBAAAAggAA

AIMAAAD+////hQAAAIYAAACHAAAAiAAAAIkAAACKAAAAiwAAAIwAAACNAAAAjgAAAI8AAACQAAAA

kQAAAJIAAACTAAAAlAAAAJUAAACWAAAAlwAAAJgAAACZAAAAmgAAAJsAAACcAAAAnQAAAJ4AAACf

AAAA/v///6EAAACiAAAAowAAAKQAAAClAAAApgAAAKcAAAD+////qQAAAKoAAACrAAAArAAAAK0A

AACuAAAArwAAAP7////9/////f///7MAAAC0AAAA/v////7///+3AAAA/v//////////////////

////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////1IAbwBvAHQA

IABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW

AAUB//////////8DAAAABgkCAAAAAADAAAAAAAAARgAAAAAAAAAAAAAAAGC1EPewEdMBtgAAAAAD

AAAAAAAARABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAoAAgH///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAABlAAAA3zwAAAAAAAAxAFQAYQBiAGwAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgACAAEAAAD//////////wAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAACZNgAAAAAAAFcAbwByAGQARABvAGMAdQBtAGUAbgB0

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAIBCgAAAAUAAAD/////

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTIAAAAAAAABQBTAHUAbQBt

AGEAcgB5AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA

AgH///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAABAA

AAAAAAAFAEQAbwBjAHUAbQBlAG4AdABTAHUAbQBtAGEAcgB5AEkAbgBmAG8AcgBtAGEAdABpAG8A

bgAAAAAAAAAAAAAAOAACAQQAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAKgAAAAAEAAAAAAAAE0AcwBvAEQAYQB0AGEAUwB0AG8AcgBlAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAEA//////////8HAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAABwpwT3sBHTAfCjD/ewEdMBAAAAAAAAAAAAAAAAwQDaANgAWgBWAFcAVwDbAMIAVQAwAEsA

2ABTAFgA0gDTANYAQgDXAN0AUQA9AD0AAAAAAAAAAAAAAAAAAAAAADIAAQH//////////wgAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAIDOBPewEdMB8KMP97AR0wEAAAAAAAAAAAAAAABJAHQAZQBtAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAC

Af////8JAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA

AAAAAFAAcgBvAHAAZQByAHQAaQBlAHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAWAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAABAAAAFUBAAAAAAAAAQBDAG8AbQBwAE8AYgBqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAgECAAAABgAAAP////8AAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////wAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAA

AP7///8FAAAABgAAAAcAAAAIAAAACQAAAP7///8LAAAA/v//////////////////////////////

////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////PGI6U291cmNlcyBT

ZWxlY3RlZFN0eWxlPSJcQVBBLlhTTCIgU3R5bGVOYW1lPSJBUEEiIHhtbG5zOmI9Imh0dHA6Ly9z

Y2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2JpYmxpb2dyYXBo

eSIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVu

dC8yMDA2L2JpYmxpb2dyYXBoeSI+PC9iOlNvdXJjZXM+DQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAADw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFu

ZGFsb25lPSJubyI/Pg0KPGRzOmRhdGFzdG9yZUl0ZW0gZHM6aXRlbUlEPSJ7NTUxOUFFODctQkI2

NS00Njg5LThBRTEtMjVGMkNGNjA3N0Y1fSIgeG1sbnM6ZHM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54

bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2N1c3RvbVhtbCI+PGRzOnNjaGVtYVJl

ZnM+PGRzOnNjaGVtYVJlZiBkczp1cmk9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9y

Zy9vZmZpY2VEb2N1bWVudC8yMDA2L2JpYmxpb2dyYXBoeSIvPjwvZHM6c2NoZW1hUmVmcz48L2Rz

OmRhdGFzdG9yZUl0ZW0+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAEA/v8DCgAA/////wYJAgAAAAAAwAAAAAAAAEYgAAAAxO7q8+zl7fIgTWljcm9zb2Z0IFdvcmQg

OTctMjAwMwAKAAAATVNXb3JkRG9jABAAAABXb3JkLkRvY3VtZW50LjgA9DmycQAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==






^ permalink raw reply

* Re: [PATCH] net/sched: reset block pointer in tcf_block_put()
From: Konstantin Khlebnikov @ 2017-08-14 12:59 UTC (permalink / raw)
  To: Cong Wang
  Cc: Linux Kernel Network Developers, Jiri Pirko, David S. Miller,
	Jamal Hadi Salim
In-Reply-To: <CAM_iQpUJRAn75aBrBzoWABt21tgTYLo1MPNQwTUa9BSs0QXyaQ@mail.gmail.com>



On 12.08.2017 00:38, Cong Wang wrote:
> On Fri, Aug 11, 2017 at 1:36 PM, Konstantin Khlebnikov
> <khlebnikov@yandex-team.ru> wrote:
>>
>>
>> On 11.08.2017 23:18, Cong Wang wrote:
>>>
>>> On Thu, Aug 10, 2017 at 2:31 AM, Konstantin Khlebnikov
>>> <khlebnikov@yandex-team.ru> wrote:
>>>>
>>>> In previous API tcf_destroy_chain() could be called several times and
>>>> some schedulers like hfsc and atm use that. In new API tcf_block_put()
>>>> frees block but leaves stale pointer, second call will free it once
>>>> again.
>>>
>>>
>>> Which call path do we call tcf_block_put() for multiple times on
>>> the same block? Please be specific, it is not obvious.
>>>
>>
>> For example in hfsc_destroy_qdisc() since
>> a4aebb83cf0da0363684f1c339f7e6149a3e74c1
>> second time in hfsc_destroy_class() called from it.
>>
>> Actually, I see the same pattern in all classy qdiscs.
> 
> Good find! But that means we can just move it up??
> Something like (PoC only, not even compile):

This should work, I suppose.

But this approach requires careful review for all qdisc, mine is completely mechanical.

> 
> diff --git a/net/sched/sch_hfsc.c b/net/sched/sch_hfsc.c
> index b52f74610dc7..c7db8060e8ef 100644
> --- a/net/sched/sch_hfsc.c
> +++ b/net/sched/sch_hfsc.c
> @@ -1099,7 +1099,6 @@ hfsc_destroy_class(struct Qdisc *sch, struct
> hfsc_class *cl)
>   {
>          struct hfsc_sched *q = qdisc_priv(sch);
> 
> -       tcf_block_put(cl->block);
>          qdisc_destroy(cl->qdisc);
>          gen_kill_estimator(&cl->rate_est);
>          if (cl != &q->root)
> @@ -1243,8 +1242,10 @@ hfsc_put_class(struct Qdisc *sch, unsigned long arg)
>   {
>          struct hfsc_class *cl = (struct hfsc_class *)arg;
> 
> -       if (--cl->refcnt == 0)
> +       if (--cl->refcnt == 0) {
> +               tcf_block_put(cl->block);
>                  hfsc_destroy_class(sch, cl);
> +       }
>   }
> 
>   static unsigned long
> 

^ permalink raw reply

* RE: [RFC PATCH 2/2] bpf: Initialise mod[] in bpf_trace_printk
From: David Laight @ 2017-08-14 12:44 UTC (permalink / raw)
  To: 'Daniel Borkmann', James Hogan, David Miller
  Cc: ast@kernel.org, linux-kernel@vger.kernel.org, rostedt@goodmis.org,
	mingo@redhat.com, netdev@vger.kernel.org
In-Reply-To: <598DDF88.6020809@iogearbox.net>

From: Daniel Borkmann
> Sent: 11 August 2017 17:47
> On 08/09/2017 10:34 PM, Daniel Borkmann wrote:
> > On 08/09/2017 09:39 AM, James Hogan wrote:
> > [...]
> >> time (but please consider looking at the other patch which is certainly
> >> a more real issue).
> >
> > Sorry for the delay, started looking into that and whether we
> > have some other options, I'll get back to you on this.
> 
> Could we solve this more generically (as in: originally intended) in
> the sense that we don't need to trust the gcc va_list handling; I feel
> this is relying on an implementation detail? Perhaps something like
> below poc patch?

That patch still has 'cond ? arg : cond1 ? (long)arg : (u32)arg' so
probably has the same warning as the original version.

The va_list handling is defined by the relevant ABI, not gcc.

It is ok on x86-64 because all 32bit values are extended to 64bits
before being passed as arguments (either in registers, or on the stack).
Nothing in the C language requires that, so other 64bit architectures
could pass 32bit values in 4 bytes of stack.

	David



^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox