From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from emea01-am1-obe.outbound.protection.outlook.com (mail-am1on0077.outbound.protection.outlook.com [157.56.112.77]) (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 321C121F739 for ; Thu, 10 Dec 2015 04:43:57 -0800 (PST) Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=kevin@darbyshire-bryant.me.uk; Received: from [IPv6:2001:470:183f:da2b::632f:a7da] (2001:470:183f:da2b::632f:a7da) by HE1PR07MB0937.eurprd07.prod.outlook.com (10.162.27.143) with Microsoft SMTP Server (TLS) id 15.1.337.19; Thu, 10 Dec 2015 12:43:45 +0000 To: References: <5664173D.40808@darbyshire-bryant.me.uk> <56695F78.5020802@darbyshire-bryant.me.uk> <56696B65.4040608@darbyshire-bryant.me.uk> <5669719D.9030609@darbyshire-bryant.me.uk> From: Kevin Darbyshire-Bryant Message-ID: <5669737C.8070503@darbyshire-bryant.me.uk> Date: Thu, 10 Dec 2015 12:43:40 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0 MIME-Version: 1.0 In-Reply-To: <5669719D.9030609@darbyshire-bryant.me.uk> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-512; boundary="------------ms090708070403050209070303" X-Originating-IP: [2001:470:183f:da2b::632f:a7da] X-ClientProxiedBy: DB4PR04CA0017.eurprd04.prod.outlook.com (25.160.41.27) To HE1PR07MB0937.eurprd07.prod.outlook.com (25.162.27.143) X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB0937; 2:OgV9wjIoWE6bk4p7lRmOwAymJDcfEfvsQaSsziFfSsJ9YmeaZJri0DG7nc1Zyb2iIFm8m6ex1DpjP7GqyLg4N9kKgz5fUuyNl28zesyMppUnnOhi+m1b/4o2BGsjlsUQaU4CMy0l3BdShIkx9R4ldw==; 3:zJBbWa+5f8oKsUPfL4jqMwU1IhE7D+EKZoKSxaVOVVnv+GNhmolKyBIPoCWb67aEqJ5RG4MixkcqIL/1ocaa3Qoo3wRtCiHK3KSyiypxKQwHvoWUBHoIw3V1kwlbxx6r; 25:VEzRKCut6cOHWyAzw0TA2AnkJIQ0pnV4eQel7O/fqwtrz5Y9t4CZP3mHXMZSkk/FNe5KFXtdDbCnRCuvxt+19nwPjJqT0kxvkFgi2yli/MqItYvmRwAZDGlruxGC6sVFXsvR1Py2Ckkr9tlEHfr0z20UualcrdBn/Wl7wWezlamh9ZqtiWwp29p4PPNxJBZYNSWd90e3i8ADIWd39K1JN4LqsaQJ1GSGtrQtnMcSSqVg6CksX/WK60ytF/KYyf2E78EvAjmcwkey5nClRNdT3Q==; 4:KEIfPfDeTUQE9QN4eXzYvIMWcM9SsYWq7MWnQ+qs6tFZ9zeCk996xdfabbQfWSCNMos8pS+hwOfJVtEwj6a++KHkZ8RsHWYClR7+HGSIN6IXG3M7FxPtCKgETyyXl5zTXf6gr1MOGPk9AyCBTl5lCQiNKrlQxbSz6ud2Oy3h4h6KR1OvOQNm9UeEJEsi6z279eAboTvdatoavZ8jwC1udvr82drObBeqfyuWMVj55ECkU3Qm5LBM8fC7S9ITQ/PcMeoTnERy6II2cBCPybg9omBh8N+ZFpx2EGsTpqBvf0xM9920Tb2Gxaf6rbvn3700VOMHdkV7fy3W6gvk1/MpwekcWn5pVGft6Mc0j0gc8ARAQoV4vuqH6rO7e2mX1jK3 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:HE1PR07MB0937; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(520078)(8121501046)(5005006)(10201501046)(3002001); SRVR:HE1PR07MB0937; BCL:0; PCL:0; RULEID:; SRVR:HE1PR07MB0937; X-Forefront-PRVS: 078693968A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(24454002)(479174004)(199003)(52314003)(377454003)(189002)(76176999)(86362001)(107886002)(19580405001)(83506001)(105586002)(65956001)(77096005)(512944002)(33656002)(87976001)(101416001)(36756003)(19580395003)(5004730100002)(80316001)(74482002)(4001350100001)(97736004)(93886004)(65806001)(42186005)(106356001)(84326002)(110136002)(65816999)(568964002)(59896002)(5001960100002)(189998001)(99136001)(81156007)(1706002)(54356999)(40100003)(2351001)(64126003)(586003)(6116002)(5890100001)(87266999)(92566002)(450100001)(5008740100001)(122386002)(50986999)(2950100001)(1096002)(3826002); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR07MB0937; H:[IPv6:2001:470:183f:da2b::632f:a7da]; 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; HE1PR07MB0937; 23:Ng88DoV7Bwo+rOim7nYvnDiJGrzMyBmKU1VBuj+ta?= =?us-ascii?Q?tu6zhApZEOwmhrZG+atjM7CNUaRWO2QasfIaU8vDP80a5nbWAT1lL7g57DyH?= =?us-ascii?Q?MW9XHTKSDDJ/Yi2/hmhrrwQGQyJOKupWtuWq75IiyebUrGuK1cWQqacbRgLQ?= =?us-ascii?Q?ikXyZpiMJYp3T6zrmfgFWfRLkwStKrsVJW21eWvojDKEjVp3aArc2IY1C/SM?= =?us-ascii?Q?1rsjehmNTpLQNLI+RCUxOezHKTPmUd9ILIYukwIMx8PQliTGmaD8eRc3gtAT?= =?us-ascii?Q?dZ1jp6CvnlzyYslpx0Kqa1iWjGhUagf59poROqVRG3GdiYFFwonTUtqYJI6n?= =?us-ascii?Q?dYEHFE/zs+olj/eU6BGYOUJjWuXCjXCiHvuqgTf6wd96q5J4THnakOrg1SvU?= =?us-ascii?Q?eMTX6LvW+EeykeWoNgwPUu3GHSnFX2NQ4xGKZOChtKc5tnxTmRyhAshPfQhx?= =?us-ascii?Q?8dwdunIhe09hOa99sKssaF0HuV6wJmn7R0mxgiCqkAbWt8ErytVF2IG0Eihj?= =?us-ascii?Q?zLvzOqMMsqmAcDV3Y+0BRIYV5Yo1/+IPIP2gwKhsH7VMdzYDoXiHeEgsBTh/?= =?us-ascii?Q?5+7WV6sIo6v74Xr5ckZWZ4t6VU7Ct7l15PVp7OZ6AiclsI/Yli0AjdCIpgWX?= =?us-ascii?Q?XbLG4J5BUtzMYRvA3V88beEZ2Zf3gD5S2M/jEPfgUFQZ5LO81X5JdDkTINAw?= =?us-ascii?Q?mzBvJf6AwjWQqknSYLQj4+mUT/FN73qj7l0UMmDtOxY+XAU70twWk6mEdviO?= =?us-ascii?Q?2L0oMyYNfD7GfVHzkqNyadarmLSkQAOMhkBu7AJRaOStZKnmL48qJR0Hty9U?= =?us-ascii?Q?1IvSaMOuMjCE2ZRKJhV/0L6j1b65yTcx+PCQjLpQMwZj6T5a7+g2vb0G4G5Y?= =?us-ascii?Q?Otj3aYfqpvIaa0fVRQClMnL/SZLMhbPCVllH67iLKiz+JP5Sue0bmTlH3XTi?= =?us-ascii?Q?Yfvukk/dLSeSvBPNy/p6Z8T5XKPEasnPWY5zeg6dVAu9aLoheny2bWg056GO?= =?us-ascii?Q?cy2bbxZ0Eu62cN+iVOxIV/2bAPgByqN6Nl/1+MH2QjlCeM0l5gH2z2r94hlX?= =?us-ascii?Q?2SG/rSH7PXMtVN6eftPVfrlIQxofdpQi58L91Mi3CNegT3oAlbco4NEaU15m?= =?us-ascii?Q?Mk0vrchqC6+Cu81h1FMF8CbVQghBXYWEV3JHInN8Eyj0jxB9lZNOVld4PHXv?= =?us-ascii?Q?aCQ9lt1I1G5Q3gWV2qmZHgb/Byn8d9P1ayZftSo3JIQeqy/BJJuer2V+7fdW?= =?us-ascii?Q?OnShYKuj18lUxOFRzma/SJjub+8C639UdQGk2B/iw5lTZ+O+ZSA2Mkr6O8UA?= =?us-ascii?Q?PLwBKVHTXGYi1yHLaYlcAq7opGMDUhMTtGwRL8Z4bZcD6B/2mb++EdtNjV7w?= =?us-ascii?Q?jfhlg4qSNN/qcHcufb/cfTkEcPVIeJZuMkBtohiEGcpa2Qra03hHwXDQeJh6?= =?us-ascii?Q?M3R/q2Rug=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB0937; 5:Huf1l7uDCeFbOjXb01FJeriAOCC5fkUzdapD0U7T8dIRWPsV4Wwt4uK8xEFKlqTgxipnZXTqdooj3wzUbRx4GpE8Iy3ZERrz+H9oMGiYxueW7DWtg+QohlzbEkY1KqPyB87F/AVk+F3fSFtt0fO2qw==; 24:YHscL4v21pyQnIMWCk70h3Bw95MBbibBAY5ZiegPUKb4zzYG2pPX571Vrg85TcmpAS/7r4cmN3BP968IQ9YG/BWGnU13G90Rt9TshA+ZxRk= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: darbyshire-bryant.me.uk X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2015 12:43:45.6732 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR07MB0937 Subject: Re: [Cake] dscp & tunneling 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: Thu, 10 Dec 2015 12:44:20 -0000 --------------ms090708070403050209070303 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable On 10/12/15 12:35, Kevin Darbyshire-Bryant wrote: > > On 10/12/15 12:22, Dave Taht wrote: >> On Thu, Dec 10, 2015 at 1:09 PM, Kevin Darbyshire-Bryant >> wrote: >> >>> the same test shows all those flows going in the best effort tin and >>> nothing being split out according to dscp. Things are split out >>> correctly with ipv4. Assuming that my installation of flent is doing= >>> the right thing (putting dscp on its outbound ipv6 packets) and knowi= ng >>> that both flent & cake handle the ipv4 version of the test correctly = and >>> that by the time 'cake' sees my tunnel it's all ipv4 outer packets >>> anyway, this suggests dscp from inner ipv6 to outer ipv4 isn't taking= >>> place, at least for 6in4 'sit' tunnels :-( >> Wireshark is your friend here. > I shall befriend it once again :-) >> It would not surprise me if dscp inherit had broken again, or, it was >> borked on decapsulation. Not a widely tested feature, that. > I'm only 'testing' the encapsulation side...ipv6 into router, router > encapsulates into ipv6, cake then sits across 'eth0' the Internet facin= g > interface and isn't classifying the flows - and I swear this used to wo= rk. >> I remember making it work several years ago, remember sort of seeing >> the patches go upstream somewhere.... it was a long time ago. > Is there anyone lurking on this list, with the time, who can help me > with net/ipv6/sit.c? > > It looks like this is the relevant area: Need to see what > INET_ECN_encapsulate does (and where tos gets set) > > if (ttl =3D=3D 0) > ttl =3D iph6->hop_limit; > tos =3D INET_ECN_encapsulate(tos, ipv6_get_dsfield(iph6)); > > if (ip_tunnel_encap(skb, tunnel, &protocol, &fl4) < 0) { > ip_rt_put(rt); > goto tx_error; > } > > skb_set_inner_ipproto(skb, IPPROTO_IPV6); > > err =3D iptunnel_xmit(NULL, rt, skb, fl4.saddr, fl4.daddr, > protocol, tos, ttl, df, > !net_eq(tunnel->net, dev_net(dev))); > iptunnel_xmit_stats(err, &dev->stats, dev->tstats); > return NETDEV_TX_OK; Ahhh....further up... if (tos =3D=3D 1) tos =3D ipv6_get_dsfield(iph6); and further up still... static netdev_tx_t ipip6_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) { struct ip_tunnel *tunnel =3D netdev_priv(dev); const struct iphdr *tiph =3D &tunnel->parms.iph; const struct ipv6hdr *iph6 =3D ipv6_hdr(skb); u8 tos =3D tunnel->parms.iph.tos; So how & who sets (or should be setting) iph.tos =3D 1? Rabbit hole, rabbit hole...... --------------ms090708070403050209070303 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 SIb3DQEJBTEPFw0xNTEyMTAxMjQzNDBaME8GCSqGSIb3DQEJBDFCBEC16Dg8pOLY1Qlp5xMl kIpjMqnqhSmj1W7XPV1VC9l996BMnWIXBkYdexl9N6ZWImqmIyV0tijgNWBkvb9ousrQMGwG CSqGSIb3DQEJDzFfMF0wCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAO BggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgw gaUGCSsGAQQBgjcQBDGBlzCBlDCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29t IEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2 BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENB AgMOckowgacGCyqGSIb3DQEJEAILMYGXoIGUMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2ln bmluZzE4MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3MgMSBQcmltYXJ5IEludGVybWVkaWF0ZSBD bGllbnQgQ0ECAw5ySjANBgkqhkiG9w0BAQEFAASCAgCS6vCf5MZ7THgjl4EwsKHtm05q7Dl+ SKTtKPfZhWrpK2xeB5yAho6st6LAxrgKN8T7p97PS2XST/i8U2R2lv/xlpRZxjUv/RlUzyZx 79gseN1o7ev/9KOng+OddsZs/X9TtdvpNEuaUshJZ7b8RoLhQ8fziqW4yrlBQvzzlrYVFpRX UCJjvX5LlP8YDzxY2sLOrXuTtBcKc3RCoNv+xcGF+DiduavaE/nLT6FOg8pOjK0434HLHY1z 91OsYqOKZ+tFMRaeeQfvR3Rg9jYqpPe9JuxEKxTydfGWidYLVDTw2TyDX2KrBxCaFoDxYtU3 iqxQ1C6sukXMzLW87XMFkffN0sGCNnG873Fc3JJ/CyV7PhBZ/Gv6HlcbrKFJzRoSKG8Hy8Y1 TDJbmNpk51fs5zEpJZxOgSKIXbYBSaSzNoPo41ZB/nFRARhLmLLxuCrQ8sByxH9fngiN63zP 1iN+rc2tG19Kcy/ymdhnExmeo4ET9M/LiToEvIepsfTxYOpOwFD3kM28c/NNfwwUKLSibF/x YWBFOmVqBYv/JZPeNaOqCijiOfxaaocRObzDJpryQ/00xXk96ufzJqmwipXwWs89gFdQ2dCd aQAL2+hFyogrprgXuuPKMQyq1TO0gYTHILuA/vFwY16Zx0lK7hF/u4mY89/6AHlBM4XYp37l XvjvqgAAAAAAAA== --------------ms090708070403050209070303--