From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8671441CB1 for ; Thu, 16 Feb 2023 14:00:01 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 02B1740EE3; Thu, 16 Feb 2023 14:00:01 +0100 (CET) Received: from CNSHPPMGWESA01.NOKIA-SBELL.COM (unknown [116.246.26.71]) by mails.dpdk.org (Postfix) with ESMTP id 1AC8440A8B for ; Thu, 16 Feb 2023 13:59:58 +0100 (CET) X-IronPort-AV: E=Sophos;i="5.97,302,1669046400"; d="scan'208,217";a="10909137" Received: from unknown (HELO CNSHPPEXCH1603.nsn-intra.net) ([135.251.51.103]) by CNSHPPMGWESA01.NOKIA-SBELL.COM with ESMTP; 16 Feb 2023 20:59:57 +0800 Received: from CNSHPPEXCH1601.nsn-intra.net (135.251.51.101) by CNSHPPEXCH1603.nsn-intra.net (135.251.51.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Thu, 16 Feb 2023 20:59:57 +0800 Received: from CNSHPPEXCH1601.nsn-intra.net ([135.251.51.101]) by CNSHPPEXCH1601.nsn-intra.net ([135.251.51.101]) with mapi id 15.01.2375.034; Thu, 16 Feb 2023 20:59:57 +0800 From: "Xiaoping Yan (NSB)" To: "users@dpdk.org" Subject: why rte_power_ethdev_pmgmt_queue_enable need to check if other queues are stopped Thread-Topic: why rte_power_ethdev_pmgmt_queue_enable need to check if other queues are stopped Thread-Index: AdlCBFLV8QoElG47QfeDBKVxvG5wig== Date: Thu, 16 Feb 2023 12:59:56 +0000 Message-ID: <0c6664b4318142df94531165fb2acf94@nokia-sbell.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [135.251.51.115] Content-Type: multipart/alternative; boundary="_000_0c6664b4318142df94531165fb2acf94nokiasbellcom_" MIME-Version: 1.0 X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org --_000_0c6664b4318142df94531165fb2acf94nokiasbellcom_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi experts, I'm trying to use dpdk power pmd management APIs in my dpdk application. My application uses several ports, each have one rx queue, and it goes like= this 1. Init first port, setup rx queue, call rte_power_ethdev_pmgmt_queue_e= nable, and start the first port 2. Init second port, setup rx queue, call rte_power_ethdev_pmgmt_queue_= enable, and start the second port 3. ... Now for the first port & queue, rte_power_ethdev_pmgmt_queue_enable return = success, but for the second port & queue, it returns -16 >From rte_power_ethdev_pmgmt_queue_enable code, I think it fails when checki= ng if other queues are stopped as well. /* check if other queues are stopped as well */ ret =3D cfg_queues_stopped(lcore_cfg); if (ret !=3D 1) { /* error means invalid queue, 0 means queue wasn't stopped */ ret =3D ret < 0 ? -EINVAL : -EBUSY; goto end; } This seems quite strange for me, why other queues have to be in stopped sta= te? Can anyone help to explain? Thank you. Br, Xiaoping --_000_0c6664b4318142df94531165fb2acf94nokiasbellcom_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

Hi experts,

 

I’m trying to use dpdk po= wer pmd management APIs in my dpdk application.

My application uses several por= ts, each have one rx queue, and it goes like this

1= .   &= nbsp; Init first port, setup = rx queue, call rte_power_ethdev_pmgmt_queue_enable, and start the first por= t

2= .   &= nbsp; Init second port, setup= rx queue, call rte_power_ethdev_pmgmt_queue_enable, and start the second p= ort

3= .   &= nbsp;

Now for the first port & qu= eue, rte_power_ethdev_pmgmt_queue_enable return success, but for the second= port & queue, it returns -16

From rte_power_ethdev_pmgmt_que= ue_enable code, I think it fails when checking if other queues are stopped = as well.

  &n= bsp; /* check if other queues are stopped as well */

  &n= bsp; ret =3D cf= g_queues_stopped(lcore_cfg);

  &n= bsp; if (ret !=3D 1) {

  &n= bsp;     /* error means invalid queue, 0 means queue wasn't stopp= ed */

  &n= bsp;     ret =3D re= t = < 0<= /span> ? = -EINVAL : -EBUSY;

  &n= bsp;     goto en= d;=

  &n= bsp; }

This seems quite strange for me= , why other queues have to be in stopped state?

Can anyone help to explain?

 

Thank you.

 

 

Br, Xiaoping<= /p>

 

--_000_0c6664b4318142df94531165fb2acf94nokiasbellcom_-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3F64841CF6 for ; Mon, 20 Feb 2023 07:12:11 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F1A3C42F8A; Mon, 20 Feb 2023 07:12:10 +0100 (CET) Received: from CNSHPPMGWESA01.NOKIA-SBELL.COM (unknown [116.246.26.71]) by mails.dpdk.org (Postfix) with ESMTP id A2FC242F8C for ; Mon, 20 Feb 2023 07:12:08 +0100 (CET) X-IronPort-AV: E=Sophos;i="5.97,311,1669046400"; d="scan'208,217";a="10993100" Received: from unknown (HELO CNSHPPEXCH1604.nsn-intra.net) ([135.251.51.104]) by CNSHPPMGWESA01.NOKIA-SBELL.COM with ESMTP; 20 Feb 2023 14:12:00 +0800 Received: from CNSHPPEXCH1601.nsn-intra.net (135.251.51.101) by CNSHPPEXCH1604.nsn-intra.net (135.251.51.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Mon, 20 Feb 2023 14:12:00 +0800 Received: from CNSHPPEXCH1601.nsn-intra.net ([135.251.51.101]) by CNSHPPEXCH1601.nsn-intra.net ([135.251.51.101]) with mapi id 15.01.2375.034; Mon, 20 Feb 2023 14:12:00 +0800 From: "Xiaoping Yan (NSB)" To: "users@dpdk.org" , "anatoly.burakov@intel.com" Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check if other queues are stopped Thread-Topic: why rte_power_ethdev_pmgmt_queue_enable need to check if other queues are stopped Thread-Index: AdlCBFLV8QoElG47QfeDBKVxvG5wigC7XY2w Date: Mon, 20 Feb 2023 06:12:00 +0000 Message-ID: <0684cc0bac6f4b4996899b1dd9eafbf4@nokia-sbell.com> References: <0c6664b4318142df94531165fb2acf94@nokia-sbell.com> In-Reply-To: <0c6664b4318142df94531165fb2acf94@nokia-sbell.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [135.251.51.115] Content-Type: multipart/alternative; boundary="_000_0684cc0bac6f4b4996899b1dd9eafbf4nokiasbellcom_" MIME-Version: 1.0 X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org --_000_0684cc0bac6f4b4996899b1dd9eafbf4nokiasbellcom_ Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGkgQW5hdG9seQ0KDQpJIHNlZSB0aGlzIG11bHRpcGxlIHF1ZXVlIHN1cHBvcnQgaXMgYWRkZWQg YnkgeW91Lg0KQ291bGQgeW91IGtpbmRseSBoZWxwIG1lIHRvIHVuZGVyc3RhbmQgd2h5IHJ0ZV9w b3dlcl9ldGhkZXZfcG1nbXRfcXVldWVfZW5hYmxlIG5lZWQgb3RoZXIgcXVldWVzIHRvIGJlIGlu IHN0b3BwZWQgc3RhdGU/DQoNCmNvbW1pdCA1ZGZmOWE3MmIwZWZlYWIwMmEyYjcxZTUyYzQ4NzE4 MDViN2U2NGNiDQpBdXRob3I6IEFuYXRvbHkgQnVyYWtvdiBhbmF0b2x5LmJ1cmFrb3ZAaW50ZWwu Y29tPG1haWx0bzphbmF0b2x5LmJ1cmFrb3ZAaW50ZWwuY29tPg0KRGF0ZTogICBGcmkgSnVsIDkg MTY6MDg6MTUgMjAyMSArMDAwMA0KDQpwb3dlcjogc3VwcG9ydCBjYWxsYmFja3MgZm9yIG11bHRp cGxlIFJ4IHF1ZXVlcw0KDQoNClRoYW5rIHlvdS4NCg0KQnIsIFhpYW9waW5nDQoNCkZyb206IFhp YW9waW5nIFlhbiAoTlNCKQ0KU2VudDogMjAyM8TqMtTCMTbI1SAyMTowMA0KVG86IHVzZXJzQGRw ZGsub3JnDQpTdWJqZWN0OiB3aHkgcnRlX3Bvd2VyX2V0aGRldl9wbWdtdF9xdWV1ZV9lbmFibGUg bmVlZCB0byBjaGVjayBpZiBvdGhlciBxdWV1ZXMgYXJlIHN0b3BwZWQNCg0KSGkgZXhwZXJ0cywN Cg0KSaGvbSB0cnlpbmcgdG8gdXNlIGRwZGsgcG93ZXIgcG1kIG1hbmFnZW1lbnQgQVBJcyBpbiBt eSBkcGRrIGFwcGxpY2F0aW9uLg0KTXkgYXBwbGljYXRpb24gdXNlcyBzZXZlcmFsIHBvcnRzLCBl YWNoIGhhdmUgb25lIHJ4IHF1ZXVlLCBhbmQgaXQgZ29lcyBsaWtlIHRoaXMNCg0KMS4gICAgIElu aXQgZmlyc3QgcG9ydCwgc2V0dXAgcnggcXVldWUsIGNhbGwgcnRlX3Bvd2VyX2V0aGRldl9wbWdt dF9xdWV1ZV9lbmFibGUsIGFuZCBzdGFydCB0aGUgZmlyc3QgcG9ydA0KDQoyLiAgICAgSW5pdCBz ZWNvbmQgcG9ydCwgc2V0dXAgcnggcXVldWUsIGNhbGwgcnRlX3Bvd2VyX2V0aGRldl9wbWdtdF9x dWV1ZV9lbmFibGUsIGFuZCBzdGFydCB0aGUgc2Vjb25kIHBvcnQNCg0KMy4gICAgIKGtDQpOb3cg Zm9yIHRoZSBmaXJzdCBwb3J0ICYgcXVldWUsIHJ0ZV9wb3dlcl9ldGhkZXZfcG1nbXRfcXVldWVf ZW5hYmxlIHJldHVybiBzdWNjZXNzLCBidXQgZm9yIHRoZSBzZWNvbmQgcG9ydCAmIHF1ZXVlLCBp dCByZXR1cm5zIC0xNg0KRnJvbSBydGVfcG93ZXJfZXRoZGV2X3BtZ210X3F1ZXVlX2VuYWJsZSBj b2RlLCBJIHRoaW5rIGl0IGZhaWxzIHdoZW4gY2hlY2tpbmcgaWYgb3RoZXIgcXVldWVzIGFyZSBz dG9wcGVkIGFzIHdlbGwuDQogICAgLyogY2hlY2sgaWYgb3RoZXIgcXVldWVzIGFyZSBzdG9wcGVk IGFzIHdlbGwgKi8NCiAgICByZXQgPSBjZmdfcXVldWVzX3N0b3BwZWQobGNvcmVfY2ZnKTsNCiAg ICBpZiAocmV0ICE9IDEpIHsNCiAgICAgICAgLyogZXJyb3IgbWVhbnMgaW52YWxpZCBxdWV1ZSwg MCBtZWFucyBxdWV1ZSB3YXNuJ3Qgc3RvcHBlZCAqLw0KICAgICAgICByZXQgPSByZXQgPCAwID8g LUVJTlZBTCA6IC1FQlVTWTsNCiAgICAgICAgZ290byBlbmQ7DQogICAgfQ0KVGhpcyBzZWVtcyBx dWl0ZSBzdHJhbmdlIGZvciBtZSwgd2h5IG90aGVyIHF1ZXVlcyBoYXZlIHRvIGJlIGluIHN0b3Bw ZWQgc3RhdGU/DQpDYW4gYW55b25lIGhlbHAgdG8gZXhwbGFpbj8NCg0KVGhhbmsgeW91Lg0KDQoN CkJyLCBYaWFvcGluZw0KDQo= --_000_0684cc0bac6f4b4996899b1dd9eafbf4nokiasbellcom_ Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: quoted-printable

Hi Anatoly

 

I see this multiple queue suppo= rt is added by you.

Could you kindly help me to und= erstand why rte_power_ethdev_pmgmt_queue_enable need other = queues to be in stopped state?

 

commit 5dff9a72b0efeab02a2b71e5= 2c4871805b7e64cb

Author: Anatoly Burakov anatoly.burakov@intel.com

Date:   Fri Jul 9 16:= 08:15 2021 +0000

 

po= wer: support callbacks for multiple Rx queues

 

 

Thank you.

 

Br, Xiaoping<= /p>

 

From: Xiaoping Yan (NSB)
Sent: 2023
=C4=EA2=D4=C216=C8=D5 21:00
To: users@dpdk.org
Subject: why rte_power_ethdev_pmgmt_queue_enable need to check if ot= her queues are stopped

 

Hi experts,

 

I=A1=AFm trying to use dpdk power pmd management APIs in my dpdk application.<= o:p>

My application uses several por= ts, each have one rx queue, and it goes like this

1= .   &= nbsp; Init first port, setup = rx queue, call rte_power_ethdev_pmgmt_queue_enable, and start the first por= t

2= .   &= nbsp; Init second port, setup= rx queue, call rte_power_ethdev_pmgmt_queue_enable, and start the second p= ort

3= .   &= nbsp; =A1=AD

Now for the first port & qu= eue, rte_power_ethdev_pmgmt_queue_enable return success, but for the second= port & queue, it returns -16

From rte_power_ethdev_pmgmt_que= ue_enable code, I think it fails when checking if other queues are stopped = as well.

  &n= bsp; /* check if other queues are stopped as well */

  &n= bsp; ret =3D cf= g_queues_stopped(lcore_cfg);

  &n= bsp; if (ret !=3D 1) {

  &n= bsp;     /* error means invalid queue, 0 means queue wasn't stopp= ed */

  &n= bsp;     ret =3D re= t = < 0<= /span> ? = -EINVAL : -EBUSY;

  &n= bsp;     goto en= d;=

  &n= bsp; }

This seems quite strange for me= , why other queues have to be in stopped state?

Can anyone help to explain?

 

Thank you.

 

 

Br, Xiaoping<= /p>

 

--_000_0684cc0bac6f4b4996899b1dd9eafbf4nokiasbellcom_-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 87E0B41CE5 for ; Mon, 20 Feb 2023 11:27:51 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4F8CB43010; Mon, 20 Feb 2023 11:27:51 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 9171440395 for ; Mon, 20 Feb 2023 11:27:49 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1676888869; x=1708424869; h=from:to:subject:date:message-id:references:in-reply-to: mime-version; bh=guFoRKh/eLu5avN8jW9qmUapu2i0HL7xitpEgwppejw=; b=CxjCGag90PXiRryDUbwF/46FontHzMt9soxcXX/cO6UMwUpmq9m6tmI+ faojGGyvZ8dL94Nv11IcWUzxz91EtF2a6t2Cm7TB312XBI9GDB/19c/tB S0pGjzaIdWOCv2QFkgSeFksD+rQ30eIFQBZhe+d71kkCcNaMCsPe++RGF ehWmy2WLcLzdTq1bW92xWVVOjdFe6DS90/8mGazVc8dWdAzDUvPdxIdaP Be72y52PhHxCN2yOj3FlZlM9CojHxjFmAuVBG9xPYW285ymGwTWZ0ybfI 9P6To4oYRL1Bg+sXrCQlMya0uktNcFmARQLqmNkeTPIXQgKbUCkEvKlLW w==; X-IronPort-AV: E=McAfee;i="6500,9779,10626"; a="330084433" X-IronPort-AV: E=Sophos;i="5.97,312,1669104000"; d="scan'208,217";a="330084433" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Feb 2023 02:27:48 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10626"; a="814080916" X-IronPort-AV: E=Sophos;i="5.97,312,1669104000"; d="scan'208,217";a="814080916" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga001.fm.intel.com with ESMTP; 20 Feb 2023 02:27:48 -0800 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Mon, 20 Feb 2023 02:27:48 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Mon, 20 Feb 2023 02:27:48 -0800 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.108) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Mon, 20 Feb 2023 02:27:47 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dkh6xTpZpX5IhE82X2/3QErWxTwTc03L3G7wfkoyN0T4wwywUpY6JquIuLQ0onaurrJs7pP/IPt3lV05kSaEn/mFJV9xxlLUV9Y8Y+/iG74V5tlSzvmzZM4iDgzYrrcy9vZe0o1NT+Fpwpw0LOc8QOUH5mV4M7ksf8HteLbqge7RPvWGeqD/6EYyllAl9uKwPT0iFpwF7inKNYsjE1Th+J7Wx2hMwPqWlnSABR4SG6cEkd+NwIkQ9w0eAuvakhUvBwvD+HeJ+rbAMyqQpEN+Qc82IhJUscF5A0zR1u1YFHIWlod/GFFsoEOTZdRXxbw8UFPWBYXdy+AO9Gh+l1LO7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1P9joGBbIsfcwhcXGCjwYXoMCBr6SJ+IyAt1h9SJ5C4=; b=CVVGCUahlMVBcSckOQV9zeDDNcDPvBVcTES8enMBZyICvUqvZmWJ0TZk5ir+2wOy54EmtWUgDRJcxQuf+dlUcjAZbVtx4orryoK5TdYY7pJiHliHoN4xgUlMAN6Mzm90k6rB2xSSo6kqhUTLJIhW4mlOrDzslTAdVq+eKPygQHd8lcvPKr8IclCd7tkDAZdYE4CZMd5KpMY66y5S8yVPOsMNLQt/Mp0TU1aZcRMK4r/XyDrdl7YvVyVPPvJ6KLfJwc0nprW/zgRhaUrIgSufxb8SxY88oE0pXJ1IiR7GlK1lYAZNHicW2UnhaW/pUI3J3UkEJg1zl5JrIgURTgWCgQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BN6PR11MB1251.namprd11.prod.outlook.com (2603:10b6:404:48::10) by SA2PR11MB4809.namprd11.prod.outlook.com (2603:10b6:806:112::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.18; Mon, 20 Feb 2023 10:27:45 +0000 Received: from BN6PR11MB1251.namprd11.prod.outlook.com ([fe80::b966:2d41:ca2e:6871]) by BN6PR11MB1251.namprd11.prod.outlook.com ([fe80::b966:2d41:ca2e:6871%6]) with mapi id 15.20.6111.020; Mon, 20 Feb 2023 10:27:45 +0000 From: "Burakov, Anatoly" To: "Xiaoping Yan (NSB)" , "users@dpdk.org" Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check if other queues are stopped Thread-Topic: why rte_power_ethdev_pmgmt_queue_enable need to check if other queues are stopped Thread-Index: AdlCBFLV8QoElG47QfeDBKVxvG5wigC7XY2wAAj7pdA= Date: Mon, 20 Feb 2023 10:27:44 +0000 Message-ID: References: <0c6664b4318142df94531165fb2acf94@nokia-sbell.com> <0684cc0bac6f4b4996899b1dd9eafbf4@nokia-sbell.com> In-Reply-To: <0684cc0bac6f4b4996899b1dd9eafbf4@nokia-sbell.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BN6PR11MB1251:EE_|SA2PR11MB4809:EE_ x-ms-office365-filtering-correlation-id: 0396b08a-2f1f-409a-4cb5-08db132d1aa4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 3DuPjwQoUj8jZjeA5sk62Qnnf3Dk5FTgmMMOVjNQtTB6Wa1HUAo9ZDxpM18rEoMYes0UzLxglMG5mXK0Ouu1keqnVGMZ2lWLyUphYeW9KB5m6+9Sm4qIvv5E6UDYekcWcEJofK4ea/M7ooXnYgylXn2MgCvkvb/qaLrA4FjqjXbC66ccfHWApPJvxqNORM6I8I1+NsR56A4JPygv3jeDwzUIVW6h40wg9ZwoJsA9qHS+JRT6JesiWbMQml3UuuA6TFReuUZA/VW5YaODND5VIN1KAojY3jERrmezK1Gj+6NmFbyt4MK5f9qHxs90KSOWrWdmAS1noxlxlxqEUZTbbWIF3NCa3u0MWEfRvr+Y/NdIgHHnxEZoxuUznPwDjYZDysxhE72nxmQwdNmNNMlt7Zs5OsBuUGEEOgk32b17ziB+b9cGJ8QVf8ZCEo7mvaTR/vSeLQGdmcjr2REaJZ2Gjnj/1GePWnA+oGFKF1lbu5wvrB00+pA6bfXLHgqNdYv7WG2liiGwa1I1vneM46yhg26NljNQjgM0h6xe6jBQuRZYUqU50u6IdsnQtMnSK9l0inTE0y9KdTEzdXvJ0lfgXLLa7qF4+ZpcTptOqqfF9VNGWNkDTjKcxlACATyRNLGAuYYbDa0K/K8vuNvLoTOVidW6W/FtrzszOSP3Mj4nmNQK/i/bSw2spHsGS2EuxWb58VVk6e1P19Va8XrFwCKJfg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN6PR11MB1251.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(366004)(396003)(136003)(346002)(39860400002)(376002)(451199018)(110136005)(5660300002)(86362001)(478600001)(316002)(186003)(9686003)(26005)(33656002)(9326002)(66476007)(52536014)(66446008)(7696005)(66556008)(71200400001)(8676002)(66946007)(2906002)(76116006)(8936002)(64756008)(38070700005)(53546011)(6506007)(55016003)(82960400001)(38100700002)(41300700001)(122000001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-2022-jp?B?VTc5NWdNNkd1clhqR2UzRVlDQzF4RktBM0tCbmtxNG5UWTVUNHlzSmdM?= =?iso-2022-jp?B?RWF2d0pPYzNQRG85S3RhOE9tam5NcGh1dkVCZHVEc0RGMnRMYmRneVZ0?= =?iso-2022-jp?B?YWVjTUd2TkN0ZS9GM2RheWEzeGkvQXQ3a0JmbktDL3pmWmFpbkRpU2RC?= =?iso-2022-jp?B?OUFKRUlJTkZYa1dKZEMyMGpJTkVGRyt1SEl3cXo4KzNvOUVpRThrZG5m?= =?iso-2022-jp?B?SGx4VXdQVXF1Y3pjdkJ1OC96dWliMktVN3JrcWU5Z3pOY2VTbmxDeFVZ?= =?iso-2022-jp?B?ZkFyV3ovbWh6YllZdmpVMEdMWCtWY1VlQXB6WWUrRUk1aHJrRDVaRFlI?= =?iso-2022-jp?B?dG5EUlkvWXREejArd3dmQjZvYWt2R2gwa09DSS93MDZDYjdWK3ZSMG92?= =?iso-2022-jp?B?emJIMytVYjRPMEJJQXNFMktsNWhPYkpwczVyV000THBoT2U5TWk0cUVZ?= =?iso-2022-jp?B?Q1JEUG83bTY0WUZZNFYvbkY3QlJrcW9BUDBQdkZpVTR3NXB1emJQdlB5?= =?iso-2022-jp?B?aU0vMXQycHdQSUhpUk4yRHNVWHJ2VWFxaDdjeFpOMVl3aitOWWhQcVJz?= =?iso-2022-jp?B?RWZFQUgxZFcyb0JlaDVRVUVaQjlkS3VqSThPVnJSUlBpeVIrVmVDWnNr?= =?iso-2022-jp?B?ZWswVTJlVXF2Mm9GZnErWXAvS2U5WC9CUUIvRkpFZnFqRzVYeGZ2eCsz?= =?iso-2022-jp?B?cFBSMDVNOXZsREMxZG0xTkdiL2FjbGdHVDM2UUVLOUE0b2p6ZWdTTFJ5?= =?iso-2022-jp?B?Ym5tMEIwb3VwZnJnSFJGak5ETzU4WnVRcGtQdzZEWHFOc1JPcU9QUzF3?= =?iso-2022-jp?B?M1FxcEczZVR2eExXL1Q2QlhaMmxqOG9qYjhURit0RWR0Y0V4V2FESW9t?= =?iso-2022-jp?B?MkJDT09mUkU2YjdRd1ZzRHVjVHRXSHFwR0hHb2xwMDE0anNFSHNIbTVS?= =?iso-2022-jp?B?QnNwalo2UTBXM044WjdubTBmaUtYVkJyMUwzbngvMVgva1hqNm9wZnkx?= =?iso-2022-jp?B?OE91bXBrVk1CVFNRUHJNSGMvcWFSRmhQNlhtdCtCelcyNzE0T1d6TVBR?= =?iso-2022-jp?B?RXNHQWdsRnhGUmRtMTV0N0xLUk1QNnBVZkJBZFl6akoyNXZLWTFwNzVP?= =?iso-2022-jp?B?Zmd4MXVwOFpWNDJ2b1FFQVNINHpkYzhGcTBUeDFCN0hsNU5zcytFZGlC?= =?iso-2022-jp?B?a3dxOHR0RWcyZlgwSWFXVjlmVUlPNzRQZlRjTnJEODJMc3FpK0piZlk0?= =?iso-2022-jp?B?cDJnUlUvS3UwQy9aOHYzK0hKQUplQys4dGV1MWE3UTV1WGRTZ3c4T0JR?= =?iso-2022-jp?B?WERhZlZzTTBJaTR2MVdUMVh5Ukl6dEhRSkxvTC9BT2NjOTZBZWcrdUYz?= =?iso-2022-jp?B?M3ZCZVNNRG56VWlSQUdRNnNrR1gwa0lQSCs3ZVU5OXNpcEs3WHp4eGRD?= =?iso-2022-jp?B?TmVUdm52clZFZU1tbmkyV0JPYjVLR3lwcEpJaDcyMlRIVTljRmlVQjRr?= =?iso-2022-jp?B?VFhYZDRCYk1jQnhOMHNaMzZNdWRWaHlGNjk3b2R4b24rSmlzTTR5bUVQ?= =?iso-2022-jp?B?NmdPMXZtVTNYS3RzLzhzWFByRDV1U1JyNjNJK0J3ajVmNXRWTnBleDZK?= =?iso-2022-jp?B?WWN5WU9FRGNhODJxRUM5YlJndS9TQlpHbFRrK3UxNlVzaWphOXloeG43?= =?iso-2022-jp?B?ejZ5RXZMN2JrSFc4S040amZXc2dyQlEwMWFnbHdOcmNNakdvZ0kxcTQ1?= =?iso-2022-jp?B?a0RlL0xWTGFmcE1TY0ZyL1FxNzVSZUI0cXhYMk90Tzd6N0pWWi9ITmh0?= =?iso-2022-jp?B?NitQWkx6NzlidEs0Qmw4WkxRZ29XSEovNGpUc0ZWemZNSHkxY1ZHZ0tS?= =?iso-2022-jp?B?LzhxaUpFKzd5dHJqRXByVVQwaWJuTTkxcnlQMlZHTUtBRG41TG00NUVn?= =?iso-2022-jp?B?WFlPU094SENraW9LcnhWUDlyc3AxMmRqMXZKMHIrdUZiZ2NQdnNBandX?= =?iso-2022-jp?B?WDNodjVtMGo0MXlLRjkxRXU0YkZFVTZHV1VvOTFOUDhwMkVwdGQ5TVRz?= =?iso-2022-jp?B?SFFBTys1S2lVbU9SYnRlL3dCOGlCVDB1Vk5qek5RQ01OcmMzR0dyY2Zy?= =?iso-2022-jp?B?OEpzVXFyQ2tqR0JMd0wxV2ZCa1JHditIOXRrbnd4TFUxUm4rYTV1UzZO?= =?iso-2022-jp?B?ai8wZXV4Z21VYlcrdVpla1pIa2l1Z08raUx1a0FoVWdRanpqTlowa3BZ?= =?iso-2022-jp?B?TmZiOWREemU1aERsSjIrOHRGSjVvM1h6V0s0V2JtV3REN296STZyejFz?= =?iso-2022-jp?B?Zk5CK1J2b1VXYnVxRTU1dG05OEhQTTdCWnc9PQ==?= Content-Type: multipart/alternative; boundary="_000_BN6PR11MB125181CC8523191BC53180F8F7A49BN6PR11MB1251namp_" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN6PR11MB1251.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0396b08a-2f1f-409a-4cb5-08db132d1aa4 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Feb 2023 10:27:44.3863 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: d2sjSZwkGJCMvpvYRhu/Br71ECmUBO1PJQ6vzNJolUJdklP90IGeT8LhDPYIGClLIf6Sn4n3Xw2/2vKNQ5I4Uy9Tj2BskTAuKRoX5Ov0rDM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB4809 X-OriginatorOrg: intel.com X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org --_000_BN6PR11MB125181CC8523191BC53180F8F7A49BN6PR11MB1251namp_ Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable Hi, It is mainly because we=1B$B!G=1B(Bre install callbacks, which is not threa= d-safe unless the PMD is stopped. Our PMD=1B$B!G=1B(Bs internal config stru= ctures are not thread-safe. You should only start these ports after you con= figure everything. From: Xiaoping Yan (NSB) Sent: Monday, February 20, 2023 6:12 AM To: users@dpdk.org; Burakov, Anatoly Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check if other= queues are stopped Hi Anatoly I see this multiple queue support is added by you. Could you kindly help me to understand why rte_power_ethdev_pmgmt_queue_ena= ble need other queues to be in stopped state? commit 5dff9a72b0efeab02a2b71e52c4871805b7e64cb Author: Anatoly Burakov anatoly.burakov@intel.com Date: Fri Jul 9 16:08:15 2021 +0000 power: support callbacks for multiple Rx queues Thank you. Br, Xiaoping From: Xiaoping Yan (NSB) Sent: 2023=1B$BG/=1B(B2=1B$B7n=1B(B16=1B$BF|=1B(B 21:00 To: users@dpdk.org Subject: why rte_power_ethdev_pmgmt_queue_enable need to check if other que= ues are stopped Hi experts, I=1B$B!G=1B(Bm trying to use dpdk power pmd management APIs in my dpdk appl= ication. My application uses several ports, each have one rx queue, and it goes like= this 1. Init first port, setup rx queue, call rte_power_ethdev_pmgmt_queue_e= nable, and start the first port 2. Init second port, setup rx queue, call rte_power_ethdev_pmgmt_queue_= enable, and start the second port 3. =1B$B!D=1B(B Now for the first port & queue, rte_power_ethdev_pmgmt_queue_enable return = success, but for the second port & queue, it returns -16 >From rte_power_ethdev_pmgmt_queue_enable code, I think it fails when checki= ng if other queues are stopped as well. /* check if other queues are stopped as well */ ret =3D cfg_queues_stopped(lcore_cfg); if (ret !=3D 1) { /* error means invalid queue, 0 means queue wasn't stopped */ ret =3D ret < 0 ? -EINVAL : -EBUSY; goto end; } This seems quite strange for me, why other queues have to be in stopped sta= te? Can anyone help to explain? Thank you. Br, Xiaoping --_000_BN6PR11MB125181CC8523191BC53180F8F7A49BN6PR11MB1251namp_ Content-Type: text/html; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable

Hi,

 =

