From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from emea01-db3-obe.outbound.protection.outlook.com (mail-db3on0067.outbound.protection.outlook.com [157.55.234.67]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client CN "mail.protection.outlook.com", Issuer "MSIT Machine Auth CA 2" (verified OK)) by huchra.bufferbloat.net (Postfix) with ESMTPS id 41BA121F666 for ; Fri, 27 Nov 2015 07:44:11 -0800 (PST) Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=kevin@darbyshire-bryant.me.uk; Received: from [192.168.219.234] (188.221.218.142) by HE1PR07MB0939.eurprd07.prod.outlook.com (10.162.27.145) with Microsoft SMTP Server (TLS) id 15.1.331.20; Fri, 27 Nov 2015 15:44:07 +0000 To: Dave Taht References: From: Kevin Darbyshire-Bryant X-Enigmail-Draft-Status: N1110 Message-ID: <56587A42.7030905@darbyshire-bryant.me.uk> Date: Fri, 27 Nov 2015 15:44:02 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-512; boundary="------------ms040604050702020203050002" X-Originating-IP: [188.221.218.142] X-ClientProxiedBy: AM3PR04CA0030.eurprd04.prod.outlook.com (10.242.16.30) To HE1PR07MB0939.eurprd07.prod.outlook.com (25.162.27.145) X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB0939; 2:+ZrdqRAZ9xYX8b1/Q3AN5w/TSgkbMkNGvfkHoC5o600eMvEM9vkj1b1GtvLhzCuwrmlEdGkzo2d2Xl1XBQtn3B4CFtLJxMogmreFkc7AEWnXFTi4En2bmI4n7KBv8LDb6RnhjxrKdTprLjVjoELmRw==; 3:fK+EyxhddsCIWEJmQX9wsRRmzc7fJrF3VKfasTmSDFbMqvJ1fR65IV4/egzGHiP5cavz1QvGuYb+JkEEZs0FIbr4kVT4a6HKlArOjWiaQHRhvwKXdO0GZxo4thLhWdPW; 25:DDXceVrI7TnEpqH8ses9sNsL1UYGRdzZ1rAhmYoCZhm0Hshg7Nue8La089hABraghutY4yy7ztwnbQLaQpq2l67OKEUT3uM7DuhQMw2mw9+e/UWmcrwdlBe5JVICAMxtyy2hCtPfZJn4i8IqBuwkajbehTpeDe5bMpa93f+bZ8MQyxw3PbxDRrSh01OITYz5tQ93UQ1IQvkxpYjsrDRpRBRacsa5EJK0swZ1RMn67ra24er8X8xC2NfCJsjF2suAWVf0lc9p9S8+JKBX8NCljw==; 4:Y90ophTbEwfTubutRAJJNZc6Zv5v6/G+1xJcp3h7LnFWXOhVHcRbdwIrTqudzTPnswKD6yU6Qz/QyvT57u6+LBtcRofh4xnmN1QA8hvALBY9+wwrZlW3bBtafgxB3eQatE9jtQXyqaoqV5yhxZxPpX56xz3/ZZ0k76MXMzoRk+D8SKaAKuGaQHLqpBWxKsRSXb8AH/VlhFVEzx/FDYc4cFe4vV/GfEQ15bMjH5lYASdxee1CbtoHHrFYk74tboQ3BYMWTZCRp8XOv6WIS6S7k2GfpbOb5m+IC8NWeKmuCW6Tph4ifGnujs7YD1qR4Tim7EPkUaMMyOuBeiL39HcJK6dt4CFEl/UZWFV7FDX4R5CNychu2MSbY47aZ1HhZtQz X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:HE1PR07MB0939; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(520078)(8121501046)(3002001)(10201501046); SRVR:HE1PR07MB0939; BCL:0; PCL:0; RULEID:; SRVR:HE1PR07MB0939; X-Forefront-PRVS: 0773BB46AC X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(6049001)(199003)(479174004)(24454002)(189002)(99136001)(575784001)(122386002)(86362001)(36756003)(59896002)(64126003)(74482002)(87266999)(54356999)(512874002)(76176999)(65816999)(50986999)(189998001)(77096005)(5001960100002)(110136002)(1096002)(4001350100001)(2950100001)(81156007)(80316001)(97736004)(19580395003)(33656002)(66066001)(65956001)(15975445007)(65806001)(586003)(92566002)(568964002)(42186005)(83506001)(84326002)(117156001)(6116002)(3846002)(87976001)(101416001)(105586002)(5004730100002)(5008740100001)(5890100001)(106356001)(40100003); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR07MB0939; H:[192.168.219.234]; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: darbyshire-bryant.me.uk does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR07MB0939; 23:7CpanG/Lvn8cpWkiRazXyYJP30KHHC8vzyrd0do1F?= =?us-ascii?Q?1TwCDbhEgGrMkJ0g2NotgZGjFQdJgYau8a1EaDVpAiqaMbzz1KSlZfXSexzJ?= =?us-ascii?Q?AbMpt6Oa3zyWt3QKgcElHc7X9J4lum90WFyV1CDFZzo4HdWjTkilJKESgaJ5?= =?us-ascii?Q?tMh6/WHNyod/wWEE5O3rgr5+JoMk9hWI7IvLt6kwHZLpz6ucWn2DziitHBFl?= =?us-ascii?Q?tY5WhBSjVDCTvH/oVY76/Rh2kIZhVltlFHg1vo4W9puu9k5keucrrsXw7qUo?= =?us-ascii?Q?Xu89HEqNpqNsBUM/+QDA56yiUVPwiuIKKcKwv0z9YXPHMTNFsW7YtPd1trLC?= =?us-ascii?Q?1JhQbSGfBNiQFRjc/FS0wQmwWgeaG09BxMxZmWPT0BXgIW89DqnZsQFCoC94?= =?us-ascii?Q?naKoCVidzGS6LPHS28Rj+rA0wGNrvR/9vS6IPulb0Y6A2zqp+fuMALGA0APM?= =?us-ascii?Q?sisUo2WeLln3a/FebiSHFJFU9hcTusxGebXcAUwDFtktBTxlt7ne14Y5dSRP?= =?us-ascii?Q?hR8tJJRBqP0Et3OsegHAgi278Zulp4RYMWFJFtZY5rsdJvPC0bwg3aLl1exc?= =?us-ascii?Q?6FrV0ja2F0nC2JOr0yXBgSOfXuD8/+azx+KAXzDRtCrjEKPN/pJUt0UvSE+b?= =?us-ascii?Q?cLyqb5zHJneanZWS6fpf1BCUkqtcxhZ8gQ41LK77v93dxZLgEZ4pWGxIxrw2?= =?us-ascii?Q?BxEfHGnOSqflpPxY6+1UmLAXxHqfuqGHbqiNyugmm5aeUCOQ+oTvcn9zo+wn?= =?us-ascii?Q?95hwnxajTdxLMtrfi9Oc1fLOtCoEJTUGAZqc6qKoOMIQxuo/xHjb+lyETr6a?= =?us-ascii?Q?E/jV7HvaGNGAVtJyn6v2y8ACTur0CC5tWA/kVMeWoziyXJGopMmaepHf3Npk?= =?us-ascii?Q?WYmGMqRznOFU3EW9E8OGMBOYp3+IzOUW7SDA6XMm17lenRsKQa38K5yxKCLw?= =?us-ascii?Q?zfifyvjSeKuhFVr+S9p4iGv58oeajzo3OX35yiFk7lk157iZfQDaq9/lFBTO?= =?us-ascii?Q?7r95op/hH3ubPXcwaDXpjKWGdBVcz/Ep8rILeSnxGRs4YGRa+8zvF1Q6gciC?= =?us-ascii?Q?ncAPRhnG3heFyueY+gdxU8LvIG6zoOvVB3sM3p0tlAqZ6+5ua/mM15SIDOx+?= =?us-ascii?Q?erdFzTq0n+rQz23w6yofCIrk6J0soj/ODgMo38qUiys3C99R0eAPbR72AtwU?= =?us-ascii?Q?aQAO898PX4BFy8MckKVyLyQRB86Cp3ISEhM3T3e94fat2lkN5kgANuC2UFku?= =?us-ascii?Q?tlPbm9NTFf/ukJMOVgEeD+pun+xeQeEfBGAF8sUX8gDN6WPTqfRC/xD65Yap?= =?us-ascii?Q?C7Q67O5R1exRmJ0He0JuSZZ5F5ZFaETqS+44F79U75k6wy0335gqRDkK7KPL?= =?us-ascii?Q?SUZnQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB0939; 5:khze0pR8Pu2dfT0uJfEJr/0nl9XJAAr3wVKKTl5dwPCXk5zHsfAP8m/cWT+EzA7JHb/i3VNXDWdq91A5K7Ev/FbeqvqCO8HpxG+RLGeXxyRWp8wSFWXNKzsnCK6NBqzgmbkh1Lvci5psWuI4lFfEzQ==; 24:KTB01bC/iCjrKjXuQi13N66YjMguhWvKlRmvCy2N8KQICLQ4GKJ/zteFBJBYGx7oKVuyCMEn+/orqhBpoj8OAZ1YgXOCNHDr2SffHleaWlA= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: darbyshire-bryant.me.uk X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Nov 2015 15:44:07.2951 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR07MB0939 Cc: cake@lists.bufferbloat.net Subject: Re: [Cake] NET_XMIT_CN question X-BeenThere: cake@lists.bufferbloat.net X-Mailman-Version: 2.1.13 Precedence: list List-Id: Cake - FQ_codel the next generation List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Nov 2015 15:44:35 -0000 --------------ms040604050702020203050002 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 27/11/15 15:16, Dave Taht wrote: > We decreased the size of the queue, regardless of what flow we dropped > from... so why do we not need to decrease the queue size when using > NET_XMIT_CN? Where is that done by the caller? I have grepped and > googled... > > As best as I recall the semantics of NET_XMIT_CN changed over time, it = used to > only work on enqueue on a tail drop queue, where it would push back on > the stack to not, actually, drop the packet, but to halve the window > and requeue. > > Staring at the code now, I don't see how it could be right... here OR > in the existing fq_codel code in the mainline. > > /* Return Congestion Notification only if we dropped a packet > * from this flow. > */ > if (fq_codel_drop(sch) =3D=3D idx) > return NET_XMIT_CN; > > /* As we dropped a packet, better let upper stack know this */ > qdisc_tree_decrease_qlen(sch, 1); > return NET_XMIT_SUCCESS; > > > (I am not sure NET_XMIT_CN works right when there is a hash collision, > for example, although the updated doc does seem to indicate that, > > ... still, then, where does (an equivalent for) > qdisc_tree_decrease_qlen kick in?) > > So I ripped it out. Otherwise... the code does look correct, now that > I've reviewed it further. > But does putting it back in have any measurable effect? I've no realistic way of testing & finding out. I'd say that if that bit of code ever gets executed then things are in an unfortunate place already, however if there's a way of telling a 'very active talker' (and they must be 'cos they've just queued a packet *and* cake_drop() has chosen them as having the biggest b->backlogs[i] - and that may help answer one of your todo items as well) to back off, then we should take i= t. Spaghetti monster knows what *actually* happens further up the stack :-) > > ... > > Also I note there was a bunch of commits to sch_fq_codel mainline since= july, > notably this one. > > c0afd9ce4d6a646fb6433536f95a418bb348fab1 > > > Dave T=C3=A4ht > Let's go make home routers and wifi faster! With better software! > https://www.gofundme.com/savewifi > --------------ms040604050702020203050002 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgMFADCABgkqhkiG9w0BBwEAAKCC DYEwggY0MIIEHKADAgECAgEeMA0GCSqGSIb3DQEBBQUAMH0xCzAJBgNVBAYTAklMMRYwFAYD VQQKEw1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0 ZSBTaWduaW5nMSkwJwYDVQQDEyBTdGFydENvbSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe Fw0wNzEwMjQyMTAxNTVaFw0xNzEwMjQyMTAxNTVaMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UE ChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUg U2lnbmluZzE4MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3MgMSBQcmltYXJ5IEludGVybWVkaWF0 ZSBDbGllbnQgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHCYPMzi3YGrEp pC4Tq5a+ijKDjKaIQZZVR63UbxIP6uq/I0fhCu+cQhoUfE6ERKKnu8zPf1Jwuk0tsvVCk6U9 b+0UjM0dLep3ZdE1gblK/1FwYT5Pipsu2yOMluLqwvsuz9/9f1+1PKHG/FaR/wpbfuIqu54q zHDYeqiUfsYzoVflR80DAC7hmJ+SmZnNTWyUGHJbBpA8Q89lGxahNvuryGaC/o2/ceD2uYDX 9U8Eg5DpIpGQdcbQeGarV04WgAUjjXX5r/2dabmtxWMZwhZna//jdiSyrrSMTGKkDiXm6/3/ 4ebfeZuCYKzN2P8O2F/Xe2AC/Y7zeEsnR7FOp+uXAgMBAAGjggGtMIIBqTAPBgNVHRMBAf8E BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUU3Ltkpzg2ssBXHx+ljVO8tS4UYIw HwYDVR0jBBgwFoAUTgvvGqRAW6UXaYcwyjRoQ9BBrvIwZgYIKwYBBQUHAQEEWjBYMCcGCCsG AQUFBzABhhtodHRwOi8vb2NzcC5zdGFydHNzbC5jb20vY2EwLQYIKwYBBQUHMAKGIWh0dHA6 Ly93d3cuc3RhcnRzc2wuY29tL3Nmc2NhLmNydDBbBgNVHR8EVDBSMCegJaAjhiFodHRwOi8v d3d3LnN0YXJ0c3NsLmNvbS9zZnNjYS5jcmwwJ6AloCOGIWh0dHA6Ly9jcmwuc3RhcnRzc2wu Y29tL3Nmc2NhLmNybDCBgAYDVR0gBHkwdzB1BgsrBgEEAYG1NwECATBmMC4GCCsGAQUFBwIB FiJodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9wb2xpY3kucGRmMDQGCCsGAQUFBwIBFihodHRw Oi8vd3d3LnN0YXJ0c3NsLmNvbS9pbnRlcm1lZGlhdGUucGRmMA0GCSqGSIb3DQEBBQUAA4IC AQAKgwh9eKssBly4Y4xerhy5I3dNoXHYfYa8PlVLL/qtXnkFgdtY1o95CfegFJTwqBBmf8py TUnFsukDFUI22zF5bVHzuJ+GxhnSqN2sD1qetbYwBYK2iyYA5Pg7Er1A+hKMIzEzcduRkIMm CeUTyMyikfbUFvIBivtvkR8ZFAk22BZy+pJfAoedO61HTz4qSfQoCRcLN5A0t4DkuVhTMXIz uQ8CnykhExD6x4e6ebIbrjZLb7L+ocR0y4YjCl/Pd4MXU91y0vTipgr/O75CDUHDRHCCKBVm z/Rzkc/b970MEeHt5LC3NiWTgBSvrLEuVzBKM586YoRD9Dy3OHQgWI270g+5MYA8GfgI/EPT 5G7xPbCDz+zjdH89PeR3U4So4lSXur6H6vp+m9TQXPF3a0LwZrp8MQ+Z77U1uL7TelWO5lAp sbAonrqASfTpaprFVkL4nyGH+NHST2ZJPWIBk81i6Vw0ny0qZW2Niy/QvVNKbb43A43ny076 khXO7cNbBIRdJ/6qQNq9Bqb5C0Q5nEsFcj75oxQRqlKf6TcvGbjxkJh8BYtv9ePsXklAxtm8 J7GCUBthHSQgepbkOexhJ0wP8imUkyiPHQ0GvEnd83129fZjoEhdGwXV27ioRKbj/cIq7JRX un0NbeY+UdMYu9jGfIpDLtUUGSgsg2zMGs5R4jCCB0UwggYtoAMCAQICAw5ySjANBgkqhkiG 9w0BAQsFADCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNV BAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2BgNVBAMTL1N0YXJ0 Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENBMB4XDTE1MDYyMDIw MzA1MloXDTE2MDYyMDE0MjY0N1owVjEmMCQGA1UEAwwda2V2aW5AZGFyYnlzaGlyZS1icnlh bnQubWUudWsxLDAqBgkqhkiG9w0BCQEWHWtldmluQGRhcmJ5c2hpcmUtYnJ5YW50Lm1lLnVr MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAugCNtDhytCJ9HOfenUHr/vUGUECv PL1IJXgHMl4cIJmwgLOkXhIcTMxHnX+kFweqvT+eDWv1hzA9yMWhvjLFC4eLoFaV0xiAat8O XQ7t3MwKY5DW0mB1dOnjiFIcc/XMwyYI4KfEGnFMJQkzon0rDVpkl/Q1f/hu1sELO7Zc6TFL wuuDuiP7S73zrz50TRoq0+Ob3x0uOMW2uVwVzf6NLwHgBE2LFleMXblyUMx0IlIcLan2nWiI Vsa3XYd+C6KAGGwlmO4VAZ25KuX7hkj8f82lSapvtKTtvrSoDghXlHH2JXiIQX+Sn0UgOmbX 1KyOe9vN7WzQ+tpPRzpFRffnnnp1VQye3wVRPBumjDxQSFTOhUtslnvbefUQSPw6p5w9ZiXI GJICLkX/MkYN/TwGCvuUG2PxBybSR1A2I5ap+VI/zGSG3XGVEA69SOZQyD+8YjJZfaY2nCu+ DuM64JrJUi2CvX6fwcdHNschJNrrfetpnrx3JrGnG9o+pWuUG1phBg+KKN2bhrdzY79qm7ha 86EMKSUOn5nBdGY3YxdXq/naoUQeOCUV2JMFGOulu7sKpiWcz7HVFacXjd9ebisVLv+jOwll z14BWRb87s1+LBEJn/Ybn3ekhtgyEAhB4kgj0scl4hI8xCU6zrZyDnbXmxSvDXbClZA0PACt f/jhGvUCAwEAAaOCAuMwggLfMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdJQQWMBQG CCsGAQUFBwMCBggrBgEFBQcDBDAdBgNVHQ4EFgQULkW2CpDiQpRNumQ7wdspjFfgX+AwHwYD VR0jBBgwFoAUU3Ltkpzg2ssBXHx+ljVO8tS4UYIwKAYDVR0RBCEwH4Eda2V2aW5AZGFyYnlz aGlyZS1icnlhbnQubWUudWswggFMBgNVHSAEggFDMIIBPzCCATsGCysGAQQBgbU3AQIDMIIB KjAuBggrBgEFBQcCARYiaHR0cDovL3d3dy5zdGFydHNzbC5jb20vcG9saWN5LnBkZjCB9wYI KwYBBQUHAgIwgeowJxYgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwAwIBARqB vlRoaXMgY2VydGlmaWNhdGUgd2FzIGlzc3VlZCBhY2NvcmRpbmcgdG8gdGhlIENsYXNzIDEg VmFsaWRhdGlvbiByZXF1aXJlbWVudHMgb2YgdGhlIFN0YXJ0Q29tIENBIHBvbGljeSwgcmVs aWFuY2Ugb25seSBmb3IgdGhlIGludGVuZGVkIHB1cnBvc2UgaW4gY29tcGxpYW5jZSBvZiB0 aGUgcmVseWluZyBwYXJ0eSBvYmxpZ2F0aW9ucy4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDov L2NybC5zdGFydHNzbC5jb20vY3J0dTEtY3JsLmNybDCBjgYIKwYBBQUHAQEEgYEwfzA5Bggr BgEFBQcwAYYtaHR0cDovL29jc3Auc3RhcnRzc2wuY29tL3N1Yi9jbGFzczEvY2xpZW50L2Nh MEIGCCsGAQUFBzAChjZodHRwOi8vYWlhLnN0YXJ0c3NsLmNvbS9jZXJ0cy9zdWIuY2xhc3Mx LmNsaWVudC5jYS5jcnQwIwYDVR0SBBwwGoYYaHR0cDovL3d3dy5zdGFydHNzbC5jb20vMA0G CSqGSIb3DQEBCwUAA4IBAQBicQWe98eF/o09TXFsExc+WSyYjt3oSnXyocLzXQp82CQhIg21 5RqNZ1e+hsO7tq8S6hdItUDbKpecpIV59+57ke1zVl2slTRIT19fhYINHH78rVVRPzuHoiDt MXnGrp9hbq3Cz8P4mm8INKDiYK46kyplRAQ3ZMouPG1lsnDzgQAvbCj74H8yAp7fK8if6cxs 28BCUmdP8D3c6M1ffdNNaqNT+4Z3mtOujXXg7zOfmXN0Zg/mEtZ0NrWE2uICGdWjTv9KZiI7 fi4hk2CRpCL63qzmu6BwtcgtwhgYYtuAk2N43+SiyDkyLKGAcjEor3t5f9HivN29E0F0MXTH 1OdgMYIFDTCCBQkCAQEwgZQwgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBM dGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMTgwNgYD VQQDEy9TdGFydENvbSBDbGFzcyAxIFByaW1hcnkgSW50ZXJtZWRpYXRlIENsaWVudCBDQQID DnJKMA0GCWCGSAFlAwQCAwUAoIICSTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqG SIb3DQEJBTEPFw0xNTExMjcxNTQ0MDJaME8GCSqGSIb3DQEJBDFCBECpsPO4xo4NGHut+yCG VP1C+nnJ0oUqqxgPFSXyDlyIqTf+Rd6GB0C/CQCXb3zODloKhjrzhn78W+3mNDJA+u+2MGwG CSqGSIb3DQEJDzFfMF0wCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAO BggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgw gaUGCSsGAQQBgjcQBDGBlzCBlDCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29t IEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2 BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENB AgMOckowgacGCyqGSIb3DQEJEAILMYGXoIGUMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2ln bmluZzE4MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3MgMSBQcmltYXJ5IEludGVybWVkaWF0ZSBD bGllbnQgQ0ECAw5ySjANBgkqhkiG9w0BAQEFAASCAgCWy92dt/B79nlQ+qBn94/+VNYyyFlM NEavXyd1S4eamDYUjCrqF1K6MYt8YVICn3ugKKyB7necc26DtA6laZlngEf+4LQockEiU/a4 0/Q2z7Lhi2wkP4qIvU32HlaOCL8toZaw0Lw+HQzA49IFg5irj4JKdf/xhzfskRCzZ5gP8uqx 9+PSS5irV6SxtVLDoI+7Ew/OD3E65IZ6qwbxYmaDNk9qlNXk02pU/5nXOQeXCXugmwAGVEC2 axAqbeqb9vbc2BfHC7dzhOR0MGBsfTBFKM0NzNo7tdwBbqDBRvpStT562hfwKlxh4ubTD3Y8 iVCYTVRS2QHRxcyJx7QIgrmZrI2+MLLlm5R0BaW7ld+dqkrO0FlFwSfB5aKGkzuU0BkGfW8h F8tP4IiT6gqqpnxbwS4xXoW6BUbyoVX38L3JTuM2TP4xjCZiK8xlFCQeBoEe84yTq3PZmsnM bbqo4KMbg23xMDQXbOFRjTbv7SZlH9kOkJW8VCTvVo81cicqglnhLnQ/d4/yDv9vobug5owE uKbd/bGKDSw73dQMjUeU9JV/U/zfR9UkLS9BKs2OSGGOzikOLRPcJcZdOtS3fsd7ApGPBbDm FLGYffRQsEUoBplh/5EfOv/WjL5DfnwmWeOtCiR6achGviW5WboWLpgLjYdvL8ZHHJMKywYn UzcN4gAAAAAAAA== --------------ms040604050702020203050002--