From owner-freebsd-questions@freebsd.org Mon Aug 28 02:00:34 2017 Return-Path: Delivered-To: freebsd-questions@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6263DE031D5 for ; Mon, 28 Aug 2017 02:00:34 +0000 (UTC) (envelope-from freebsd@fongaboo.com) Received: from h4lix.wtfayla.net (helix.wtfayla.net [64.246.134.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 098AF647DE for ; Mon, 28 Aug 2017 02:00:32 +0000 (UTC) (envelope-from freebsd@fongaboo.com) Received: from localhost (localhost [127.0.0.1]) by h4lix.wtfayla.net (Postfix) with ESMTP id 4B5D17CEFFB; Sun, 27 Aug 2017 22:00:29 -0400 (EDT) Received: from h4lix.wtfayla.net ([127.0.0.1]) by localhost (h4lix.wtfayla.net [127.0.0.1]) (maiad, port 10024) with ESMTP id 50724-03; Sun, 27 Aug 2017 22:00:28 -0400 (EDT) Received: from h4lix.wtfayla.net (h4lix.wtfayla.net [64.246.134.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by h4lix.wtfayla.net (Postfix) with ESMTPS id 82A007CEFF5; Sun, 27 Aug 2017 22:00:28 -0400 (EDT) Date: Sun, 27 Aug 2017 22:00:28 -0400 (EDT) From: Fongaboo X-X-Sender: fongaboo@h4lix.wtfayla.net To: FreeBSD Mailing List cc: Ian Smith Subject: Re: STUMPED: Setting up OpenVPN server on FreeBSD (self.freebsd) In-Reply-To: Message-ID: References: <20170827164229.W23641@sola.nimnet.asn.au> User-Agent: Alpine 2.20 (BSF 67 2015-01-07) MIME-Version: 1.0 Content-Type: multipart/mixed; BOUNDARY="1512028668-759177736-1503885628=:50226" X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 Aug 2017 02:00:34 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --1512028668-759177736-1503885628=:50226 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8BIT Thanks so much, Ian. I feel like I'm getting closer. But still no luck. Would you be up for double-checking my work? rc.conf/pf.conf/openvpn.conf attached... Do you think I need to add those new dev statements to the client's OpenVPN config as well? Also, sanity check: If I am attempting to browse by IP to http://176.58.123.25then I can eliminate any problem with the right DNS servers getting pushed. Also want to note that my client can browse to http://10.8.0.1 and see my apache server's default index. On Sun, 27 Aug 2017, Ultima wrote: > From pf.conf: > > pass from { lo0, $localnet } to any keep state > This rule would probably work if it was in proper order and contain > "quick". It should also be in the --- INCOMING --- section. > Normally pf will warn when the rules are out of order. lo0 should > be removed as it has set skip, and I would change it to pass in. > To sum it up: > > pf.conf: > pass in quick from $localnet to any keep state > > Moved to the incoming section. > > The main issue is that the bottom default rule "block log all" > triumphs over any rule defined above that does not contain the > "quick" declaration. > > From rc.conf: > #gateway_enable="YES" > This should be uncommented. When you use openvpn with this > kind of configuration. I would check sysctl net.inet.ip.forwarding > and make sure it is "1" which is essentially what gateway_enable > does. > > In general I suggest changing a couple other things if you want the > system to work after each restart. I find that relying on the > :network > translation in pf often can break things and is better to be hard > coded where possible. It is also better to create the interface in > rc.conf and give openvpn the interface instead of letting openvpn > take care of all that. This can be done like so: > > rc.conf: > cloned_interfaces="tun0" > ifconfig_tun0="up" # This is probably not needed, but better to be > safe. > > openvpn.conf: > dev tun0 # I don't think this is needed with the below, but I > prefer to be thorough > dev-type tun > dev-node /dev/tun0 > > > As for this thread in general, it'd be really nice if people > would not > > re-re-quote long messages > > Apologies Ian, It is easy to forget about when gmail truncates the > bottom bit. > > > Hope this helps, > Richard Gallamore > > --1512028668-759177736-1503885628=:50226 Content-Type: text/plain; charset=US-ASCII; name=rc.conf.2017082701 Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=rc.conf.2017082701 ZWMyX2NvbmZpZ2luaXRfZW5hYmxlPVlFUw0KZWMyX2ZldGNoa2V5X2VuYWJs ZT1ZRVMNCmVjMl9lcGhlbWVyYWxzd2FwX2VuYWJsZT1ZRVMNCmVjMl9sb2do b3N0a2V5X2VuYWJsZT1ZRVMNCmZpcnN0Ym9vdF9mcmVlYnNkX3VwZGF0ZV9l bmFibGU9WUVTDQpmaXJzdGJvb3RfcGtnc19lbmFibGU9WUVTDQpncm93ZnNf ZW5hYmxlPSJZRVMiDQppZmNvbmZpZ19ERUZBVUxUPSJTWU5DREhDUCINCnNz aGRfZW5hYmxlPSJZRVMiDQpmaXJzdGJvb3RfcGtnc19saXN0PSJhd3NjbGki DQoNCmhvc3RuYW1lPSJteS1zZXJ2ZXItaG9zdG5hbWUuZG9tYWluLnRsZCIN Cg0KIyBPcGVuVlBOIEdhdGV3YXkgSW50ZXJmYWNlcw0KY2xvbmVkX2ludGVy ZmFjZXM9InR1bjAiDQppZmNvbmZpZ190dW4wPSJ1cCINCg0KbnRwZF9lbmFi bGU9IllFUyINCiMgU2V0IGR1bXBkZXYgdG8gIkFVVE8iIHRvIGVuYWJsZSBj cmFzaCBkdW1wcywgIk5PIiB0byBkaXNhYmxlDQpkdW1wZGV2PSJBVVRPIg0K DQojZW5hYmxlIGluZXRkIGZvciB5dGFsaw0KaW5ldGRfZW5hYmxlPSJZRVMi DQoNCiNlbmFibGUgZmlyZXdhbGwNCiNmaXJld2FsbF9lbmFibGU9IllFUyIN CiNmaXJld2FsbF9zY3JpcHQ9Ii91c3IvbG9jYWwvZXRjL2lwZncucnVsZXMi DQojZmlyZXdhbGxfdHlwZT0ib3BlbiINCiNmaXJld2FsbF9uYXRfZW5hYmxl PSJZRVMiDQoNCiNlbmFibGUgcGYNCnBmX2VuYWJsZT0iWUVTIg0KcGZfcnVs ZXM9Ii9ldGMvcGYuY29uZiINCnBmbG9nX2VuYWJsZT0iWUVTIg0KcGZsb2df bG9nZmlsZT0iL3Zhci9sb2cvcGZsb2ciDQoNCmdhdGV3YXlfZW5hYmxlPSJZ RVMiDQoNCiNkaXNhYmxlIHN0b2NrIEZUUA0KZnRwX2VuYWJsZT0iTk8iDQoN CiNlbmFibGUgYXBhY2hlDQphcGFjaGUyNF9lbmFibGU9InllcyINCg0KI2Vu YWJsZSBteXNxbA0KbXlzcWxfZW5hYmxlPSJ5ZXMiDQoNCiNlbmFibGUgcG9z dGZpeA0KcG9zdGZpeF9lbmFibGU9InllcyINCg0KI2FjdGl2YXRlIFNTSEdV QVJEDQojc3NoZ3VhcmRfZW5hYmxlPSJ5ZXMiDQoNCiNlbmFibGUgV0VCTUlO DQp3ZWJtaW5fZW5hYmxlPSJZRVMiDQoNCiNhbGxvdyBQcm9mdHBkDQojcHJv ZnRwZF9lbmFibGU9InllcyINCg0KI2VuYWJsZSBtYWlsbWFuDQptYWlsbWFu X2VuYWJsZT0ieWVzIg0KDQojZW5hYmxlIE9wZW5WUE4NCm9wZW52cG5fZW5h YmxlPSJZRVMiDQpvcGVudnBuX2NvbmZpZ2ZpbGU9Ii91c3IvbG9jYWwvZXRj L29wZW52cG4vb3BlbnZwbi5jb25mIg0K --1512028668-759177736-1503885628=:50226 Content-Type: text/plain; charset=US-ASCII; name=pf.conf.2017082701 Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=pf.conf.2017082701 IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzaW1wbGUgc2VydmVyIHBmLmNv bmYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3IgRnJlZUJTRCA5LjEN CiMgajY1bmtvIDIwMTEsIDIwMTIsIDIwMTMNCiMNCiMgSWYgeW91IGFkYXB0 IHRoaXMgcnVsZXNldCBmb3IgYSByZXNvbHZpbmcgY2FjaGluZyBuYW1lIHNl cnZlciBwbGVhc2UNCiMgbWFrZSBzdXJlIHlvdSBkb24ndCBhbGxvdyB0aGUg d2hvbGUgd29ybGQgdG8gdXNlIHlvdXIgbmFtZSBzZXJ2ZXINCiMgQ3JlYXRp bmcgYW4gb3BlbiByZXNvbHZpbmcgbmFtZSBzZXJ2ZXIgY2FuIGFsbG93IHRo ZSBiYWQgZ3V5cyB0byB1c2UgeW91ciBuYW1lc2VydmVyDQojIGluIGFuIERO UyBhbXBsaWZpY2F0aW9uIGF0dGFjaw0KDQojbWFjcm9zIGZvciBuZXR3b3Jr IGludGVyZmFjZXMNCmV4dF9pZj0ieG4wIg0KaW50X2lmPSJ0dW4wIg0KDQoj IGRlZmluZSBOQVQgZ2F0ZXdheSByb3V0aW5nDQpsb2NhbG5ldCA9ICRpbnRf aWY6bmV0d29yaw0KbmF0IG9uICRleHRfaWYgZnJvbSAkbG9jYWxuZXQgdG8g YW55IC0+ICgkZXh0X2lmKQ0KDQoNCmljbXBfdHlwZXM9ImVjaG9yZXEiDQoN CiMgQ3VzdG9tIHBvcnQgZm9yIHNzaA0KU1NIX0NVU1RPTSA9IDIyDQoNCnNj cnViIGluIG9uICRleHRfaWYgYWxsIGZyYWdtZW50IHJlYXNzZW1ibGUNCg0K c2V0IHNraXAgb24gbG8wDQojc2V0IHNraXAgb24gbG8xDQoNCmFudGlzcG9v ZiBmb3IgJGV4dF9pZg0KDQojIC0tLSBFWFRFUk5BTCBJTlRFUkZBQ0UNCiMg LS0tIElOQ09NSU5HIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnBhc3MgaW4g cXVpY2sgZnJvbSAkbG9jYWxuZXQgdG8gYW55IGtlZXAgc3RhdGUNCg0KIyAt LS0gVENQDQpwYXNzIGluICBxdWljayBvbiAkZXh0X2lmIGluZXQgcHJvdG8g dGNwIGZyb20gbXktaG9tZS1pcCB0byBhbnkNCnBhc3MgaW4gIHF1aWNrIG9u ICRleHRfaWYgaW5ldCBwcm90byB0Y3AgZnJvbSBhbnkgdG8gJGV4dF9pZiAg cG9ydCBodHRwDQpwYXNzIGluICBxdWljayBvbiAkZXh0X2lmIGluZXQgcHJv dG8gdGNwIGZyb20gYW55IHRvICRleHRfaWYgIHBvcnQgaHR0cHMNCnBhc3Mg aW4gIHF1aWNrIG9uICRleHRfaWYgaW5ldCBwcm90byB0Y3AgZnJvbSBhbnkg dG8gJGV4dF9pZiAgcG9ydCAkU1NIX0NVU1RPTQ0KcGFzcyBpbiAgcXVpY2sg b24gJGV4dF9pZiBpbmV0IHByb3RvIHRjcCBmcm9tIGFueSB0byAkZXh0X2lm ICBwb3J0IDExOTQNCg0KIyAtLS0gZm9yIGF1dGhvcml0YXRpdmUgRE5TIHNl cnZlcg0KcGFzcyBpbiAgcXVpY2sgb24gJGV4dF9pZiBpbmV0IHByb3RvIHVk cCBmcm9tIGFueSB0byAkZXh0X2lmICBwb3J0IGRvbWFpbg0KDQojIC0tLSBV RFANCiMgLS0tIGZvciBhdXRob3JpdGF0aXZlIEROUyBzZXJ2ZXINCiNwYXNz IGluICBxdWljayBvbiAkZXh0X2lmIGluZXQgcHJvdG8gdWRwIGZyb20gYW55 IHRvICRleHRfaWYgIHBvcnQgZG9tYWluDQoNCiMgLS0tIElDTVANCnBhc3Mg aW4gIHF1aWNrIG9uICRleHRfaWYgaW5ldCBwcm90byBpY21wIGZyb20gYW55 IHRvICRleHRfaWYgaWNtcC10eXBlICRpY21wX3R5cGVzDQoNCiMgLS0tIEVY VEVSTkFMIElOVEVSRkFDRQ0KIyAtLS0gT1VUR09JTkcgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCg0KYW5jaG9yIFRNUA0KDQojIC0tLSBUQ1ANCiNwYXNz ICBvdXQgcXVpY2sgbG9nIG9uICRleHRfaWYgaW5ldCBwcm90byB0Y3AgZnJv bSAkZXh0X2lmIHRvIGFueSBwb3J0IHNtdHANCiNwYXNzICBvdXQgcXVpY2sg ICAgIG9uICRleHRfaWYgaW5ldCBwcm90byB0Y3AgZnJvbSAkZXh0X2lmIHRv IGFueSBwb3J0IGRvbWFpbg0KI3Bhc3MgIG91dCBxdWljayAgICAgb24gJGV4 dF9pZiBpbmV0IHByb3RvIHRjcCBmcm9tICRleHRfaWYgdG8gYW55IHBvcnQg aHR0cA0KI3Bhc3MgIG91dCBxdWljayAgICAgb24gJGV4dF9pZiBpbmV0IHBy b3RvIHRjcCBmcm9tICRleHRfaWYgdG8gYW55IHBvcnQgaHR0cHMNCiNwYXNz ICBvdXQgcXVpY2sgICAgIG9uICRleHRfaWYgaW5ldCBwcm90byB0Y3AgZnJv bSAkZXh0X2lmIHRvIGFueSBwb3J0IHdob2lzDQojcGFzcyAgb3V0IHF1aWNr ICAgICBvbiAkZXh0X2lmIGluZXQgcHJvdG8gdGNwIGZyb20gJGV4dF9pZiB0 byBhbnkgcG9ydCAkU1NIX0NVU1RPTQ0KDQojIC0tLSBVRFANCiNwYXNzICBv dXQgcXVpY2sgb24gJGV4dF9pZiBpbmV0IHByb3RvIHVkcCBmcm9tICRleHRf aWYgdG8gYW55IHBvcnQgZG9tYWluDQojcGFzcyAgb3V0IHF1aWNrIG9uICRl eHRfaWYgaW5ldCBwcm90byB1ZHAgZnJvbSAkZXh0X2lmIHRvIGFueSBwb3J0 IG50cA0KDQojIC0tLSBJQ01QDQpwYXNzICBvdXQgcXVpY2sgb24gJGV4dF9p ZiBpbmV0IHByb3RvIGljbXAgIGZyb20gJGV4dF9pZiB0byBhbnkNCg0KIyAt LS0gQUxMT1cgQUxMIE9VVEJPVU5EIFRSQUZGSUMNCnBhc3Mgb3V0IHF1aWNr IG9uICRleHRfaWYgaW5ldCBrZWVwIHN0YXRlDQoNCiMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoj IC0tLSBERUZBVUxUIFBPTElDWQ0KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmJsb2NrIGxvZyBh bGwNCg0KIyAtLS0tLSBlbmQgb2YgcGYuY29uZg0K --1512028668-759177736-1503885628=:50226 Content-Type: text/plain; charset=US-ASCII; name=openvpn.conf.2017082701 Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=openvpn.conf.2017082701 IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIw0KIyBTYW1wbGUgT3BlblZQTiAyLjAgY29uZmlnIGZpbGUgZm9yICAg ICAgICAgICAgIw0KIyBtdWx0aS1jbGllbnQgc2VydmVyLiAgICAgICAgICAg ICAgICAgICAgICAgICAgIw0KIyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIw0KIyBUaGlzIGZpbGUgaXMgZm9yIHRo ZSBzZXJ2ZXIgc2lkZSAgICAgICAgICAgICAgIw0KIyBvZiBhIG1hbnktY2xp ZW50cyA8LT4gb25lLXNlcnZlciAgICAgICAgICAgICAgIw0KIyBPcGVuVlBO IGNvbmZpZ3VyYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgIw0KIyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Iw0KIyBPcGVuVlBOIGFsc28gc3VwcG9ydHMgICAgICAgICAgICAgICAgICAg ICAgICAgIw0KIyBzaW5nbGUtbWFjaGluZSA8LT4gc2luZ2xlLW1hY2hpbmUg ICAgICAgICAgICAgIw0KIyBjb25maWd1cmF0aW9ucyAoU2VlIHRoZSBFeGFt cGxlcyBwYWdlICAgICAgICAgIw0KIyBvbiB0aGUgd2ViIHNpdGUgZm9yIG1v cmUgaW5mbykuICAgICAgICAgICAgICAgIw0KIyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIw0KIyBUaGlzIGNvbmZp ZyBzaG91bGQgd29yayBvbiBXaW5kb3dzICAgICAgICAgICAgIw0KIyBvciBM aW51eC9CU0Qgc3lzdGVtcy4gIFJlbWVtYmVyIG9uICAgICAgICAgICAgIw0K IyBXaW5kb3dzIHRvIHF1b3RlIHBhdGhuYW1lcyBhbmQgdXNlICAgICAgICAg ICAgIw0KIyBkb3VibGUgYmFja3NsYXNoZXMsIGUuZy46ICAgICAgICAgICAg ICAgICAgICAgIw0KIyAiQzpcXFByb2dyYW0gRmlsZXNcXE9wZW5WUE5cXGNv bmZpZ1xcZm9vLmtleSIgIw0KIyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIw0KIyBDb21tZW50cyBhcmUgcHJlY2Vk ZWQgd2l0aCAnIycgb3IgJzsnICAgICAgICAgIw0KIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIFdoaWNo IGxvY2FsIElQIGFkZHJlc3Mgc2hvdWxkIE9wZW5WUE4NCiMgbGlzdGVuIG9u PyAob3B0aW9uYWwpDQo7bG9jYWwgYS5iLmMuZA0KDQojIFdoaWNoIFRDUC9V RFAgcG9ydCBzaG91bGQgT3BlblZQTiBsaXN0ZW4gb24/DQojIElmIHlvdSB3 YW50IHRvIHJ1biBtdWx0aXBsZSBPcGVuVlBOIGluc3RhbmNlcw0KIyBvbiB0 aGUgc2FtZSBtYWNoaW5lLCB1c2UgYSBkaWZmZXJlbnQgcG9ydA0KIyBudW1i ZXIgZm9yIGVhY2ggb25lLiAgWW91IHdpbGwgbmVlZCB0bw0KIyBvcGVuIHVw IHRoaXMgcG9ydCBvbiB5b3VyIGZpcmV3YWxsLg0KcG9ydCAxMTk0DQoNCiMg VENQIG9yIFVEUCBzZXJ2ZXI/DQo7cHJvdG8gdGNwDQpwcm90byB1ZHANCg0K IyAiZGV2IHR1biIgd2lsbCBjcmVhdGUgYSByb3V0ZWQgSVAgdHVubmVsLA0K IyAiZGV2IHRhcCIgd2lsbCBjcmVhdGUgYW4gZXRoZXJuZXQgdHVubmVsLg0K IyBVc2UgImRldiB0YXAwIiBpZiB5b3UgYXJlIGV0aGVybmV0IGJyaWRnaW5n DQojIGFuZCBoYXZlIHByZWNyZWF0ZWQgYSB0YXAwIHZpcnR1YWwgaW50ZXJm YWNlDQojIGFuZCBicmlkZ2VkIGl0IHdpdGggeW91ciBldGhlcm5ldCBpbnRl cmZhY2UuDQojIElmIHlvdSB3YW50IHRvIGNvbnRyb2wgYWNjZXNzIHBvbGlj aWVzDQojIG92ZXIgdGhlIFZQTiwgeW91IG11c3QgY3JlYXRlIGZpcmV3YWxs DQojIHJ1bGVzIGZvciB0aGUgdGhlIFRVTi9UQVAgaW50ZXJmYWNlLg0KIyBP biBub24tV2luZG93cyBzeXN0ZW1zLCB5b3UgY2FuIGdpdmUNCiMgYW4gZXhw bGljaXQgdW5pdCBudW1iZXIsIHN1Y2ggYXMgdHVuMC4NCiMgT24gV2luZG93 cywgdXNlICJkZXYtbm9kZSIgZm9yIHRoaXMuDQojIE9uIG1vc3Qgc3lzdGVt cywgdGhlIFZQTiB3aWxsIG5vdCBmdW5jdGlvbg0KIyB1bmxlc3MgeW91IHBh cnRpYWxseSBvciBmdWxseSBkaXNhYmxlDQojIHRoZSBmaXJld2FsbCBmb3Ig dGhlIFRVTi9UQVAgaW50ZXJmYWNlLg0KO2RldiB0YXANCmRldiB0dW4wDQpk ZXYtdHlwZSB0dW4NCmRldi1ub2RlIC9kZXYvdHVuMA0KDQojIFdpbmRvd3Mg bmVlZHMgdGhlIFRBUC1XaW4zMiBhZGFwdGVyIG5hbWUNCiMgZnJvbSB0aGUg TmV0d29yayBDb25uZWN0aW9ucyBwYW5lbCBpZiB5b3UNCiMgaGF2ZSBtb3Jl IHRoYW4gb25lLiAgT24gWFAgU1AyIG9yIGhpZ2hlciwNCiMgeW91IG1heSBu ZWVkIHRvIHNlbGVjdGl2ZWx5IGRpc2FibGUgdGhlDQojIFdpbmRvd3MgZmly ZXdhbGwgZm9yIHRoZSBUQVAgYWRhcHRlci4NCiMgTm9uLVdpbmRvd3Mgc3lz dGVtcyB1c3VhbGx5IGRvbid0IG5lZWQgdGhpcy4NCjtkZXYtbm9kZSBNeVRh cA0KDQojIFNTTC9UTFMgcm9vdCBjZXJ0aWZpY2F0ZSAoY2EpLCBjZXJ0aWZp Y2F0ZQ0KIyAoY2VydCksIGFuZCBwcml2YXRlIGtleSAoa2V5KS4gIEVhY2gg Y2xpZW50DQojIGFuZCB0aGUgc2VydmVyIG11c3QgaGF2ZSB0aGVpciBvd24g Y2VydCBhbmQNCiMga2V5IGZpbGUuICBUaGUgc2VydmVyIGFuZCBhbGwgY2xp ZW50cyB3aWxsDQojIHVzZSB0aGUgc2FtZSBjYSBmaWxlLg0KIw0KIyBTZWUg dGhlICJlYXN5LXJzYSIgZGlyZWN0b3J5IGZvciBhIHNlcmllcw0KIyBvZiBz Y3JpcHRzIGZvciBnZW5lcmF0aW5nIFJTQSBjZXJ0aWZpY2F0ZXMNCiMgYW5k IHByaXZhdGUga2V5cy4gIFJlbWVtYmVyIHRvIHVzZQ0KIyBhIHVuaXF1ZSBD b21tb24gTmFtZSBmb3IgdGhlIHNlcnZlcg0KIyBhbmQgZWFjaCBvZiB0aGUg Y2xpZW50IGNlcnRpZmljYXRlcy4NCiMNCiMgQW55IFg1MDkga2V5IG1hbmFn ZW1lbnQgc3lzdGVtIGNhbiBiZSB1c2VkLg0KIyBPcGVuVlBOIGNhbiBhbHNv IHVzZSBhIFBLQ1MgIzEyIGZvcm1hdHRlZCBrZXkgZmlsZQ0KIyAoc2VlICJw a2NzMTIiIGRpcmVjdGl2ZSBpbiBtYW4gcGFnZSkuDQpjYSBjYS5jcnQNCmNl cnQgbXktc2VydmVyLWhvc3RuYW1lX29wZW52cG4tc2VydmVyLmNydA0Ka2V5 IG15LXNlcnZlci1ob3N0bmFtZV9vcGVudnBuLXNlcnZlci5rZXkgICMgVGhp cyBmaWxlIHNob3VsZCBiZSBrZXB0IHNlY3JldA0KDQojIERpZmZpZSBoZWxs bWFuIHBhcmFtZXRlcnMuDQojIEdlbmVyYXRlIHlvdXIgb3duIHdpdGg6DQoj ICAgb3BlbnNzbCBkaHBhcmFtIC1vdXQgZGgyMDQ4LnBlbSAyMDQ4DQpkaCBk aDIwNDgucGVtDQoNCiMgTmV0d29yayB0b3BvbG9neQ0KIyBTaG91bGQgYmUg c3VibmV0IChhZGRyZXNzaW5nIHZpYSBJUCkNCiMgdW5sZXNzIFdpbmRvd3Mg Y2xpZW50cyB2Mi4wLjkgYW5kIGxvd2VyIGhhdmUgdG8NCiMgYmUgc3VwcG9y dGVkICh0aGVuIG5ldDMwLCBpLmUuIGEgLzMwIHBlciBjbGllbnQpDQojIERl ZmF1bHRzIHRvIG5ldDMwIChub3QgcmVjb21tZW5kZWQpDQo7dG9wb2xvZ3kg c3VibmV0DQoNCiMgQ29uZmlndXJlIHNlcnZlciBtb2RlIGFuZCBzdXBwbHkg YSBWUE4gc3VibmV0DQojIGZvciBPcGVuVlBOIHRvIGRyYXcgY2xpZW50IGFk ZHJlc3NlcyBmcm9tLg0KIyBUaGUgc2VydmVyIHdpbGwgdGFrZSAxMC44LjAu MSBmb3IgaXRzZWxmLA0KIyB0aGUgcmVzdCB3aWxsIGJlIG1hZGUgYXZhaWxh YmxlIHRvIGNsaWVudHMuDQojIEVhY2ggY2xpZW50IHdpbGwgYmUgYWJsZSB0 byByZWFjaCB0aGUgc2VydmVyDQojIG9uIDEwLjguMC4xLiBDb21tZW50IHRo aXMgbGluZSBvdXQgaWYgeW91IGFyZQ0KIyBldGhlcm5ldCBicmlkZ2luZy4g U2VlIHRoZSBtYW4gcGFnZSBmb3IgbW9yZSBpbmZvLg0Kc2VydmVyIDEwLjgu MC4wIDI1NS4yNTUuMjU1LjANCg0KIyBNYWludGFpbiBhIHJlY29yZCBvZiBj bGllbnQgPC0+IHZpcnR1YWwgSVAgYWRkcmVzcw0KIyBhc3NvY2lhdGlvbnMg aW4gdGhpcyBmaWxlLiAgSWYgT3BlblZQTiBnb2VzIGRvd24gb3INCiMgaXMg cmVzdGFydGVkLCByZWNvbm5lY3RpbmcgY2xpZW50cyBjYW4gYmUgYXNzaWdu ZWQNCiMgdGhlIHNhbWUgdmlydHVhbCBJUCBhZGRyZXNzIGZyb20gdGhlIHBv b2wgdGhhdCB3YXMNCiMgcHJldmlvdXNseSBhc3NpZ25lZC4NCmlmY29uZmln LXBvb2wtcGVyc2lzdCBpcHAudHh0DQoNCiMgQ29uZmlndXJlIHNlcnZlciBt b2RlIGZvciBldGhlcm5ldCBicmlkZ2luZy4NCiMgWW91IG11c3QgZmlyc3Qg dXNlIHlvdXIgT1MncyBicmlkZ2luZyBjYXBhYmlsaXR5DQojIHRvIGJyaWRn ZSB0aGUgVEFQIGludGVyZmFjZSB3aXRoIHRoZSBldGhlcm5ldA0KIyBOSUMg aW50ZXJmYWNlLiAgVGhlbiB5b3UgbXVzdCBtYW51YWxseSBzZXQgdGhlDQoj IElQL25ldG1hc2sgb24gdGhlIGJyaWRnZSBpbnRlcmZhY2UsIGhlcmUgd2UN CiMgYXNzdW1lIDEwLjguMC40LzI1NS4yNTUuMjU1LjAuICBGaW5hbGx5IHdl DQojIG11c3Qgc2V0IGFzaWRlIGFuIElQIHJhbmdlIGluIHRoaXMgc3VibmV0 DQojIChzdGFydD0xMC44LjAuNTAgZW5kPTEwLjguMC4xMDApIHRvIGFsbG9j YXRlDQojIHRvIGNvbm5lY3RpbmcgY2xpZW50cy4gIExlYXZlIHRoaXMgbGlu ZSBjb21tZW50ZWQNCiMgb3V0IHVubGVzcyB5b3UgYXJlIGV0aGVybmV0IGJy aWRnaW5nLg0KO3NlcnZlci1icmlkZ2UgMTAuOC4wLjQgMjU1LjI1NS4yNTUu MCAxMC44LjAuNTAgMTAuOC4wLjEwMA0KDQojIENvbmZpZ3VyZSBzZXJ2ZXIg bW9kZSBmb3IgZXRoZXJuZXQgYnJpZGdpbmcNCiMgdXNpbmcgYSBESENQLXBy b3h5LCB3aGVyZSBjbGllbnRzIHRhbGsNCiMgdG8gdGhlIE9wZW5WUE4gc2Vy dmVyLXNpZGUgREhDUCBzZXJ2ZXINCiMgdG8gcmVjZWl2ZSB0aGVpciBJUCBh ZGRyZXNzIGFsbG9jYXRpb24NCiMgYW5kIEROUyBzZXJ2ZXIgYWRkcmVzc2Vz LiAgWW91IG11c3QgZmlyc3QgdXNlDQojIHlvdXIgT1MncyBicmlkZ2luZyBj YXBhYmlsaXR5IHRvIGJyaWRnZSB0aGUgVEFQDQojIGludGVyZmFjZSB3aXRo IHRoZSBldGhlcm5ldCBOSUMgaW50ZXJmYWNlLg0KIyBOb3RlOiB0aGlzIG1v ZGUgb25seSB3b3JrcyBvbiBjbGllbnRzIChzdWNoIGFzDQojIFdpbmRvd3Mp LCB3aGVyZSB0aGUgY2xpZW50LXNpZGUgVEFQIGFkYXB0ZXIgaXMNCiMgYm91 bmQgdG8gYSBESENQIGNsaWVudC4NCjtzZXJ2ZXItYnJpZGdlDQoNCiMgUHVz aCByb3V0ZXMgdG8gdGhlIGNsaWVudCB0byBhbGxvdyBpdA0KIyB0byByZWFj aCBvdGhlciBwcml2YXRlIHN1Ym5ldHMgYmVoaW5kDQojIHRoZSBzZXJ2ZXIu ICBSZW1lbWJlciB0aGF0IHRoZXNlDQojIHByaXZhdGUgc3VibmV0cyB3aWxs IGFsc28gbmVlZA0KIyB0byBrbm93IHRvIHJvdXRlIHRoZSBPcGVuVlBOIGNs aWVudA0KIyBhZGRyZXNzIHBvb2wgKDEwLjguMC4wLzI1NS4yNTUuMjU1LjAp DQojIGJhY2sgdG8gdGhlIE9wZW5WUE4gc2VydmVyLg0KO3B1c2ggInJvdXRl IDE5Mi4xNjguMTAuMCAyNTUuMjU1LjI1NS4wIg0KO3B1c2ggInJvdXRlIDE5 Mi4xNjguMjAuMCAyNTUuMjU1LjI1NS4wIg0KDQojIFRvIGFzc2lnbiBzcGVj aWZpYyBJUCBhZGRyZXNzZXMgdG8gc3BlY2lmaWMNCiMgY2xpZW50cyBvciBp ZiBhIGNvbm5lY3RpbmcgY2xpZW50IGhhcyBhIHByaXZhdGUNCiMgc3VibmV0 IGJlaGluZCBpdCB0aGF0IHNob3VsZCBhbHNvIGhhdmUgVlBOIGFjY2VzcywN CiMgdXNlIHRoZSBzdWJkaXJlY3RvcnkgImNjZCIgZm9yIGNsaWVudC1zcGVj aWZpYw0KIyBjb25maWd1cmF0aW9uIGZpbGVzIChzZWUgbWFuIHBhZ2UgZm9y IG1vcmUgaW5mbykuDQoNCiMgRVhBTVBMRTogU3VwcG9zZSB0aGUgY2xpZW50 DQojIGhhdmluZyB0aGUgY2VydGlmaWNhdGUgY29tbW9uIG5hbWUgIlRoZWxv bmlvdXMiDQojIGFsc28gaGFzIGEgc21hbGwgc3VibmV0IGJlaGluZCBoaXMg Y29ubmVjdGluZw0KIyBtYWNoaW5lLCBzdWNoIGFzIDE5Mi4xNjguNDAuMTI4 LzI1NS4yNTUuMjU1LjI0OC4NCiMgRmlyc3QsIHVuY29tbWVudCBvdXQgdGhl c2UgbGluZXM6DQo7Y2xpZW50LWNvbmZpZy1kaXIgY2NkDQo7cm91dGUgMTky LjE2OC40MC4xMjggMjU1LjI1NS4yNTUuMjQ4DQojIFRoZW4gY3JlYXRlIGEg ZmlsZSBjY2QvVGhlbG9uaW91cyB3aXRoIHRoaXMgbGluZToNCiMgICBpcm91 dGUgMTkyLjE2OC40MC4xMjggMjU1LjI1NS4yNTUuMjQ4DQojIFRoaXMgd2ls bCBhbGxvdyBUaGVsb25pb3VzJyBwcml2YXRlIHN1Ym5ldCB0bw0KIyBhY2Nl c3MgdGhlIFZQTi4gIFRoaXMgZXhhbXBsZSB3aWxsIG9ubHkgd29yaw0KIyBp ZiB5b3UgYXJlIHJvdXRpbmcsIG5vdCBicmlkZ2luZywgaS5lLiB5b3UgYXJl DQojIHVzaW5nICJkZXYgdHVuIiBhbmQgInNlcnZlciIgZGlyZWN0aXZlcy4N Cg0KIyBFWEFNUExFOiBTdXBwb3NlIHlvdSB3YW50IHRvIGdpdmUNCiMgVGhl bG9uaW91cyBhIGZpeGVkIFZQTiBJUCBhZGRyZXNzIG9mIDEwLjkuMC4xLg0K IyBGaXJzdCB1bmNvbW1lbnQgb3V0IHRoZXNlIGxpbmVzOg0KO2NsaWVudC1j b25maWctZGlyIGNjZA0KO3JvdXRlIDEwLjkuMC4wIDI1NS4yNTUuMjU1LjI1 Mg0KIyBUaGVuIGFkZCB0aGlzIGxpbmUgdG8gY2NkL1RoZWxvbmlvdXM6DQoj ICAgaWZjb25maWctcHVzaCAxMC45LjAuMSAxMC45LjAuMg0KDQojIFN1cHBv c2UgdGhhdCB5b3Ugd2FudCB0byBlbmFibGUgZGlmZmVyZW50DQojIGZpcmV3 YWxsIGFjY2VzcyBwb2xpY2llcyBmb3IgZGlmZmVyZW50IGdyb3Vwcw0KIyBv ZiBjbGllbnRzLiAgVGhlcmUgYXJlIHR3byBtZXRob2RzOg0KIyAoMSkgUnVu IG11bHRpcGxlIE9wZW5WUE4gZGFlbW9ucywgb25lIGZvciBlYWNoDQojICAg ICBncm91cCwgYW5kIGZpcmV3YWxsIHRoZSBUVU4vVEFQIGludGVyZmFjZQ0K IyAgICAgZm9yIGVhY2ggZ3JvdXAvZGFlbW9uIGFwcHJvcHJpYXRlbHkuDQoj ICgyKSAoQWR2YW5jZWQpIENyZWF0ZSBhIHNjcmlwdCB0byBkeW5hbWljYWxs eQ0KIyAgICAgbW9kaWZ5IHRoZSBmaXJld2FsbCBpbiByZXNwb25zZSB0byBh Y2Nlc3MNCiMgICAgIGZyb20gZGlmZmVyZW50IGNsaWVudHMuICBTZWUgbWFu DQojICAgICBwYWdlIGZvciBtb3JlIGluZm8gb24gbGVhcm4tYWRkcmVzcyBz Y3JpcHQuDQo7bGVhcm4tYWRkcmVzcyAuL3NjcmlwdA0KDQojIElmIGVuYWJs ZWQsIHRoaXMgZGlyZWN0aXZlIHdpbGwgY29uZmlndXJlDQojIGFsbCBjbGll bnRzIHRvIHJlZGlyZWN0IHRoZWlyIGRlZmF1bHQNCiMgbmV0d29yayBnYXRl d2F5IHRocm91Z2ggdGhlIFZQTiwgY2F1c2luZw0KIyBhbGwgSVAgdHJhZmZp YyBzdWNoIGFzIHdlYiBicm93c2luZyBhbmQNCiMgYW5kIEROUyBsb29rdXBz IHRvIGdvIHRocm91Z2ggdGhlIFZQTg0KIyAoVGhlIE9wZW5WUE4gc2VydmVy IG1hY2hpbmUgbWF5IG5lZWQgdG8gTkFUDQojIG9yIGJyaWRnZSB0aGUgVFVO L1RBUCBpbnRlcmZhY2UgdG8gdGhlIGludGVybmV0DQojIGluIG9yZGVyIGZv ciB0aGlzIHRvIHdvcmsgcHJvcGVybHkpLg0KcHVzaCAicmVkaXJlY3QtZ2F0 ZXdheSBkZWYxIGJ5cGFzcy1kaGNwIg0KDQojIENlcnRhaW4gV2luZG93cy1z cGVjaWZpYyBuZXR3b3JrIHNldHRpbmdzDQojIGNhbiBiZSBwdXNoZWQgdG8g Y2xpZW50cywgc3VjaCBhcyBETlMNCiMgb3IgV0lOUyBzZXJ2ZXIgYWRkcmVz c2VzLiAgQ0FWRUFUOg0KIyBodHRwOi8vb3BlbnZwbi5uZXQvZmFxLmh0bWwj ZGhjcGNhdmVhdHMNCiMgVGhlIGFkZHJlc3NlcyBiZWxvdyByZWZlciB0byB0 aGUgcHVibGljDQojIEROUyBzZXJ2ZXJzIHByb3ZpZGVkIGJ5IG9wZW5kbnMu Y29tLg0KcHVzaCAiZGhjcC1vcHRpb24gRE5TIG15LWRucy1zZXJ2ZXItaXAi DQpwdXNoICJkaGNwLW9wdGlvbiBETlMgMjA4LjY3LjIyMi4yMjIiDQo7cHVz aCAiZGhjcC1vcHRpb24gRE5TIDIwOC42Ny4yMjIuMjIyIg0KO3B1c2ggImRo Y3Atb3B0aW9uIEROUyAyMDguNjcuMjIwLjIyMCINCg0KIyBVbmNvbW1lbnQg dGhpcyBkaXJlY3RpdmUgdG8gYWxsb3cgZGlmZmVyZW50DQojIGNsaWVudHMg dG8gYmUgYWJsZSB0byAic2VlIiBlYWNoIG90aGVyLg0KIyBCeSBkZWZhdWx0 LCBjbGllbnRzIHdpbGwgb25seSBzZWUgdGhlIHNlcnZlci4NCiMgVG8gZm9y Y2UgY2xpZW50cyB0byBvbmx5IHNlZSB0aGUgc2VydmVyLCB5b3UNCiMgd2ls bCBhbHNvIG5lZWQgdG8gYXBwcm9wcmlhdGVseSBmaXJld2FsbCB0aGUNCiMg c2VydmVyJ3MgVFVOL1RBUCBpbnRlcmZhY2UuDQo7Y2xpZW50LXRvLWNsaWVu dA0KDQojIFVuY29tbWVudCB0aGlzIGRpcmVjdGl2ZSBpZiBtdWx0aXBsZSBj bGllbnRzDQojIG1pZ2h0IGNvbm5lY3Qgd2l0aCB0aGUgc2FtZSBjZXJ0aWZp Y2F0ZS9rZXkNCiMgZmlsZXMgb3IgY29tbW9uIG5hbWVzLiAgVGhpcyBpcyBy ZWNvbW1lbmRlZA0KIyBvbmx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzLiAgRm9y IHByb2R1Y3Rpb24gdXNlLA0KIyBlYWNoIGNsaWVudCBzaG91bGQgaGF2ZSBp dHMgb3duIGNlcnRpZmljYXRlL2tleQ0KIyBwYWlyLg0KIw0KIyBJRiBZT1Ug SEFWRSBOT1QgR0VORVJBVEVEIElORElWSURVQUwNCiMgQ0VSVElGSUNBVEUv S0VZIFBBSVJTIEZPUiBFQUNIIENMSUVOVCwNCiMgRUFDSCBIQVZJTkcgSVRT IE9XTiBVTklRVUUgIkNPTU1PTiBOQU1FIiwNCiMgVU5DT01NRU5UIFRISVMg TElORSBPVVQuDQo7ZHVwbGljYXRlLWNuDQoNCiMgVGhlIGtlZXBhbGl2ZSBk aXJlY3RpdmUgY2F1c2VzIHBpbmctbGlrZQ0KIyBtZXNzYWdlcyB0byBiZSBz ZW50IGJhY2sgYW5kIGZvcnRoIG92ZXINCiMgdGhlIGxpbmsgc28gdGhhdCBl YWNoIHNpZGUga25vd3Mgd2hlbg0KIyB0aGUgb3RoZXIgc2lkZSBoYXMgZ29u ZSBkb3duLg0KIyBQaW5nIGV2ZXJ5IDEwIHNlY29uZHMsIGFzc3VtZSB0aGF0 IHJlbW90ZQ0KIyBwZWVyIGlzIGRvd24gaWYgbm8gcGluZyByZWNlaXZlZCBk dXJpbmcNCiMgYSAxMjAgc2Vjb25kIHRpbWUgcGVyaW9kLg0Ka2VlcGFsaXZl IDEwIDEyMA0KDQojIEZvciBleHRyYSBzZWN1cml0eSBiZXlvbmQgdGhhdCBw cm92aWRlZA0KIyBieSBTU0wvVExTLCBjcmVhdGUgYW4gIkhNQUMgZmlyZXdh bGwiDQojIHRvIGhlbHAgYmxvY2sgRG9TIGF0dGFja3MgYW5kIFVEUCBwb3J0 IGZsb29kaW5nLg0KIw0KIyBHZW5lcmF0ZSB3aXRoOg0KIyAgIG9wZW52cG4g LS1nZW5rZXkgLS1zZWNyZXQgdGEua2V5DQojDQojIFRoZSBzZXJ2ZXIgYW5k IGVhY2ggY2xpZW50IG11c3QgaGF2ZQ0KIyBhIGNvcHkgb2YgdGhpcyBrZXku DQojIFRoZSBzZWNvbmQgcGFyYW1ldGVyIHNob3VsZCBiZSAnMCcNCiMgb24g dGhlIHNlcnZlciBhbmQgJzEnIG9uIHRoZSBjbGllbnRzLg0KO3Rscy1hdXRo IHRhLmtleSAwICMgVGhpcyBmaWxlIGlzIHNlY3JldA0KDQojIFNlbGVjdCBh IGNyeXB0b2dyYXBoaWMgY2lwaGVyLg0KIyBUaGlzIGNvbmZpZyBpdGVtIG11 c3QgYmUgY29waWVkIHRvDQojIHRoZSBjbGllbnQgY29uZmlnIGZpbGUgYXMg d2VsbC4NCjtjaXBoZXIgQkYtQ0JDICAgICAgICAjIEJsb3dmaXNoIChkZWZh dWx0KQ0KO2NpcGhlciBBRVMtMTI4LUNCQyAgICMgQUVTDQo7Y2lwaGVyIERF Uy1FREUzLUNCQyAgIyBUcmlwbGUtREVTDQoNCiMgRW5hYmxlIGNvbXByZXNz aW9uIG9uIHRoZSBWUE4gbGluay4NCiMgSWYgeW91IGVuYWJsZSBpdCBoZXJl LCB5b3UgbXVzdCBhbHNvDQojIGVuYWJsZSBpdCBpbiB0aGUgY2xpZW50IGNv bmZpZyBmaWxlLg0KO2NvbXAtbHpvDQoNCiMgVGhlIG1heGltdW0gbnVtYmVy IG9mIGNvbmN1cnJlbnRseSBjb25uZWN0ZWQNCiMgY2xpZW50cyB3ZSB3YW50 IHRvIGFsbG93Lg0KO21heC1jbGllbnRzIDEwMA0KDQojIEl0J3MgYSBnb29k IGlkZWEgdG8gcmVkdWNlIHRoZSBPcGVuVlBODQojIGRhZW1vbidzIHByaXZp bGVnZXMgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uDQojDQojIFlvdSBjYW4gdW5j b21tZW50IHRoaXMgb3V0IG9uDQojIG5vbi1XaW5kb3dzIHN5c3RlbXMuDQo7 dXNlciBub2JvZHkNCjtncm91cCBub2JvZHkNCg0KIyBUaGUgcGVyc2lzdCBv cHRpb25zIHdpbGwgdHJ5IHRvIGF2b2lkDQojIGFjY2Vzc2luZyBjZXJ0YWlu IHJlc291cmNlcyBvbiByZXN0YXJ0DQojIHRoYXQgbWF5IG5vIGxvbmdlciBi ZSBhY2Nlc3NpYmxlIGJlY2F1c2UNCiMgb2YgdGhlIHByaXZpbGVnZSBkb3du Z3JhZGUuDQpwZXJzaXN0LWtleQ0KcGVyc2lzdC10dW4NCg0KIyBPdXRwdXQg YSBzaG9ydCBzdGF0dXMgZmlsZSBzaG93aW5nDQojIGN1cnJlbnQgY29ubmVj dGlvbnMsIHRydW5jYXRlZA0KIyBhbmQgcmV3cml0dGVuIGV2ZXJ5IG1pbnV0 ZS4NCnN0YXR1cyBvcGVudnBuLXN0YXR1cy5sb2cNCg0KIyBCeSBkZWZhdWx0 LCBsb2cgbWVzc2FnZXMgd2lsbCBnbyB0byB0aGUgc3lzbG9nIChvcg0KIyBv biBXaW5kb3dzLCBpZiBydW5uaW5nIGFzIGEgc2VydmljZSwgdGhleSB3aWxs IGdvIHRvDQojIHRoZSAiXFByb2dyYW0gRmlsZXNcT3BlblZQTlxsb2ciIGRp cmVjdG9yeSkuDQojIFVzZSBsb2cgb3IgbG9nLWFwcGVuZCB0byBvdmVycmlk ZSB0aGlzIGRlZmF1bHQuDQojICJsb2ciIHdpbGwgdHJ1bmNhdGUgdGhlIGxv ZyBmaWxlIG9uIE9wZW5WUE4gc3RhcnR1cCwNCiMgd2hpbGUgImxvZy1hcHBl bmQiIHdpbGwgYXBwZW5kIHRvIGl0LiAgVXNlIG9uZQ0KIyBvciB0aGUgb3Ro ZXIgKGJ1dCBub3QgYm90aCkuDQo7bG9nICAgICAgICAgb3BlbnZwbi5sb2cN Cjtsb2ctYXBwZW5kICBvcGVudnBuLmxvZw0KDQojIFNldCB0aGUgYXBwcm9w cmlhdGUgbGV2ZWwgb2YgbG9nDQojIGZpbGUgdmVyYm9zaXR5Lg0KIw0KIyAw IGlzIHNpbGVudCwgZXhjZXB0IGZvciBmYXRhbCBlcnJvcnMNCiMgNCBpcyBy ZWFzb25hYmxlIGZvciBnZW5lcmFsIHVzYWdlDQojIDUgYW5kIDYgY2FuIGhl bHAgdG8gZGVidWcgY29ubmVjdGlvbiBwcm9ibGVtcw0KIyA5IGlzIGV4dHJl bWVseSB2ZXJib3NlDQp2ZXJiIDMNCg0KIyBTaWxlbmNlIHJlcGVhdGluZyBt ZXNzYWdlcy4gIEF0IG1vc3QgMjANCiMgc2VxdWVudGlhbCBtZXNzYWdlcyBv ZiB0aGUgc2FtZSBtZXNzYWdlDQojIGNhdGVnb3J5IHdpbGwgYmUgb3V0cHV0 IHRvIHRoZSBsb2cuDQo7bXV0ZSAyMA0K --1512028668-759177736-1503885628=:50226--