It is mainly because we= =1B$B!G=1B(Bre install callbacks, which is not thread-safe unless the PMD i= s stopped. Our PMD=1B$B!G=1B(Bs internal config structures are not thread-s= afe. You should only start these ports after you configure everything.

 =

From: Xiaoping Yan (NSB) <xiaoping.ya= n@nokia-sbell.com>
Sent: Monday, February 20, 2023 6:12 AM
To: users@dpdk.org; Burakov, Anatoly <anatoly.burakov@intel.com&g= t;
Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check i= f other queues are stopped

 =

Hi Anatoly

 

I see this multiple queue suppo= rt is added by you.

Could you kindly help me to und= erstand why rte_power_ethdev_pmgmt_queue_enable need other queues to be in = stopped state?

 

commit 5dff9a72b0efeab02a2b71e5= 2c4871805b7e64cb

Author: Anatoly Burakov anatoly.burakov@intel.com

Date:   Fri Jul 9 16:= 08:15 2021 +0000

 

po= wer: support callbacks for multiple Rx queues

 

 

Thank you.

 

Br, Xiaoping<= /p>

 

From: Xiaoping Yan (NSB)
Sent: 2023
=1B$BG/=1B(B2=1B$B7n=1B(B16=1B$BF|=1B(B 21:00
To: users@dpdk.org
Subject: why rte_power_ethdev_pmgmt_queue_enable need to check if ot= her queues are stopped

 

Hi experts,

 

I= =1B$B!G=1B(Bm trying to use dpdk power pmd mana= gement APIs in my dpdk application.

My application uses several por= ts, each have one rx queue, and it goes like this

1= .   &= nbsp; Init first port, setup = rx queue, call rte_power_ethdev_pmgmt_queue_enable, and start the first por= t

2= .   &= nbsp; Init second port, setup= rx queue, call rte_power_ethdev_pmgmt_queue_enable, and start the second p= ort

3= .   &= nbsp; =1B$B!D=1B(B

Now for the first port & qu= eue, rte_power_ethdev_pmgmt_queue_enable return success, but for the second= port & queue, it returns -16

From rte_power_ethdev_pmgmt_que= ue_enable code, I think it fails when checking if other queues are stopped = as well.

  &n= bsp; /* check if other queues are stopped as well */

  &n= bsp; ret =3D cf= g_queues_stopped(lcore_cfg);

  &n= bsp; if (ret !=3D 1) {

  &n= bsp;     /* error means invalid queue, 0 means queue wasn't stopp= ed */

  &n= bsp;     ret =3D re= t = < 0<= /span> ? = -EINVAL : -EBUSY;

  &n= bsp;     goto en= d;=

  &n= bsp; }

This seems quite strange for me= , why other queues have to be in stopped state?

Can anyone help to explain?

 

Thank you.

 

 

Br, Xiaoping<= /p>

 

--_000_BN6PR11MB125181CC8523191BC53180F8F7A49BN6PR11MB1251namp_-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0F2EB41CEC for ; Mon, 20 Feb 2023 14:40:48 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 06F3343048; Mon, 20 Feb 2023 14:40:48 +0100 (CET) Received: from CNSHPPMGWESA01.NOKIA-SBELL.COM (unknown [116.246.26.71]) by mails.dpdk.org (Postfix) with ESMTP id 3DDB640395 for ; Mon, 20 Feb 2023 14:40:44 +0100 (CET) X-IronPort-AV: E=Sophos;i="5.97,312,1669046400"; d="scan'208,217";a="11006847" Received: from unknown (HELO CNSHPPEXCH1610.nsn-intra.net) ([135.251.51.110]) by CNSHPPMGWESA01.NOKIA-SBELL.COM with ESMTP; 20 Feb 2023 21:40:43 +0800 Received: from CNSHPPEXCH1601.nsn-intra.net (135.251.51.101) by CNSHPPEXCH1610.nsn-intra.net (135.251.51.110) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Mon, 20 Feb 2023 21:40:43 +0800 Received: from CNSHPPEXCH1601.nsn-intra.net ([135.251.51.101]) by CNSHPPEXCH1601.nsn-intra.net ([135.251.51.101]) with mapi id 15.01.2375.034; Mon, 20 Feb 2023 21:40:43 +0800 From: "Xiaoping Yan (NSB)" To: "Burakov, Anatoly" , "users@dpdk.org" Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check if other queues are stopped Thread-Topic: why rte_power_ethdev_pmgmt_queue_enable need to check if other queues are stopped Thread-Index: AdlCBFLV8QoElG47QfeDBKVxvG5wigC7XY2wAAj7pdAABqvI0A== Date: Mon, 20 Feb 2023 13:40:43 +0000 Message-ID: <4da7b78195454d6f823a983d71310c5d@nokia-sbell.com> References: <0c6664b4318142df94531165fb2acf94@nokia-sbell.com> <0684cc0bac6f4b4996899b1dd9eafbf4@nokia-sbell.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [135.251.51.115] Content-Type: multipart/alternative; boundary="_000_4da7b78195454d6f823a983d71310c5dnokiasbellcom_" MIME-Version: 1.0 X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org --_000_4da7b78195454d6f823a983d71310c5dnokiasbellcom_ Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGksDQoNClRoYW5rIHlvdSBmb3IgdGhlIGluZm9ybWF0aW9uLg0KSSBzZWUgZnJvbSBydGVfZXRo X2FkZF9yeF9jYWxsYmFjaywgdGhlIGNhbGxiYWNrIGlzIGFkZGVkIHRvIHBlciBxdWV1ZSBkYXRh OiBydGVfZXRoX2RldmljZXNbcG9ydF9pZF0ucG9zdF9yeF9idXJzdF9jYnNbcXVldWVfaWRdOw0K U28gaXQgc2hvdWxkIG5vdCBhZmZlY3QgcG9sbGluZyBvbiBvdGhlciBxdWV1ZXM/DQoNCg0KQnIs IFhpYW9waW5nDQoNCkZyb206IEJ1cmFrb3YsIEFuYXRvbHkgPGFuYXRvbHkuYnVyYWtvdkBpbnRl bC5jb20+DQpTZW50OiAyMDIzxOoy1MIyMMjVIDE4OjI4DQpUbzogWGlhb3BpbmcgWWFuIChOU0Ip IDx4aWFvcGluZy55YW5Abm9raWEtc2JlbGwuY29tPjsgdXNlcnNAZHBkay5vcmcNClN1YmplY3Q6 IFJFOiB3aHkgcnRlX3Bvd2VyX2V0aGRldl9wbWdtdF9xdWV1ZV9lbmFibGUgbmVlZCB0byBjaGVj ayBpZiBvdGhlciBxdWV1ZXMgYXJlIHN0b3BwZWQNCg0KSGksDQoNCkl0IGlzIG1haW5seSBiZWNh dXNlIHdloa9yZSBpbnN0YWxsIGNhbGxiYWNrcywgd2hpY2ggaXMgbm90IHRocmVhZC1zYWZlIHVu bGVzcyB0aGUgUE1EIGlzIHN0b3BwZWQuIE91ciBQTUShr3MgaW50ZXJuYWwgY29uZmlnIHN0cnVj dHVyZXMgYXJlIG5vdCB0aHJlYWQtc2FmZS4gWW91IHNob3VsZCBvbmx5IHN0YXJ0IHRoZXNlIHBv cnRzIGFmdGVyIHlvdSBjb25maWd1cmUgZXZlcnl0aGluZy4NCg0KRnJvbTogWGlhb3BpbmcgWWFu IChOU0IpIDx4aWFvcGluZy55YW5Abm9raWEtc2JlbGwuY29tPG1haWx0bzp4aWFvcGluZy55YW5A bm9raWEtc2JlbGwuY29tPj4NClNlbnQ6IE1vbmRheSwgRmVicnVhcnkgMjAsIDIwMjMgNjoxMiBB TQ0KVG86IHVzZXJzQGRwZGsub3JnPG1haWx0bzp1c2Vyc0BkcGRrLm9yZz47IEJ1cmFrb3YsIEFu YXRvbHkgPGFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb208bWFpbHRvOmFuYXRvbHkuYnVyYWtvdkBp bnRlbC5jb20+Pg0KU3ViamVjdDogUkU6IHdoeSBydGVfcG93ZXJfZXRoZGV2X3BtZ210X3F1ZXVl X2VuYWJsZSBuZWVkIHRvIGNoZWNrIGlmIG90aGVyIHF1ZXVlcyBhcmUgc3RvcHBlZA0KDQpIaSBB bmF0b2x5DQoNCkkgc2VlIHRoaXMgbXVsdGlwbGUgcXVldWUgc3VwcG9ydCBpcyBhZGRlZCBieSB5 b3UuDQpDb3VsZCB5b3Uga2luZGx5IGhlbHAgbWUgdG8gdW5kZXJzdGFuZCB3aHkgcnRlX3Bvd2Vy X2V0aGRldl9wbWdtdF9xdWV1ZV9lbmFibGUgbmVlZCBvdGhlciBxdWV1ZXMgdG8gYmUgaW4gc3Rv cHBlZCBzdGF0ZT8NCg0KY29tbWl0IDVkZmY5YTcyYjBlZmVhYjAyYTJiNzFlNTJjNDg3MTgwNWI3 ZTY0Y2INCkF1dGhvcjogQW5hdG9seSBCdXJha292IGFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb208 bWFpbHRvOmFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb20+DQpEYXRlOiAgIEZyaSBKdWwgOSAxNjow ODoxNSAyMDIxICswMDAwDQoNCnBvd2VyOiBzdXBwb3J0IGNhbGxiYWNrcyBmb3IgbXVsdGlwbGUg UnggcXVldWVzDQoNCg0KVGhhbmsgeW91Lg0KDQpCciwgWGlhb3BpbmcNCg0KRnJvbTogWGlhb3Bp bmcgWWFuIChOU0IpDQpTZW50OiAyMDIzxOoy1MIxNsjVIDIxOjAwDQpUbzogdXNlcnNAZHBkay5v cmc8bWFpbHRvOnVzZXJzQGRwZGsub3JnPg0KU3ViamVjdDogd2h5IHJ0ZV9wb3dlcl9ldGhkZXZf cG1nbXRfcXVldWVfZW5hYmxlIG5lZWQgdG8gY2hlY2sgaWYgb3RoZXIgcXVldWVzIGFyZSBzdG9w cGVkDQoNCkhpIGV4cGVydHMsDQoNCkmhr20gdHJ5aW5nIHRvIHVzZSBkcGRrIHBvd2VyIHBtZCBt YW5hZ2VtZW50IEFQSXMgaW4gbXkgZHBkayBhcHBsaWNhdGlvbi4NCk15IGFwcGxpY2F0aW9uIHVz ZXMgc2V2ZXJhbCBwb3J0cywgZWFjaCBoYXZlIG9uZSByeCBxdWV1ZSwgYW5kIGl0IGdvZXMgbGlr ZSB0aGlzDQoNCjEuICAgICBJbml0IGZpcnN0IHBvcnQsIHNldHVwIHJ4IHF1ZXVlLCBjYWxsIHJ0 ZV9wb3dlcl9ldGhkZXZfcG1nbXRfcXVldWVfZW5hYmxlLCBhbmQgc3RhcnQgdGhlIGZpcnN0IHBv cnQNCg0KMi4gICAgIEluaXQgc2Vjb25kIHBvcnQsIHNldHVwIHJ4IHF1ZXVlLCBjYWxsIHJ0ZV9w b3dlcl9ldGhkZXZfcG1nbXRfcXVldWVfZW5hYmxlLCBhbmQgc3RhcnQgdGhlIHNlY29uZCBwb3J0 DQoNCjMuICAgICChrQ0KTm93IGZvciB0aGUgZmlyc3QgcG9ydCAmIHF1ZXVlLCBydGVfcG93ZXJf ZXRoZGV2X3BtZ210X3F1ZXVlX2VuYWJsZSByZXR1cm4gc3VjY2VzcywgYnV0IGZvciB0aGUgc2Vj b25kIHBvcnQgJiBxdWV1ZSwgaXQgcmV0dXJucyAtMTYNCkZyb20gcnRlX3Bvd2VyX2V0aGRldl9w bWdtdF9xdWV1ZV9lbmFibGUgY29kZSwgSSB0aGluayBpdCBmYWlscyB3aGVuIGNoZWNraW5nIGlm IG90aGVyIHF1ZXVlcyBhcmUgc3RvcHBlZCBhcyB3ZWxsLg0KICAgIC8qIGNoZWNrIGlmIG90aGVy IHF1ZXVlcyBhcmUgc3RvcHBlZCBhcyB3ZWxsICovDQogICAgcmV0ID0gY2ZnX3F1ZXVlc19zdG9w cGVkKGxjb3JlX2NmZyk7DQogICAgaWYgKHJldCAhPSAxKSB7DQogICAgICAgIC8qIGVycm9yIG1l YW5zIGludmFsaWQgcXVldWUsIDAgbWVhbnMgcXVldWUgd2Fzbid0IHN0b3BwZWQgKi8NCiAgICAg ICAgcmV0ID0gcmV0IDwgMCA/IC1FSU5WQUwgOiAtRUJVU1k7DQogICAgICAgIGdvdG8gZW5kOw0K ICAgIH0NClRoaXMgc2VlbXMgcXVpdGUgc3RyYW5nZSBmb3IgbWUsIHdoeSBvdGhlciBxdWV1ZXMg aGF2ZSB0byBiZSBpbiBzdG9wcGVkIHN0YXRlPw0KQ2FuIGFueW9uZSBoZWxwIHRvIGV4cGxhaW4/ DQoNClRoYW5rIHlvdS4NCg0KDQpCciwgWGlhb3BpbmcNCg0K --_000_4da7b78195454d6f823a983d71310c5dnokiasbellcom_ Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: quoted-printable

Hi,

 

Thank you for the information.<= o:p>

I see from rte_eth_add_rx_callb= ack, the callback is added to per queue data: rte_eth_devices[port_id].post= _rx_burst_cbs[queue_id];

So it should not affect polling= on other queues?

 

 

Br, Xiaoping<= /p>

 

From: Burakov, Anatoly <anatoly.burakov@intel.com>
Sent: 2023
=C4=EA2=D4=C220=C8=D5 18:28
To: Xiaoping Yan (NSB) <xiaoping.yan@nokia-sbell.com>; users@d= pdk.org
Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check i= f other queues are stopped

 

Hi,<= /o:p>

&nbs= p;

It is mai= nly because we=A1=AFre install callbacks, which is not thread-safe unless t= he PMD is stopped. Our PMD=A1=AFs internal config structures are not thread-safe. You should only start these ports after you configure= everything.

&nbs= p;

From: Xiaoping Yan (NSB) <xiaoping.yan@nokia-sbell.com>
Sent: Monday, February 20, 2023 6:12 AM
To: users@dpdk.org; Burakov, A= natoly <anatoly.burakov@int= el.com>
Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check i= f other queues are stopped

 

Hi Anatoly

 

I see this multiple queue suppo= rt is added by you.

Could you kindly help me to und= erstand why rte_power_ethdev_pmgmt_queue_enable need other queues to be in = stopped state?

 

commit 5dff9a72b0efeab02a2b71e5= 2c4871805b7e64cb

Author: Anatoly Burakov anatoly.burakov@intel.com

Date:   Fri Jul 9 16:= 08:15 2021 +0000

 

po= wer: support callbacks for multiple Rx queues

 

 

Thank you.

 

Br, Xiaoping<= /p>

 

From: Xiaoping Yan (NSB)
Sent: 2023
=C4=EA2=D4=C216=C8=D5 21:00
To: users@dpdk.org
Subject: why rte_power_ethdev_pmgmt_queue_enable need to check if ot= her queues are stopped

 

Hi experts,

 

I=A1=AFm trying to use dpdk power pmd management APIs in my dpdk application.<= o:p>

My application uses several por= ts, each have one rx queue, and it goes like this

1= .   &= nbsp; Init first port, setup = rx queue, call rte_power_ethdev_pmgmt_queue_enable, and start the first por= t

2= .   &= nbsp; Init second port, setup= rx queue, call rte_power_ethdev_pmgmt_queue_enable, and start the second p= ort

3= .   &= nbsp; =A1=AD

Now for the first port & qu= eue, rte_power_ethdev_pmgmt_queue_enable return success, but for the second= port & queue, it returns -16

From rte_power_ethdev_pmgmt_que= ue_enable code, I think it fails when checking if other queues are stopped = as well.

  &n= bsp; /* check if other queues are stopped as well */

  &n= bsp; ret =3D cf= g_queues_stopped(lcore_cfg);

  &n= bsp; if (ret !=3D 1) {

  &n= bsp;     /* error means invalid queue, 0 means queue wasn't stopp= ed */

  &n= bsp;     ret =3D re= t = < 0<= /span> ? = -EINVAL : -EBUSY;

  &n= bsp;     goto en= d;=

  &n= bsp; }

This seems quite strange for me= , why other queues have to be in stopped state?

Can anyone help to explain?

 

Thank you.

 

 

Br, Xiaoping<= /p>

 

--_000_4da7b78195454d6f823a983d71310c5dnokiasbellcom_-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A7EB641CEC for ; Mon, 20 Feb 2023 14:59:10 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8580943054; Mon, 20 Feb 2023 14:59:10 +0100 (CET) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mails.dpdk.org (Postfix) with ESMTP id 4B78940395 for ; Mon, 20 Feb 2023 14:59:09 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1676901549; x=1708437549; h=from:to:subject:date:message-id:references:in-reply-to: mime-version; bh=gGUeEHdnpeLZRSPncEjCM1fNUiwYp7y3TTvGSTUm+Pk=; b=k67MyczptWKumaHwmvKOxK807brJF9uCKVzHBG9YHXq/8fGUEquZZ32R lpwqIGjR8GeS3YHlo710b3sCSN7b5+rtN+ztUd37qTBEF/SMp8of2gNJw 37cTEZ3kWSRgoSDrfxrPWAxboiCJA9Os4DsA6uEQkv+Sc/mfjXNBYt1V0 S7+PPKfk1FNfDa2nQIutNFbzfpp/gfV+xokJxXbxnm0GmpeXGWNognxzR eABLYJKK2TZQsK5JOg6ljNBzvC9M96AE06icwNm5E2YMnH3sPZyQmoR/x H3hFgcMBusW4XHLToORUo/VSBLdEHEfqYH8h2z9H6VIEPaVDxr8/npS92 w==; X-IronPort-AV: E=McAfee;i="6500,9779,10627"; a="418624824" X-IronPort-AV: E=Sophos;i="5.97,312,1669104000"; d="scan'208,217";a="418624824" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Feb 2023 05:59:07 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10627"; a="701671042" X-IronPort-AV: E=Sophos;i="5.97,312,1669104000"; d="scan'208,217";a="701671042" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga008.jf.intel.com with ESMTP; 20 Feb 2023 05:59:07 -0800 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Mon, 20 Feb 2023 05:59:06 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Mon, 20 Feb 2023 05:59:06 -0800 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.177) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Mon, 20 Feb 2023 05:59:05 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XwqS7MNzApVwA10ia90n7jjQ53YDndeGNTjbCtKh+lyd0HaoUfovT+eF+ZH/aeBjY9+RYdfqJVZp/djwGO0No1qvUs0eG7tGwkEowimAZaF3iyplkZWYRkVJhp3yi6PsOxc1BBw8wNdR8ivF5XDdvleAFReac9Z3Zy8ktBLKbW4IWDf4/OH1GLKrS9lhfhNsIyFvlFFk0ewVBNsjXOlR94nxFyYAYfagD5X/Lu5r5gEPOzAI28grDSUDW0XCi1vP2svdJZUR2OvdyN5dA8Krx1cuIS9ksDryz/72El89nSjJk1YiVR9b8AICXohHSIIbHtc2H20Yog0J8s4zIgdw1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xoJYl+TMw02QvsOVHR8sG6uy1RSlua3rl29rnWpeqsQ=; b=PsF261jQSAa0uSn6jiUl8iYIKC4jsYk0B2Mbne4EvMvG4WLBaP+q+MesZv+z7c+LHv6daGhrw+y65YF2iHaXOhvcoA1rMLgOB+yvXQ6He34ZP6Cdgdc3rf750rWb3HErmxTywoX0+4Xufn/qafGApCC95MEY9e0UwTegl0z+ZF0tzlShWuvDcQnuvanW0wQ62gv04nxvu5ssshtPknK+3o1YbdKpLj98LNM4iv3nciGcx7UIoQZIfuePaha9bWPF9EydU8jYOZhoaNCvC6WXhx2M/+3F9Ne2uuePZzEu7I0YuaGj2USxtDAy3j1lH1KLdUMeTcJcgZgYJfVOiKl4dQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BN6PR11MB1251.namprd11.prod.outlook.com (2603:10b6:404:48::10) by CO1PR11MB5153.namprd11.prod.outlook.com (2603:10b6:303:95::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.13; Mon, 20 Feb 2023 13:59:02 +0000 Received: from BN6PR11MB1251.namprd11.prod.outlook.com ([fe80::b966:2d41:ca2e:6871]) by BN6PR11MB1251.namprd11.prod.outlook.com ([fe80::b966:2d41:ca2e:6871%6]) with mapi id 15.20.6111.020; Mon, 20 Feb 2023 13:59:02 +0000 From: "Burakov, Anatoly" To: "Xiaoping Yan (NSB)" , "users@dpdk.org" Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check if other queues are stopped Thread-Topic: why rte_power_ethdev_pmgmt_queue_enable need to check if other queues are stopped Thread-Index: AdlCBFLV8QoElG47QfeDBKVxvG5wigC7XY2wAAj7pdAABqvI0AAAK9qQ Date: Mon, 20 Feb 2023 13:59:01 +0000 Message-ID: References: <0c6664b4318142df94531165fb2acf94@nokia-sbell.com> <0684cc0bac6f4b4996899b1dd9eafbf4@nokia-sbell.com> <4da7b78195454d6f823a983d71310c5d@nokia-sbell.com> In-Reply-To: <4da7b78195454d6f823a983d71310c5d@nokia-sbell.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BN6PR11MB1251:EE_|CO1PR11MB5153:EE_ x-ms-office365-filtering-correlation-id: 558a652d-591c-4c55-fab5-08db134a9eec x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 6LEkhqNOTOhcthAqFoRGzAd2BQx603pMgfIS5UwBVeHnn4VbiMxbQgnCyxUcGSeI03qw/XXgxXdHFWUr0WiXXm9ONByF/smY593288G2Z3+dC1tKpjku+J2LBrbaPx+WSmyaYHVTPVVnLoIMy8G4Oshr4JvMTEqCtGK5SQXI3xmyEbd4cyK9arOFK9k2rXKVhB0R4JZU8EOHrBWymS6zwRLiveDbDSUl7UyhusjS1Ua+DjnEih005gUZ7wdQvGVokZfAVIag6gy3Ub1/nfteZeR2VGErHlof/vsUo6Zovo9KikeFTT3DA/QwCLO4s8K6Z9COXzr4f7LVDNFFaCdzUW0stdyd2rHexecheO5nF7sG+1fDt0M+xWuyyLzQZyt7ERyMdBIaz3lEYLs4btYLOMQzbnKtbsj1J/+q8cY/+rUHBx8ZS7CxOEAB8Bev+IrDIXElv/iHtR9wgTaV87lzKS2hbcbMIzWQ2d3U4gpgzY37SFcQRZGVOGhmx/ZVP8vGArgcOT8+kulTPD0ThjViQvxbu5Urri0zwn/oYIf6SP1zlwekYGdpp1GTxk7uXRzOfPFstg377NDII681/TZO4aIGBRExv54debakUcWAxMTChNxUyvrGopXxFX97xWiePL3PT1ZBZMoWaqdBHph7V2nrPFRPMa02rPhd1Rywop+JvQBCNnKNdetl8KUQQoPE2e3LH4lEWPgB5swkfJdXjQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN6PR11MB1251.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(366004)(376002)(396003)(39860400002)(136003)(346002)(451199018)(55016003)(71200400001)(186003)(53546011)(6506007)(26005)(478600001)(7696005)(9686003)(2906002)(316002)(110136005)(5660300002)(52536014)(66946007)(41300700001)(66476007)(8936002)(64756008)(66556008)(122000001)(33656002)(38100700002)(76116006)(66446008)(86362001)(38070700005)(82960400001)(8676002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-2022-jp?B?TTZUQzBqdy9BalNEdHc1RVZXbXJrSDQvZVFFQktIV0lsS3ZRVG9YVERI?= =?iso-2022-jp?B?ZmdyazNqTXhhMWlqcGQrOFdOdEs5WS9HalIrd0k0bTZRN1dLbXhjSW9u?= =?iso-2022-jp?B?VlAzN3dHYWYxL2VzbmZ6RmFlazMvcmZRNGRRTkNUUk1iMDcvcFNhUWN1?= =?iso-2022-jp?B?NkxVdmUwRzZRMkMwNG01MlFEUjJVeFJ3Mzl6K3Z6SWF6SE05Rnhzdkxq?= =?iso-2022-jp?B?K2ZSSG1Gdnc2bEU1UkJTWnhubnd4WlBWd2c0Yi8yMzVOZzFuSVc0ZzFQ?= =?iso-2022-jp?B?Rk9ESnNkQWlpRERvS3Z2NnNybDVGS2RSeUF3WFBiZ0tpN0kyeElVemsw?= =?iso-2022-jp?B?cE16Z1k5VHpGTitpYkp5MUwvYllDMlJiYnZna1kyOFczVDRFUmFWNFR0?= =?iso-2022-jp?B?Uk4zeTNCQUZEM0x5YWF0eVhKQkIzZTdWMXYvNWd2WWxYa3pxN3d2YVox?= =?iso-2022-jp?B?WEozanp1c3JQYktrN05kcFdqclhOV0ZuWnNkVnNvWEhQbEcyNHV3Tk9R?= =?iso-2022-jp?B?cVRYNHZGTVlCdGlLbVJSY2EvUStWMlBnZE4rcXZGMFk1WFlweUVYTjli?= =?iso-2022-jp?B?czl0U0xFeHpjT0VIdjdsU0ZkVnV5aFNrbkpDUFdpd1N3Z09rWWRNS2lU?= =?iso-2022-jp?B?Mng0MCtGYWJIbXpIVTZ3NGFjcm4wVFNuWm5VZm1rZFFBTWNSVDlHOXE5?= =?iso-2022-jp?B?NjZXQXY5aklFL2ZmVlhFd3JEN05URE0yMlZEY1BuMGhnbFVzYVhzZVNV?= =?iso-2022-jp?B?KzN3MW9NLzJVdWo0TTRTc1lXeFRnY3lrM29QZ3lHOFBLaDNFV1BJaGZK?= =?iso-2022-jp?B?ZGhjWXhvN1NSQjhkWEI1WDhxY1g5K29ITUF3UmNMRHVUcjF1cWhTczF6?= =?iso-2022-jp?B?aVdueFB2WGFjZXZ1S1VlNkZHbmt1alpiWWp4bXpNWTNsd0JtUVBUYmE3?= =?iso-2022-jp?B?NFBRR1ZiYmwzeHpGaVU1SEVXNzdaVnJGMVA5SG9tV3RZY3NpcUdscWZX?= =?iso-2022-jp?B?K21ua0hoa2xqKyt0ODhKYU1YdXJiN3V6MzJYdm1wTVZpZFpTMk1IYlRY?= =?iso-2022-jp?B?Q3M5Y3FGVHBicGZKQmgxRzBSNllrZ093TkVpWU0wMGw4anppRno1Ti9C?= =?iso-2022-jp?B?MHg4WnNKamhqaDFPYmI0YytQZ3RrdHlMRHpBVis0MmdwUXBYZUdEWUhI?= =?iso-2022-jp?B?ZWRyT2FGWGRBbERtcmFGbjR3WTR5QTIrTll3eWtmWENmb2FHeG1YMFlr?= =?iso-2022-jp?B?YWE2R0lxWjVMajlJRDRUcmN5eEErZDVWRW1hNlJSMEVzckhGS3hKVUVP?= =?iso-2022-jp?B?Y0FzZHlUUStmRzIzOEdwOUM0NTBpU0szaU5HYkpTWE5QZGc2blZ1UWxZ?= =?iso-2022-jp?B?S0QvWmVNTFRIOFd0cGFSTEluckhVcU9GNXlhNURKNFFNcDVTZTBIRytW?= =?iso-2022-jp?B?ancxZlF3RkxmcWpTaXVlMm9qUURXUVNzQ3Q1MW5JL3cyMnk2SmhsRFB1?= =?iso-2022-jp?B?TXRLd3pLV21UcWhxR3A2OHZ4L3pGZHJsZzVyNTBENnJGbm91Z2dFbEFC?= =?iso-2022-jp?B?dDRoWUZFVFJrU2dONmNqT1cyY0RUbkxDTUVYUlBtNXpJS2IyRVQ3c0VG?= =?iso-2022-jp?B?cjlEY2J6dnZnNFRxSG45YmFxbFJaK3hva254UHBrZXJhWFU3TVNuZExN?= =?iso-2022-jp?B?cTVzbVhlcmpjUWpBandlMlRYZXVJZ0dDZzF0TXRhdndpeEhLYW1ZRXda?= =?iso-2022-jp?B?WTBHZmpjd0JGYUZ0cEVWcUt4S2lOMHg1a0Y0R0tQbDk5OGR4MzcrSGEr?= =?iso-2022-jp?B?cGh0TEZ4TUJyUkc3ejFINzdSYlIxWUt2RVFwaWNtTG51VXpNR2VwUlJK?= =?iso-2022-jp?B?dW1xemMzanNnWjNsSXE4djg5WEhxWExOaXMxcXc1YnE4akxaUG43cHpx?= =?iso-2022-jp?B?MG5XSTVaUXFoeE5oelRyekw4VXBIdUxZUVF2Y1U1QlJtN1QrdHhybEFY?= =?iso-2022-jp?B?MjBWL2h6YUV5cVZKZ3ZQVldwY3pjUlJzUHpuR3VFYlZubklHYXRXZDht?= =?iso-2022-jp?B?UFQvaDY4UlpGZzg0OTZJUi9vNWE4WEJBL3k3RGtZR0VKdjh6VU8zdzQr?= =?iso-2022-jp?B?TURPd2gwOFVnazNqVTBicjBVUWdSeTYwSndmV3R1LzZJSzI3RGhXVUs5?= =?iso-2022-jp?B?YmZ1dG5WYU5mczd0S29kWk5hVG9FdG92VzdkM0NvVDN0cGk2OHZmcTEw?= =?iso-2022-jp?B?T2V1Y01mSzFlbUswVWxRRy9sdStRU0N1U3ozZFBTN0ZvVkpwdmZKM3VI?= =?iso-2022-jp?B?cHJWQWJPWjhuUU1aN2JTdEJKTFBGTStzaVE9PQ==?= Content-Type: multipart/alternative; boundary="_000_BN6PR11MB1251C7D9C2D78CE47F8E50A5F7A49BN6PR11MB1251namp_" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN6PR11MB1251.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 558a652d-591c-4c55-fab5-08db134a9eec X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Feb 2023 13:59:01.7426 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ZwGBuiBUtZGViKE91ycP+Yu+NvGKx1nEjffbryq2cMSjXiFg84UL958mDE1JJcGPWIHDsvzX92ElR8JGfNyR8DD2aEIoEOsvgTLd5b15pW4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR11MB5153 X-OriginatorOrg: intel.com X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org --_000_BN6PR11MB1251C7D9C2D78CE47F8E50A5F7A49BN6PR11MB1251namp_ Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable Well, technically, no, you=1B$B!G=1B(Bre right, it wouldn=1B$B!G=1B(Bt - no= t unless you start polling those queues from some other thread. We can=1B$B= !G=1B(Bt prevent that from happening, so we figured the best way would be t= o just disallow queue starts until we=1B$B!G=1B(Bre done configuring everyt= hing. So, yes, we could relax that restriction, it=1B$B!G=1B(Bs just a matt= er of specifying what=1B$B!G=1B(Bs allowed and what=1B$B!G=1B(Bs not vs. ju= st doing a blanket =1B$B!H=1B(Bno=1B$B!I=1B(B and keeping things simple. From: Xiaoping Yan (NSB) Sent: Monday, February 20, 2023 1:41 PM To: Burakov, Anatoly ; users@dpdk.org Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check if other= queues are stopped Hi, Thank you for the information. I see from rte_eth_add_rx_callback, the callback is added to per queue data= : rte_eth_devices[port_id].post_rx_burst_cbs[queue_id]; So it should not affect polling on other queues? Br, Xiaoping From: Burakov, Anatoly > Sent: 2023=1B$BG/=1B(B2=1B$B7n=1B(B20=1B$BF|=1B(B 18:28 To: Xiaoping Yan (NSB) >; users@dpdk.org Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check if other= queues are stopped Hi, It is mainly because we=1B$B!G=1B(Bre install callbacks, which is not threa= d-safe unless the PMD is stopped. Our PMD=1B$B!G=1B(Bs internal config stru= ctures are not thread-safe. You should only start these ports after you con= figure everything. From: Xiaoping Yan (NSB) > Sent: Monday, February 20, 2023 6:12 AM To: users@dpdk.org; Burakov, Anatoly > Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check if other= queues are stopped Hi Anatoly I see this multiple queue support is added by you. Could you kindly help me to understand why rte_power_ethdev_pmgmt_queue_ena= ble need other queues to be in stopped state? commit 5dff9a72b0efeab02a2b71e52c4871805b7e64cb Author: Anatoly Burakov anatoly.burakov@intel.com Date: Fri Jul 9 16:08:15 2021 +0000 power: support callbacks for multiple Rx queues Thank you. Br, Xiaoping From: Xiaoping Yan (NSB) Sent: 2023=1B$BG/=1B(B2=1B$B7n=1B(B16=1B$BF|=1B(B 21:00 To: users@dpdk.org Subject: why rte_power_ethdev_pmgmt_queue_enable need to check if other que= ues are stopped Hi experts, I=1B$B!G=1B(Bm trying to use dpdk power pmd management APIs in my dpdk appl= ication. My application uses several ports, each have one rx queue, and it goes like= this 1. Init first port, setup rx queue, call rte_power_ethdev_pmgmt_queue_e= nable, and start the first port 2. Init second port, setup rx queue, call rte_power_ethdev_pmgmt_queue_= enable, and start the second port 3. =1B$B!D=1B(B Now for the first port & queue, rte_power_ethdev_pmgmt_queue_enable return = success, but for the second port & queue, it returns -16 >From rte_power_ethdev_pmgmt_queue_enable code, I think it fails when checki= ng if other queues are stopped as well. /* check if other queues are stopped as well */ ret =3D cfg_queues_stopped(lcore_cfg); if (ret !=3D 1) { /* error means invalid queue, 0 means queue wasn't stopped */ ret =3D ret < 0 ? -EINVAL : -EBUSY; goto end; } This seems quite strange for me, why other queues have to be in stopped sta= te? Can anyone help to explain? Thank you. Br, Xiaoping --_000_BN6PR11MB1251C7D9C2D78CE47F8E50A5F7A49BN6PR11MB1251namp_ Content-Type: text/html; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable

Well, technically, no, you=1B$B!G=1B(Bre right, it wouldn=1B$B!G=1B(Bt = 211; not unless you start polling those queues from some other thread. We c= an=1B$B!G=1B(Bt prevent that from happening, so we figured the best way wou= ld be to just disallow queue starts until we=1B$B!G=1B(Bre done configuring= everything. So, yes, we could relax that restriction, it=1B$B!G=1B(Bs just a matter of= specifying what=1B$B!G=1B(Bs allowed and what=1B$B!G=1B(Bs not vs. just do= ing a blanket =1B$B!H=1B(Bno=1B$B!I=1B(B and keeping things simple.

 =

From: Xiaoping Yan (NSB) <xiaoping.ya= n@nokia-sbell.com>
Sent: Monday, February 20, 2023 1:41 PM
To: Burakov, Anatoly <anatoly.burakov@intel.com>; users@dpdk.o= rg
Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check i= f other queues are stopped

 =

Hi,

 

Thank you for the information.<= o:p>

I see from rte_eth_add_rx_callb= ack, the callback is added to per queue data: rte_eth_devices[port_id].post= _rx_burst_cbs[queue_id];

So it should not affect polling= on other queues?

 

 

Br, Xiaoping<= /p>

 

From: Burakov, Anatoly <anatoly.= burakov@intel.com>
Sent: 2023
=1B$BG/=1B(= B2=1B$B7n=1B(B20=1B$BF|=1B(B 18:28
To: Xiaoping Yan (NSB) <xiaoping.yan@nokia-sbell.com>; users@dpdk.org
Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check i= f other queues are stopped

 

Hi,

 =

It is mainly because we= =1B$B!G=1B(Bre install callbacks, which is not thread-safe unless the PMD i= s stopped. Our PMD=1B$B!G=1B(Bs internal config structures are not thread-s= afe. You should only start these ports after you configure everything.

 =

From: Xiaoping Yan (NSB) <xiaoping.yan@nokia-sbell.com>
Sent: Monday, February 20, 2023 6:12 AM
To: users@dpdk.org; Burakov, A= natoly <anatoly.burakov@int= el.com>
Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check i= f other queues are stopped

 =

Hi Anatoly

 

I see this multiple queue suppo= rt is added by you.

Could you kindly help me to und= erstand why rte_power_ethdev_pmgmt_queue_enable need other queues to be in = stopped state?

 

commit 5dff9a72b0efeab02a2b71e5= 2c4871805b7e64cb

Author: Anatoly Burakov anatoly.burakov@intel.com

Date:   Fri Jul 9 16:= 08:15 2021 +0000

 

po= wer: support callbacks for multiple Rx queues

 

 

Thank you.

 

Br, Xiaoping<= /p>

 

From: Xiaoping Yan (NSB)
Sent: 2023
=1B$BG/=1B(B2=1B$B7n=1B(B16=1B$BF|=1B(B 21:00
To: users@dpdk.org
Subject: why rte_power_ethdev_pmgmt_queue_enable need to check if ot= her queues are stopped

 

Hi experts,

 

I= =1B$B!G=1B(Bm trying to use dpdk power pmd mana= gement APIs in my dpdk application.

My application uses several por= ts, each have one rx queue, and it goes like this

1= .   &= nbsp; Init first port, setup = rx queue, call rte_power_ethdev_pmgmt_queue_enable, and start the first por= t

2= .   &= nbsp; Init second port, setup= rx queue, call rte_power_ethdev_pmgmt_queue_enable, and start the second p= ort

3= .   &= nbsp; =1B$B!D=1B(B

Now for the first port & qu= eue, rte_power_ethdev_pmgmt_queue_enable return success, but for the second= port & queue, it returns -16

From rte_power_ethdev_pmgmt_que= ue_enable code, I think it fails when checking if other queues are stopped = as well.

  &n= bsp; /* check if other queues are stopped as well */

  &n= bsp; ret =3D cf= g_queues_stopped(lcore_cfg);

  &n= bsp; if (ret !=3D 1) {

  &n= bsp;     /* error means invalid queue, 0 means queue wasn't stopp= ed */

  &n= bsp;     ret =3D re= t = < 0<= /span> ? = -EINVAL : -EBUSY;

  &n= bsp;     goto en= d;=

  &n= bsp; }

This seems quite strange for me= , why other queues have to be in stopped state?

Can anyone help to explain?

 

Thank you.

 

 

Br, Xiaoping<= /p>

 

--_000_BN6PR11MB1251C7D9C2D78CE47F8E50A5F7A49BN6PR11MB1251namp_-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id AE6B541CEC for ; Mon, 20 Feb 2023 15:10:35 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7A2E74305D; Mon, 20 Feb 2023 15:10:35 +0100 (CET) Received: from CNSHPPMGWESA01.NOKIA-SBELL.COM (unknown [116.246.26.71]) by mails.dpdk.org (Postfix) with ESMTP id 017FB40395 for ; Mon, 20 Feb 2023 15:10:32 +0100 (CET) X-IronPort-AV: E=Sophos;i="5.97,312,1669046400"; d="scan'208,217";a="11007425" Received: from unknown (HELO CNSHPPEXCH1601.nsn-intra.net) ([135.251.51.101]) by CNSHPPMGWESA01.NOKIA-SBELL.COM with ESMTP; 20 Feb 2023 22:10:24 +0800 Received: from CNSHPPEXCH1601.nsn-intra.net (135.251.51.101) by CNSHPPEXCH1601.nsn-intra.net (135.251.51.101) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Mon, 20 Feb 2023 22:10:24 +0800 Received: from CNSHPPEXCH1601.nsn-intra.net ([135.251.51.101]) by CNSHPPEXCH1601.nsn-intra.net ([135.251.51.101]) with mapi id 15.01.2375.034; Mon, 20 Feb 2023 22:10:23 +0800 From: "Xiaoping Yan (NSB)" To: "Burakov, Anatoly" , "users@dpdk.org" Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check if other queues are stopped Thread-Topic: why rte_power_ethdev_pmgmt_queue_enable need to check if other queues are stopped Thread-Index: AdlCBFLV8QoElG47QfeDBKVxvG5wigC7XY2wAAj7pdAABqvI0AAAK9qQAACsWAA= Date: Mon, 20 Feb 2023 14:10:23 +0000 Message-ID: <3c01d07600754a8096b736610522b754@nokia-sbell.com> References: <0c6664b4318142df94531165fb2acf94@nokia-sbell.com> <0684cc0bac6f4b4996899b1dd9eafbf4@nokia-sbell.com> <4da7b78195454d6f823a983d71310c5d@nokia-sbell.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [135.251.51.115] Content-Type: multipart/alternative; boundary="_000_3c01d07600754a8096b736610522b754nokiasbellcom_" MIME-Version: 1.0 X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org --_000_3c01d07600754a8096b736610522b754nokiasbellcom_ Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGksDQoNCj4+IG5vdCB1bmxlc3MgeW91IHN0YXJ0IHBvbGxpbmcgdGhvc2UgcXVldWVzIGZyb20g c29tZSBvdGhlciB0aHJlYWQNCkkgZG9uoa90IHVuZGVyc3RhbmQgdGhpcyBwb2ludC4NCkFzIHRo ZSByeCBjYWxsYmFjayBpcyBwZXIgcXVldWUgZGF0YSwgaXQgc2VlbXMgdG8gbWUgb25seSB0aGlu ZyBpcyB3ZSBzaG91bGQgbm90IHBvbGxpbmcgdGhpcyBxdWV1ZSAgd2hpbGUgd2UgYXJlIG1vZGlm eSBpdHMgY2FsbGJhY2suIFNvIG9ubHkgdGhpcyBxdWV1ZSBzaG91bGQgYmUgaW4gc3RvcHBlZCBz dGF0ZSAobWF5YmUgZXZlbiB0aGlzIGlzIG5vdCByZXF1aXJlZD8gQmVjYXVzZSBJIHNlZSBhdG9t aWMgb3BlcmF0aW9uIGlzIHVzZWQgKF9fYXRvbWljX3N0b3JlX24gaW4gcnRlX2V0aF9hZGRfcnhf Y2FsbGJhY2sgYW5kIF9fYXRvbWljX2xvYWRfbiBpbiBydGVfZXRoX3J4X2J1cnN0KSkuDQpBbnl3 YXksIHBvbGxpbmcgb3RoZXIgcXVldWVzIG9uIHNvbWUgb3RoZXIgdGhyZWFkIHNob3VsZCBub3Qg YWZmZWN0LCByaWdodD8gT3IgY2FuIHlvdSBoZWxwIHRvIGV4cGxhaW4gYSBiaXQgbW9yZSBvbiB0 aGlzPw0KDQpUaGFuayB5b3UgdmVyeSBtdWNoLg0KDQpCciwgWGlhb3BpbmcNCg0KRnJvbTogQnVy YWtvdiwgQW5hdG9seSA8YW5hdG9seS5idXJha292QGludGVsLmNvbT4NClNlbnQ6IDIwMjPE6jLU wjIwyNUgMjE6NTkNClRvOiBYaWFvcGluZyBZYW4gKE5TQikgPHhpYW9waW5nLnlhbkBub2tpYS1z YmVsbC5jb20+OyB1c2Vyc0BkcGRrLm9yZw0KU3ViamVjdDogUkU6IHdoeSBydGVfcG93ZXJfZXRo ZGV2X3BtZ210X3F1ZXVlX2VuYWJsZSBuZWVkIHRvIGNoZWNrIGlmIG90aGVyIHF1ZXVlcyBhcmUg c3RvcHBlZA0KDQpXZWxsLCB0ZWNobmljYWxseSwgbm8sIHlvdaGvcmUgcmlnaHQsIGl0IHdvdWxk bqGvdCCoQyBub3QgdW5sZXNzIHlvdSBzdGFydCBwb2xsaW5nIHRob3NlIHF1ZXVlcyBmcm9tIHNv bWUgb3RoZXIgdGhyZWFkLiBXZSBjYW6hr3QgcHJldmVudCB0aGF0IGZyb20gaGFwcGVuaW5nLCBz byB3ZSBmaWd1cmVkIHRoZSBiZXN0IHdheSB3b3VsZCBiZSB0byBqdXN0IGRpc2FsbG93IHF1ZXVl IHN0YXJ0cyB1bnRpbCB3ZaGvcmUgZG9uZSBjb25maWd1cmluZyBldmVyeXRoaW5nLiBTbywgeWVz LCB3ZSBjb3VsZCByZWxheCB0aGF0IHJlc3RyaWN0aW9uLCBpdKGvcyBqdXN0IGEgbWF0dGVyIG9m IHNwZWNpZnlpbmcgd2hhdKGvcyBhbGxvd2VkIGFuZCB3aGF0oa9zIG5vdCB2cy4ganVzdCBkb2lu ZyBhIGJsYW5rZXQgobBub6GxIGFuZCBrZWVwaW5nIHRoaW5ncyBzaW1wbGUuDQoNCkZyb206IFhp YW9waW5nIFlhbiAoTlNCKSA8eGlhb3BpbmcueWFuQG5va2lhLXNiZWxsLmNvbTxtYWlsdG86eGlh b3BpbmcueWFuQG5va2lhLXNiZWxsLmNvbT4+DQpTZW50OiBNb25kYXksIEZlYnJ1YXJ5IDIwLCAy MDIzIDE6NDEgUE0NClRvOiBCdXJha292LCBBbmF0b2x5IDxhbmF0b2x5LmJ1cmFrb3ZAaW50ZWwu Y29tPG1haWx0bzphbmF0b2x5LmJ1cmFrb3ZAaW50ZWwuY29tPj47IHVzZXJzQGRwZGsub3JnPG1h aWx0bzp1c2Vyc0BkcGRrLm9yZz4NClN1YmplY3Q6IFJFOiB3aHkgcnRlX3Bvd2VyX2V0aGRldl9w bWdtdF9xdWV1ZV9lbmFibGUgbmVlZCB0byBjaGVjayBpZiBvdGhlciBxdWV1ZXMgYXJlIHN0b3Bw ZWQNCg0KSGksDQoNClRoYW5rIHlvdSBmb3IgdGhlIGluZm9ybWF0aW9uLg0KSSBzZWUgZnJvbSBy dGVfZXRoX2FkZF9yeF9jYWxsYmFjaywgdGhlIGNhbGxiYWNrIGlzIGFkZGVkIHRvIHBlciBxdWV1 ZSBkYXRhOiBydGVfZXRoX2RldmljZXNbcG9ydF9pZF0ucG9zdF9yeF9idXJzdF9jYnNbcXVldWVf aWRdOw0KU28gaXQgc2hvdWxkIG5vdCBhZmZlY3QgcG9sbGluZyBvbiBvdGhlciBxdWV1ZXM/DQoN Cg0KQnIsIFhpYW9waW5nDQoNCkZyb206IEJ1cmFrb3YsIEFuYXRvbHkgPGFuYXRvbHkuYnVyYWtv dkBpbnRlbC5jb208bWFpbHRvOmFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb20+Pg0KU2VudDogMjAy M8TqMtTCMjDI1SAxODoyOA0KVG86IFhpYW9waW5nIFlhbiAoTlNCKSA8eGlhb3BpbmcueWFuQG5v a2lhLXNiZWxsLmNvbTxtYWlsdG86eGlhb3BpbmcueWFuQG5va2lhLXNiZWxsLmNvbT4+OyB1c2Vy c0BkcGRrLm9yZzxtYWlsdG86dXNlcnNAZHBkay5vcmc+DQpTdWJqZWN0OiBSRTogd2h5IHJ0ZV9w b3dlcl9ldGhkZXZfcG1nbXRfcXVldWVfZW5hYmxlIG5lZWQgdG8gY2hlY2sgaWYgb3RoZXIgcXVl dWVzIGFyZSBzdG9wcGVkDQoNCkhpLA0KDQpJdCBpcyBtYWlubHkgYmVjYXVzZSB3ZaGvcmUgaW5z dGFsbCBjYWxsYmFja3MsIHdoaWNoIGlzIG5vdCB0aHJlYWQtc2FmZSB1bmxlc3MgdGhlIFBNRCBp cyBzdG9wcGVkLiBPdXIgUE1Eoa9zIGludGVybmFsIGNvbmZpZyBzdHJ1Y3R1cmVzIGFyZSBub3Qg dGhyZWFkLXNhZmUuIFlvdSBzaG91bGQgb25seSBzdGFydCB0aGVzZSBwb3J0cyBhZnRlciB5b3Ug Y29uZmlndXJlIGV2ZXJ5dGhpbmcuDQoNCkZyb206IFhpYW9waW5nIFlhbiAoTlNCKSA8eGlhb3Bp bmcueWFuQG5va2lhLXNiZWxsLmNvbTxtYWlsdG86eGlhb3BpbmcueWFuQG5va2lhLXNiZWxsLmNv bT4+DQpTZW50OiBNb25kYXksIEZlYnJ1YXJ5IDIwLCAyMDIzIDY6MTIgQU0NClRvOiB1c2Vyc0Bk cGRrLm9yZzxtYWlsdG86dXNlcnNAZHBkay5vcmc+OyBCdXJha292LCBBbmF0b2x5IDxhbmF0b2x5 LmJ1cmFrb3ZAaW50ZWwuY29tPG1haWx0bzphbmF0b2x5LmJ1cmFrb3ZAaW50ZWwuY29tPj4NClN1 YmplY3Q6IFJFOiB3aHkgcnRlX3Bvd2VyX2V0aGRldl9wbWdtdF9xdWV1ZV9lbmFibGUgbmVlZCB0 byBjaGVjayBpZiBvdGhlciBxdWV1ZXMgYXJlIHN0b3BwZWQNCg0KSGkgQW5hdG9seQ0KDQpJIHNl ZSB0aGlzIG11bHRpcGxlIHF1ZXVlIHN1cHBvcnQgaXMgYWRkZWQgYnkgeW91Lg0KQ291bGQgeW91 IGtpbmRseSBoZWxwIG1lIHRvIHVuZGVyc3RhbmQgd2h5IHJ0ZV9wb3dlcl9ldGhkZXZfcG1nbXRf cXVldWVfZW5hYmxlIG5lZWQgb3RoZXIgcXVldWVzIHRvIGJlIGluIHN0b3BwZWQgc3RhdGU/DQoN CmNvbW1pdCA1ZGZmOWE3MmIwZWZlYWIwMmEyYjcxZTUyYzQ4NzE4MDViN2U2NGNiDQpBdXRob3I6 IEFuYXRvbHkgQnVyYWtvdiBhbmF0b2x5LmJ1cmFrb3ZAaW50ZWwuY29tPG1haWx0bzphbmF0b2x5 LmJ1cmFrb3ZAaW50ZWwuY29tPg0KRGF0ZTogICBGcmkgSnVsIDkgMTY6MDg6MTUgMjAyMSArMDAw MA0KDQpwb3dlcjogc3VwcG9ydCBjYWxsYmFja3MgZm9yIG11bHRpcGxlIFJ4IHF1ZXVlcw0KDQoN ClRoYW5rIHlvdS4NCg0KQnIsIFhpYW9waW5nDQoNCkZyb206IFhpYW9waW5nIFlhbiAoTlNCKQ0K U2VudDogMjAyM8TqMtTCMTbI1SAyMTowMA0KVG86IHVzZXJzQGRwZGsub3JnPG1haWx0bzp1c2Vy c0BkcGRrLm9yZz4NClN1YmplY3Q6IHdoeSBydGVfcG93ZXJfZXRoZGV2X3BtZ210X3F1ZXVlX2Vu YWJsZSBuZWVkIHRvIGNoZWNrIGlmIG90aGVyIHF1ZXVlcyBhcmUgc3RvcHBlZA0KDQpIaSBleHBl cnRzLA0KDQpJoa9tIHRyeWluZyB0byB1c2UgZHBkayBwb3dlciBwbWQgbWFuYWdlbWVudCBBUElz IGluIG15IGRwZGsgYXBwbGljYXRpb24uDQpNeSBhcHBsaWNhdGlvbiB1c2VzIHNldmVyYWwgcG9y dHMsIGVhY2ggaGF2ZSBvbmUgcnggcXVldWUsIGFuZCBpdCBnb2VzIGxpa2UgdGhpcw0KDQoxLiAg ICAgSW5pdCBmaXJzdCBwb3J0LCBzZXR1cCByeCBxdWV1ZSwgY2FsbCBydGVfcG93ZXJfZXRoZGV2 X3BtZ210X3F1ZXVlX2VuYWJsZSwgYW5kIHN0YXJ0IHRoZSBmaXJzdCBwb3J0DQoNCjIuICAgICBJ bml0IHNlY29uZCBwb3J0LCBzZXR1cCByeCBxdWV1ZSwgY2FsbCBydGVfcG93ZXJfZXRoZGV2X3Bt Z210X3F1ZXVlX2VuYWJsZSwgYW5kIHN0YXJ0IHRoZSBzZWNvbmQgcG9ydA0KDQozLiAgICAgoa0N Ck5vdyBmb3IgdGhlIGZpcnN0IHBvcnQgJiBxdWV1ZSwgcnRlX3Bvd2VyX2V0aGRldl9wbWdtdF9x dWV1ZV9lbmFibGUgcmV0dXJuIHN1Y2Nlc3MsIGJ1dCBmb3IgdGhlIHNlY29uZCBwb3J0ICYgcXVl dWUsIGl0IHJldHVybnMgLTE2DQpGcm9tIHJ0ZV9wb3dlcl9ldGhkZXZfcG1nbXRfcXVldWVfZW5h YmxlIGNvZGUsIEkgdGhpbmsgaXQgZmFpbHMgd2hlbiBjaGVja2luZyBpZiBvdGhlciBxdWV1ZXMg YXJlIHN0b3BwZWQgYXMgd2VsbC4NCiAgICAvKiBjaGVjayBpZiBvdGhlciBxdWV1ZXMgYXJlIHN0 b3BwZWQgYXMgd2VsbCAqLw0KICAgIHJldCA9IGNmZ19xdWV1ZXNfc3RvcHBlZChsY29yZV9jZmcp Ow0KICAgIGlmIChyZXQgIT0gMSkgew0KICAgICAgICAvKiBlcnJvciBtZWFucyBpbnZhbGlkIHF1 ZXVlLCAwIG1lYW5zIHF1ZXVlIHdhc24ndCBzdG9wcGVkICovDQogICAgICAgIHJldCA9IHJldCA8 IDAgPyAtRUlOVkFMIDogLUVCVVNZOw0KICAgICAgICBnb3RvIGVuZDsNCiAgICB9DQpUaGlzIHNl ZW1zIHF1aXRlIHN0cmFuZ2UgZm9yIG1lLCB3aHkgb3RoZXIgcXVldWVzIGhhdmUgdG8gYmUgaW4g c3RvcHBlZCBzdGF0ZT8NCkNhbiBhbnlvbmUgaGVscCB0byBleHBsYWluPw0KDQpUaGFuayB5b3Uu DQoNCg0KQnIsIFhpYW9waW5nDQoNCg== --_000_3c01d07600754a8096b736610522b754nokiasbellcom_ Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: quoted-printable

Hi,

 

>> not unless you start poll= ing those queues from some other thread

I don=A1=AFt understand this point.<= o:p>

As the rx callback is per queue data= , it seems to me only thing is we should not polling this queue  while= we are modify its callback. So only this queue should be in stopped state (maybe even this is not required? Because I see atomic= operation is used (__atomic_store_n in rte_eth_add_rx_callback and __atomi= c_load_n in rte_eth_rx_burst)).

Anyway, polling other queues on some= other thread should not affect, right? Or can you help to explain a bit mo= re on this?

 

Thank you very much.

 

Br, Xiaoping<= /p>

 

From: Burakov, Anatoly <anatoly.burakov@intel.com>
Sent: 2023
=C4=EA2=D4=C220<= /span>=C8=D5 21:59
To: Xiaoping Yan (NSB) <xiaoping.yan@nokia-sbell.com>; users@d= pdk.org
Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check i= f other queues are stopped

 

Well, technically, no, you=A1=AFre right, it wouldn=A1=AFt =A8C not unless= you start polling those queues from some other thread. We can=A1=AFt preve= nt that from happening, so we figured the best way would be to just disallo= w queue starts until we=A1=AFre done configuring everything. So, yes, we could relax that restriction, it=A1=AFs just a matter of speci= fying what=A1=AFs allowed and what=A1=AFs not vs. just doing a blanket =A1= =B0no=A1=B1 and keeping things simple.

&nbs= p;

From: Xiaoping Yan (NSB) <xiaoping.yan@nokia-sbell.com>
Sent: Monday, February 20, 2023 1:41 PM
To: Burakov, Anatoly <anatoly.burakov@intel.com>; users@dpdk.org
Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check i= f other queues are stopped

 

Hi,

 

Thank you for the information.<= o:p>

I see from rte_eth_add_rx_callb= ack, the callback is added to per queue data: rte_eth_devices[port_id].post= _rx_burst_cbs[queue_id];

So it should not affect polling= on other queues?

 

 

Br, Xiaoping<= /p>

 

From: Burakov, Anatoly <anatoly.= burakov@intel.com>
Sent: 2023
=C4=EA2=D4=C220=C8=D5 18:28
To: Xiaoping Yan (NSB) <xiaoping.yan@nokia-sbell.com>; users@dpdk.org
Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check i= f other queues are stopped

 

Hi,<= /o:p>

&nbs= p;

It is mai= nly because we=A1=AFre install callbacks, which is not thread-safe unless t= he PMD is stopped. Our PMD=A1=AFs internal config structures are not thread-safe. You should only start these ports after you configure= everything.

&nbs= p;

From: Xiaoping Yan (NSB) <xiaoping.yan@nokia-sbell.com>
Sent: Monday, February 20, 2023 6:12 AM
To: users@dpdk.org; Burakov, A= natoly <anatoly.burakov@int= el.com>
Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check i= f other queues are stopped

 

Hi Anatoly

 

I see this multiple queue suppo= rt is added by you.

Could you kindly help me to und= erstand why rte_power_ethdev_pmgmt_queue_enable need other queues to be in = stopped state?

 

commit 5dff9a72b0efeab02a2b71e5= 2c4871805b7e64cb

Author: Anatoly Burakov anatoly.burakov@intel.com

Date:   Fri Jul 9 16:= 08:15 2021 +0000

 

po= wer: support callbacks for multiple Rx queues

 

 

Thank you.

 

Br, Xiaoping<= /p>

 

From: Xiaoping Yan (NSB)
Sent: 2023
=C4=EA2=D4=C216=C8=D5 21:00
To: users@dpdk.org
Subject: why rte_power_ethdev_pmgmt_queue_enable need to check if ot= her queues are stopped

 

Hi experts,

 

I=A1=AFm trying to use dpdk power pmd management APIs in my dpdk application.<= o:p>

My application uses several por= ts, each have one rx queue, and it goes like this

1= .   &= nbsp; Init first port, setup = rx queue, call rte_power_ethdev_pmgmt_queue_enable, and start the first por= t

2= .   &= nbsp; Init second port, setup= rx queue, call rte_power_ethdev_pmgmt_queue_enable, and start the second p= ort

3= .   &= nbsp; =A1=AD

Now for the first port & qu= eue, rte_power_ethdev_pmgmt_queue_enable return success, but for the second= port & queue, it returns -16

From rte_power_ethdev_pmgmt_que= ue_enable code, I think it fails when checking if other queues are stopped = as well.

  &n= bsp; /* check if other queues are stopped as well */

  &n= bsp; ret =3D cf= g_queues_stopped(lcore_cfg);

  &n= bsp; if (ret !=3D 1) {

  &n= bsp;     /* error means invalid queue, 0 means queue wasn't stopp= ed */

  &n= bsp;     ret =3D re= t = < 0<= /span> ? = -EINVAL : -EBUSY;

  &n= bsp;     goto en= d;=

  &n= bsp; }

This seems quite strange for me= , why other queues have to be in stopped state?

Can anyone help to explain?

 

Thank you.

 

 

Br, Xiaoping<= /p>

 

--_000_3c01d07600754a8096b736610522b754nokiasbellcom_-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7DA6341CEC for ; Mon, 20 Feb 2023 15:19:35 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7302F43063; Mon, 20 Feb 2023 15:19:35 +0100 (CET) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mails.dpdk.org (Postfix) with ESMTP id 8A3CA43062 for ; Mon, 20 Feb 2023 15:19:33 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1676902773; x=1708438773; h=from:to:subject:date:message-id:references:in-reply-to: mime-version; bh=rH+Xhnhrbm2iJbvLjUx6nhjKqYK28FscOsnYLM7iIME=; b=lC54Lzr7zNTqjY9FyFfZYrdUfxn+kOrgxT9xMxmhSOvYsJCg0lpXpvwI 0W86uwsQqS+/Ig3qO/xla1hZaYmMEnokTK9f33EBc6VXcuwaGroO3cEWs BooBU27i01cZLPT0az5aBdleLZfEeI/nOyGmN80uxYaGpr4drPWMUiuID PgJJcD1cxmFT4fCsFMpL7s7bfjMa5wjI4RPzd2lXBT/gQ4kmdY3TCEqVV wnufmE97WgakPwKiYWWoBBbdpZKYy4xyjZTVVf5qd0qCB+NpzyMwwUSP+ YkvkK5HgTaMDbZRhGLLaqdw9vvso6ihyw0vSOTxrDHdlA2m3pLJKvlt2Q w==; X-IronPort-AV: E=McAfee;i="6500,9779,10627"; a="418630484" X-IronPort-AV: E=Sophos;i="5.97,312,1669104000"; d="scan'208,217";a="418630484" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Feb 2023 06:19:31 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10627"; a="735144499" X-IronPort-AV: E=Sophos;i="5.97,312,1669104000"; d="scan'208,217";a="735144499" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga008.fm.intel.com with ESMTP; 20 Feb 2023 06:19:31 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Mon, 20 Feb 2023 06:19:31 -0800 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Mon, 20 Feb 2023 06:19:30 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Mon, 20 Feb 2023 06:19:30 -0800 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Mon, 20 Feb 2023 06:19:30 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ByFmTc8fKI7hVmlq0syLgJU0vM7RlTMx98SwBT2PIx+CxriEbkeFBVEO5o8yc9EMQzQBsg5AOf81fXQ6jXsQy+qKal594lOze5IbgEYdjjuiKrmSbnOVBU7fnA4lpFlRbDvxc3eBuzODUNs0As/DuXAgPnOO10/2SqRPzaeBDVDoymf5aO6x/y81d7Zar2RLq8iNyzgmig2MhKzUV3aqDjXaoFiNWv+x8D1VcTHJstAnqJhN4Q0SSf4asHVtMUhweNQ+7mDcJ5jBo0Sqv02c+5qyY6F6t1f+VLFTFsgosD0fUAlHJGRS3GhhR4ar9hz/AlEde2kEqhF1MjD5iBi2tA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rH+Xhnhrbm2iJbvLjUx6nhjKqYK28FscOsnYLM7iIME=; b=g6ZuyjhkA4T2uwWdkIeoXA9kL8CvdEnBAR0WyPuFQALZshk7rmNMeclFDCYSlOoR6nt0BsDUK/PWmxGbhzBSnQox7EjOg4L+MrqPorQODv1L7nBERBLkEqBzy18eChPKfMrPP4t3pIXiFQdGyLJLQmTTFqfsTXpTEOfEQf7zwha1baFBEz7Go12RS2mRUjCYZFCCsggAdIHdyTZy0Dhg0yrIicnmDMBDFEPKIGCHLQFg5T7xRmQ0NbM3sqhoZie7wo8BmzvKz1laueJAziL103hAdfmQxyfDzHITAuAeNmaodSa05Un41K09fWIUNywgQFmedP8q/6uWPCZ9ZVb3yw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BN6PR11MB1251.namprd11.prod.outlook.com (2603:10b6:404:48::10) by IA1PR11MB7174.namprd11.prod.outlook.com (2603:10b6:208:41a::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.19; Mon, 20 Feb 2023 14:19:28 +0000 Received: from BN6PR11MB1251.namprd11.prod.outlook.com ([fe80::b966:2d41:ca2e:6871]) by BN6PR11MB1251.namprd11.prod.outlook.com ([fe80::b966:2d41:ca2e:6871%6]) with mapi id 15.20.6111.020; Mon, 20 Feb 2023 14:19:28 +0000 From: "Burakov, Anatoly" To: "Xiaoping Yan (NSB)" , "users@dpdk.org" Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check if other queues are stopped Thread-Topic: why rte_power_ethdev_pmgmt_queue_enable need to check if other queues are stopped Thread-Index: AdlCBFLV8QoElG47QfeDBKVxvG5wigC7XY2wAAj7pdAABqvI0AAAK9qQAACsWAAAAFskoA== Date: Mon, 20 Feb 2023 14:19:27 +0000 Message-ID: References: <0c6664b4318142df94531165fb2acf94@nokia-sbell.com> <0684cc0bac6f4b4996899b1dd9eafbf4@nokia-sbell.com> <4da7b78195454d6f823a983d71310c5d@nokia-sbell.com> <3c01d07600754a8096b736610522b754@nokia-sbell.com> In-Reply-To: <3c01d07600754a8096b736610522b754@nokia-sbell.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BN6PR11MB1251:EE_|IA1PR11MB7174:EE_ x-ms-office365-filtering-correlation-id: 06cc236f-efa1-414e-d17c-08db134d799d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: egZ7Dvvu9GioeB7f1yPYSdYG+2wp+YiKEMddqs0/LJkbbStbwFii/xK2TtTnMevynnYsHBcxJ+J6Tc/lH1U165EaTEl8sEgqwRvFxYC7xkfZcpxXERJpuxZXJ+o5gIO47Y0pDdoQKlEiTkooCLiHB8Xu12oDqTgPsI+QOevoHXFBGLWmympf88COwmg4/GhkzGa9JBONcLnzLpPvs3VBAwz9Md4E2FJkjBxebRecRf6GJkPSkxF/TexwUY6WemI5pFPQp6DliwJ8/HMuGDjAVWM/U6r/QWBhmQgOTTP3ClR2zOuvC7b+fLis4esYva6xuZXZnHY477VbN+E+usikWsbm21snCjJZ+R/VVlleDzl7lxn3IySQXCM/RvjYJOsuRapBiEVCj8qTgsfPRlKqwXB7js/8B42ANrPgHAstXS3qXAO+jW58D696Pawk8w201A82EWN6P5CAqhqrO5Vow3H9vAsc8NjvUh2/ih3BHTfjPP36JifL2/cskZvR1xi5Kc7SVjSvLLoaeFYvSimw7ZlWxaoe7DpuwWGWi8sj2tF+sewhSSQS7PKT6TEJ1jc795eF4mNfoic0mqJ8GWh8LdUmoPENpeAszA8hD19T32ZZAFl1DrRzqCBeFKr3iOCjcCBFJFMd2D5ZlNyG+rlB8t2bZjy9Xm2C0wb/5mi22qAZLhymc/sroXRnth/xS/NeG1+3rQcJ0Gw/MDOcxOSTvw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN6PR11MB1251.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(366004)(396003)(136003)(346002)(376002)(39860400002)(84040400005)(451199018)(33656002)(52536014)(8936002)(82960400001)(55016003)(38070700005)(5660300002)(86362001)(41300700001)(7696005)(186003)(26005)(2906002)(8676002)(316002)(66446008)(110136005)(71200400001)(66946007)(76116006)(66476007)(64756008)(66556008)(53546011)(6506007)(9686003)(478600001)(122000001)(38100700002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OHZsMk9sVVAzdFQ0WjBjb1pGZGZCRlNpN1AzNGhhaFgzbEo4Z2lXQ01ybnRm?= =?utf-8?B?Tm1QTTU5bE5LcmZtYWF2bnhROG1Bam9kYXRqaEhjZ2tUV2lXZkJGOTF5WXNi?= =?utf-8?B?NDFBYSsxTjVmUmFGeTV3dVRVbGIvWTVVUHZQYTZmb3JVam8rbWhDSFlaT1JI?= =?utf-8?B?MHVBenlEQmI5M2JxeVdiM1dTYkRETkhORVFUT2x2SkhrNW5vdU9vUzlueWpK?= =?utf-8?B?UmsxTGdYNU4yL1BYWElxZkx1T3o1bzc5SUtDWW9JUjBmK2lsMVN0ME96NHZl?= =?utf-8?B?SmZ2dkxXbGd2NkpNOVFSTjNXRlF3MENLcWpZd3dhR2piK3lmU0g1Wmd1RDJn?= =?utf-8?B?UDc0dnlVaGd3anhsd2FZTHlWbzdyenRIT0ZCdlNTdXNMWXlXK2xnYTBTbFFv?= =?utf-8?B?NjhoWDcvd01YTktPeGNqK2RVdGxHQTVyc2VjelljUWxYTG5rSFhzekhuamk4?= =?utf-8?B?Q21OUWhuU1FVWk9XeTN6eitxZ2Q0TGNtd2tXNHc3RGllNWlrRHFCemN1UmFy?= =?utf-8?B?Y3FuckVNUWgxNHZKaVplTjRWZjJJaTlGZUhhZnpMT3NqbGNVZmFjS0hsbFRU?= =?utf-8?B?V1FiVllvTHk2bjYvTFVsMXNwUUo1WEJSSkJRUjdCM3Z1K05uTUNCcExZWHJn?= =?utf-8?B?QmoyWGFxTW5HTDBHN0xuY0V2c01wMlhBb0wrWnp4dlVuZzhvMUZjVjNibkdG?= =?utf-8?B?NnJuWXRPa1BYWEozNGV0Q21DSXowdXJQdWdYV0xwdWhQUGZjaG1vVUJjM2xQ?= =?utf-8?B?NkZ3UkI3Qmc5RFhvK3N2cjJLYVZrbzBSekdWYkc5Ujh4NjVRMTBtTUNIU1NE?= =?utf-8?B?Wjh2SE02aENmZHNYYlpFR2lTYnJBZHM4cUNHalJ0bE0zWVVqR3JydFo4MEZJ?= =?utf-8?B?cWt2c0lySFoyYWQzUmFhSFlraDUxMFhqUUJsR3dBNVhJUFFpMVl5aVdOMEhT?= =?utf-8?B?V1BOYUI3ZHZHUkF1K1BtL0VXeXphZjBoT1ZsNWtnVjR1dFhPWkhDQXUvMzhj?= =?utf-8?B?R2g1QjVEWXg0NHlHYnpDR0NoR0d3aEphNTA3MUpNS2hzNXVOcWJXMEhvR3ZY?= =?utf-8?B?Vkt0L3hLb3diOVhQS2pnN2dQNU9WdjRyRHJhb1o2V01wRjYvR3JidjNLYTZE?= =?utf-8?B?SWhYYUNwVGNFdDdtTTY3NmlqaktTd0I2dkdNRVdxeXJqZGJpOHRRdW4way9u?= =?utf-8?B?cmtsSzVHbyttNTdMdFFGb3pmdjN1WklGU3piY2J0bXJzcGJxMDZZN2N4dElG?= =?utf-8?B?YWRxRHRHZkFvbFBHS051RDlGMWpyVzdMMVRxbXZyeFNadXA4VlIwVUUzeGR6?= =?utf-8?B?eGUwSUtMNGRzaDVQeGVoODB1RlNwSkZkZ0l0VkY5RmRqRU5IaENLV05GY2c3?= =?utf-8?B?T2Yrck83aVc1MURYUEhIV1E2Zzh5c1VCZWliRFNMU3hHQzJEQjBkcFI0SDNY?= =?utf-8?B?bzRISkwwa0dOUTN3ajZzTmp2VWsvd1VaMUpid1hSNHcwY0xnbnlvd1VXcVJS?= =?utf-8?B?WnlqbmZlblFvSmpCWUwxeEZmdEYyY3RPRmtzbFBKTFZCMjZLS1VpWWdKL1Q3?= =?utf-8?B?OHJ2TWxDb3RZVGZSSEtCcFlqZzZyOGlSTituVVo0V1YzOVhFclRqbTgvcytp?= =?utf-8?B?U2s3WFp0TmEyOGxnc3QwVGFUVEF0Y0haaWt4am5vUUtwcUg0dTdzL0tDYlky?= =?utf-8?B?b0V1dGNPSkhmY3hFT1FQYy9JQUdLNW53Y1U1THBiTWljVFIrNlNuSHEvcnQ3?= =?utf-8?B?Wm9NK1RzSzVtcjBsOG8vY0t6b1draU9TUmJEVGZGQVJFWFRvcUdnZm1MUVVW?= =?utf-8?B?SFRORWZXQW5kcm51QUl4WmJqTzUyd0h6em5rRmVKNTBYVW5JbnpvNW1zdGVG?= =?utf-8?B?NW9MUjhBVTEzcXplaVB3bzY1Q0N5TWV4MzhjUDYrMEdPNDFqMVhUTnA0WDhu?= =?utf-8?B?NTB4OUpJOEpyeEJDMjl2UFFLRlIvRWRGMlBHOFNnelhnZEtlYzM3aFMxWmRP?= =?utf-8?B?bXRiNXpsaFFDcWJiVUExMkZmelBScVl5eXFHYXRXYVJVZk1nQjRrRys0NWFB?= =?utf-8?B?TDAyamo4U2RvQmdSSWw3dHFxUU1IWk5WZVVyRXQ4aFVXWEgvVmV5cGZyQ20x?= =?utf-8?B?NzQreXVXeUIvMnFPNnp0SCtvMU90MUNtTGVrR3RHYytlK0QvcU44QW1KVldo?= =?utf-8?B?UlE9PQ==?= Content-Type: multipart/alternative; boundary="_000_BN6PR11MB1251818A4D2C9068C1B85F55F7A49BN6PR11MB1251namp_" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN6PR11MB1251.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 06cc236f-efa1-414e-d17c-08db134d799d X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Feb 2023 14:19:27.6540 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: F22Cd64L8zbUdimY6maYqPFqA/PtldDNguYKmN+DEb0vSvpE3cLuQGbqucxsiSQ6UHtpnl1vGkD7N2FYESjXxc0YtCFH9sx0x0G+AYtAb10= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR11MB7174 X-OriginatorOrg: intel.com X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org --_000_BN6PR11MB1251818A4D2C9068C1B85F55F7A49BN6PR11MB1251namp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 w5ggIEkgZG9u4oCZdCB1bmRlcnN0YW5kIHRoaXMgcG9pbnQuDQoNClRlY2huaWNhbGx5LCBubyBv bmUgc3RvcHMgeW91IGZyb20gcG9sbGluZyB0aGUgc2FtZSBxdWV1ZSBmcm9tIGFueSB0aHJlYWQs IG5vdCBqdXN0IHRoZSBvbmUgeW914oCZcmUgY29uZmlndXJpbmcgd2l0aC4gSXQgc291bmRzIGxp a2Ugbm90aGluZyBhbnlvbmUgd291bGQgZG8sIGJ1dCB3ZSBwcmVmZXIgdG8gYmUgb24gdGhlIHNh ZmUgc2lkZSDwn5iKDQoNCg0Kw5ggIEFueXdheSwgcG9sbGluZyBvdGhlciBxdWV1ZXMgb24gc29t ZSBvdGhlciB0aHJlYWQgc2hvdWxkIG5vdCBhZmZlY3QsIHJpZ2h0PyBPciBjYW4geW91IGhlbHAg dG8gZXhwbGFpbiBhIGJpdCBtb3JlIG9uIHRoaXM/DQoNCkl0IHdvdWxkIG5vdCBhZmZlY3QgdGhl IGNhbGxiYWNrLCBidXQgaXQgd291bGQgYWZmZWN0IGludGVybmFsIHN0cnVjdHVyZXMgb2YgdGhl IFBNRCBwb3dlciBtYW5hZ2VtZW50LCBpZiBpdOKAmXMgb25lIG9mIHRob3NlIHF1ZXVlcyB5b3Ug YXJlIHNldHRpbmcgdXAgZm9yIHRoYXQuIFBNRCBjYWxsYmFja3MgYXBwZWFyIHRvIGJlIHRocmVh ZC1zYWZlIChzbyBJIHdhcyB3cm9uZyBhYm91dCB0aGF0KSwgYnV0IHRoZSBQTUQgcG93ZXIgbWFu YWdlbWVudCBpbnRlcm5hbCBzdHJ1Y3R1cmVzIGFyZW7igJl0LCBhcyB0aGUgcXVldWUgY29uZmln dXJhdGlvbiB3aWxsIGJlIHNoYXJlZCBhbW9uZyB0aG9zZSBxdWV1ZXMgdGhhdCBhcmUgcGFydGlj aXBhdGluZyBpbiB0aGUgc2NoZW1lLiBXZSBkbyBtb2RpZnkgc29tZSBzaGFyZWQgZGF0YSB3aGVu IHdl4oCZcmUgdHJpZ2dlcmluZyBjYWxsYmFja3MsIHNvIHdlIGRvIG5vdCB3YW50IGFueSBxdWV1 ZXMgdG8gYmUgcG9sbGluZyB3aGlsZSB3ZSBjb25maWd1cmUgdGhpbmdzLiBBZ2FpbiwgdGhpcyB3 b3VsZCBvbmx5IG1hdHRlciBpZiB5b3UgdHJpZWQgdG8gcG9sbCBpbmJldHdlZW4gY29uZmlndXJh dGlvbiwgb3IgcG9sbGVkIGZyb20gYSBkaWZmZXJlbnQgdGhyZWFkLCBzbyBpdCBkb2VzbuKAmXQg c291bmQgbGlrZSBhbnl0aGluZyBhbnlvbmUgd291bGQgZG/igKYgQnV0IHRoZSBBUEkgZGlzYWxs b3dzIHRoYXQg4oCcanVzdCBpbiBjYXNl4oCdLg0KDQpTbywgSSB0aGluayB5b3XigJlyZSByaWdo dCBpbiB0aGF0IGl04oCZcyBwZXJmZWN0bHkgc2FmZSB0byBzdGFydCBwb3J0cyBhcyBsb25nIGFz IHlvdeKAmXJlIG5vdCBwb2xsaW5nIHRoZW0sIGJ1dCBpdOKAmXMgc2ltcGxlciB0byB0ZWxsIHVz ZXJzIHRvIG5vdCBzdGFydCB0aGUgcG9ydHMgdGhhbiBpdCBpcyB0byBleHBsYWluIHdoYXQgeW91 IGNhbiBvciBjYW7igJl0IGRvIHdpdGhvdXQgdGhpbmdzIGJsb3dpbmcgdXAuDQoNCkZyb206IFhp YW9waW5nIFlhbiAoTlNCKSA8eGlhb3BpbmcueWFuQG5va2lhLXNiZWxsLmNvbT4NClNlbnQ6IE1v bmRheSwgRmVicnVhcnkgMjAsIDIwMjMgMjoxMCBQTQ0KVG86IEJ1cmFrb3YsIEFuYXRvbHkgPGFu YXRvbHkuYnVyYWtvdkBpbnRlbC5jb20+OyB1c2Vyc0BkcGRrLm9yZw0KU3ViamVjdDogUkU6IHdo eSBydGVfcG93ZXJfZXRoZGV2X3BtZ210X3F1ZXVlX2VuYWJsZSBuZWVkIHRvIGNoZWNrIGlmIG90 aGVyIHF1ZXVlcyBhcmUgc3RvcHBlZA0KDQpIaSwNCg0KPj4gbm90IHVubGVzcyB5b3Ugc3RhcnQg cG9sbGluZyB0aG9zZSBxdWV1ZXMgZnJvbSBzb21lIG90aGVyIHRocmVhZA0KSSBkb27igJl0IHVu ZGVyc3RhbmQgdGhpcyBwb2ludC4NCkFzIHRoZSByeCBjYWxsYmFjayBpcyBwZXIgcXVldWUgZGF0 YSwgaXQgc2VlbXMgdG8gbWUgb25seSB0aGluZyBpcyB3ZSBzaG91bGQgbm90IHBvbGxpbmcgdGhp cyBxdWV1ZSAgd2hpbGUgd2UgYXJlIG1vZGlmeSBpdHMgY2FsbGJhY2suIFNvIG9ubHkgdGhpcyBx dWV1ZSBzaG91bGQgYmUgaW4gc3RvcHBlZCBzdGF0ZSAobWF5YmUgZXZlbiB0aGlzIGlzIG5vdCBy ZXF1aXJlZD8gQmVjYXVzZSBJIHNlZSBhdG9taWMgb3BlcmF0aW9uIGlzIHVzZWQgKF9fYXRvbWlj X3N0b3JlX24gaW4gcnRlX2V0aF9hZGRfcnhfY2FsbGJhY2sgYW5kIF9fYXRvbWljX2xvYWRfbiBp biBydGVfZXRoX3J4X2J1cnN0KSkuDQpBbnl3YXksIHBvbGxpbmcgb3RoZXIgcXVldWVzIG9uIHNv bWUgb3RoZXIgdGhyZWFkIHNob3VsZCBub3QgYWZmZWN0LCByaWdodD8gT3IgY2FuIHlvdSBoZWxw IHRvIGV4cGxhaW4gYSBiaXQgbW9yZSBvbiB0aGlzPw0KDQpUaGFuayB5b3UgdmVyeSBtdWNoLg0K DQpCciwgWGlhb3BpbmcNCg0KRnJvbTogQnVyYWtvdiwgQW5hdG9seSA8YW5hdG9seS5idXJha292 QGludGVsLmNvbTxtYWlsdG86YW5hdG9seS5idXJha292QGludGVsLmNvbT4+DQpTZW50OiAyMDIz 5bm0MuaciDIw5pelIDIxOjU5DQpUbzogWGlhb3BpbmcgWWFuIChOU0IpIDx4aWFvcGluZy55YW5A bm9raWEtc2JlbGwuY29tPG1haWx0bzp4aWFvcGluZy55YW5Abm9raWEtc2JlbGwuY29tPj47IHVz ZXJzQGRwZGsub3JnPG1haWx0bzp1c2Vyc0BkcGRrLm9yZz4NClN1YmplY3Q6IFJFOiB3aHkgcnRl X3Bvd2VyX2V0aGRldl9wbWdtdF9xdWV1ZV9lbmFibGUgbmVlZCB0byBjaGVjayBpZiBvdGhlciBx dWV1ZXMgYXJlIHN0b3BwZWQNCg0KV2VsbCwgdGVjaG5pY2FsbHksIG5vLCB5b3XigJlyZSByaWdo dCwgaXQgd291bGRu4oCZdCDigJMgbm90IHVubGVzcyB5b3Ugc3RhcnQgcG9sbGluZyB0aG9zZSBx dWV1ZXMgZnJvbSBzb21lIG90aGVyIHRocmVhZC4gV2UgY2Fu4oCZdCBwcmV2ZW50IHRoYXQgZnJv bSBoYXBwZW5pbmcsIHNvIHdlIGZpZ3VyZWQgdGhlIGJlc3Qgd2F5IHdvdWxkIGJlIHRvIGp1c3Qg ZGlzYWxsb3cgcXVldWUgc3RhcnRzIHVudGlsIHdl4oCZcmUgZG9uZSBjb25maWd1cmluZyBldmVy eXRoaW5nLiBTbywgeWVzLCB3ZSBjb3VsZCByZWxheCB0aGF0IHJlc3RyaWN0aW9uLCBpdOKAmXMg anVzdCBhIG1hdHRlciBvZiBzcGVjaWZ5aW5nIHdoYXTigJlzIGFsbG93ZWQgYW5kIHdoYXTigJlz IG5vdCB2cy4ganVzdCBkb2luZyBhIGJsYW5rZXQg4oCcbm/igJ0gYW5kIGtlZXBpbmcgdGhpbmdz IHNpbXBsZS4NCg0KRnJvbTogWGlhb3BpbmcgWWFuIChOU0IpIDx4aWFvcGluZy55YW5Abm9raWEt c2JlbGwuY29tPG1haWx0bzp4aWFvcGluZy55YW5Abm9raWEtc2JlbGwuY29tPj4NClNlbnQ6IE1v bmRheSwgRmVicnVhcnkgMjAsIDIwMjMgMTo0MSBQTQ0KVG86IEJ1cmFrb3YsIEFuYXRvbHkgPGFu YXRvbHkuYnVyYWtvdkBpbnRlbC5jb208bWFpbHRvOmFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb20+ PjsgdXNlcnNAZHBkay5vcmc8bWFpbHRvOnVzZXJzQGRwZGsub3JnPg0KU3ViamVjdDogUkU6IHdo eSBydGVfcG93ZXJfZXRoZGV2X3BtZ210X3F1ZXVlX2VuYWJsZSBuZWVkIHRvIGNoZWNrIGlmIG90 aGVyIHF1ZXVlcyBhcmUgc3RvcHBlZA0KDQpIaSwNCg0KVGhhbmsgeW91IGZvciB0aGUgaW5mb3Jt YXRpb24uDQpJIHNlZSBmcm9tIHJ0ZV9ldGhfYWRkX3J4X2NhbGxiYWNrLCB0aGUgY2FsbGJhY2sg aXMgYWRkZWQgdG8gcGVyIHF1ZXVlIGRhdGE6IHJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXS5wb3N0 X3J4X2J1cnN0X2Nic1txdWV1ZV9pZF07DQpTbyBpdCBzaG91bGQgbm90IGFmZmVjdCBwb2xsaW5n IG9uIG90aGVyIHF1ZXVlcz8NCg0KDQpCciwgWGlhb3BpbmcNCg0KRnJvbTogQnVyYWtvdiwgQW5h dG9seSA8YW5hdG9seS5idXJha292QGludGVsLmNvbTxtYWlsdG86YW5hdG9seS5idXJha292QGlu dGVsLmNvbT4+DQpTZW50OiAyMDIz5bm0MuaciDIw5pelIDE4OjI4DQpUbzogWGlhb3BpbmcgWWFu IChOU0IpIDx4aWFvcGluZy55YW5Abm9raWEtc2JlbGwuY29tPG1haWx0bzp4aWFvcGluZy55YW5A bm9raWEtc2JlbGwuY29tPj47IHVzZXJzQGRwZGsub3JnPG1haWx0bzp1c2Vyc0BkcGRrLm9yZz4N ClN1YmplY3Q6IFJFOiB3aHkgcnRlX3Bvd2VyX2V0aGRldl9wbWdtdF9xdWV1ZV9lbmFibGUgbmVl ZCB0byBjaGVjayBpZiBvdGhlciBxdWV1ZXMgYXJlIHN0b3BwZWQNCg0KSGksDQoNCkl0IGlzIG1h aW5seSBiZWNhdXNlIHdl4oCZcmUgaW5zdGFsbCBjYWxsYmFja3MsIHdoaWNoIGlzIG5vdCB0aHJl YWQtc2FmZSB1bmxlc3MgdGhlIFBNRCBpcyBzdG9wcGVkLiBPdXIgUE1E4oCZcyBpbnRlcm5hbCBj b25maWcgc3RydWN0dXJlcyBhcmUgbm90IHRocmVhZC1zYWZlLiBZb3Ugc2hvdWxkIG9ubHkgc3Rh cnQgdGhlc2UgcG9ydHMgYWZ0ZXIgeW91IGNvbmZpZ3VyZSBldmVyeXRoaW5nLg0KDQpGcm9tOiBY aWFvcGluZyBZYW4gKE5TQikgPHhpYW9waW5nLnlhbkBub2tpYS1zYmVsbC5jb208bWFpbHRvOnhp YW9waW5nLnlhbkBub2tpYS1zYmVsbC5jb20+Pg0KU2VudDogTW9uZGF5LCBGZWJydWFyeSAyMCwg MjAyMyA2OjEyIEFNDQpUbzogdXNlcnNAZHBkay5vcmc8bWFpbHRvOnVzZXJzQGRwZGsub3JnPjsg QnVyYWtvdiwgQW5hdG9seSA8YW5hdG9seS5idXJha292QGludGVsLmNvbTxtYWlsdG86YW5hdG9s eS5idXJha292QGludGVsLmNvbT4+DQpTdWJqZWN0OiBSRTogd2h5IHJ0ZV9wb3dlcl9ldGhkZXZf cG1nbXRfcXVldWVfZW5hYmxlIG5lZWQgdG8gY2hlY2sgaWYgb3RoZXIgcXVldWVzIGFyZSBzdG9w cGVkDQoNCkhpIEFuYXRvbHkNCg0KSSBzZWUgdGhpcyBtdWx0aXBsZSBxdWV1ZSBzdXBwb3J0IGlz IGFkZGVkIGJ5IHlvdS4NCkNvdWxkIHlvdSBraW5kbHkgaGVscCBtZSB0byB1bmRlcnN0YW5kIHdo eSBydGVfcG93ZXJfZXRoZGV2X3BtZ210X3F1ZXVlX2VuYWJsZSBuZWVkIG90aGVyIHF1ZXVlcyB0 byBiZSBpbiBzdG9wcGVkIHN0YXRlPw0KDQpjb21taXQgNWRmZjlhNzJiMGVmZWFiMDJhMmI3MWU1 MmM0ODcxODA1YjdlNjRjYg0KQXV0aG9yOiBBbmF0b2x5IEJ1cmFrb3YgYW5hdG9seS5idXJha292 QGludGVsLmNvbTxtYWlsdG86YW5hdG9seS5idXJha292QGludGVsLmNvbT4NCkRhdGU6ICAgRnJp IEp1bCA5IDE2OjA4OjE1IDIwMjEgKzAwMDANCg0KcG93ZXI6IHN1cHBvcnQgY2FsbGJhY2tzIGZv ciBtdWx0aXBsZSBSeCBxdWV1ZXMNCg0KDQpUaGFuayB5b3UuDQoNCkJyLCBYaWFvcGluZw0KDQpG cm9tOiBYaWFvcGluZyBZYW4gKE5TQikNClNlbnQ6IDIwMjPlubQy5pyIMTbml6UgMjE6MDANClRv OiB1c2Vyc0BkcGRrLm9yZzxtYWlsdG86dXNlcnNAZHBkay5vcmc+DQpTdWJqZWN0OiB3aHkgcnRl X3Bvd2VyX2V0aGRldl9wbWdtdF9xdWV1ZV9lbmFibGUgbmVlZCB0byBjaGVjayBpZiBvdGhlciBx dWV1ZXMgYXJlIHN0b3BwZWQNCg0KSGkgZXhwZXJ0cywNCg0KSeKAmW0gdHJ5aW5nIHRvIHVzZSBk cGRrIHBvd2VyIHBtZCBtYW5hZ2VtZW50IEFQSXMgaW4gbXkgZHBkayBhcHBsaWNhdGlvbi4NCk15 IGFwcGxpY2F0aW9uIHVzZXMgc2V2ZXJhbCBwb3J0cywgZWFjaCBoYXZlIG9uZSByeCBxdWV1ZSwg YW5kIGl0IGdvZXMgbGlrZSB0aGlzDQoNCjEuICAgICBJbml0IGZpcnN0IHBvcnQsIHNldHVwIHJ4 IHF1ZXVlLCBjYWxsIHJ0ZV9wb3dlcl9ldGhkZXZfcG1nbXRfcXVldWVfZW5hYmxlLCBhbmQgc3Rh cnQgdGhlIGZpcnN0IHBvcnQNCg0KMi4gICAgIEluaXQgc2Vjb25kIHBvcnQsIHNldHVwIHJ4IHF1 ZXVlLCBjYWxsIHJ0ZV9wb3dlcl9ldGhkZXZfcG1nbXRfcXVldWVfZW5hYmxlLCBhbmQgc3RhcnQg dGhlIHNlY29uZCBwb3J0DQoNCjMuICAgICDigKYNCk5vdyBmb3IgdGhlIGZpcnN0IHBvcnQgJiBx dWV1ZSwgcnRlX3Bvd2VyX2V0aGRldl9wbWdtdF9xdWV1ZV9lbmFibGUgcmV0dXJuIHN1Y2Nlc3Ms IGJ1dCBmb3IgdGhlIHNlY29uZCBwb3J0ICYgcXVldWUsIGl0IHJldHVybnMgLTE2DQpGcm9tIHJ0 ZV9wb3dlcl9ldGhkZXZfcG1nbXRfcXVldWVfZW5hYmxlIGNvZGUsIEkgdGhpbmsgaXQgZmFpbHMg d2hlbiBjaGVja2luZyBpZiBvdGhlciBxdWV1ZXMgYXJlIHN0b3BwZWQgYXMgd2VsbC4NCiAgICAv KiBjaGVjayBpZiBvdGhlciBxdWV1ZXMgYXJlIHN0b3BwZWQgYXMgd2VsbCAqLw0KICAgIHJldCA9 IGNmZ19xdWV1ZXNfc3RvcHBlZChsY29yZV9jZmcpOw0KICAgIGlmIChyZXQgIT0gMSkgew0KICAg ICAgICAvKiBlcnJvciBtZWFucyBpbnZhbGlkIHF1ZXVlLCAwIG1lYW5zIHF1ZXVlIHdhc24ndCBz dG9wcGVkICovDQogICAgICAgIHJldCA9IHJldCA8IDAgPyAtRUlOVkFMIDogLUVCVVNZOw0KICAg ICAgICBnb3RvIGVuZDsNCiAgICB9DQpUaGlzIHNlZW1zIHF1aXRlIHN0cmFuZ2UgZm9yIG1lLCB3 aHkgb3RoZXIgcXVldWVzIGhhdmUgdG8gYmUgaW4gc3RvcHBlZCBzdGF0ZT8NCkNhbiBhbnlvbmUg aGVscCB0byBleHBsYWluPw0KDQpUaGFuayB5b3UuDQoNCg0KQnIsIFhpYW9waW5nDQoNCg== --_000_BN6PR11MB1251818A4D2C9068C1B85F55F7A49BN6PR11MB1251namp_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPHN0eWxl PjwhLS0NCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6 V2luZ2RpbmdzOw0KCXBhbm9zZS0xOjUgMCAwIDAgMCAwIDAgMCAwIDA7fQ0KQGZvbnQtZmFjZQ0K CXtmb250LWZhbWlseToiTVMgTWluY2hvIjsNCglwYW5vc2UtMToyIDIgNiA5IDQgMiA1IDggMyA0 O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6U2ltU3VuOw0KCXBhbm9zZS0xOjIgMSA2IDAg MyAxIDEgMSAxIDE7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseToiQ2FtYnJpYSBNYXRoIjsN CglwYW5vc2UtMToyIDQgNSAzIDUgNCA2IDMgMiA0O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1p bHk6RGVuZ1hpYW47DQoJcGFub3NlLTE6MiAxIDYgMCAzIDEgMSAxIDEgMTt9DQpAZm9udC1mYWNl DQoJe2ZvbnQtZmFtaWx5OkNhbGlicmk7DQoJcGFub3NlLTE6MiAxNSA1IDIgMiAyIDQgMyAyIDQ7 fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseTpDb25zb2xhczsNCglwYW5vc2UtMToyIDExIDYg OSAyIDIgNCAzIDIgNDt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5OiJNUyBQR290aGljIjsN CglwYW5vc2UtMToyIDExIDYgMCA3IDIgNSA4IDIgNDt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFt aWx5OiJcQE1TIFBHb3RoaWMiO30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6IlxAU2ltU3Vu IjsNCglwYW5vc2UtMToyIDEgNiAwIDMgMSAxIDEgMSAxO30NCkBmb250LWZhY2UNCgl7Zm9udC1m YW1pbHk6IlxARGVuZ1hpYW4iOw0KCXBhbm9zZS0xOjIgMSA2IDAgMyAxIDEgMSAxIDE7fQ0KQGZv bnQtZmFjZQ0KCXtmb250LWZhbWlseToiXEBNUyBNaW5jaG8iOw0KCXBhbm9zZS0xOjIgMiA2IDkg NCAyIDUgOCAzIDQ7fQ0KLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8NCnAuTXNvTm9ybWFsLCBsaS5N c29Ob3JtYWwsIGRpdi5Nc29Ob3JtYWwNCgl7bWFyZ2luOjBpbjsNCgl0ZXh0LWFsaWduOmp1c3Rp Znk7DQoJdGV4dC1qdXN0aWZ5OmludGVyLWlkZW9ncmFwaDsNCglmb250LXNpemU6MTAuNXB0Ow0K CWZvbnQtZmFtaWx5OkRlbmdYaWFuOw0KCW1zby1mYXJlYXN0LWxhbmd1YWdlOlpILUNOO30NCmE6 bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsNCgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCWNvbG9y OiMwNTYzQzE7DQoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9DQpwLk1zb0xpc3RQYXJhZ3Jh cGgsIGxpLk1zb0xpc3RQYXJhZ3JhcGgsIGRpdi5Nc29MaXN0UGFyYWdyYXBoDQoJe21zby1zdHls ZS1wcmlvcml0eTozNDsNCgltYXJnaW46MGluOw0KCXRleHQtYWxpZ246anVzdGlmeTsNCgl0ZXh0 LWp1c3RpZnk6aW50ZXItaWRlb2dyYXBoOw0KCXRleHQtaW5kZW50OjIxLjBwdDsNCglmb250LXNp emU6MTAuNXB0Ow0KCWZvbnQtZmFtaWx5OkRlbmdYaWFuOw0KCW1zby1mYXJlYXN0LWxhbmd1YWdl OlpILUNOO30NCnNwYW4uRW1haWxTdHlsZTIxDQoJe21zby1zdHlsZS10eXBlOnBlcnNvbmFsLXJl cGx5Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNlcmlmOw0KCWNvbG9yOndpbmRvd3Rl eHQ7fQ0KLk1zb0NocERlZmF1bHQNCgl7bXNvLXN0eWxlLXR5cGU6ZXhwb3J0LW9ubHk7DQoJZm9u dC1zaXplOjEwLjBwdDt9DQpAcGFnZSBXb3JkU2VjdGlvbjENCgl7c2l6ZTo4LjVpbiAxMS4waW47 DQoJbWFyZ2luOjEuMGluIDEuMjVpbiAxLjBpbiAxLjI1aW47fQ0KZGl2LldvcmRTZWN0aW9uMQ0K CXtwYWdlOldvcmRTZWN0aW9uMTt9DQovKiBMaXN0IERlZmluaXRpb25zICovDQpAbGlzdCBsMA0K CXttc28tbGlzdC1pZDo2OTg5MDA0NTg7DQoJbXNvLWxpc3QtdHlwZTpoeWJyaWQ7DQoJbXNvLWxp c3QtdGVtcGxhdGUtaWRzOjE0Mzk5NjI0MzQgLTEwNjk5MzQ5MDQgNDAzMjQzMDExIDQwMzI0MzAx MyA0MDMyNDMwMDkgNDAzMjQzMDExIDQwMzI0MzAxMyA0MDMyNDMwMDkgNDAzMjQzMDExIDQwMzI0 MzAxMzt9DQpAbGlzdCBsMDpsZXZlbDENCgl7bXNvLWxldmVsLXN0YXJ0LWF0OjA7DQoJbXNvLWxl dmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0Ou+DmDsNCgltc28tbGV2 ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4 dC1pbmRlbnQ6LS4yNWluOw0KCWZvbnQtZmFtaWx5OldpbmdkaW5nczsNCgltc28tZmFyZWFzdC1m b250LWZhbWlseTpDYWxpYnJpOw0KCW1zby1iaWRpLWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9t YW4iO30NCkBsaXN0IGwwOmxldmVsMg0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7 DQoJbXNvLWxldmVsLXRleHQ6bzsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2 ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCWZvbnQtZmFt aWx5OiJDb3VyaWVyIE5ldyI7fQ0KQGxpc3QgbDA6bGV2ZWwzDQoJe21zby1sZXZlbC1udW1iZXIt Zm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwtdGV4dDrvgqc7DQoJbXNvLWxldmVsLXRhYi1zdG9w Om5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0u MjVpbjsNCglmb250LWZhbWlseTpXaW5nZGluZ3M7fQ0KQGxpc3QgbDA6bGV2ZWw0DQoJe21zby1s ZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwtdGV4dDrvgrc7DQoJbXNvLWxl dmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRl eHQtaW5kZW50Oi0uMjVpbjsNCglmb250LWZhbWlseTpTeW1ib2w7fQ0KQGxpc3QgbDA6bGV2ZWw1 DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwtdGV4dDpvOw0K CW1zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVm dDsNCgl0ZXh0LWluZGVudDotLjI1aW47DQoJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3Ijt9DQpA bGlzdCBsMDpsZXZlbDYNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1s ZXZlbC10ZXh0Ou+CpzsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVt YmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCWZvbnQtZmFtaWx5Oldp bmdkaW5nczt9DQpAbGlzdCBsMDpsZXZlbDcNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVs bGV0Ow0KCW1zby1sZXZlbC10ZXh0Ou+CtzsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCglt c28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCWZv bnQtZmFtaWx5OlN5bWJvbDt9DQpAbGlzdCBsMDpsZXZlbDgNCgl7bXNvLWxldmVsLW51bWJlci1m b3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0Om87DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5v bmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0uMjVp bjsNCglmb250LWZhbWlseToiQ291cmllciBOZXciO30NCkBsaXN0IGwwOmxldmVsOQ0KCXttc28t bGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ674KnOw0KCW1zby1s ZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0 ZXh0LWluZGVudDotLjI1aW47DQoJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30NCkBsaXN0IGwxDQoJ e21zby1saXN0LWlkOjE3NTc1MDk5NzI7DQoJbXNvLWxpc3QtdHlwZTpoeWJyaWQ7DQoJbXNvLWxp c3QtdGVtcGxhdGUtaWRzOjU4NDExMDExOCAyMzU2OTI4NzggNjc2OTg3MTMgNjc2OTg3MTUgNjc2 OTg3MDMgNjc2OTg3MTMgNjc2OTg3MTUgNjc2OTg3MDMgNjc2OTg3MTMgNjc2OTg3MTU7fQ0KQGxp c3QgbDE6bGV2ZWwxDQoJe21zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1i ZXItcG9zaXRpb246bGVmdDsNCgltYXJnaW4tbGVmdDouMjVpbjsNCgl0ZXh0LWluZGVudDotLjI1 aW47fQ0KQGxpc3QgbDE6bGV2ZWwyDQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmFscGhhLWxv d2VyOw0KCW1zby1sZXZlbC10ZXh0OiIlMlwpIjsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsN Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJbWFyZ2luLWxlZnQ6NDIuMHB0Ow0K CXRleHQtaW5kZW50Oi0yMS4wcHQ7fQ0KQGxpc3QgbDE6bGV2ZWwzDQoJe21zby1sZXZlbC1udW1i ZXItZm9ybWF0OnJvbWFuLWxvd2VyOw0KCW1zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1s ZXZlbC1udW1iZXItcG9zaXRpb246cmlnaHQ7DQoJbWFyZ2luLWxlZnQ6NjMuMHB0Ow0KCXRleHQt aW5kZW50Oi0yMS4wcHQ7fQ0KQGxpc3QgbDE6bGV2ZWw0DQoJe21zby1sZXZlbC10YWItc3RvcDpu b25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgltYXJnaW4tbGVmdDo4NC4w cHQ7DQoJdGV4dC1pbmRlbnQ6LTIxLjBwdDt9DQpAbGlzdCBsMTpsZXZlbDUNCgl7bXNvLWxldmVs LW51bWJlci1mb3JtYXQ6YWxwaGEtbG93ZXI7DQoJbXNvLWxldmVsLXRleHQ6IiU1XCkiOw0KCW1z by1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsN CgltYXJnaW4tbGVmdDoxMDUuMHB0Ow0KCXRleHQtaW5kZW50Oi0yMS4wcHQ7fQ0KQGxpc3QgbDE6 bGV2ZWw2DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OnJvbWFuLWxvd2VyOw0KCW1zby1sZXZl bC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246cmlnaHQ7DQoJbWFy Z2luLWxlZnQ6MS43NWluOw0KCXRleHQtaW5kZW50Oi0yMS4wcHQ7fQ0KQGxpc3QgbDE6bGV2ZWw3 DQoJe21zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246 bGVmdDsNCgltYXJnaW4tbGVmdDoxNDcuMHB0Ow0KCXRleHQtaW5kZW50Oi0yMS4wcHQ7fQ0KQGxp c3QgbDE6bGV2ZWw4DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmFscGhhLWxvd2VyOw0KCW1z by1sZXZlbC10ZXh0OiIlOFwpIjsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2 ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJbWFyZ2luLWxlZnQ6MTY4LjBwdDsNCgl0ZXh0LWlu ZGVudDotMjEuMHB0O30NCkBsaXN0IGwxOmxldmVsOQ0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1h dDpyb21hbi1sb3dlcjsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVt YmVyLXBvc2l0aW9uOnJpZ2h0Ow0KCW1hcmdpbi1sZWZ0OjE4OS4wcHQ7DQoJdGV4dC1pbmRlbnQ6 LTIxLjBwdDt9DQpvbA0KCXttYXJnaW4tYm90dG9tOjBpbjt9DQp1bA0KCXttYXJnaW4tYm90dG9t OjBpbjt9DQotLT48L3N0eWxlPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPg0KPG86c2hhcGVkZWZh dWx0cyB2OmV4dD0iZWRpdCIgc3BpZG1heD0iMTAyNiIgLz4NCjwveG1sPjwhW2VuZGlmXS0tPjwh LS1baWYgZ3RlIG1zbyA5XT48eG1sPg0KPG86c2hhcGVsYXlvdXQgdjpleHQ9ImVkaXQiPg0KPG86 aWRtYXAgdjpleHQ9ImVkaXQiIGRhdGE9IjEiIC8+DQo8L286c2hhcGVsYXlvdXQ+PC94bWw+PCFb ZW5kaWZdLS0+DQo8L2hlYWQ+DQo8Ym9keSBsYW5nPSJFTi1JRSIgbGluaz0iIzA1NjNDMSIgdmxp bms9IiM5NTRGNzIiIHN0eWxlPSJ3b3JkLXdyYXA6YnJlYWstd29yZDt0ZXh0LWp1c3RpZnktdHJp bTpwdW5jdHVhdGlvbiI+DQo8ZGl2IGNsYXNzPSJXb3JkU2VjdGlvbjEiPg0KPHAgY2xhc3M9Ik1z b0xpc3RQYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluO3RleHQtaW5kZW50Oi0uMjVp bjttc28tbGlzdDpsMCBsZXZlbDEgbGZvMyI+DQo8IVtpZiAhc3VwcG9ydExpc3RzXT48c3BhbiBz dHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTpXaW5nZGluZ3MiPjxzcGFuIHN0eWxl PSJtc28tbGlzdDpJZ25vcmUiPsOYPHNwYW4gc3R5bGU9ImZvbnQ6Ny4wcHQgJnF1b3Q7VGltZXMg TmV3IFJvbWFuJnF1b3Q7Ij4mbmJzcDsNCjwvc3Bhbj48L3NwYW4+PC9zcGFuPjwhW2VuZGlmXT48 c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1 b3Q7LHNhbnMtc2VyaWYiPkkgZG9u4oCZdCB1bmRlcnN0YW5kIHRoaXMgcG9pbnQuPG86cD48L286 cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO21zby1m YXJlYXN0LWxhbmd1YWdlOkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWls eTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4t VVMiPlRlY2huaWNhbGx5LCBubyBvbmUgc3RvcHMgeW91IGZyb20gcG9sbGluZyB0aGUgc2FtZSBx dWV1ZSBmcm9tIGFueSB0aHJlYWQsIG5vdCBqdXN0IHRoZSBvbmUgeW914oCZcmUgY29uZmlndXJp bmcgd2l0aC4gSXQgc291bmRzIGxpa2Ugbm90aGluZyBhbnlvbmUNCiB3b3VsZCBkbywgYnV0IHdl IHByZWZlciB0byBiZSBvbiB0aGUgc2FmZSBzaWRlIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1z aXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtTZWdvZSBVSSBFbW9qaSZxdW90OyxzYW5zLXNl cmlmO21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj4mIzEyODUyMjs8L3NwYW4+PHNwYW4gc3R5 bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5z LXNlcmlmO21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj4NCjxvOnA+PC9vOnA+PC9zcGFuPjwv cD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2Zv bnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1sYW5n dWFnZTpFTi1VUyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb0xp c3RQYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluO3RleHQtaW5kZW50Oi0uMjVpbjtt c28tbGlzdDpsMCBsZXZlbDEgbGZvMyI+DQo8IVtpZiAhc3VwcG9ydExpc3RzXT48c3BhbiBzdHls ZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTpXaW5nZGluZ3MiPjxzcGFuIHN0eWxlPSJt c28tbGlzdDpJZ25vcmUiPsOYPHNwYW4gc3R5bGU9ImZvbnQ6Ny4wcHQgJnF1b3Q7VGltZXMgTmV3 IFJvbWFuJnF1b3Q7Ij4mbmJzcDsNCjwvc3Bhbj48L3NwYW4+PC9zcGFuPjwhW2VuZGlmXT48c3Bh biBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7 LHNhbnMtc2VyaWYiPkFueXdheSwgcG9sbGluZyBvdGhlciBxdWV1ZXMgb24gc29tZSBvdGhlciB0 aHJlYWQgc2hvdWxkIG5vdCBhZmZlY3QsIHJpZ2h0PyBPciBjYW4geW91IGhlbHAgdG8gZXhwbGFp biBhIGJpdCBtb3JlIG9uIHRoaXM/PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7 Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj48bzpw PiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHls ZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMt c2VyaWY7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPkl0IHdvdWxkIG5vdCBhZmZlY3QgdGhl IGNhbGxiYWNrLCBidXQgaXQNCjxpPndvdWxkPC9pPiBhZmZlY3QgaW50ZXJuYWwgc3RydWN0dXJl cyBvZiB0aGUgUE1EIHBvd2VyIG1hbmFnZW1lbnQsIGlmIGl04oCZcyBvbmUgb2YgdGhvc2UgcXVl dWVzIHlvdSBhcmUgc2V0dGluZyB1cCBmb3IgdGhhdC4gUE1EIGNhbGxiYWNrcyBhcHBlYXIgdG8g YmUgdGhyZWFkLXNhZmUgKHNvIEkgd2FzIHdyb25nIGFib3V0IHRoYXQpLCBidXQgdGhlIFBNRCBw b3dlciBtYW5hZ2VtZW50IGludGVybmFsIHN0cnVjdHVyZXMgYXJlbuKAmXQsIGFzIHRoZQ0KIHF1 ZXVlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBzaGFyZWQgYW1vbmcgdGhvc2UgcXVldWVzIHRoYXQg YXJlIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHNjaGVtZS4gV2UgZG8gbW9kaWZ5IHNvbWUgc2hhcmVk IGRhdGEgd2hlbiB3ZeKAmXJlIHRyaWdnZXJpbmcgY2FsbGJhY2tzLCBzbyB3ZSBkbyBub3Qgd2Fu dA0KPGk+YW55PC9pPiBxdWV1ZXMgdG8gYmUgcG9sbGluZyB3aGlsZSB3ZSBjb25maWd1cmUgdGhp bmdzLiBBZ2FpbiwgdGhpcyB3b3VsZCBvbmx5IG1hdHRlciBpZiB5b3UgdHJpZWQgdG8gcG9sbCBp bmJldHdlZW4gY29uZmlndXJhdGlvbiwgb3IgcG9sbGVkIGZyb20gYSBkaWZmZXJlbnQgdGhyZWFk LCBzbyBpdCBkb2VzbuKAmXQgc291bmQgbGlrZSBhbnl0aGluZyBhbnlvbmUgd291bGQgZG/igKYg QnV0IHRoZSBBUEkgZGlzYWxsb3dzIHRoYXQg4oCcanVzdCBpbg0KIGNhc2XigJ0uPG86cD48L286 cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO21zby1m YXJlYXN0LWxhbmd1YWdlOkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWls eTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4t VVMiPlNvLCBJIHRoaW5rIHlvdeKAmXJlIHJpZ2h0IGluIHRoYXQgaXTigJlzIHBlcmZlY3RseSBz YWZlIHRvIHN0YXJ0IHBvcnRzIGFzIGxvbmcgYXMgeW914oCZcmUgbm90DQo8aT5wb2xsaW5nPC9p PiB0aGVtLCBidXQgaXTigJlzIHNpbXBsZXIgdG8gdGVsbCB1c2VycyB0byBub3Qgc3RhcnQgdGhl IHBvcnRzIHRoYW4gaXQgaXMgdG8gZXhwbGFpbiB3aGF0IHlvdSBjYW4gb3IgY2Fu4oCZdCBkbyB3 aXRob3V0IHRoaW5ncyBibG93aW5nIHVwLjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNz PSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZx dW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUyI+ PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9y ZGVyLWxlZnQ6c29saWQgYmx1ZSAxLjVwdDtwYWRkaW5nOjBpbiAwaW4gMGluIDQuMHB0Ij4NCjxk aXY+DQo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItdG9wOnNvbGlkICNFMUUxRTEgMS4w cHQ7cGFkZGluZzozLjBwdCAwaW4gMGluIDBpbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGln bj0ibGVmdCIgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+PGI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0 eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fu cy1zZXJpZiI+RnJvbTo8L3NwYW4+PC9iPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1z aXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYiPiBY aWFvcGluZyBZYW4gKE5TQikgJmx0O3hpYW9waW5nLnlhbkBub2tpYS1zYmVsbC5jb20mZ3Q7DQo8 YnI+DQo8Yj5TZW50OjwvYj4gTW9uZGF5LCBGZWJydWFyeSAyMCwgMjAyMyAyOjEwIFBNPGJyPg0K PGI+VG86PC9iPiBCdXJha292LCBBbmF0b2x5ICZsdDthbmF0b2x5LmJ1cmFrb3ZAaW50ZWwuY29t Jmd0OzsgdXNlcnNAZHBkay5vcmc8YnI+DQo8Yj5TdWJqZWN0OjwvYj4gUkU6IHdoeSBydGVfcG93 ZXJfZXRoZGV2X3BtZ210X3F1ZXVlX2VuYWJsZSBuZWVkIHRvIGNoZWNrIGlmIG90aGVyIHF1ZXVl cyBhcmUgc3RvcHBlZDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0ibGVmdCIgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+PG86 cD4mbmJzcDs8L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1V UyI+SGksPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4g bGFuZz0iRU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29O b3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj4mZ3Q7Jmd0Ozwvc3Bhbj48c3BhbiBsYW5nPSJFTi1V UyIgc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90 OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj4NCjwvc3Bhbj48c3BhbiBz dHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNh bnMtc2VyaWY7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPm5vdCB1bmxlc3MgeW91IHN0YXJ0 IHBvbGxpbmcgdGhvc2UgcXVldWVzIGZyb20gc29tZSBvdGhlciB0aHJlYWQ8bzpwPjwvbzpwPjwv c3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEx LjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYiPkkgZG9u4oCZ dCB1bmRlcnN0YW5kIHRoaXMgcG9pbnQuPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1 b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmIj5BcyB0aGUgcnggY2FsbGJhY2sgaXMgcGVyIHF1 ZXVlIGRhdGEsIGl0IHNlZW1zIHRvIG1lIG9ubHkgdGhpbmcgaXMgd2Ugc2hvdWxkIG5vdCBwb2xs aW5nIHRoaXMgcXVldWUgJm5ic3A7d2hpbGUgd2UgYXJlIG1vZGlmeSBpdHMgY2FsbGJhY2suIFNv IG9ubHkgdGhpcyBxdWV1ZSBzaG91bGQgYmUgaW4gc3RvcHBlZA0KIHN0YXRlIChtYXliZSBldmVu IHRoaXMgaXMgbm90IHJlcXVpcmVkPyBCZWNhdXNlIEkgc2VlIGF0b21pYyBvcGVyYXRpb24gaXMg dXNlZCAoX19hdG9taWNfc3RvcmVfbiBpbiBydGVfZXRoX2FkZF9yeF9jYWxsYmFjayBhbmQgX19h dG9taWNfbG9hZF9uIGluIHJ0ZV9ldGhfcnhfYnVyc3QpKS48bzpwPjwvbzpwPjwvc3Bhbj48L3A+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250 LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYiPkFueXdheSwgcG9sbGluZyBv dGhlciBxdWV1ZXMgb24gc29tZSBvdGhlciB0aHJlYWQgc2hvdWxkIG5vdCBhZmZlY3QsIHJpZ2h0 PyBPciBjYW4geW91IGhlbHAgdG8gZXhwbGFpbiBhIGJpdCBtb3JlIG9uIHRoaXM/PG86cD48L286 cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmIj48bzpw PiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHls ZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMt c2VyaWYiPlRoYW5rIHlvdSB2ZXJ5IG11Y2guPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xh c3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFu PjwvcD4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+QnIs IFhpYW9waW5nPG86cD48L286cD48L3NwYW4+PC9wPg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPGRp dj4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6c29saWQgI0UxRTFFMSAxLjBw dDtwYWRkaW5nOjMuMHB0IDBpbiAwaW4gMGluIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIGFsaWdu PSJsZWZ0IiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0Ij48Yj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5 bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5z LXNlcmlmO21zby1mYXJlYXN0LWxhbmd1YWdlOlpILVRXIj5Gcm9tOjwvc3Bhbj48L2I+PHNwYW4g bGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0Nh bGlicmkmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1sYW5ndWFnZTpaSC1UVyI+DQogQnVy YWtvdiwgQW5hdG9seSAmbHQ7PGEgaHJlZj0ibWFpbHRvOmFuYXRvbHkuYnVyYWtvdkBpbnRlbC5j b20iPmFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb208L2E+Jmd0Ow0KPGJyPg0KPGI+U2VudDo8L2I+ IDIwMjM8L3NwYW4+PHNwYW4gbGFuZz0iWkgtVFciIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2Zv bnQtZmFtaWx5OiZxdW90O01TIE1pbmNobyZxdW90Ozttc28tZmFyZWFzdC1sYW5ndWFnZTpaSC1U VyI+5bm0PC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtm b250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtbGFu Z3VhZ2U6WkgtVFciPjI8L3NwYW4+PHNwYW4gbGFuZz0iWkgtVFciIHN0eWxlPSJmb250LXNpemU6 MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O01TIE1pbmNobyZxdW90Ozttc28tZmFyZWFzdC1sYW5n dWFnZTpaSC1UVyI+5pyIPC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXpl OjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZh cmVhc3QtbGFuZ3VhZ2U6WkgtVFciPjIwPC9zcGFuPjxzcGFuIGxhbmc9IlpILVRXIiBzdHlsZT0i Zm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtNUyBNaW5jaG8mcXVvdDs7bXNvLWZh cmVhc3QtbGFuZ3VhZ2U6WkgtVFciPuaXpTwvc3Bhbj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9 ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNl cmlmO21zby1mYXJlYXN0LWxhbmd1YWdlOlpILVRXIj4NCiAyMTo1OTxicj4NCjxiPlRvOjwvYj4g WGlhb3BpbmcgWWFuIChOU0IpICZsdDs8YSBocmVmPSJtYWlsdG86eGlhb3BpbmcueWFuQG5va2lh LXNiZWxsLmNvbSI+eGlhb3BpbmcueWFuQG5va2lhLXNiZWxsLmNvbTwvYT4mZ3Q7Ow0KPGEgaHJl Zj0ibWFpbHRvOnVzZXJzQGRwZGsub3JnIj51c2Vyc0BkcGRrLm9yZzwvYT48YnI+DQo8Yj5TdWJq ZWN0OjwvYj4gUkU6IHdoeSBydGVfcG93ZXJfZXRoZGV2X3BtZ210X3F1ZXVlX2VuYWJsZSBuZWVk IHRvIGNoZWNrIGlmIG90aGVyIHF1ZXVlcyBhcmUgc3RvcHBlZDxvOnA+PC9vOnA+PC9zcGFuPjwv cD4NCjwvZGl2Pg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0ibGVmdCIgc3R5 bGU9InRleHQtYWxpZ246bGVmdCI+PHNwYW4gbGFuZz0iRU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+ PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6 MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjttc28tZmFy ZWFzdC1sYW5ndWFnZTpFTi1VUyI+V2VsbCwNCjxpPnRlY2huaWNhbGx5PC9pPiwgbm8sIHlvdeKA mXJlIHJpZ2h0LCBpdCB3b3VsZG7igJl0IOKAkyBub3QgdW5sZXNzIHlvdSBzdGFydCBwb2xsaW5n IHRob3NlIHF1ZXVlcyBmcm9tIHNvbWUgb3RoZXIgdGhyZWFkLiBXZSBjYW7igJl0IHByZXZlbnQg dGhhdCBmcm9tIGhhcHBlbmluZywgc28gd2UgZmlndXJlZCB0aGUgYmVzdCB3YXkgd291bGQgYmUg dG8ganVzdCBkaXNhbGxvdyBxdWV1ZSBzdGFydHMgdW50aWwgd2XigJlyZSBkb25lIGNvbmZpZ3Vy aW5nIGV2ZXJ5dGhpbmcuDQogU28sIHllcywgd2UgY291bGQgcmVsYXggdGhhdCByZXN0cmljdGlv biwgaXTigJlzIGp1c3QgYSBtYXR0ZXIgb2Ygc3BlY2lmeWluZyB3aGF04oCZcyBhbGxvd2VkIGFu ZCB3aGF04oCZcyBub3QgdnMuIGp1c3QgZG9pbmcgYSBibGFua2V0IOKAnG5v4oCdIGFuZCBrZWVw aW5nIHRoaW5ncyBzaW1wbGUuPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05v cm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2Fs aWJyaSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj48bzpwPiZu YnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItbGVm dDpzb2xpZCBibHVlIDEuNXB0O3BhZGRpbmc6MGluIDBpbiAwaW4gNC4wcHQiPg0KPGRpdj4NCjxk aXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6c29saWQgI0UxRTFFMSAxLjBwdDtwYWRk aW5nOjMuMHB0IDBpbiAwaW4gMGluIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIGFsaWduPSJsZWZ0 IiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0Ij48Yj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZv bnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlm Ij5Gcm9tOjwvc3Bhbj48L2I+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTEu MHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZiI+IFhpYW9waW5n IFlhbiAoTlNCKSAmbHQ7PGEgaHJlZj0ibWFpbHRvOnhpYW9waW5nLnlhbkBub2tpYS1zYmVsbC5j b20iPnhpYW9waW5nLnlhbkBub2tpYS1zYmVsbC5jb208L2E+Jmd0Ow0KPGJyPg0KPGI+U2VudDo8 L2I+IE1vbmRheSwgRmVicnVhcnkgMjAsIDIwMjMgMTo0MSBQTTxicj4NCjxiPlRvOjwvYj4gQnVy YWtvdiwgQW5hdG9seSAmbHQ7PGEgaHJlZj0ibWFpbHRvOmFuYXRvbHkuYnVyYWtvdkBpbnRlbC5j b20iPmFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb208L2E+Jmd0OzsNCjxhIGhyZWY9Im1haWx0bzp1 c2Vyc0BkcGRrLm9yZyI+dXNlcnNAZHBkay5vcmc8L2E+PGJyPg0KPGI+U3ViamVjdDo8L2I+IFJF OiB3aHkgcnRlX3Bvd2VyX2V0aGRldl9wbWdtdF9xdWV1ZV9lbmFibGUgbmVlZCB0byBjaGVjayBp ZiBvdGhlciBxdWV1ZXMgYXJlIHN0b3BwZWQ8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4N CjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249ImxlZnQiIHN0eWxlPSJ0ZXh0LWFs aWduOmxlZnQiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNw YW4gbGFuZz0iRU4tVVMiPkhpLDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29O b3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8 cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+VGhhbmsgeW91IGZvciB0aGUg aW5mb3JtYXRpb24uPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+ PHNwYW4gbGFuZz0iRU4tVVMiPkkgc2VlIGZyb20gcnRlX2V0aF9hZGRfcnhfY2FsbGJhY2ssIHRo ZSBjYWxsYmFjayBpcyBhZGRlZCB0byBwZXIgcXVldWUgZGF0YTogcnRlX2V0aF9kZXZpY2VzW3Bv cnRfaWRdLnBvc3RfcnhfYnVyc3RfY2JzW3F1ZXVlX2lkXTs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+U28gaXQgc2hvdWxkIG5v dCBhZmZlY3QgcG9sbGluZyBvbiBvdGhlciBxdWV1ZXM/PG86cD48L286cD48L3NwYW4+PC9wPg0K PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+ PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpw PiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNw YW4gbGFuZz0iRU4tVVMiPkJyLCBYaWFvcGluZzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvZGl2 Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPjxvOnA+Jm5ic3A7PC9v OnA+PC9zcGFuPjwvcD4NCjxkaXY+DQo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItdG9w OnNvbGlkICNFMUUxRTEgMS4wcHQ7cGFkZGluZzozLjBwdCAwaW4gMGluIDBpbiI+DQo8cCBjbGFz cz0iTXNvTm9ybWFsIiBhbGlnbj0ibGVmdCIgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+PGI+PHNw YW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90 O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1sYW5ndWFnZTpKQSI+RnJvbTo8 L3NwYW4+PC9iPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250 LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6SkEiPg0KIEJ1cmFrb3YsIEFuYXRvbHkgJmx0OzxhIGhyZWY9Im1haWx0bzphbmF0b2x5LmJ1 cmFrb3ZAaW50ZWwuY29tIj5hbmF0b2x5LmJ1cmFrb3ZAaW50ZWwuY29tPC9hPiZndDsNCjxicj4N CjxiPlNlbnQ6PC9iPiAyMDIzPC9zcGFuPjxzcGFuIGxhbmc9IkpBIiBzdHlsZT0iZm9udC1zaXpl OjExLjBwdDtmb250LWZhbWlseTomcXVvdDtNUyBQR290aGljJnF1b3Q7LHNhbnMtc2VyaWY7bXNv LWZhcmVhc3QtbGFuZ3VhZ2U6SkEiPuW5tDwvc3Bhbj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9 ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNl cmlmO21zby1mYXJlYXN0LWxhbmd1YWdlOkpBIj4yPC9zcGFuPjxzcGFuIGxhbmc9IkpBIiBzdHls ZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtNUyBQR290aGljJnF1b3Q7LHNh bnMtc2VyaWY7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6SkEiPuaciDwvc3Bhbj48c3BhbiBsYW5nPSJF Ti1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZx dW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWxhbmd1YWdlOkpBIj4yMDwvc3Bhbj48c3BhbiBs YW5nPSJKQSIgc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7TVMgUEdv dGhpYyZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWxhbmd1YWdlOkpBIj7ml6U8L3NwYW4+ PHNwYW4gbGFuZz0iSkEiIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90 O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1sYW5ndWFnZTpKQSI+DQo8L3Nw YW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5 OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1sYW5ndWFnZTpKQSI+ MTg6Mjg8YnI+DQo8Yj5Ubzo8L2I+IFhpYW9waW5nIFlhbiAoTlNCKSAmbHQ7PGEgaHJlZj0ibWFp bHRvOnhpYW9waW5nLnlhbkBub2tpYS1zYmVsbC5jb20iPnhpYW9waW5nLnlhbkBub2tpYS1zYmVs bC5jb208L2E+Jmd0OzsNCjxhIGhyZWY9Im1haWx0bzp1c2Vyc0BkcGRrLm9yZyI+dXNlcnNAZHBk ay5vcmc8L2E+PGJyPg0KPGI+U3ViamVjdDo8L2I+IFJFOiB3aHkgcnRlX3Bvd2VyX2V0aGRldl9w bWdtdF9xdWV1ZV9lbmFibGUgbmVlZCB0byBjaGVjayBpZiBvdGhlciBxdWV1ZXMgYXJlIHN0b3Bw ZWQ8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05v cm1hbCIgYWxpZ249ImxlZnQiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPjxzcGFuIGxhbmc9IkVO LVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48 c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1 b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPkhpLDxvOnA+PC9vOnA+ PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6 MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjttc28tZmFy ZWFzdC1sYW5ndWFnZTpFTi1VUyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xh c3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6 JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVT Ij5JdCBpcyBtYWlubHkgYmVjYXVzZSB3ZeKAmXJlIGluc3RhbGwgY2FsbGJhY2tzLCB3aGljaCBp cyBub3QgdGhyZWFkLXNhZmUgdW5sZXNzIHRoZSBQTUQgaXMgc3RvcHBlZC4gT3VyIFBNROKAmXMg aW50ZXJuYWwgY29uZmlnIHN0cnVjdHVyZXMgYXJlIG5vdCB0aHJlYWQtc2FmZS4NCiBZb3Ugc2hv dWxkIG9ubHkgc3RhcnQgdGhlc2UgcG9ydHMgYWZ0ZXIgeW91IGNvbmZpZ3VyZSBldmVyeXRoaW5n LjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxl PSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1z ZXJpZjttc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+ PC9wPg0KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6c29saWQgYmx1ZSAxLjVw dDtwYWRkaW5nOjBpbiAwaW4gMGluIDQuMHB0Ij4NCjxkaXY+DQo8ZGl2IHN0eWxlPSJib3JkZXI6 bm9uZTtib3JkZXItdG9wOnNvbGlkICNFMUUxRTEgMS4wcHQ7cGFkZGluZzozLjBwdCAwaW4gMGlu IDBpbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0ibGVmdCIgc3R5bGU9InRleHQtYWxp Z246bGVmdCI+PGI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2Zv bnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZiI+RnJvbTo8L3NwYW4+PC9i PjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTom cXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYiPiBYaWFvcGluZyBZYW4gKE5TQikgJmx0Ozxh IGhyZWY9Im1haWx0bzp4aWFvcGluZy55YW5Abm9raWEtc2JlbGwuY29tIj54aWFvcGluZy55YW5A bm9raWEtc2JlbGwuY29tPC9hPiZndDsNCjxicj4NCjxiPlNlbnQ6PC9iPiBNb25kYXksIEZlYnJ1 YXJ5IDIwLCAyMDIzIDY6MTIgQU08YnI+DQo8Yj5Ubzo8L2I+IDxhIGhyZWY9Im1haWx0bzp1c2Vy c0BkcGRrLm9yZyI+dXNlcnNAZHBkay5vcmc8L2E+OyBCdXJha292LCBBbmF0b2x5ICZsdDs8YSBo cmVmPSJtYWlsdG86YW5hdG9seS5idXJha292QGludGVsLmNvbSI+YW5hdG9seS5idXJha292QGlu dGVsLmNvbTwvYT4mZ3Q7PGJyPg0KPGI+U3ViamVjdDo8L2I+IFJFOiB3aHkgcnRlX3Bvd2VyX2V0 aGRldl9wbWdtdF9xdWV1ZV9lbmFibGUgbmVlZCB0byBjaGVjayBpZiBvdGhlciBxdWV1ZXMgYXJl IHN0b3BwZWQ8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCIgYWxpZ249ImxlZnQiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPjxvOnA+Jm5i c3A7PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPkhp IEFuYXRvbHk8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bh biBsYW5nPSJFTi1VUyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPkkgc2VlIHRoaXMgbXVsdGlwbGUgcXVldWUgc3Vw cG9ydCBpcyBhZGRlZCBieSB5b3UuPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPkNvdWxkIHlvdSBraW5kbHkgaGVscCBtZSB0byB1 bmRlcnN0YW5kIHdoeSBydGVfcG93ZXJfZXRoZGV2X3BtZ210X3F1ZXVlX2VuYWJsZSBuZWVkIG90 aGVyIHF1ZXVlcyB0byBiZSBpbiBzdG9wcGVkIHN0YXRlPzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpw Pjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+Y29t bWl0IDVkZmY5YTcyYjBlZmVhYjAyYTJiNzFlNTJjNDg3MTgwNWI3ZTY0Y2I8bzpwPjwvbzpwPjwv c3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+QXV0aG9y OiBBbmF0b2x5IEJ1cmFrb3YgPGEgaHJlZj0ibWFpbHRvOmFuYXRvbHkuYnVyYWtvdkBpbnRlbC5j b20iPg0KYW5hdG9seS5idXJha292QGludGVsLmNvbTwvYT48bzpwPjwvbzpwPjwvc3Bhbj48L3A+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+RGF0ZTombmJzcDsmbmJz cDsgRnJpIEp1bCA5IDE2OjA4OjE1IDIwMjEgKzAwMDA8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8 cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+PG86cD4mbmJzcDs8L286cD48 L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtaW5kZW50OjExLjVw dCI+PHNwYW4gbGFuZz0iRU4tVVMiPnBvd2VyOiBzdXBwb3J0IGNhbGxiYWNrcyBmb3IgbXVsdGlw bGUgUnggcXVldWVzPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIg c3R5bGU9InRleHQtaW5kZW50OjExLjVwdCI+PHNwYW4gbGFuZz0iRU4tVVMiPjxvOnA+Jm5ic3A7 PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVT Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bh biBsYW5nPSJFTi1VUyI+VGhhbmsgeW91LjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNz PSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48 L3A+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPkJyLCBY aWFvcGluZzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1h bCI+PHNwYW4gbGFuZz0iRU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxkaXY+ DQo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItdG9wOnNvbGlkICNFMUUxRTEgMS4wcHQ7 cGFkZGluZzozLjBwdCAwaW4gMGluIDBpbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0i bGVmdCIgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+PGI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxl PSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1z ZXJpZiI+RnJvbTo8L3NwYW4+PC9iPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXpl OjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYiPiBYaWFv cGluZyBZYW4gKE5TQikNCjxicj4NCjxiPlNlbnQ6PC9iPiAyMDIzPC9zcGFuPjxzcGFuIGxhbmc9 IlpILUNOIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTpTaW1TdW4iPuW5tDwv c3Bhbj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1p bHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmIj4yPC9zcGFuPjxzcGFuIGxhbmc9IlpI LUNOIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTpTaW1TdW4iPuaciDwvc3Bh bj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6 JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmIj4xNjwvc3Bhbj48c3BhbiBsYW5nPSJaSC1D TiIgc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6U2ltU3VuIj7ml6U8L3NwYW4+ PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZx dW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZiI+DQogMjE6MDA8YnI+DQo8Yj5Ubzo8L2I+IDxh IGhyZWY9Im1haWx0bzp1c2Vyc0BkcGRrLm9yZyI+dXNlcnNAZHBkay5vcmc8L2E+PGJyPg0KPGI+ U3ViamVjdDo8L2I+IHdoeSBydGVfcG93ZXJfZXRoZGV2X3BtZ210X3F1ZXVlX2VuYWJsZSBuZWVk IHRvIGNoZWNrIGlmIG90aGVyIHF1ZXVlcyBhcmUgc3RvcHBlZDxvOnA+PC9vOnA+PC9zcGFuPjwv cD4NCjwvZGl2Pg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0ibGVmdCIgc3R5 bGU9InRleHQtYWxpZ246bGVmdCI+PHNwYW4gbGFuZz0iRU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+ PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj5IaSBl eHBlcnRzLDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu IGxhbmc9IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNv Tm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+STwvc3Bhbj48c3BhbiBsYW5nPSJaSC1DTiI+4oCZ PC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIj5tIHRyeWluZyB0byB1c2UgZHBkayBwb3dlciBwbWQg bWFuYWdlbWVudCBBUElzIGluIG15IGRwZGsgYXBwbGljYXRpb24uPG86cD48L286cD48L3NwYW4+ PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPk15IGFwcGxpY2F0 aW9uIHVzZXMgc2V2ZXJhbCBwb3J0cywgZWFjaCBoYXZlIG9uZSByeCBxdWV1ZSwgYW5kIGl0IGdv ZXMgbGlrZSB0aGlzPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb0xpc3RQYXJh Z3JhcGgiIHN0eWxlPSJtYXJnaW4tbGVmdDouMjVpbjt0ZXh0LWluZGVudDotLjI1aW47bXNvLWxp c3Q6bDEgbGV2ZWwxIGxmbzIiPg0KPCFbaWYgIXN1cHBvcnRMaXN0c10+PHNwYW4gbGFuZz0iRU4t VVMiPjxzcGFuIHN0eWxlPSJtc28tbGlzdDpJZ25vcmUiPjEuPHNwYW4gc3R5bGU9ImZvbnQ6Ny4w cHQgJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsN Cjwvc3Bhbj48L3NwYW4+PC9zcGFuPjwhW2VuZGlmXT48c3BhbiBsYW5nPSJFTi1VUyI+SW5pdCBm aXJzdCBwb3J0LCBzZXR1cCByeCBxdWV1ZSwgY2FsbCBydGVfcG93ZXJfZXRoZGV2X3BtZ210X3F1 ZXVlX2VuYWJsZSwgYW5kIHN0YXJ0IHRoZSBmaXJzdCBwb3J0PG86cD48L286cD48L3NwYW4+PC9w Pg0KPHAgY2xhc3M9Ik1zb0xpc3RQYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tbGVmdDouMjVpbjt0 ZXh0LWluZGVudDotLjI1aW47bXNvLWxpc3Q6bDEgbGV2ZWwxIGxmbzIiPg0KPCFbaWYgIXN1cHBv cnRMaXN0c10+PHNwYW4gbGFuZz0iRU4tVVMiPjxzcGFuIHN0eWxlPSJtc28tbGlzdDpJZ25vcmUi PjIuPHNwYW4gc3R5bGU9ImZvbnQ6Ny4wcHQgJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7Ij4m bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCjwvc3Bhbj48L3NwYW4+PC9zcGFuPjwhW2VuZGlmXT48 c3BhbiBsYW5nPSJFTi1VUyI+SW5pdCBzZWNvbmQgcG9ydCwgc2V0dXAgcnggcXVldWUsIGNhbGwg cnRlX3Bvd2VyX2V0aGRldl9wbWdtdF9xdWV1ZV9lbmFibGUsIGFuZCBzdGFydCB0aGUgc2Vjb25k IHBvcnQ8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTGlzdFBhcmFncmFwaCIg c3R5bGU9Im1hcmdpbi1sZWZ0Oi4yNWluO3RleHQtaW5kZW50Oi0uMjVpbjttc28tbGlzdDpsMSBs ZXZlbDEgbGZvMiI+DQo8IVtpZiAhc3VwcG9ydExpc3RzXT48c3BhbiBsYW5nPSJFTi1VUyI+PHNw YW4gc3R5bGU9Im1zby1saXN0Oklnbm9yZSI+My48c3BhbiBzdHlsZT0iZm9udDo3LjBwdCAmcXVv dDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KPC9zcGFu Pjwvc3Bhbj48L3NwYW4+PCFbZW5kaWZdPjxzcGFuIGxhbmc9IlpILUNOIj7igKY8L3NwYW4+PHNw YW4gbGFuZz0iRU4tVVMiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3Jt YWwiPjxzcGFuIGxhbmc9IkVOLVVTIj5Ob3cgZm9yIHRoZSBmaXJzdCBwb3J0ICZhbXA7IHF1ZXVl LCBydGVfcG93ZXJfZXRoZGV2X3BtZ210X3F1ZXVlX2VuYWJsZSByZXR1cm4gc3VjY2VzcywgYnV0 IGZvciB0aGUgc2Vjb25kIHBvcnQgJmFtcDsgcXVldWUsIGl0IHJldHVybnMgLTE2PG86cD48L286 cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPkZy b20gcnRlX3Bvd2VyX2V0aGRldl9wbWdtdF9xdWV1ZV9lbmFibGUgY29kZSwgSSB0aGluayBpdCBm YWlscyB3aGVuIGNoZWNraW5nIGlmIG90aGVyIHF1ZXVlcyBhcmUgc3RvcHBlZCBhcyB3ZWxsLg0K PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249ImxlZnQi IHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7bGluZS1oZWlnaHQ6MTQuMjVwdDtiYWNrZ3JvdW5kOiMx RTFFMUUiPg0KPHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LWZhbWlseTpDb25zb2xhcztj b2xvcjojNkE5OTU1Ij4mbmJzcDsgJm5ic3A7IC8qIGNoZWNrIGlmIG90aGVyIHF1ZXVlcyBhcmUg c3RvcHBlZCBhcyB3ZWxsICovPC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1m YW1pbHk6Q29uc29sYXM7Y29sb3I6I0Q0RDRENCI+PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAg Y2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249ImxlZnQiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7bGlu ZS1oZWlnaHQ6MTQuMjVwdDtiYWNrZ3JvdW5kOiMxRTFFMUUiPg0KPHNwYW4gbGFuZz0iRU4tVVMi IHN0eWxlPSJmb250LWZhbWlseTpDb25zb2xhcztjb2xvcjojRDRENEQ0Ij4mbmJzcDsgJm5ic3A7 IDwvc3Bhbj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtZmFtaWx5OkNvbnNvbGFzO2Nv bG9yOiM5Q0RDRkUiPnJldDwvc3Bhbj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtZmFt aWx5OkNvbnNvbGFzO2NvbG9yOiNENEQ0RDQiPiA9DQo8L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMi IHN0eWxlPSJmb250LWZhbWlseTpDb25zb2xhcztjb2xvcjojRENEQ0FBIj5jZmdfcXVldWVzX3N0 b3BwZWQ8L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LWZhbWlseTpDb25zb2xh cztjb2xvcjojRDRENEQ0Ij4oPC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1m YW1pbHk6Q29uc29sYXM7Y29sb3I6IzlDRENGRSI+bGNvcmVfY2ZnPC9zcGFuPjxzcGFuIGxhbmc9 IkVOLVVTIiBzdHlsZT0iZm9udC1mYW1pbHk6Q29uc29sYXM7Y29sb3I6I0Q0RDRENCI+KTs8bzpw PjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0ibGVmdCIgc3R5 bGU9InRleHQtYWxpZ246bGVmdDtsaW5lLWhlaWdodDoxNC4yNXB0O2JhY2tncm91bmQ6IzFFMUUx RSI+DQo8c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtZmFtaWx5OkNvbnNvbGFzO2NvbG9y OiNENEQ0RDQiPiZuYnNwOyAmbmJzcDsgPC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0i Zm9udC1mYW1pbHk6Q29uc29sYXM7Y29sb3I6I0M1ODZDMCI+aWY8L3NwYW4+PHNwYW4gbGFuZz0i RU4tVVMiIHN0eWxlPSJmb250LWZhbWlseTpDb25zb2xhcztjb2xvcjojRDRENEQ0Ij4gKDwvc3Bh bj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtZmFtaWx5OkNvbnNvbGFzO2NvbG9yOiM5 Q0RDRkUiPnJldDwvc3Bhbj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtZmFtaWx5OkNv bnNvbGFzO2NvbG9yOiNENEQ0RDQiPg0KICE9IDwvc3Bhbj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5 bGU9ImZvbnQtZmFtaWx5OkNvbnNvbGFzO2NvbG9yOiNCNUNFQTgiPjE8L3NwYW4+PHNwYW4gbGFu Zz0iRU4tVVMiIHN0eWxlPSJmb250LWZhbWlseTpDb25zb2xhcztjb2xvcjojRDRENEQ0Ij4pIHs8 bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0ibGVmdCIg c3R5bGU9InRleHQtYWxpZ246bGVmdDtsaW5lLWhlaWdodDoxNC4yNXB0O2JhY2tncm91bmQ6IzFF MUUxRSI+DQo8c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtZmFtaWx5OkNvbnNvbGFzO2Nv bG9yOiM2QTk5NTUiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAvKiBlcnJvciBtZWFucyBp bnZhbGlkIHF1ZXVlLCAwIG1lYW5zIHF1ZXVlIHdhc24ndCBzdG9wcGVkICovPC9zcGFuPjxzcGFu IGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1mYW1pbHk6Q29uc29sYXM7Y29sb3I6I0Q0RDRENCI+ PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249ImxlZnQi IHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7bGluZS1oZWlnaHQ6MTQuMjVwdDtiYWNrZ3JvdW5kOiMx RTFFMUUiPg0KPHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LWZhbWlseTpDb25zb2xhcztj b2xvcjojRDRENEQ0Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgPC9zcGFuPjxzcGFuIGxh bmc9IkVOLVVTIiBzdHlsZT0iZm9udC1mYW1pbHk6Q29uc29sYXM7Y29sb3I6IzlDRENGRSI+cmV0 PC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1mYW1pbHk6Q29uc29sYXM7Y29s b3I6I0Q0RDRENCI+ID0NCjwvc3Bhbj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtZmFt aWx5OkNvbnNvbGFzO2NvbG9yOiM5Q0RDRkUiPnJldDwvc3Bhbj48c3BhbiBsYW5nPSJFTi1VUyIg c3R5bGU9ImZvbnQtZmFtaWx5OkNvbnNvbGFzO2NvbG9yOiNENEQ0RDQiPiAmbHQ7DQo8L3NwYW4+ PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LWZhbWlseTpDb25zb2xhcztjb2xvcjojQjVD RUE4Ij4wPC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1mYW1pbHk6Q29uc29s YXM7Y29sb3I6I0Q0RDRENCI+ID8gLUVJTlZBTCA6IC1FQlVTWTs8bzpwPjwvbzpwPjwvc3Bhbj48 L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0ibGVmdCIgc3R5bGU9InRleHQtYWxpZ246 bGVmdDtsaW5lLWhlaWdodDoxNC4yNXB0O2JhY2tncm91bmQ6IzFFMUUxRSI+DQo8c3BhbiBsYW5n PSJFTi1VUyIgc3R5bGU9ImZvbnQtZmFtaWx5OkNvbnNvbGFzO2NvbG9yOiNENEQ0RDQiPiZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyA8L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJm b250LWZhbWlseTpDb25zb2xhcztjb2xvcjojQzU4NkMwIj5nb3RvPC9zcGFuPjxzcGFuIGxhbmc9 IkVOLVVTIiBzdHlsZT0iZm9udC1mYW1pbHk6Q29uc29sYXM7Y29sb3I6I0Q0RDRENCI+DQo8L3Nw YW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LWZhbWlseTpDb25zb2xhcztjb2xvcjoj QzhDOEM4Ij5lbmQ8L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LWZhbWlseTpD b25zb2xhcztjb2xvcjojRDRENEQ0Ij47PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCIgYWxpZ249ImxlZnQiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7bGluZS1oZWln aHQ6MTQuMjVwdDtiYWNrZ3JvdW5kOiMxRTFFMUUiPg0KPHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxl PSJmb250LWZhbWlseTpDb25zb2xhcztjb2xvcjojRDRENEQ0Ij4mbmJzcDsgJm5ic3A7IH08bzpw PjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1V UyI+VGhpcyBzZWVtcyBxdWl0ZSBzdHJhbmdlIGZvciBtZSwgd2h5IG90aGVyIHF1ZXVlcyBoYXZl IHRvIGJlIGluIHN0b3BwZWQgc3RhdGU/PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPkNhbiBhbnlvbmUgaGVscCB0byBleHBsYWlu PzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9 IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs Ij48c3BhbiBsYW5nPSJFTi1VUyI+VGhhbmsgeW91LjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwv c3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+PG86cD4m bmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0i RU4tVVMiPkJyLCBYaWFvcGluZzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29O b3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8 L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCjwvYm9keT4NCjwvaHRtbD4NCg== --_000_BN6PR11MB1251818A4D2C9068C1B85F55F7A49BN6PR11MB1251namp_-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8867A41CF2 for ; Tue, 21 Feb 2023 02:00:57 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 533A043120; Tue, 21 Feb 2023 02:00:57 +0100 (CET) Received: from cnhzppmgwesa01.nokia-sbell.com (unknown [124.160.72.178]) by mails.dpdk.org (Postfix) with ESMTP id 5156043109 for ; Tue, 21 Feb 2023 02:00:55 +0100 (CET) X-IronPort-AV: E=Sophos;i="5.97,313,1669046400"; d="scan'208,217";a="156697" Received: from unknown (HELO CNSHPPEXCH1602.nsn-intra.net) ([135.251.51.102]) by cnhzppmgwesa01.nokia-sbell.com with ESMTP; 21 Feb 2023 09:00:53 +0800 Received: from CNSHPPEXCH1601.nsn-intra.net (135.251.51.101) by CNSHPPEXCH1602.nsn-intra.net (135.251.51.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Tue, 21 Feb 2023 09:00:33 +0800 Received: from CNSHPPEXCH1601.nsn-intra.net ([135.251.51.101]) by CNSHPPEXCH1601.nsn-intra.net ([135.251.51.101]) with mapi id 15.01.2375.034; Tue, 21 Feb 2023 09:00:33 +0800 From: "Xiaoping Yan (NSB)" To: "Burakov, Anatoly" , "users@dpdk.org" Subject: RE: why rte_power_ethdev_pmgmt_queue_enable need to check if other queues are stopped Thread-Topic: why rte_power_ethdev_pmgmt_queue_enable need to check if other queues are stopped Thread-Index: AdlCBFLV8QoElG47QfeDBKVxvG5wigC7XY2wAAj7pdAABqvI0AAAK9qQAACsWAAAAFskoAAWfSiQ Date: Tue, 21 Feb 2023 01:00:33 +0000 Message-ID: References: <0c6664b4318142df94531165fb2acf94@nokia-sbell.com> <0684cc0bac6f4b4996899b1dd9eafbf4@nokia-sbell.com> <4da7b78195454d6f823a983d71310c5d@nokia-sbell.com> <3c01d07600754a8096b736610522b754@nokia-sbell.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [135.251.51.115] Content-Type: multipart/alternative; boundary="_000_f225b01eaf4c4a739075696fe2887beenokiasbellcom_" MIME-Version: 1.0 X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org --_000_f225b01eaf4c4a739075696fe2887beenokiasbellcom_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGksDQoNCk9rLCBJIGdldCB5b3VyIHBvaW50IG5vdy4NClRoYW5rIHlvdS4NCg0KQnIsIFhpYW9w aW5nDQoNCkZyb206IEJ1cmFrb3YsIEFuYXRvbHkgPGFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb20+ DQpTZW50OiAyMDIz5bm0MuaciDIw5pelIDIyOjE5DQpUbzogWGlhb3BpbmcgWWFuIChOU0IpIDx4 aWFvcGluZy55YW5Abm9raWEtc2JlbGwuY29tPjsgdXNlcnNAZHBkay5vcmcNClN1YmplY3Q6IFJF OiB3aHkgcnRlX3Bvd2VyX2V0aGRldl9wbWdtdF9xdWV1ZV9lbmFibGUgbmVlZCB0byBjaGVjayBp ZiBvdGhlciBxdWV1ZXMgYXJlIHN0b3BwZWQNCg0KDQrDmCAgSSBkb27igJl0IHVuZGVyc3RhbmQg dGhpcyBwb2ludC4NCg0KVGVjaG5pY2FsbHksIG5vIG9uZSBzdG9wcyB5b3UgZnJvbSBwb2xsaW5n IHRoZSBzYW1lIHF1ZXVlIGZyb20gYW55IHRocmVhZCwgbm90IGp1c3QgdGhlIG9uZSB5b3XigJly ZSBjb25maWd1cmluZyB3aXRoLiBJdCBzb3VuZHMgbGlrZSBub3RoaW5nIGFueW9uZSB3b3VsZCBk bywgYnV0IHdlIHByZWZlciB0byBiZSBvbiB0aGUgc2FmZSBzaWRlIPCfmIoNCg0KDQrDmCAgQW55 d2F5LCBwb2xsaW5nIG90aGVyIHF1ZXVlcyBvbiBzb21lIG90aGVyIHRocmVhZCBzaG91bGQgbm90 IGFmZmVjdCwgcmlnaHQ/IE9yIGNhbiB5b3UgaGVscCB0byBleHBsYWluIGEgYml0IG1vcmUgb24g dGhpcz8NCg0KSXQgd291bGQgbm90IGFmZmVjdCB0aGUgY2FsbGJhY2ssIGJ1dCBpdCB3b3VsZCBh ZmZlY3QgaW50ZXJuYWwgc3RydWN0dXJlcyBvZiB0aGUgUE1EIHBvd2VyIG1hbmFnZW1lbnQsIGlm IGl04oCZcyBvbmUgb2YgdGhvc2UgcXVldWVzIHlvdSBhcmUgc2V0dGluZyB1cCBmb3IgdGhhdC4g UE1EIGNhbGxiYWNrcyBhcHBlYXIgdG8gYmUgdGhyZWFkLXNhZmUgKHNvIEkgd2FzIHdyb25nIGFi b3V0IHRoYXQpLCBidXQgdGhlIFBNRCBwb3dlciBtYW5hZ2VtZW50IGludGVybmFsIHN0cnVjdHVy ZXMgYXJlbuKAmXQsIGFzIHRoZSBxdWV1ZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgc2hhcmVkIGFt b25nIHRob3NlIHF1ZXVlcyB0aGF0IGFyZSBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzY2hlbWUuIFdl IGRvIG1vZGlmeSBzb21lIHNoYXJlZCBkYXRhIHdoZW4gd2XigJlyZSB0cmlnZ2VyaW5nIGNhbGxi YWNrcywgc28gd2UgZG8gbm90IHdhbnQgYW55IHF1ZXVlcyB0byBiZSBwb2xsaW5nIHdoaWxlIHdl IGNvbmZpZ3VyZSB0aGluZ3MuIEFnYWluLCB0aGlzIHdvdWxkIG9ubHkgbWF0dGVyIGlmIHlvdSB0 cmllZCB0byBwb2xsIGluYmV0d2VlbiBjb25maWd1cmF0aW9uLCBvciBwb2xsZWQgZnJvbSBhIGRp ZmZlcmVudCB0aHJlYWQsIHNvIGl0IGRvZXNu4oCZdCBzb3VuZCBsaWtlIGFueXRoaW5nIGFueW9u ZSB3b3VsZCBkb+KApiBCdXQgdGhlIEFQSSBkaXNhbGxvd3MgdGhhdCDigJxqdXN0IGluIGNhc2Xi gJ0uDQoNClNvLCBJIHRoaW5rIHlvdeKAmXJlIHJpZ2h0IGluIHRoYXQgaXTigJlzIHBlcmZlY3Rs eSBzYWZlIHRvIHN0YXJ0IHBvcnRzIGFzIGxvbmcgYXMgeW914oCZcmUgbm90IHBvbGxpbmcgdGhl bSwgYnV0IGl04oCZcyBzaW1wbGVyIHRvIHRlbGwgdXNlcnMgdG8gbm90IHN0YXJ0IHRoZSBwb3J0 cyB0aGFuIGl0IGlzIHRvIGV4cGxhaW4gd2hhdCB5b3UgY2FuIG9yIGNhbuKAmXQgZG8gd2l0aG91 dCB0aGluZ3MgYmxvd2luZyB1cC4NCg0KRnJvbTogWGlhb3BpbmcgWWFuIChOU0IpIDx4aWFvcGlu Zy55YW5Abm9raWEtc2JlbGwuY29tPG1haWx0bzp4aWFvcGluZy55YW5Abm9raWEtc2JlbGwuY29t Pj4NClNlbnQ6IE1vbmRheSwgRmVicnVhcnkgMjAsIDIwMjMgMjoxMCBQTQ0KVG86IEJ1cmFrb3Ys IEFuYXRvbHkgPGFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb208bWFpbHRvOmFuYXRvbHkuYnVyYWtv dkBpbnRlbC5jb20+PjsgdXNlcnNAZHBkay5vcmc8bWFpbHRvOnVzZXJzQGRwZGsub3JnPg0KU3Vi amVjdDogUkU6IHdoeSBydGVfcG93ZXJfZXRoZGV2X3BtZ210X3F1ZXVlX2VuYWJsZSBuZWVkIHRv IGNoZWNrIGlmIG90aGVyIHF1ZXVlcyBhcmUgc3RvcHBlZA0KDQpIaSwNCg0KPj4gbm90IHVubGVz cyB5b3Ugc3RhcnQgcG9sbGluZyB0aG9zZSBxdWV1ZXMgZnJvbSBzb21lIG90aGVyIHRocmVhZA0K SSBkb27igJl0IHVuZGVyc3RhbmQgdGhpcyBwb2ludC4NCkFzIHRoZSByeCBjYWxsYmFjayBpcyBw ZXIgcXVldWUgZGF0YSwgaXQgc2VlbXMgdG8gbWUgb25seSB0aGluZyBpcyB3ZSBzaG91bGQgbm90 IHBvbGxpbmcgdGhpcyBxdWV1ZSAgd2hpbGUgd2UgYXJlIG1vZGlmeSBpdHMgY2FsbGJhY2suIFNv IG9ubHkgdGhpcyBxdWV1ZSBzaG91bGQgYmUgaW4gc3RvcHBlZCBzdGF0ZSAobWF5YmUgZXZlbiB0 aGlzIGlzIG5vdCByZXF1aXJlZD8gQmVjYXVzZSBJIHNlZSBhdG9taWMgb3BlcmF0aW9uIGlzIHVz ZWQgKF9fYXRvbWljX3N0b3JlX24gaW4gcnRlX2V0aF9hZGRfcnhfY2FsbGJhY2sgYW5kIF9fYXRv bWljX2xvYWRfbiBpbiBydGVfZXRoX3J4X2J1cnN0KSkuDQpBbnl3YXksIHBvbGxpbmcgb3RoZXIg cXVldWVzIG9uIHNvbWUgb3RoZXIgdGhyZWFkIHNob3VsZCBub3QgYWZmZWN0LCByaWdodD8gT3Ig Y2FuIHlvdSBoZWxwIHRvIGV4cGxhaW4gYSBiaXQgbW9yZSBvbiB0aGlzPw0KDQpUaGFuayB5b3Ug dmVyeSBtdWNoLg0KDQpCciwgWGlhb3BpbmcNCg0KRnJvbTogQnVyYWtvdiwgQW5hdG9seSA8YW5h dG9seS5idXJha292QGludGVsLmNvbTxtYWlsdG86YW5hdG9seS5idXJha292QGludGVsLmNvbT4+ DQpTZW50OiAyMDIz5bm0MuaciDIw5pelIDIxOjU5DQpUbzogWGlhb3BpbmcgWWFuIChOU0IpIDx4 aWFvcGluZy55YW5Abm9raWEtc2JlbGwuY29tPG1haWx0bzp4aWFvcGluZy55YW5Abm9raWEtc2Jl bGwuY29tPj47IHVzZXJzQGRwZGsub3JnPG1haWx0bzp1c2Vyc0BkcGRrLm9yZz4NClN1YmplY3Q6 IFJFOiB3aHkgcnRlX3Bvd2VyX2V0aGRldl9wbWdtdF9xdWV1ZV9lbmFibGUgbmVlZCB0byBjaGVj ayBpZiBvdGhlciBxdWV1ZXMgYXJlIHN0b3BwZWQNCg0KV2VsbCwgdGVjaG5pY2FsbHksIG5vLCB5 b3XigJlyZSByaWdodCwgaXQgd291bGRu4oCZdCDigJMgbm90IHVubGVzcyB5b3Ugc3RhcnQgcG9s bGluZyB0aG9zZSBxdWV1ZXMgZnJvbSBzb21lIG90aGVyIHRocmVhZC4gV2UgY2Fu4oCZdCBwcmV2 ZW50IHRoYXQgZnJvbSBoYXBwZW5pbmcsIHNvIHdlIGZpZ3VyZWQgdGhlIGJlc3Qgd2F5IHdvdWxk IGJlIHRvIGp1c3QgZGlzYWxsb3cgcXVldWUgc3RhcnRzIHVudGlsIHdl4oCZcmUgZG9uZSBjb25m aWd1cmluZyBldmVyeXRoaW5nLiBTbywgeWVzLCB3ZSBjb3VsZCByZWxheCB0aGF0IHJlc3RyaWN0 aW9uLCBpdOKAmXMganVzdCBhIG1hdHRlciBvZiBzcGVjaWZ5aW5nIHdoYXTigJlzIGFsbG93ZWQg YW5kIHdoYXTigJlzIG5vdCB2cy4ganVzdCBkb2luZyBhIGJsYW5rZXQg4oCcbm/igJ0gYW5kIGtl ZXBpbmcgdGhpbmdzIHNpbXBsZS4NCg0KRnJvbTogWGlhb3BpbmcgWWFuIChOU0IpIDx4aWFvcGlu Zy55YW5Abm9raWEtc2JlbGwuY29tPG1haWx0bzp4aWFvcGluZy55YW5Abm9raWEtc2JlbGwuY29t Pj4NClNlbnQ6IE1vbmRheSwgRmVicnVhcnkgMjAsIDIwMjMgMTo0MSBQTQ0KVG86IEJ1cmFrb3Ys IEFuYXRvbHkgPGFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb208bWFpbHRvOmFuYXRvbHkuYnVyYWtv dkBpbnRlbC5jb20+PjsgdXNlcnNAZHBkay5vcmc8bWFpbHRvOnVzZXJzQGRwZGsub3JnPg0KU3Vi amVjdDogUkU6IHdoeSBydGVfcG93ZXJfZXRoZGV2X3BtZ210X3F1ZXVlX2VuYWJsZSBuZWVkIHRv IGNoZWNrIGlmIG90aGVyIHF1ZXVlcyBhcmUgc3RvcHBlZA0KDQpIaSwNCg0KVGhhbmsgeW91IGZv ciB0aGUgaW5mb3JtYXRpb24uDQpJIHNlZSBmcm9tIHJ0ZV9ldGhfYWRkX3J4X2NhbGxiYWNrLCB0 aGUgY2FsbGJhY2sgaXMgYWRkZWQgdG8gcGVyIHF1ZXVlIGRhdGE6IHJ0ZV9ldGhfZGV2aWNlc1tw b3J0X2lkXS5wb3N0X3J4X2J1cnN0X2Nic1txdWV1ZV9pZF07DQpTbyBpdCBzaG91bGQgbm90IGFm ZmVjdCBwb2xsaW5nIG9uIG90aGVyIHF1ZXVlcz8NCg0KDQpCciwgWGlhb3BpbmcNCg0KRnJvbTog QnVyYWtvdiwgQW5hdG9seSA8YW5hdG9seS5idXJha292QGludGVsLmNvbTxtYWlsdG86YW5hdG9s eS5idXJha292QGludGVsLmNvbT4+DQpTZW50OiAyMDIz5bm0MuaciDIw5pelIDE4OjI4DQpUbzog WGlhb3BpbmcgWWFuIChOU0IpIDx4aWFvcGluZy55YW5Abm9raWEtc2JlbGwuY29tPG1haWx0bzp4 aWFvcGluZy55YW5Abm9raWEtc2JlbGwuY29tPj47IHVzZXJzQGRwZGsub3JnPG1haWx0bzp1c2Vy c0BkcGRrLm9yZz4NClN1YmplY3Q6IFJFOiB3aHkgcnRlX3Bvd2VyX2V0aGRldl9wbWdtdF9xdWV1 ZV9lbmFibGUgbmVlZCB0byBjaGVjayBpZiBvdGhlciBxdWV1ZXMgYXJlIHN0b3BwZWQNCg0KSGks DQoNCkl0IGlzIG1haW5seSBiZWNhdXNlIHdl4oCZcmUgaW5zdGFsbCBjYWxsYmFja3MsIHdoaWNo IGlzIG5vdCB0aHJlYWQtc2FmZSB1bmxlc3MgdGhlIFBNRCBpcyBzdG9wcGVkLiBPdXIgUE1E4oCZ cyBpbnRlcm5hbCBjb25maWcgc3RydWN0dXJlcyBhcmUgbm90IHRocmVhZC1zYWZlLiBZb3Ugc2hv dWxkIG9ubHkgc3RhcnQgdGhlc2UgcG9ydHMgYWZ0ZXIgeW91IGNvbmZpZ3VyZSBldmVyeXRoaW5n Lg0KDQpGcm9tOiBYaWFvcGluZyBZYW4gKE5TQikgPHhpYW9waW5nLnlhbkBub2tpYS1zYmVsbC5j b208bWFpbHRvOnhpYW9waW5nLnlhbkBub2tpYS1zYmVsbC5jb20+Pg0KU2VudDogTW9uZGF5LCBG ZWJydWFyeSAyMCwgMjAyMyA2OjEyIEFNDQpUbzogdXNlcnNAZHBkay5vcmc8bWFpbHRvOnVzZXJz QGRwZGsub3JnPjsgQnVyYWtvdiwgQW5hdG9seSA8YW5hdG9seS5idXJha292QGludGVsLmNvbTxt YWlsdG86YW5hdG9seS5idXJha292QGludGVsLmNvbT4+DQpTdWJqZWN0OiBSRTogd2h5IHJ0ZV9w b3dlcl9ldGhkZXZfcG1nbXRfcXVldWVfZW5hYmxlIG5lZWQgdG8gY2hlY2sgaWYgb3RoZXIgcXVl dWVzIGFyZSBzdG9wcGVkDQoNCkhpIEFuYXRvbHkNCg0KSSBzZWUgdGhpcyBtdWx0aXBsZSBxdWV1 ZSBzdXBwb3J0IGlzIGFkZGVkIGJ5IHlvdS4NCkNvdWxkIHlvdSBraW5kbHkgaGVscCBtZSB0byB1 bmRlcnN0YW5kIHdoeSBydGVfcG93ZXJfZXRoZGV2X3BtZ210X3F1ZXVlX2VuYWJsZSBuZWVkIG90 aGVyIHF1ZXVlcyB0byBiZSBpbiBzdG9wcGVkIHN0YXRlPw0KDQpjb21taXQgNWRmZjlhNzJiMGVm ZWFiMDJhMmI3MWU1MmM0ODcxODA1YjdlNjRjYg0KQXV0aG9yOiBBbmF0b2x5IEJ1cmFrb3YgYW5h dG9seS5idXJha292QGludGVsLmNvbTxtYWlsdG86YW5hdG9seS5idXJha292QGludGVsLmNvbT4N CkRhdGU6ICAgRnJpIEp1bCA5IDE2OjA4OjE1IDIwMjEgKzAwMDANCg0KcG93ZXI6IHN1cHBvcnQg Y2FsbGJhY2tzIGZvciBtdWx0aXBsZSBSeCBxdWV1ZXMNCg0KDQpUaGFuayB5b3UuDQoNCkJyLCBY aWFvcGluZw0KDQpGcm9tOiBYaWFvcGluZyBZYW4gKE5TQikNClNlbnQ6IDIwMjPlubQy5pyIMTbm l6UgMjE6MDANClRvOiB1c2Vyc0BkcGRrLm9yZzxtYWlsdG86dXNlcnNAZHBkay5vcmc+DQpTdWJq ZWN0OiB3aHkgcnRlX3Bvd2VyX2V0aGRldl9wbWdtdF9xdWV1ZV9lbmFibGUgbmVlZCB0byBjaGVj ayBpZiBvdGhlciBxdWV1ZXMgYXJlIHN0b3BwZWQNCg0KSGkgZXhwZXJ0cywNCg0KSeKAmW0gdHJ5 aW5nIHRvIHVzZSBkcGRrIHBvd2VyIHBtZCBtYW5hZ2VtZW50IEFQSXMgaW4gbXkgZHBkayBhcHBs aWNhdGlvbi4NCk15IGFwcGxpY2F0aW9uIHVzZXMgc2V2ZXJhbCBwb3J0cywgZWFjaCBoYXZlIG9u ZSByeCBxdWV1ZSwgYW5kIGl0IGdvZXMgbGlrZSB0aGlzDQoNCjEuICAgICBJbml0IGZpcnN0IHBv cnQsIHNldHVwIHJ4IHF1ZXVlLCBjYWxsIHJ0ZV9wb3dlcl9ldGhkZXZfcG1nbXRfcXVldWVfZW5h YmxlLCBhbmQgc3RhcnQgdGhlIGZpcnN0IHBvcnQNCg0KMi4gICAgIEluaXQgc2Vjb25kIHBvcnQs IHNldHVwIHJ4IHF1ZXVlLCBjYWxsIHJ0ZV9wb3dlcl9ldGhkZXZfcG1nbXRfcXVldWVfZW5hYmxl LCBhbmQgc3RhcnQgdGhlIHNlY29uZCBwb3J0DQoNCjMuICAgICDigKYNCk5vdyBmb3IgdGhlIGZp cnN0IHBvcnQgJiBxdWV1ZSwgcnRlX3Bvd2VyX2V0aGRldl9wbWdtdF9xdWV1ZV9lbmFibGUgcmV0 dXJuIHN1Y2Nlc3MsIGJ1dCBmb3IgdGhlIHNlY29uZCBwb3J0ICYgcXVldWUsIGl0IHJldHVybnMg LTE2DQpGcm9tIHJ0ZV9wb3dlcl9ldGhkZXZfcG1nbXRfcXVldWVfZW5hYmxlIGNvZGUsIEkgdGhp bmsgaXQgZmFpbHMgd2hlbiBjaGVja2luZyBpZiBvdGhlciBxdWV1ZXMgYXJlIHN0b3BwZWQgYXMg d2VsbC4NCiAgICAvKiBjaGVjayBpZiBvdGhlciBxdWV1ZXMgYXJlIHN0b3BwZWQgYXMgd2VsbCAq Lw0KICAgIHJldCA9IGNmZ19xdWV1ZXNfc3RvcHBlZChsY29yZV9jZmcpOw0KICAgIGlmIChyZXQg IT0gMSkgew0KICAgICAgICAvKiBlcnJvciBtZWFucyBpbnZhbGlkIHF1ZXVlLCAwIG1lYW5zIHF1 ZXVlIHdhc24ndCBzdG9wcGVkICovDQogICAgICAgIHJldCA9IHJldCA8IDAgPyAtRUlOVkFMIDog LUVCVVNZOw0KICAgICAgICBnb3RvIGVuZDsNCiAgICB9DQpUaGlzIHNlZW1zIHF1aXRlIHN0cmFu Z2UgZm9yIG1lLCB3aHkgb3RoZXIgcXVldWVzIGhhdmUgdG8gYmUgaW4gc3RvcHBlZCBzdGF0ZT8N CkNhbiBhbnlvbmUgaGVscCB0byBleHBsYWluPw0KDQpUaGFuayB5b3UuDQoNCg0KQnIsIFhpYW9w aW5nDQoNCg== --_000_f225b01eaf4c4a739075696fe2887beenokiasbellcom_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPHN0eWxl PjwhLS0NCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6 V2luZ2RpbmdzOw0KCXBhbm9zZS0xOjUgMCAwIDAgMCAwIDAgMCAwIDA7fQ0KQGZvbnQtZmFjZQ0K CXtmb250LWZhbWlseToiTVMgTWluY2hvIjsNCglwYW5vc2UtMToyIDIgNiA5IDQgMiA1IDggMyA0 O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk65a6L5L2TOw0KCXBhbm9zZS0xOjIgMSA2IDAg MyAxIDEgMSAxIDE7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseToiQ2FtYnJpYSBNYXRoIjsN CglwYW5vc2UtMToyIDQgNSAzIDUgNCA2IDMgMiA0O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1p bHk6562J57q/Ow0KCXBhbm9zZS0xOjIgMSA2IDAgMyAxIDEgMSAxIDE7fQ0KQGZvbnQtZmFjZQ0K CXtmb250LWZhbWlseTpDYWxpYnJpOw0KCXBhbm9zZS0xOjIgMTUgNSAyIDIgMiA0IDMgMiA0O30N CkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6IlNlZ29lIFVJIEVtb2ppIjsNCglwYW5vc2UtMToy IDExIDUgMiA0IDIgNCAyIDIgMzt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5OiJcQOWui+S9 kyI7DQoJcGFub3NlLTE6MiAxIDYgMCAzIDEgMSAxIDEgMTt9DQpAZm9udC1mYWNlDQoJe2ZvbnQt ZmFtaWx5OiJcQOetiee6vyI7DQoJcGFub3NlLTE6MiAxIDYgMCAzIDEgMSAxIDEgMTt9DQpAZm9u dC1mYWNlDQoJe2ZvbnQtZmFtaWx5OiJNUyBQR290aGljIjsNCglwYW5vc2UtMToyIDExIDYgMCA3 IDIgNSA4IDIgNDt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5OkNvbnNvbGFzOw0KCXBhbm9z ZS0xOjIgMTEgNiA5IDIgMiA0IDMgMiA0O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6IlxA TVMgUEdvdGhpYyI7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseToiXEBNUyBNaW5jaG8iOw0K CXBhbm9zZS0xOjIgMiA2IDkgNCAyIDUgOCAzIDQ7fQ0KLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8N CnAuTXNvTm9ybWFsLCBsaS5Nc29Ob3JtYWwsIGRpdi5Nc29Ob3JtYWwNCgl7bWFyZ2luOjBjbTsN Cgl0ZXh0LWFsaWduOmp1c3RpZnk7DQoJdGV4dC1qdXN0aWZ5OmludGVyLWlkZW9ncmFwaDsNCglm b250LXNpemU6MTAuNXB0Ow0KCWZvbnQtZmFtaWx5Ouetiee6vzt9DQphOmxpbmssIHNwYW4uTXNv SHlwZXJsaW5rDQoJe21zby1zdHlsZS1wcmlvcml0eTo5OTsNCgljb2xvcjojMDU2M0MxOw0KCXRl eHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQ0KcC5Nc29MaXN0UGFyYWdyYXBoLCBsaS5Nc29MaXN0 UGFyYWdyYXBoLCBkaXYuTXNvTGlzdFBhcmFncmFwaA0KCXttc28tc3R5bGUtcHJpb3JpdHk6MzQ7 DQoJbWFyZ2luOjBjbTsNCgl0ZXh0LWFsaWduOmp1c3RpZnk7DQoJdGV4dC1qdXN0aWZ5OmludGVy LWlkZW9ncmFwaDsNCgl0ZXh0LWluZGVudDoyMS4wcHQ7DQoJZm9udC1zaXplOjEwLjVwdDsNCglm b250LWZhbWlseTrnrYnnur87fQ0Kc3Bhbi5FbWFpbFN0eWxlMjENCgl7bXNvLXN0eWxlLXR5cGU6 cGVyc29uYWwtcmVwbHk7DQoJZm9udC1mYW1pbHk6562J57q/Ow0KCWNvbG9yOndpbmRvd3RleHQ7 fQ0KLk1zb0NocERlZmF1bHQNCgl7bXNvLXN0eWxlLXR5cGU6ZXhwb3J0LW9ubHk7DQoJZm9udC1z aXplOjEwLjBwdDt9DQpAcGFnZSBXb3JkU2VjdGlvbjENCgl7c2l6ZTo2MTIuMHB0IDc5Mi4wcHQ7 DQoJbWFyZ2luOjcyLjBwdCA5MC4wcHQgNzIuMHB0IDkwLjBwdDt9DQpkaXYuV29yZFNlY3Rpb24x DQoJe3BhZ2U6V29yZFNlY3Rpb24xO30NCi8qIExpc3QgRGVmaW5pdGlvbnMgKi8NCkBsaXN0IGww DQoJe21zby1saXN0LWlkOjY5ODkwMDQ1ODsNCgltc28tbGlzdC10eXBlOmh5YnJpZDsNCgltc28t bGlzdC10ZW1wbGF0ZS1pZHM6MTQzOTk2MjQzNCAtMTA2OTkzNDkwNCA0MDMyNDMwMTEgNDAzMjQz MDEzIDQwMzI0MzAwOSA0MDMyNDMwMTEgNDAzMjQzMDEzIDQwMzI0MzAwOSA0MDMyNDMwMTEgNDAz MjQzMDEzO30NCkBsaXN0IGwwOmxldmVsMQ0KCXttc28tbGV2ZWwtc3RhcnQtYXQ6MDsNCgltc28t bGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ674OYOw0KCW1zby1s ZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0 ZXh0LWluZGVudDotMTguMHB0Ow0KCWZvbnQtZmFtaWx5OldpbmdkaW5nczsNCgltc28tZmFyZWFz dC1mb250LWZhbWlseTpDYWxpYnJpOw0KCW1zby1iaWRpLWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcg Um9tYW4iO30NCkBsaXN0IGwwOmxldmVsMg0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxs ZXQ7DQoJbXNvLWxldmVsLXRleHQ6bzsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28t bGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LTE4LjBwdDsNCglmb250 LWZhbWlseToiQ291cmllciBOZXciO30NCkBsaXN0IGwwOmxldmVsMw0KCXttc28tbGV2ZWwtbnVt YmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ674KnOw0KCW1zby1sZXZlbC10YWIt c3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVu dDotMTguMHB0Ow0KCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9DQpAbGlzdCBsMDpsZXZlbDQNCgl7 bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0Ou+CtzsNCglt c28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7 DQoJdGV4dC1pbmRlbnQ6LTE4LjBwdDsNCglmb250LWZhbWlseTpTeW1ib2w7fQ0KQGxpc3QgbDA6 bGV2ZWw1DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwtdGV4 dDpvOw0KCW1zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRp b246bGVmdDsNCgl0ZXh0LWluZGVudDotMTguMHB0Ow0KCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5l dyI7fQ0KQGxpc3QgbDA6bGV2ZWw2DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsN Cgltc28tbGV2ZWwtdGV4dDrvgqc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxl dmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0xOC4wcHQ7DQoJZm9udC1m YW1pbHk6V2luZ2RpbmdzO30NCkBsaXN0IGwwOmxldmVsNw0KCXttc28tbGV2ZWwtbnVtYmVyLWZv cm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ674K3Ow0KCW1zby1sZXZlbC10YWItc3RvcDpu b25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotMTgu MHB0Ow0KCWZvbnQtZmFtaWx5OlN5bWJvbDt9DQpAbGlzdCBsMDpsZXZlbDgNCgl7bXNvLWxldmVs LW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0Om87DQoJbXNvLWxldmVsLXRh Yi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5k ZW50Oi0xOC4wcHQ7DQoJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3Ijt9DQpAbGlzdCBsMDpsZXZl bDkNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0Ou+C pzsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9u OmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LTE4LjBwdDsNCglmb250LWZhbWlseTpXaW5nZGluZ3M7fQ0K QGxpc3QgbDENCgl7bXNvLWxpc3QtaWQ6MTc1NzUwOTk3MjsNCgltc28tbGlzdC10eXBlOmh5YnJp ZDsNCgltc28tbGlzdC10ZW1wbGF0ZS1pZHM6NTg0MTEwMTE4IDIzNTY5Mjg3OCA2NzY5ODcxMyA2 NzY5ODcxNSA2NzY5ODcwMyA2NzY5ODcxMyA2NzY5ODcxNSA2NzY5ODcwMyA2NzY5ODcxMyA2NzY5 ODcxNTt9DQpAbGlzdCBsMTpsZXZlbDENCgl7bXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNv LWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCW1hcmdpbi1sZWZ0OjE4LjBwdDsNCgl0ZXh0 LWluZGVudDotMTguMHB0O30NCkBsaXN0IGwxOmxldmVsMg0KCXttc28tbGV2ZWwtbnVtYmVyLWZv cm1hdDphbHBoYS1sb3dlcjsNCgltc28tbGV2ZWwtdGV4dDoiJTJcKSI7DQoJbXNvLWxldmVsLXRh Yi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCW1hcmdpbi1s ZWZ0OjQyLjBwdDsNCgl0ZXh0LWluZGVudDotMjEuMHB0O30NCkBsaXN0IGwxOmxldmVsMw0KCXtt c28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpyb21hbi1sb3dlcjsNCgltc28tbGV2ZWwtdGFiLXN0b3A6 bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOnJpZ2h0Ow0KCW1hcmdpbi1sZWZ0OjYz LjBwdDsNCgl0ZXh0LWluZGVudDotMjEuMHB0O30NCkBsaXN0IGwxOmxldmVsNA0KCXttc28tbGV2 ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJbWFy Z2luLWxlZnQ6ODQuMHB0Ow0KCXRleHQtaW5kZW50Oi0yMS4wcHQ7fQ0KQGxpc3QgbDE6bGV2ZWw1 DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmFscGhhLWxvd2VyOw0KCW1zby1sZXZlbC10ZXh0 OiIlNVwpIjsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBv c2l0aW9uOmxlZnQ7DQoJbWFyZ2luLWxlZnQ6MTA1LjBwdDsNCgl0ZXh0LWluZGVudDotMjEuMHB0 O30NCkBsaXN0IGwxOmxldmVsNg0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpyb21hbi1sb3dl cjsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9u OnJpZ2h0Ow0KCW1hcmdpbi1sZWZ0OjEyNi4wcHQ7DQoJdGV4dC1pbmRlbnQ6LTIxLjBwdDt9DQpA bGlzdCBsMTpsZXZlbDcNCgl7bXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51 bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCW1hcmdpbi1sZWZ0OjE0Ny4wcHQ7DQoJdGV4dC1pbmRlbnQ6 LTIxLjBwdDt9DQpAbGlzdCBsMTpsZXZlbDgNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YWxw aGEtbG93ZXI7DQoJbXNvLWxldmVsLXRleHQ6IiU4XCkiOw0KCW1zby1sZXZlbC10YWItc3RvcDpu b25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgltYXJnaW4tbGVmdDoxNjgu MHB0Ow0KCXRleHQtaW5kZW50Oi0yMS4wcHQ7fQ0KQGxpc3QgbDE6bGV2ZWw5DQoJe21zby1sZXZl bC1udW1iZXItZm9ybWF0OnJvbWFuLWxvd2VyOw0KCW1zby1sZXZlbC10YWItc3RvcDpub25lOw0K CW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246cmlnaHQ7DQoJbWFyZ2luLWxlZnQ6MTg5LjBwdDsN Cgl0ZXh0LWluZGVudDotMjEuMHB0O30NCm9sDQoJe21hcmdpbi1ib3R0b206MGNtO30NCnVsDQoJ e21hcmdpbi1ib3R0b206MGNtO30NCi0tPjwvc3R5bGU+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+ DQo8bzpzaGFwZWRlZmF1bHRzIHY6ZXh0PSJlZGl0IiBzcGlkbWF4PSIxMDI2IiAvPg0KPC94bWw+ PCFbZW5kaWZdLS0+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+DQo8bzpzaGFwZWxheW91dCB2OmV4 dD0iZWRpdCI+DQo8bzppZG1hcCB2OmV4dD0iZWRpdCIgZGF0YT0iMSIgLz4NCjwvbzpzaGFwZWxh eW91dD48L3htbD48IVtlbmRpZl0tLT4NCjwvaGVhZD4NCjxib2R5IGxhbmc9IlpILUNOIiBsaW5r PSIjMDU2M0MxIiB2bGluaz0iIzk1NEY3MiIgc3R5bGU9IndvcmQtd3JhcDpicmVhay13b3JkO3Rl eHQtanVzdGlmeS10cmltOnB1bmN0dWF0aW9uIj4NCjxkaXYgY2xhc3M9IldvcmRTZWN0aW9uMSI+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+SGksPG86cD48L286cD48 L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPjxvOnA+ Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9 IkVOLVVTIj5PaywgSSBnZXQgeW91ciBwb2ludCBub3cuPG86cD48L286cD48L3NwYW4+PC9wPg0K PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPlRoYW5rIHlvdS48bzpwPjwv bzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+ PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi PjxzcGFuIGxhbmc9IkVOLVVTIj5CciwgWGlhb3Bpbmc8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8 L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPiZuYnNw OzwvbzpwPjwvc3Bhbj48L3A+DQo8ZGl2Pg0KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVy LXRvcDpzb2xpZCAjRTFFMUUxIDEuMHB0O3BhZGRpbmc6My4wcHQgMGNtIDBjbSAwY20iPg0KPHAg Y2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249ImxlZnQiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPjxi PjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTom cXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYiPkZyb206PC9zcGFuPjwvYj48c3BhbiBsYW5n PSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJy aSZxdW90OyxzYW5zLXNlcmlmIj4gQnVyYWtvdiwgQW5hdG9seSAmbHQ7YW5hdG9seS5idXJha292 QGludGVsLmNvbSZndDsNCjxicj4NCjxiPlNlbnQ6PC9iPiAyMDIzPC9zcGFuPjxzcGFuIHN0eWxl PSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OuWui+S9kyI+5bm0PC9zcGFuPjxzcGFuIGxh bmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxp YnJpJnF1b3Q7LHNhbnMtc2VyaWYiPjI8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4w cHQ7Zm9udC1mYW1pbHk65a6L5L2TIj7mnIg8L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxl PSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1z ZXJpZiI+MjA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6 5a6L5L2TIj7ml6U8L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTEu MHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZiI+DQogMjI6MTk8 YnI+DQo8Yj5Ubzo8L2I+IFhpYW9waW5nIFlhbiAoTlNCKSAmbHQ7eGlhb3BpbmcueWFuQG5va2lh LXNiZWxsLmNvbSZndDs7IHVzZXJzQGRwZGsub3JnPGJyPg0KPGI+U3ViamVjdDo8L2I+IFJFOiB3 aHkgcnRlX3Bvd2VyX2V0aGRldl9wbWdtdF9xdWV1ZV9lbmFibGUgbmVlZCB0byBjaGVjayBpZiBv dGhlciBxdWV1ZXMgYXJlIHN0b3BwZWQ8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjwv ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249ImxlZnQiIHN0eWxlPSJ0ZXh0LWFsaWdu OmxlZnQiPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8 cCBjbGFzcz0iTXNvTGlzdFBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjM2LjBwdDt0ZXh0 LWluZGVudDotMTguMHB0O21zby1saXN0OmwwIGxldmVsMSBsZm8yIj4NCjwhW2lmICFzdXBwb3J0 TGlzdHNdPjxzcGFuIGxhbmc9IkVOLUlFIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZh bWlseTpXaW5nZGluZ3MiPjxzcGFuIHN0eWxlPSJtc28tbGlzdDpJZ25vcmUiPsOYPHNwYW4gc3R5 bGU9ImZvbnQ6Ny4wcHQgJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7Ij4mbmJzcDsNCjwvc3Bh bj48L3NwYW4+PC9zcGFuPjwhW2VuZGlmXT48c3BhbiBsYW5nPSJFTi1JRSIgc3R5bGU9ImZvbnQt c2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmIj5J IGRvbuKAmXQgdW5kZXJzdGFuZCB0aGlzIHBvaW50LjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLUlFIiBzdHlsZT0iZm9udC1zaXplOjEx LjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVh c3QtbGFuZ3VhZ2U6RU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNz PSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLUlFIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtm b250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtbGFu Z3VhZ2U6RU4tVVMiPlRlY2huaWNhbGx5LCBubyBvbmUgc3RvcHMgeW91IGZyb20gcG9sbGluZyB0 aGUgc2FtZSBxdWV1ZSBmcm9tIGFueSB0aHJlYWQsIG5vdCBqdXN0IHRoZSBvbmUgeW914oCZcmUg Y29uZmlndXJpbmcgd2l0aC4gSXQgc291bmRzIGxpa2UNCiBub3RoaW5nIGFueW9uZSB3b3VsZCBk bywgYnV0IHdlIHByZWZlciB0byBiZSBvbiB0aGUgc2FmZSBzaWRlIDwvc3Bhbj48c3BhbiBsYW5n PSJFTi1JRSIgc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2Ug VUkgRW1vamkmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUyI+JiMx Mjg1MjI7PC9zcGFuPjxzcGFuIGxhbmc9IkVOLUlFIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtm b250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtbGFu Z3VhZ2U6RU4tVVMiPg0KPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1h bCI+PHNwYW4gbGFuZz0iRU4tSUUiIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5 OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1V UyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb0xpc3RQYXJhZ3Jh cGgiIHN0eWxlPSJtYXJnaW4tbGVmdDozNi4wcHQ7dGV4dC1pbmRlbnQ6LTE4LjBwdDttc28tbGlz dDpsMCBsZXZlbDEgbGZvMiI+DQo8IVtpZiAhc3VwcG9ydExpc3RzXT48c3BhbiBsYW5nPSJFTi1J RSIgc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6V2luZ2RpbmdzIj48c3BhbiBz dHlsZT0ibXNvLWxpc3Q6SWdub3JlIj7DmDxzcGFuIHN0eWxlPSJmb250OjcuMHB0ICZxdW90O1Rp bWVzIE5ldyBSb21hbiZxdW90OyI+Jm5ic3A7DQo8L3NwYW4+PC9zcGFuPjwvc3Bhbj48IVtlbmRp Zl0+PHNwYW4gbGFuZz0iRU4tSUUiIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5 OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZiI+QW55d2F5LCBwb2xsaW5nIG90aGVyIHF1 ZXVlcyBvbiBzb21lIG90aGVyIHRocmVhZCBzaG91bGQgbm90IGFmZmVjdCwgcmlnaHQ/IE9yIGNh biB5b3UgaGVscCB0byBleHBsYWluIGEgYml0IG1vcmUgb24gdGhpcz88bzpwPjwvbzpwPjwvc3Bh bj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1JRSIgc3R5bGU9ImZv bnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlm O21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1JRSIgc3R5bGU9ImZvbnQtc2l6 ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO21zby1m YXJlYXN0LWxhbmd1YWdlOkVOLVVTIj5JdCB3b3VsZCBub3QgYWZmZWN0IHRoZSBjYWxsYmFjaywg YnV0IGl0DQo8aT53b3VsZDwvaT4gYWZmZWN0IGludGVybmFsIHN0cnVjdHVyZXMgb2YgdGhlIFBN RCBwb3dlciBtYW5hZ2VtZW50LCBpZiBpdOKAmXMgb25lIG9mIHRob3NlIHF1ZXVlcyB5b3UgYXJl IHNldHRpbmcgdXAgZm9yIHRoYXQuIFBNRCBjYWxsYmFja3MgYXBwZWFyIHRvIGJlIHRocmVhZC1z YWZlIChzbyBJIHdhcyB3cm9uZyBhYm91dCB0aGF0KSwgYnV0IHRoZSBQTUQgcG93ZXIgbWFuYWdl bWVudCBpbnRlcm5hbCBzdHJ1Y3R1cmVzIGFyZW7igJl0LCBhcyB0aGUNCiBxdWV1ZSBjb25maWd1 cmF0aW9uIHdpbGwgYmUgc2hhcmVkIGFtb25nIHRob3NlIHF1ZXVlcyB0aGF0IGFyZSBwYXJ0aWNp cGF0aW5nIGluIHRoZSBzY2hlbWUuIFdlIGRvIG1vZGlmeSBzb21lIHNoYXJlZCBkYXRhIHdoZW4g d2XigJlyZSB0cmlnZ2VyaW5nIGNhbGxiYWNrcywgc28gd2UgZG8gbm90IHdhbnQNCjxpPmFueTwv aT4gcXVldWVzIHRvIGJlIHBvbGxpbmcgd2hpbGUgd2UgY29uZmlndXJlIHRoaW5ncy4gQWdhaW4s IHRoaXMgd291bGQgb25seSBtYXR0ZXIgaWYgeW91IHRyaWVkIHRvIHBvbGwgaW5iZXR3ZWVuIGNv bmZpZ3VyYXRpb24sIG9yIHBvbGxlZCBmcm9tIGEgZGlmZmVyZW50IHRocmVhZCwgc28gaXQgZG9l c27igJl0IHNvdW5kIGxpa2UgYW55dGhpbmcgYW55b25lIHdvdWxkIGRv4oCmIEJ1dCB0aGUgQVBJ IGRpc2FsbG93cyB0aGF0IOKAnGp1c3QgaW4NCiBjYXNl4oCdLjxvOnA+PC9vOnA+PC9zcGFuPjwv cD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLUlFIiBzdHlsZT0iZm9udC1z aXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7bXNv LWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLUlFIiBzdHlsZT0iZm9udC1zaXplOjEx LjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVh c3QtbGFuZ3VhZ2U6RU4tVVMiPlNvLCBJIHRoaW5rIHlvdeKAmXJlIHJpZ2h0IGluIHRoYXQgaXTi gJlzIHBlcmZlY3RseSBzYWZlIHRvIHN0YXJ0IHBvcnRzIGFzIGxvbmcgYXMgeW914oCZcmUgbm90 DQo8aT5wb2xsaW5nPC9pPiB0aGVtLCBidXQgaXTigJlzIHNpbXBsZXIgdG8gdGVsbCB1c2VycyB0 byBub3Qgc3RhcnQgdGhlIHBvcnRzIHRoYW4gaXQgaXMgdG8gZXhwbGFpbiB3aGF0IHlvdSBjYW4g b3IgY2Fu4oCZdCBkbyB3aXRob3V0IHRoaW5ncyBibG93aW5nIHVwLjxvOnA+PC9vOnA+PC9zcGFu PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLUlFIiBzdHlsZT0iZm9u dC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7 bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4N CjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci1sZWZ0OnNvbGlkIGJsdWUgMS41cHQ7cGFk ZGluZzowY20gMGNtIDBjbSA0LjBwdCI+DQo8ZGl2Pg0KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7 Ym9yZGVyLXRvcDpzb2xpZCAjRTFFMUUxIDEuMHB0O3BhZGRpbmc6My4wcHQgMGNtIDBjbSAwY20i Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249ImxlZnQiIHN0eWxlPSJ0ZXh0LWFsaWduOmxl ZnQiPjxiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZh bWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYiPkZyb206PC9zcGFuPjwvYj48c3Bh biBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7 Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmIj4gWGlhb3BpbmcgWWFuIChOU0IpICZsdDs8YSBocmVm PSJtYWlsdG86eGlhb3BpbmcueWFuQG5va2lhLXNiZWxsLmNvbSI+eGlhb3BpbmcueWFuQG5va2lh LXNiZWxsLmNvbTwvYT4mZ3Q7DQo8YnI+DQo8Yj5TZW50OjwvYj4gTW9uZGF5LCBGZWJydWFyeSAy MCwgMjAyMyAyOjEwIFBNPGJyPg0KPGI+VG86PC9iPiBCdXJha292LCBBbmF0b2x5ICZsdDs8YSBo cmVmPSJtYWlsdG86YW5hdG9seS5idXJha292QGludGVsLmNvbSI+YW5hdG9seS5idXJha292QGlu dGVsLmNvbTwvYT4mZ3Q7Ow0KPGEgaHJlZj0ibWFpbHRvOnVzZXJzQGRwZGsub3JnIj51c2Vyc0Bk cGRrLm9yZzwvYT48YnI+DQo8Yj5TdWJqZWN0OjwvYj4gUkU6IHdoeSBydGVfcG93ZXJfZXRoZGV2 X3BtZ210X3F1ZXVlX2VuYWJsZSBuZWVkIHRvIGNoZWNrIGlmIG90aGVyIHF1ZXVlcyBhcmUgc3Rv cHBlZDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNv Tm9ybWFsIiBhbGlnbj0ibGVmdCIgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+PHNwYW4gbGFuZz0i RU4tSUUiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi PjxzcGFuIGxhbmc9IkVOLVVTIj5IaSw8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9w Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPiZndDsmZ3Q7PC9zcGFu PjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTom cXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMi Pg0KPC9zcGFuPjxzcGFuIGxhbmc9IkVOLUlFIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250 LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6RU4tVVMiPm5vdCB1bmxlc3MgeW91IHN0YXJ0IHBvbGxpbmcgdGhvc2UgcXVldWVzIGZyb20g c29tZSBvdGhlciB0aHJlYWQ8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIj48c3BhbiBsYW5nPSJFTi1JRSIgc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1p bHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmIj5JIGRvbuKAmXQgdW5kZXJzdGFuZCB0 aGlzIHBvaW50LjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxz cGFuIGxhbmc9IkVOLUlFIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVv dDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYiPkFzIHRoZSByeCBjYWxsYmFjayBpcyBwZXIgcXVl dWUgZGF0YSwgaXQgc2VlbXMgdG8gbWUgb25seSB0aGluZyBpcyB3ZSBzaG91bGQgbm90IHBvbGxp bmcgdGhpcyBxdWV1ZSAmbmJzcDt3aGlsZSB3ZSBhcmUgbW9kaWZ5IGl0cyBjYWxsYmFjay4gU28g b25seSB0aGlzIHF1ZXVlIHNob3VsZA0KIGJlIGluIHN0b3BwZWQgc3RhdGUgKG1heWJlIGV2ZW4g dGhpcyBpcyBub3QgcmVxdWlyZWQ/IEJlY2F1c2UgSSBzZWUgYXRvbWljIG9wZXJhdGlvbiBpcyB1 c2VkIChfX2F0b21pY19zdG9yZV9uIGluIHJ0ZV9ldGhfYWRkX3J4X2NhbGxiYWNrIGFuZCBfX2F0 b21pY19sb2FkX24gaW4gcnRlX2V0aF9yeF9idXJzdCkpLjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLUlFIiBzdHlsZT0iZm9udC1zaXpl OjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYiPkFueXdh eSwgcG9sbGluZyBvdGhlciBxdWV1ZXMgb24gc29tZSBvdGhlciB0aHJlYWQgc2hvdWxkIG5vdCBh ZmZlY3QsIHJpZ2h0PyBPciBjYW4geW91IGhlbHAgdG8gZXhwbGFpbiBhIGJpdCBtb3JlIG9uIHRo aXM/PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFu Zz0iRU4tSUUiIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGli cmkmcXVvdDssc2Fucy1zZXJpZiI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xh c3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tSUUiIHN0eWxlPSJmb250LXNpemU6MTEuMHB0 O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZiI+VGhhbmsgeW91IHZl cnkgbXVjaC48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bh biBsYW5nPSJFTi1VUyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPGRpdj4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj5CciwgWGlhb3Bpbmc8bzpwPjwvbzpw Pjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVO LVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8ZGl2Pg0KPGRpdiBzdHlsZT0iYm9y ZGVyOm5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAjRTFFMUUxIDEuMHB0O3BhZGRpbmc6My4wcHQgMGNt IDBjbSAwY20iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249ImxlZnQiIHN0eWxlPSJ0ZXh0 LWFsaWduOmxlZnQiPjxiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjExLjBw dDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6WkgtVFciPkZyb206PC9zcGFuPjwvYj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9 ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNl cmlmO21zby1mYXJlYXN0LWxhbmd1YWdlOlpILVRXIj4NCiBCdXJha292LCBBbmF0b2x5ICZsdDs8 YSBocmVmPSJtYWlsdG86YW5hdG9seS5idXJha292QGludGVsLmNvbSI+YW5hdG9seS5idXJha292 QGludGVsLmNvbTwvYT4mZ3Q7DQo8YnI+DQo8Yj5TZW50OjwvYj4gMjAyMzwvc3Bhbj48c3BhbiBs YW5nPSJaSC1UVyIgc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7TVMg TWluY2hvJnF1b3Q7O21zby1mYXJlYXN0LWxhbmd1YWdlOlpILVRXIj7lubQ8L3NwYW4+PHNwYW4g bGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0Nh bGlicmkmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1sYW5ndWFnZTpaSC1UVyI+Mjwvc3Bh bj48c3BhbiBsYW5nPSJaSC1UVyIgc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6 JnF1b3Q7TVMgTWluY2hvJnF1b3Q7O21zby1mYXJlYXN0LWxhbmd1YWdlOlpILVRXIj7mnIg8L3Nw YW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5 OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1sYW5ndWFnZTpaSC1U VyI+MjA8L3NwYW4+PHNwYW4gbGFuZz0iWkgtVFciIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2Zv bnQtZmFtaWx5OiZxdW90O01TIE1pbmNobyZxdW90Ozttc28tZmFyZWFzdC1sYW5ndWFnZTpaSC1U VyI+5pelPC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtm b250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtbGFu Z3VhZ2U6WkgtVFciPg0KIDIxOjU5PGJyPg0KPGI+VG86PC9iPiBYaWFvcGluZyBZYW4gKE5TQikg Jmx0OzxhIGhyZWY9Im1haWx0bzp4aWFvcGluZy55YW5Abm9raWEtc2JlbGwuY29tIj54aWFvcGlu Zy55YW5Abm9raWEtc2JlbGwuY29tPC9hPiZndDs7DQo8YSBocmVmPSJtYWlsdG86dXNlcnNAZHBk ay5vcmciPnVzZXJzQGRwZGsub3JnPC9hPjxicj4NCjxiPlN1YmplY3Q6PC9iPiBSRTogd2h5IHJ0 ZV9wb3dlcl9ldGhkZXZfcG1nbXRfcXVldWVfZW5hYmxlIG5lZWQgdG8gY2hlY2sgaWYgb3RoZXIg cXVldWVzIGFyZSBzdG9wcGVkPG86cD48L286cD48L3NwYW4+PC9wPg0KPC9kaXY+DQo8L2Rpdj4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiIGFsaWduPSJsZWZ0IiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0 Ij48c3BhbiBsYW5nPSJFTi1VUyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xh c3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tSUUiIHN0eWxlPSJmb250LXNpemU6MTEuMHB0 O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1s YW5ndWFnZTpFTi1VUyI+V2VsbCwNCjxpPnRlY2huaWNhbGx5PC9pPiwgbm8sIHlvdeKAmXJlIHJp Z2h0LCBpdCB3b3VsZG7igJl0IOKAkyBub3QgdW5sZXNzIHlvdSBzdGFydCBwb2xsaW5nIHRob3Nl IHF1ZXVlcyBmcm9tIHNvbWUgb3RoZXIgdGhyZWFkLiBXZSBjYW7igJl0IHByZXZlbnQgdGhhdCBm cm9tIGhhcHBlbmluZywgc28gd2UgZmlndXJlZCB0aGUgYmVzdCB3YXkgd291bGQgYmUgdG8ganVz dCBkaXNhbGxvdyBxdWV1ZSBzdGFydHMgdW50aWwgd2XigJlyZSBkb25lIGNvbmZpZ3VyaW5nIGV2 ZXJ5dGhpbmcuDQogU28sIHllcywgd2UgY291bGQgcmVsYXggdGhhdCByZXN0cmljdGlvbiwgaXTi gJlzIGp1c3QgYSBtYXR0ZXIgb2Ygc3BlY2lmeWluZyB3aGF04oCZcyBhbGxvd2VkIGFuZCB3aGF0 4oCZcyBub3QgdnMuIGp1c3QgZG9pbmcgYSBibGFua2V0IOKAnG5v4oCdIGFuZCBrZWVwaW5nIHRo aW5ncyBzaW1wbGUuPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+ PHNwYW4gbGFuZz0iRU4tSUUiIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZx dW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUyI+ PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9y ZGVyLWxlZnQ6c29saWQgYmx1ZSAxLjVwdDtwYWRkaW5nOjBjbSAwY20gMGNtIDQuMHB0Ij4NCjxk aXY+DQo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItdG9wOnNvbGlkICNFMUUxRTEgMS4w cHQ7cGFkZGluZzozLjBwdCAwY20gMGNtIDBjbSI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGln bj0ibGVmdCIgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+PGI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0 eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fu cy1zZXJpZiI+RnJvbTo8L3NwYW4+PC9iPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1z aXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYiPiBY aWFvcGluZyBZYW4gKE5TQikgJmx0OzxhIGhyZWY9Im1haWx0bzp4aWFvcGluZy55YW5Abm9raWEt c2JlbGwuY29tIj54aWFvcGluZy55YW5Abm9raWEtc2JlbGwuY29tPC9hPiZndDsNCjxicj4NCjxi PlNlbnQ6PC9iPiBNb25kYXksIEZlYnJ1YXJ5IDIwLCAyMDIzIDE6NDEgUE08YnI+DQo8Yj5Ubzo8 L2I+IEJ1cmFrb3YsIEFuYXRvbHkgJmx0OzxhIGhyZWY9Im1haWx0bzphbmF0b2x5LmJ1cmFrb3ZA aW50ZWwuY29tIj5hbmF0b2x5LmJ1cmFrb3ZAaW50ZWwuY29tPC9hPiZndDs7DQo8YSBocmVmPSJt YWlsdG86dXNlcnNAZHBkay5vcmciPnVzZXJzQGRwZGsub3JnPC9hPjxicj4NCjxiPlN1YmplY3Q6 PC9iPiBSRTogd2h5IHJ0ZV9wb3dlcl9ldGhkZXZfcG1nbXRfcXVldWVfZW5hYmxlIG5lZWQgdG8g Y2hlY2sgaWYgb3RoZXIgcXVldWVzIGFyZSBzdG9wcGVkPG86cD48L286cD48L3NwYW4+PC9wPg0K PC9kaXY+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIGFsaWduPSJsZWZ0IiBzdHlsZT0i dGV4dC1hbGlnbjpsZWZ0Ij48c3BhbiBsYW5nPSJFTi1JRSI+PG86cD4mbmJzcDs8L286cD48L3Nw YW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPkhpLDxvOnA+ PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVT Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bh biBsYW5nPSJFTi1VUyI+VGhhbmsgeW91IGZvciB0aGUgaW5mb3JtYXRpb24uPG86cD48L286cD48 L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPkkgc2Vl IGZyb20gcnRlX2V0aF9hZGRfcnhfY2FsbGJhY2ssIHRoZSBjYWxsYmFjayBpcyBhZGRlZCB0byBw ZXIgcXVldWUgZGF0YTogcnRlX2V0aF9kZXZpY2VzW3BvcnRfaWRdLnBvc3RfcnhfYnVyc3RfY2Jz W3F1ZXVlX2lkXTs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48 c3BhbiBsYW5nPSJFTi1VUyI+U28gaXQgc2hvdWxkIG5vdCBhZmZlY3QgcG9sbGluZyBvbiBvdGhl ciBxdWV1ZXM/PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNw YW4gbGFuZz0iRU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJN c29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+ DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPkJyLCBYaWFv cGluZzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+ PHNwYW4gbGFuZz0iRU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxkaXY+DQo8 ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItdG9wOnNvbGlkICNFMUUxRTEgMS4wcHQ7cGFk ZGluZzozLjBwdCAwY20gMGNtIDBjbSI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0ibGVm dCIgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+PGI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJm b250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJp Zjttc28tZmFyZWFzdC1sYW5ndWFnZTpKQSI+RnJvbTo8L3NwYW4+PC9iPjxzcGFuIGxhbmc9IkVO LVVTIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1 b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6SkEiPg0KIEJ1cmFrb3YsIEFuYXRv bHkgJmx0OzxhIGhyZWY9Im1haWx0bzphbmF0b2x5LmJ1cmFrb3ZAaW50ZWwuY29tIj5hbmF0b2x5 LmJ1cmFrb3ZAaW50ZWwuY29tPC9hPiZndDsNCjxicj4NCjxiPlNlbnQ6PC9iPiAyMDIzPC9zcGFu PjxzcGFuIGxhbmc9IkpBIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVv dDtNUyBQR290aGljJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6SkEiPuW5 tDwvc3Bhbj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1m YW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWxhbmd1YWdl OkpBIj4yPC9zcGFuPjxzcGFuIGxhbmc9IkpBIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250 LWZhbWlseTomcXVvdDtNUyBQR290aGljJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtbGFu Z3VhZ2U6SkEiPuaciDwvc3Bhbj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZTox MS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJl YXN0LWxhbmd1YWdlOkpBIj4yMDwvc3Bhbj48c3BhbiBsYW5nPSJKQSIgc3R5bGU9ImZvbnQtc2l6 ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7TVMgUEdvdGhpYyZxdW90OyxzYW5zLXNlcmlmO21z by1mYXJlYXN0LWxhbmd1YWdlOkpBIj7ml6U8L3NwYW4+PHNwYW4gbGFuZz0iSkEiIHN0eWxlPSJm b250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJp Zjttc28tZmFyZWFzdC1sYW5ndWFnZTpKQSI+DQo8L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0 eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fu cy1zZXJpZjttc28tZmFyZWFzdC1sYW5ndWFnZTpKQSI+MTg6Mjg8YnI+DQo8Yj5Ubzo8L2I+IFhp YW9waW5nIFlhbiAoTlNCKSAmbHQ7PGEgaHJlZj0ibWFpbHRvOnhpYW9waW5nLnlhbkBub2tpYS1z YmVsbC5jb20iPnhpYW9waW5nLnlhbkBub2tpYS1zYmVsbC5jb208L2E+Jmd0OzsNCjxhIGhyZWY9 Im1haWx0bzp1c2Vyc0BkcGRrLm9yZyI+dXNlcnNAZHBkay5vcmc8L2E+PGJyPg0KPGI+U3ViamVj dDo8L2I+IFJFOiB3aHkgcnRlX3Bvd2VyX2V0aGRldl9wbWdtdF9xdWV1ZV9lbmFibGUgbmVlZCB0 byBjaGVjayBpZiBvdGhlciBxdWV1ZXMgYXJlIHN0b3BwZWQ8bzpwPjwvbzpwPjwvc3Bhbj48L3A+ DQo8L2Rpdj4NCjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249ImxlZnQiIHN0eWxl PSJ0ZXh0LWFsaWduOmxlZnQiPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwv c3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1JRSIgc3R5bGU9 ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNl cmlmO21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj5IaSw8bzpwPjwvbzpwPjwvc3Bhbj48L3A+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1JRSIgc3R5bGU9ImZvbnQtc2l6 ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO21zby1m YXJlYXN0LWxhbmd1YWdlOkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1JRSIgc3R5bGU9ImZvbnQtc2l6ZToxMS4w cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0 LWxhbmd1YWdlOkVOLVVTIj5JdCBpcyBtYWlubHkgYmVjYXVzZSB3ZeKAmXJlIGluc3RhbGwgY2Fs bGJhY2tzLCB3aGljaCBpcyBub3QgdGhyZWFkLXNhZmUgdW5sZXNzIHRoZSBQTUQgaXMgc3RvcHBl ZC4gT3VyIFBNROKAmXMgaW50ZXJuYWwgY29uZmlnIHN0cnVjdHVyZXMNCiBhcmUgbm90IHRocmVh ZC1zYWZlLiBZb3Ugc2hvdWxkIG9ubHkgc3RhcnQgdGhlc2UgcG9ydHMgYWZ0ZXIgeW91IGNvbmZp Z3VyZSBldmVyeXRoaW5nLjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3Jt YWwiPjxzcGFuIGxhbmc9IkVOLUlFIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWls eTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4t VVMiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25l O2JvcmRlci1sZWZ0OnNvbGlkIGJsdWUgMS41cHQ7cGFkZGluZzowY20gMGNtIDBjbSA0LjBwdCI+ DQo8ZGl2Pg0KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAjRTFFMUUx IDEuMHB0O3BhZGRpbmc6My4wcHQgMGNtIDBjbSAwY20iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIg YWxpZ249ImxlZnQiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPjxiPjxzcGFuIGxhbmc9IkVOLVVT IiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7 LHNhbnMtc2VyaWYiPkZyb206PC9zcGFuPjwvYj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZv bnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlm Ij4gWGlhb3BpbmcgWWFuIChOU0IpICZsdDs8YSBocmVmPSJtYWlsdG86eGlhb3BpbmcueWFuQG5v a2lhLXNiZWxsLmNvbSI+eGlhb3BpbmcueWFuQG5va2lhLXNiZWxsLmNvbTwvYT4mZ3Q7DQo8YnI+ DQo8Yj5TZW50OjwvYj4gTW9uZGF5LCBGZWJydWFyeSAyMCwgMjAyMyA2OjEyIEFNPGJyPg0KPGI+ VG86PC9iPiA8YSBocmVmPSJtYWlsdG86dXNlcnNAZHBkay5vcmciPnVzZXJzQGRwZGsub3JnPC9h PjsgQnVyYWtvdiwgQW5hdG9seSAmbHQ7PGEgaHJlZj0ibWFpbHRvOmFuYXRvbHkuYnVyYWtvdkBp bnRlbC5jb20iPmFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb208L2E+Jmd0Ozxicj4NCjxiPlN1Ympl Y3Q6PC9iPiBSRTogd2h5IHJ0ZV9wb3dlcl9ldGhkZXZfcG1nbXRfcXVldWVfZW5hYmxlIG5lZWQg dG8gY2hlY2sgaWYgb3RoZXIgcXVldWVzIGFyZSBzdG9wcGVkPG86cD48L286cD48L3NwYW4+PC9w Pg0KPC9kaXY+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIGFsaWduPSJsZWZ0IiBzdHls ZT0idGV4dC1hbGlnbjpsZWZ0Ij48c3BhbiBsYW5nPSJFTi1JRSI+PG86cD4mbmJzcDs8L286cD48 L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPkhpIEFu YXRvbHk8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBs YW5nPSJFTi1VUyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05v cm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPkkgc2VlIHRoaXMgbXVsdGlwbGUgcXVldWUgc3VwcG9y dCBpcyBhZGRlZCBieSB5b3UuPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05v cm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPkNvdWxkIHlvdSBraW5kbHkgaGVscCBtZSB0byB1bmRl cnN0YW5kIHdoeSBydGVfcG93ZXJfZXRoZGV2X3BtZ210X3F1ZXVlX2VuYWJsZSBuZWVkIG90aGVy IHF1ZXVlcyB0byBiZSBpbiBzdG9wcGVkIHN0YXRlPzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwv c3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+Y29tbWl0 IDVkZmY5YTcyYjBlZmVhYjAyYTJiNzFlNTJjNDg3MTgwNWI3ZTY0Y2I8bzpwPjwvbzpwPjwvc3Bh bj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+QXV0aG9yOiBB bmF0b2x5IEJ1cmFrb3YgPGEgaHJlZj0ibWFpbHRvOmFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb20i Pg0KYW5hdG9seS5idXJha292QGludGVsLmNvbTwvYT48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8 cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+RGF0ZTombmJzcDsmbmJzcDsg RnJpIEp1bCA5IDE2OjA4OjE1IDIwMjEgJiM0MzswMDAwPG86cD48L286cD48L3NwYW4+PC9wPg0K PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+ PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWluZGVudDoxMS41 cHQiPjxzcGFuIGxhbmc9IkVOLVVTIj5wb3dlcjogc3VwcG9ydCBjYWxsYmFja3MgZm9yIG11bHRp cGxlIFJ4IHF1ZXVlczxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi IHN0eWxlPSJ0ZXh0LWluZGVudDoxMS41cHQiPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPiZuYnNw OzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1V UyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNw YW4gbGFuZz0iRU4tVVMiPlRoYW5rIHlvdS48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFz cz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+ PC9wPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj5Cciwg WGlhb3Bpbmc8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3Jt YWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8ZGl2 Pg0KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAjRTFFMUUxIDEuMHB0 O3BhZGRpbmc6My4wcHQgMGNtIDBjbSAwY20iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249 ImxlZnQiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPjxiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHls ZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMt c2VyaWYiPkZyb206PC9zcGFuPjwvYj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6 ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmIj4gWGlh b3BpbmcgWWFuIChOU0IpDQo8YnI+DQo8Yj5TZW50OjwvYj4gMjAyMzwvc3Bhbj48c3BhbiBzdHls ZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTrlrovkvZMiPuW5tDwvc3Bhbj48c3BhbiBs YW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2Fs aWJyaSZxdW90OyxzYW5zLXNlcmlmIj4yPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEu MHB0O2ZvbnQtZmFtaWx5OuWui+S9kyI+5pyIPC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHls ZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMt c2VyaWYiPjE2PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5 OuWui+S9kyI+5pelPC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEx LjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYiPg0KIDIxOjAw PGJyPg0KPGI+VG86PC9iPiA8YSBocmVmPSJtYWlsdG86dXNlcnNAZHBkay5vcmciPnVzZXJzQGRw ZGsub3JnPC9hPjxicj4NCjxiPlN1YmplY3Q6PC9iPiB3aHkgcnRlX3Bvd2VyX2V0aGRldl9wbWdt dF9xdWV1ZV9lbmFibGUgbmVlZCB0byBjaGVjayBpZiBvdGhlciBxdWV1ZXMgYXJlIHN0b3BwZWQ8 bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1h bCIgYWxpZ249ImxlZnQiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPjxzcGFuIGxhbmc9IkVOLVVT Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bh biBsYW5nPSJFTi1VUyI+SGkgZXhwZXJ0cyw8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFz cz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+ PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPkk8L3NwYW4+4oCZ PHNwYW4gbGFuZz0iRU4tVVMiPm0gdHJ5aW5nIHRvIHVzZSBkcGRrIHBvd2VyIHBtZCBtYW5hZ2Vt ZW50IEFQSXMgaW4gbXkgZHBkayBhcHBsaWNhdGlvbi48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8 cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+TXkgYXBwbGljYXRpb24gdXNl cyBzZXZlcmFsIHBvcnRzLCBlYWNoIGhhdmUgb25lIHJ4IHF1ZXVlLCBhbmQgaXQgZ29lcyBsaWtl IHRoaXM8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTGlzdFBhcmFncmFwaCIg c3R5bGU9Im1hcmdpbi1sZWZ0OjE4LjBwdDt0ZXh0LWluZGVudDotMTguMHB0O21zby1saXN0Omwx IGxldmVsMSBsZm80Ij4NCjwhW2lmICFzdXBwb3J0TGlzdHNdPjxzcGFuIGxhbmc9IkVOLVVTIj48 c3BhbiBzdHlsZT0ibXNvLWxpc3Q6SWdub3JlIj4xLjxzcGFuIHN0eWxlPSJmb250OjcuMHB0ICZx dW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQo8L3Nw YW4+PC9zcGFuPjwvc3Bhbj48IVtlbmRpZl0+PHNwYW4gbGFuZz0iRU4tVVMiPkluaXQgZmlyc3Qg cG9ydCwgc2V0dXAgcnggcXVldWUsIGNhbGwgcnRlX3Bvd2VyX2V0aGRldl9wbWdtdF9xdWV1ZV9l bmFibGUsIGFuZCBzdGFydCB0aGUgZmlyc3QgcG9ydDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxw IGNsYXNzPSJNc29MaXN0UGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTguMHB0O3RleHQt aW5kZW50Oi0xOC4wcHQ7bXNvLWxpc3Q6bDEgbGV2ZWwxIGxmbzQiPg0KPCFbaWYgIXN1cHBvcnRM aXN0c10+PHNwYW4gbGFuZz0iRU4tVVMiPjxzcGFuIHN0eWxlPSJtc28tbGlzdDpJZ25vcmUiPjIu PHNwYW4gc3R5bGU9ImZvbnQ6Ny4wcHQgJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7Ij4mbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsNCjwvc3Bhbj48L3NwYW4+PC9zcGFuPjwhW2VuZGlmXT48c3Bh biBsYW5nPSJFTi1VUyI+SW5pdCBzZWNvbmQgcG9ydCwgc2V0dXAgcnggcXVldWUsIGNhbGwgcnRl X3Bvd2VyX2V0aGRldl9wbWdtdF9xdWV1ZV9lbmFibGUsIGFuZCBzdGFydCB0aGUgc2Vjb25kIHBv cnQ8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTGlzdFBhcmFncmFwaCIgc3R5 bGU9Im1hcmdpbi1sZWZ0OjE4LjBwdDt0ZXh0LWluZGVudDotMTguMHB0O21zby1saXN0OmwxIGxl dmVsMSBsZm80Ij4NCjwhW2lmICFzdXBwb3J0TGlzdHNdPjxzcGFuIGxhbmc9IkVOLVVTIj48c3Bh biBzdHlsZT0ibXNvLWxpc3Q6SWdub3JlIj4zLjxzcGFuIHN0eWxlPSJmb250OjcuMHB0ICZxdW90 O1RpbWVzIE5ldyBSb21hbiZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQo8L3NwYW4+ PC9zcGFuPjwvc3Bhbj48IVtlbmRpZl0+4oCmPHNwYW4gbGFuZz0iRU4tVVMiPjxvOnA+PC9vOnA+ PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj5Ob3cg Zm9yIHRoZSBmaXJzdCBwb3J0ICZhbXA7IHF1ZXVlLCBydGVfcG93ZXJfZXRoZGV2X3BtZ210X3F1 ZXVlX2VuYWJsZSByZXR1cm4gc3VjY2VzcywgYnV0IGZvciB0aGUgc2Vjb25kIHBvcnQgJmFtcDsg cXVldWUsIGl0IHJldHVybnMgLTE2PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPkZyb20gcnRlX3Bvd2VyX2V0aGRldl9wbWdtdF9x dWV1ZV9lbmFibGUgY29kZSwgSSB0aGluayBpdCBmYWlscyB3aGVuIGNoZWNraW5nIGlmIG90aGVy IHF1ZXVlcyBhcmUgc3RvcHBlZCBhcyB3ZWxsLg0KPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAg Y2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249ImxlZnQiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7bGlu ZS1oZWlnaHQ6MTQuMjVwdDtiYWNrZ3JvdW5kOiMxRTFFMUUiPg0KPHNwYW4gbGFuZz0iRU4tVVMi IHN0eWxlPSJmb250LWZhbWlseTpDb25zb2xhcztjb2xvcjojNkE5OTU1Ij4mbmJzcDsgJm5ic3A7 IC8qIGNoZWNrIGlmIG90aGVyIHF1ZXVlcyBhcmUgc3RvcHBlZCBhcyB3ZWxsICovPC9zcGFuPjxz cGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1mYW1pbHk6Q29uc29sYXM7Y29sb3I6I0Q0RDRE NCI+PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249Imxl ZnQiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7bGluZS1oZWlnaHQ6MTQuMjVwdDtiYWNrZ3JvdW5k OiMxRTFFMUUiPg0KPHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LWZhbWlseTpDb25zb2xh cztjb2xvcjojRDRENEQ0Ij4mbmJzcDsgJm5ic3A7IDwvc3Bhbj48c3BhbiBsYW5nPSJFTi1VUyIg c3R5bGU9ImZvbnQtZmFtaWx5OkNvbnNvbGFzO2NvbG9yOiM5Q0RDRkUiPnJldDwvc3Bhbj48c3Bh biBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtZmFtaWx5OkNvbnNvbGFzO2NvbG9yOiNENEQ0RDQi PiA9DQo8L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LWZhbWlseTpDb25zb2xh cztjb2xvcjojRENEQ0FBIj5jZmdfcXVldWVzX3N0b3BwZWQ8L3NwYW4+PHNwYW4gbGFuZz0iRU4t VVMiIHN0eWxlPSJmb250LWZhbWlseTpDb25zb2xhcztjb2xvcjojRDRENEQ0Ij4oPC9zcGFuPjxz cGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1mYW1pbHk6Q29uc29sYXM7Y29sb3I6IzlDRENG RSI+bGNvcmVfY2ZnPC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1mYW1pbHk6 Q29uc29sYXM7Y29sb3I6I0Q0RDRENCI+KTs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFz cz0iTXNvTm9ybWFsIiBhbGlnbj0ibGVmdCIgc3R5bGU9InRleHQtYWxpZ246bGVmdDtsaW5lLWhl aWdodDoxNC4yNXB0O2JhY2tncm91bmQ6IzFFMUUxRSI+DQo8c3BhbiBsYW5nPSJFTi1VUyIgc3R5 bGU9ImZvbnQtZmFtaWx5OkNvbnNvbGFzO2NvbG9yOiNENEQ0RDQiPiZuYnNwOyAmbmJzcDsgPC9z cGFuPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1mYW1pbHk6Q29uc29sYXM7Y29sb3I6 I0M1ODZDMCI+aWY8L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LWZhbWlseTpD b25zb2xhcztjb2xvcjojRDRENEQ0Ij4gKDwvc3Bhbj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9 ImZvbnQtZmFtaWx5OkNvbnNvbGFzO2NvbG9yOiM5Q0RDRkUiPnJldDwvc3Bhbj48c3BhbiBsYW5n PSJFTi1VUyIgc3R5bGU9ImZvbnQtZmFtaWx5OkNvbnNvbGFzO2NvbG9yOiNENEQ0RDQiPg0KICE9 IDwvc3Bhbj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtZmFtaWx5OkNvbnNvbGFzO2Nv bG9yOiNCNUNFQTgiPjE8L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LWZhbWls eTpDb25zb2xhcztjb2xvcjojRDRENEQ0Ij4pIHs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0ibGVmdCIgc3R5bGU9InRleHQtYWxpZ246bGVmdDtsaW5l LWhlaWdodDoxNC4yNXB0O2JhY2tncm91bmQ6IzFFMUUxRSI+DQo8c3BhbiBsYW5nPSJFTi1VUyIg c3R5bGU9ImZvbnQtZmFtaWx5OkNvbnNvbGFzO2NvbG9yOiM2QTk5NTUiPiZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAvKiBlcnJvciBtZWFucyBpbnZhbGlkIHF1ZXVlLCAwIG1lYW5zIHF1ZXVl IHdhc24ndCBzdG9wcGVkICovPC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1m YW1pbHk6Q29uc29sYXM7Y29sb3I6I0Q0RDRENCI+PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAg Y2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249ImxlZnQiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7bGlu ZS1oZWlnaHQ6MTQuMjVwdDtiYWNrZ3JvdW5kOiMxRTFFMUUiPg0KPHNwYW4gbGFuZz0iRU4tVVMi IHN0eWxlPSJmb250LWZhbWlseTpDb25zb2xhcztjb2xvcjojRDRENEQ0Ij4mbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgPC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1mYW1p bHk6Q29uc29sYXM7Y29sb3I6IzlDRENGRSI+cmV0PC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIiBz dHlsZT0iZm9udC1mYW1pbHk6Q29uc29sYXM7Y29sb3I6I0Q0RDRENCI+ID0NCjwvc3Bhbj48c3Bh biBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtZmFtaWx5OkNvbnNvbGFzO2NvbG9yOiM5Q0RDRkUi PnJldDwvc3Bhbj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtZmFtaWx5OkNvbnNvbGFz O2NvbG9yOiNENEQ0RDQiPiAmbHQ7DQo8L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJm b250LWZhbWlseTpDb25zb2xhcztjb2xvcjojQjVDRUE4Ij4wPC9zcGFuPjxzcGFuIGxhbmc9IkVO LVVTIiBzdHlsZT0iZm9udC1mYW1pbHk6Q29uc29sYXM7Y29sb3I6I0Q0RDRENCI+ID8gLUVJTlZB TCA6IC1FQlVTWTs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBh bGlnbj0ibGVmdCIgc3R5bGU9InRleHQtYWxpZ246bGVmdDtsaW5lLWhlaWdodDoxNC4yNXB0O2Jh Y2tncm91bmQ6IzFFMUUxRSI+DQo8c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtZmFtaWx5 OkNvbnNvbGFzO2NvbG9yOiNENEQ0RDQiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyA8L3Nw YW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LWZhbWlseTpDb25zb2xhcztjb2xvcjoj QzU4NkMwIj5nb3RvPC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1mYW1pbHk6 Q29uc29sYXM7Y29sb3I6I0Q0RDRENCI+DQo8L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxl PSJmb250LWZhbWlseTpDb25zb2xhcztjb2xvcjojQzhDOEM4Ij5lbmQ8L3NwYW4+PHNwYW4gbGFu Zz0iRU4tVVMiIHN0eWxlPSJmb250LWZhbWlseTpDb25zb2xhcztjb2xvcjojRDRENEQ0Ij47PG86 cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249ImxlZnQiIHN0 eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7bGluZS1oZWlnaHQ6MTQuMjVwdDtiYWNrZ3JvdW5kOiMxRTFF MUUiPg0KPHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LWZhbWlseTpDb25zb2xhcztjb2xv cjojRDRENEQ0Ij4mbmJzcDsgJm5ic3A7IH08bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFz cz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+VGhpcyBzZWVtcyBxdWl0ZSBzdHJhbmdl IGZvciBtZSwgd2h5IG90aGVyIHF1ZXVlcyBoYXZlIHRvIGJlIGluIHN0b3BwZWQgc3RhdGU/PG86 cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4t VVMiPkNhbiBhbnlvbmUgaGVscCB0byBleHBsYWluPzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwv c3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+VGhhbmsg eW91LjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxh bmc9IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAg Y2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPkJyLCBYaWFvcGluZzxvOnA+PC9v OnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48 bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rp dj4NCjwvYm9keT4NCjwvaHRtbD4NCg== --_000_f225b01eaf4c4a739075696fe2887beenokiasbellcom_--