Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tgAIe-008Er3-UI for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Feb 2025 22:24:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tgAIe-00Cfa7-0u for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Feb 2025 22:24:44 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tgAId-00CfZs-CR for pgsql-hackers@lists.postgresql.org; Thu, 06 Feb 2025 22:24:43 +0000 Received: from smtp-fw-52004.amazon.com ([52.119.213.154]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tgAIZ-0048bM-0e for pgsql-hackers@postgresql.org; Thu, 06 Feb 2025 22:24:43 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1738880680; x=1770416680; h=from:to:subject:date:message-id:mime-version; bh=ydqgpoSHgyPwJFfPAMQk1gxvhqhJX0VG5OyI3vG83jQ=; b=tow6TqRgL7/810EyLVb/uy0d2R8Ekm+vCw9XP2SuuC5zWOvwKVKWWie+ GbOusVWqI3sud8FfGk1uIcm76tfDvCMyY/hOah1AS1iZVzNFIUPGut8eV 22LY9bAI2e0oTvt6T3Bf5rItf4iAyT71IxYnTUM9s2pBvx0fBTvbSF0Ih s=; X-Amazon-filename: v3-0001-Expand-HOT-update-path-to-include-expression-and-.patch, v4-0001-Expand-HOT-update-path-to-include-expression-and-.patch X-Secure-Attach-Ingestion: ProdSecureAttachHeaderAddedFromMessageFilter X-IronPort-AV: E=Sophos;i="6.13,265,1732579200"; d="scan'208,217,223";a="269054567" Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev) ([10.43.8.2]) by smtp-border-fw-52004.iad7.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Feb 2025 22:24:37 +0000 Received: from EX19MTAUEB001.ant.amazon.com [10.0.0.204:6428] by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.5.114:2525] with esmtp (Farcaster) id bd4f40c4-782f-40e5-95b1-f70c84885597; Thu, 6 Feb 2025 22:24:35 +0000 (UTC) X-Farcaster-Flow-ID: bd4f40c4-782f-40e5-95b1-f70c84885597 Received: from EX19D018UEC002.ant.amazon.com (10.252.135.229) by EX19MTAUEB001.ant.amazon.com (10.252.135.108) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1258.39; Thu, 6 Feb 2025 22:24:35 +0000 Received: from EX19D018UEC003.ant.amazon.com (10.252.135.218) by EX19D018UEC002.ant.amazon.com (10.252.135.229) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1258.39; Thu, 6 Feb 2025 22:24:35 +0000 Received: from EX19D018UEC003.ant.amazon.com ([fe80::ea09:1bf7:c4d8:3004]) by EX19D018UEC003.ant.amazon.com ([fe80::ea09:1bf7:c4d8:3004%3]) with mapi id 15.02.1258.039; Thu, 6 Feb 2025 22:24:35 +0000 From: "Burd, Greg" To: "pgsql-hackers@postgresql.org" Subject: Expanding HOT updates for expression and partial indexes Thread-Topic: Expanding HOT updates for expression and partial indexes Thread-Index: AQHbeOXmdtbUqSdSp0SlUCqonUkHPQ== Date: Thu, 6 Feb 2025 22:24:34 +0000 Message-ID: <78574B24-BE0A-42C5-8075-3FA9FA63B8FC@amazon.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [10.136.75.43] Content-Type: multipart/mixed; boundary="_005_78574B24BE0A42C580753FA9FA63B8FCamazoncom_" MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_005_78574B24BE0A42C580753FA9FA63B8FCamazoncom_ Content-Type: multipart/alternative; boundary="_000_78574B24BE0A42C580753FA9FA63B8FCamazoncom_" --_000_78574B24BE0A42C580753FA9FA63B8FCamazoncom_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QXR0YWNoZWQgZmluZCBhIHBhdGNoIHRoYXQgZXhwYW5kcyB0aGUgY2FzZXMgd2hlcmUgaGVhcC1v bmx5IHR1cGxlIChIT1QpIHVwZGF0ZXMgYXJlIHBvc3NpYmxlIHdpdGhvdXQgY2hhbmdpbmcgdGhl IGJhc2ljIHNlbWFudGljcyBvZiBIT1QuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IGV4YW1pbmlu ZyBleHByZXNzaW9uIGluZGV4ZXMgZm9yIGNoYW5nZXMgdG8gZGV0ZXJtaW5lIGlmIGluZGV4ZXMg cmVxdWlyZSB1cGRhdGluZyBvciBub3QuIEEgc2ltaWxhciBhcHByb2FjaCBpcyB0YWtlbiBmb3Ig cGFydGlhbCBpbmRleGVzLCB0aGUgcHJlZGljYXRlIGlzIGV2YWx1YXRlZCBhbmQsIGluIHNvbWUg Y2FzZXMsIEhPVCB1cGRhdGVzIGFyZSBhbGxvd2VkLiBFdmVuIHdpdGggdGhpcyBwYXRjaCBpZiBh bnkgaW5kZXggaXMgY2hhbmdlZCwgYWxsIGluZGV4ZXMgYXJlIHVwZGF0ZWQuIE9ubHkgaW4gY2Fz ZXMgd2hlcmUgbm9uZSBhcmUgbW9kaWZpZWQgd2lsbCB0aGlzIHBhdGNoIGFsbG93IHRoZSBIT1Qg cGF0aC4gUHJldmlvdXNseSwgYW4gZXhwcmVzc2lvbiBpbmRleCBvbiBhIG1vZGlmaWVkIGNvbHVt biB3b3VsZCBkaXNxdWFsaWZ5IHRoZSB1cGRhdGUgZnJvbSB0aGUgSE9UIHBhdGggaW4gdGhlIGhl YXAgYWNjZXNzIG1hbmFnZXIuIFRoaXMgcGF0Y2ggaXMgZnVuY3Rpb25hbCwgaW5jbHVkZXMgbmV3 IHRlc3RzLCBhbmQgcGFzc2VzIGNoZWNrLXdvcmxkIGhvd2V2ZXIgSeKAmW0gc3VyZSBpdCB3aWxs IHJlcXVpcmUgbW9yZSB3b3JrIGFmdGVyIGNvbW11bml0eSByZXZpZXcuDQoNCldoeSBpcyB0aGlz IGltcG9ydGFudD8gQSBncm93aW5nIG51bWJlciBvZiBQb3N0Z3JlcyB1c2VycyB3b3JrIHdpdGgg SlNPTkIgZGF0YS4gSW5kZXhlcyBvbiBmaWVsZHMgd2l0aGluIEpTT05CIGNvbHVtbnMgdXNlIGV4 cHJlc3Npb25zIHByZXZlbnRpbmcgYWxsIHVwZGF0ZXMgb24gZGF0YSB3aXRoaW4gSlNPTkIgY29s dW1ucyBmcm9tIHRoZSBIT1QgcGF0aC4gVGhpcyBpcyB1bm5lY2Vzc2FyeSBhbmQgYSBtYWpvciBk cmF3YmFjayB3aGVuIHVzaW5nIFBvc3RncmVzLg0KDQpUaGlzIGlzIG5vdCBhIG5ldyBpZGVhOyBp bmRlZWQsIHRoaXMgcGF0Y2ggZ3JldyBvdXQgb2YgU3VyamVjdGl2ZSBmdW5jdGlvbmFsIGluZGV4 ZXMgWzFdIHdoaWNoIHdhcyBhcHBsaWVkIFsyXSBhbmQgdGhlbiByZXZlcnRlZCBbM10gYWZ0ZXIg aXQgd2FzIGRpc2NvdmVyZWQgdGhhdCBpdCBjYXVzZWQgYSBidWcgYW5kIGhhZCBvdGhlciBxdWFs aXR5IGlzc3Vlcy4gVGhpcyBwYXRjaCBpcyBhIG5ldyBhcHByb2FjaCB0aGF0IGhvcGVmdWxseSBh ZGRyZXNzIHRoZSBpZGVudGlmaWVkIGJ1ZyBhbmQgbW9zdCBvZiB0aGUgb3RoZXIgY29uY2VybnMg cmFpc2VkIGluIHRoYXQgYW5kIG90aGVyIGVtYWlsIHRocmVhZHMgb24gdGhlIHN1YmplY3QuIEni gJltIGFsc28gYXdhcmUgb2YgUEhPVCBbNF0gYW5kIFdBUk0gWzVdIHdoaWNoIGFsbG93IGZvciB1 cGRhdGluZyBzb21lLCBidXQgbm90IGFsbCBpbmRleGVzIHdoaWxlIHJlbWFpbmluZyBvbiB0aGUg SE9UIHVwZGF0ZSBwYXRoLCB0aGlzIHBhdGNoIGRvZXMgbm90IGF0dGVtcHQgdG8gYWNjb21wbGlz aCB0aGF0Lg0KDQpBdHRhY2hlZCB5b3XigJlsbCBmaW5kIHR3byBzbGlnaHRseSBkaWZmZXJlbnQg YXBwcm9hY2hlcy4gVGhlIGZpcnN0ICh2MykgcGF0Y2ggaXMgc2xpZ2h0bHkgbGVzcyBpbnRydXNp dmUgdGhhbiB0aGUgc2Vjb25kICh2NCksIGJ1dCBib3RoIGFwcGx5IHRvIG1hc3RlciAoNTlkNmMw Mzk1NjE5M2Y2MjJjMDY5YTRhYjk4NWJhZGUyNzM4NGFjNCkuIFRlc3RzIGhhdmUgYmVlbiBhZGRl ZCAoaGVhcF9ob3RfdXBkYXRlcy5zcWwpIHRoYXQgZXhlcmNpc2UgdGhpcyBuZXcgZmVhdHVyZSBz ZXQuIE9mIHRoZSB0d28gcGF0Y2hlcyBJIHBlcnNvbmFsbHkgcHJlZmVyIHY0IGFzIGl0IGNsZWFu cyB1cCB0aGUgc3VtbWFyaXppbmcgaW5kZXggbG9naWMgYW5kIHJlbW92ZXMgVFVfVXBkYXRlSW5k ZXhlcy4gVGhpcyBvcGVucyB0aGUgZG9vciB0byBmdXR1cmUgaW1wcm92ZW1lbnRzIGJ5IHByb3Zp ZGluZyBhIHdheSB0byBwYXNzIGEgYml0bWFwIG9mIG1vZGlmaWVkIGluZGV4ZXMgYWxvbmcgdG8g YmUgYWRkcmVzc2VkIGJ5IHNvbWV0aGluZyBzaW1pbGFyIHRvIHRoZSBQSE9UL1dBUk0gbG9naWMu DQoNCkkgaGF2ZSBhIGZldyBjb25jZXJucyB3aXRoIHRoZSBwYXRjaCwgdGhpbmdzIEnigJlkIGdy ZWF0bHkgYXBwcmVjaWF0ZSB5b3VyIHRob3VnaHRzIG9uOg0KDQpGaXJzdCwgSSBwYXNzIGFuIEVT dGF0ZSBhbG9uZyB0aGUgdXBkYXRlIHBhdGggdG8gZW5hYmxlIHJ1bm5pbmcgdGhlIGNoZWNrcyBp biBoZWFwYW0sIHRoaXMgd29ya3MgYnV0IGxlYXZlcyBtZSBmZWVsaW5nIGFzIGlmIEkgdmlvbGF0 ZWQgc2VwYXJhdGlvbiBvZiBjb25jZXJucy4gSWYgdGhlcmUgaXMgYSBiZXR0ZXIgd2F5IHRvIGRv IHRoaXMgbGV0IG1lIGtub3cgb3IgaWYgeW91IHRoaW5rIHRoZSBjb3N0IG9mIGNyZWF0aW5nIG9u ZSBpbiB0aGUgZXhlY0luZGV4aW5nLmMgRXhlY0luZGV4ZXNSZXF1aXJpbmdVcGRhdGVzKCkgaXMg b2theSB0aGF04oCZcyBhbm90aGVyIHBvc3NpYmlsaXR5Lg0KDQpTZWNvbmQsIEnigJltIHN1cmUg dGhhdCBjcmVhdGluZyB0aGUgcmRfaW5kZXhpbmZvbGlzdCBzaG91bGQgYmUgaW1wcm92ZWQvY2hh bmdlZCBhbmQgbGlrZWx5IGNhY2hlZCB2aWEgcmVsY2FjaGUuYyBhcyB0aGlzIGlzIGxpa2VseSBw YXJ0IG9mIHRoZSBwZXJmb3JtYW5jZSBvdmVyaGVhZCBtZW50aW9uZWQgYmVsb3cuDQoNClRoaXJk LCB0aGVyZSBpcyBvdmVyaGVhZCB0byB0aGlzIHBhdGNoLCBpdCBpcyBubyBsb25nZXIgYSBzaW5n bGUgc2ltcGxlIGJpdG1hcCB0ZXN0IHRvIGNob29zZSBIT1Qgb3Igbm90IGluIGhlYXBfdXBkYXRl KCkuIFNvbWV0aW1lcyB0aGlzIHBhdGNoIHdpbGwgcGVyZm9ybSBleHBlbnNpdmUgYWRkaXRpb25h bCBjaGVja3MgYW5kIHVsdGltYXRlbHkgbm90IGdvIGRvd24gdGhlIEhPVCBwYXRoLCBuZXcgb3Zl cmhlYWQgd2l0aCBubyBiZW5lZml0LiBTb21lIGV4cHJlc3Npb25zIGFyZSBtb3JlIGV4cGVuc2l2 ZSB0aGFuIG90aGVycyB0byBldmFsdWF0ZSwgdGhlcmUgaXMgbm8gbG9naWMgdG8gYWRqdXN0IGZv ciB0aGF0LiBUaGUgU3VyamVjdGl2ZSBwYXRjaC9lbWFpbCB0aHJlYWQgaGFkIHF1aXRlIGEgYml0 IG9mIGRpc2N1c3Npb24gb24gdGhpcyB3aXRob3V0IHJlc29sdXRpb24uIEnigJl2ZSBjaG9zZW4g dG8gYWRkIGEgR1VDIHRoYXQgb3B0aW9uYWxseSBhdm9pZHMgdGhlIGV4cHJlc3Npb24gZXZhbHVh dGlvbi4gSeKAmW0gb3BlbiB0byBpZGVhcyBoZXJlIGFzIHdlbGwsIGFkZGl0aW9uIG9mIGFub3Ro ZXIgR1VDIG9yIHJlbW92YWwgb2YgdGhlIG9uZSBJ4oCZdmUgYWRkZWQuIEnigJl2ZSB0cmllZCB0 byBhdm9pZCByZWNoZWNraW5nIGluZGV4ZXMgZm9yIGNoYW5nZXMgd2hlbiBwb3NzaWJsZS4NCg0K Rm91cnRoLCBJ4oCZZCBsaWtlIHRvIGtub3cgd2hpY2ggdmVyc2lvbiB0aGUgY29tbXVuaXR5IHBy ZWZlcnMgKHYzIG9yIHY0KS4gIEkgdGhpbmsgdjQgbW92ZXMgdGhlIGNvZGUgaW4gYSBkaXJlY3Rp b24gdGhhdCBpcyBjbGVhbmVyIG92ZXJhbGwsIGJ1dCB5b3UgbWF5IGRpc2FncmVlLiAgSSByZWFs aXplIHRoYXQgdGhlIHdheSBJIHVzZSB0aGUgbW9kaWZpZWRfaW5kZXhlcyBiaXRtYXBzZXQgaXMg YSB0YWQgb3ZlcmxvYWRlZCAoTlVMTCBtZWFucyBhbGwgaW5kZXhlcyBzaG91bGQgYmUgdXBkYXRl ZCwgb3RoZXJ3aXNlIG9ubHkgdXBkYXRlIHRoZSBpbmRleGVzIGluIHRoZSBzZXQgd2hpY2ggbWF5 IGJlIGFsbC9zb21lL25vbmUgb2YgdGhlIGluZGV4ZXMpIGFuZCB0aGF0IG1heSB2aW9sYXRlIHRo ZSBwcmluY2lwYWwgb2YgbGVhc3Qgc3VycHJpc2UgYnV0IEkgZmVlbCB0aGF0IGl0IGlzIGJldHRl ciB0aGFuIHRoZSBUVV9VcGRhdGVJbmRleGVzIGVudW0gaW4gdGhlIGNvZGUgdG9kYXkuDQoNCkni gJl2ZSBydW4gdHdvIHBlcmZvcm1hbmNlIHRlc3RzIGFnYWluc3QgdGhpczsgYSB2ZXJ5IHN5bnRo ZXRpYyB3b3JrbG9hZCB0aGF0IHVwZGF0ZXMgb25seSBub24taW5kZXhlZCBmaWVsZHMgaW4gYSBK U09OQiBkb2N1bWVudCB0aGF0IGlzIHNtYWxsIGVub3VnaCBub3QgdG8gYmUgVE9BU1RlZCwgYW5k IG9uZSB0aGF0IG1lYXN1cmVzIFRQQy1DLWxpa2Ugd29ya2xvYWQgdXNpbmcgYSBNb25nb0RCIEFQ SSBtYXBwZWQgaW50byBKU09OQi4NCg0KVGhlIHN5bnRoZXRpYyB3b3JrbG9hZCByYW5kb21seSB1 cGRhdGVkIG5vbi1pbmRleGVkIGZpZWxkcyB3aXRoaW4gdGhlIEpTT05CIGRvY3VtZW50cyBhcyBm YXN0IGFzIHBvc3NpYmxlIGZyb20gNTAgY2xpZW50IGNvbm5lY3Rpb25zLiBUaGUgdGVzdCBzdGFy dGVkIHByZS1sb2FkZWQgd2l0aCAxMCwwMDAsMDAwIGRvY3VtZW50cyB3aXRoaW4gYSBzaW5nbGUg Y29sdW1uIHdpdGggNTAgZXhwcmVzc2lvbiBpbmRleGVzIChCVFJFRSkgaW50byBmaWVsZHMgaW4g dGhvc2UgZG9jdW1lbnRzLiBUaGlzIHRlc3Qgc2hvd2VkIGEgZHJhbWF0aWMgaW5jcmVhc2UgaW4g dGhyb3VnaHB1dCAoMjgtMTEwJSksIHJlZHVjdGlvbiBpbiBwZXItb3BlcmF0aW9uIGxhdGVuY3kg KDIyLTUyJSksIGFuZCBsb3dlciBzdG9yYWdlIHJlcXVpcmVtZW50cyBhbGwgd2hpbGUgQ1BVIHJl bWFpbmVkIHdpdGhpbiAxJSBvZiB0aGUgdW5wYXRjaGVkIHNlcnZlci4gVGhlIHRlc3RzIHJhbiBm b3IgMmhycyBkdXJpbmcgd2hpY2ggdGltZSB3ZSBvYnNlcnZlZCBhYm91dCBhIDIwLTMwJSByZWR1 Y3Rpb24gaW4gSU9Qcy4gT24gdGhlIHVucGF0Y2hlZCBzZXJ2ZXIgdGhlcmUgd2VyZSBubyBIT1Qg dXBkYXRlcywgb24gdGhlIHBhdGNoZWQgc2VydmVyIHdpdGggZGVmYXVsdCBmaWxsZmFjdG9yIEhP VCB1cGRhdGVzIG1hZGUgdXAgYXQgbGVhc3QgMzAlIGFuZCBhdCB0aW1lcyBtdWNoIG1vcmUgYXMg dGhlIHJhbmRvbS1hY2Nlc3MgcGF0dGVybiBhbmQgcHJ1bmVoZWFwIG9wZW5lZCBzcGFjZSBvbiBw YWdlcyBmb3IgSE9UIHVwZGF0ZXMuDQoNClRoZSBUUEMtQy1saWtlIHdvcmtsb2FkIFs3XSByYW4g WzhdIGZpcnN0IHdpdGgg4oCUbm8tZXhlY3V0ZSB0aGVuIFs4XSB3aXRoIOKAlG5vLWxvYWQuIFRo aXMgdGVzdCBzaG93ZWQgSE9UIHVwZGF0ZXMgZm9yIENVU1RPTUVSICg3JSksIERJU1RSSUNUICg0 OCUpLCBhbmQgV0FSRUhPVVNFICg5OSUpIGJ1dCB6ZXJvIGZvciBTVE9DSyBhbmQgT1JERVJTLiBX aGVuIGNvbXBhcmVkIHRvIGEgbm9uLXBhdGNoZWQgc2VydmVyIHRoZSBwZXJmb3JtYW5jZSB3aXRo IHRoaXMgcGF0Y2ggd2FzIDcuOCUgc2xvd2VyIHRoYW4gd2l0aG91dC4gVGhpcyB3YXMgY2xlYXJs eSBub3QgdGhlIHJlc3VsdCBJIGV4cGVjdGVkLiAgSSBiZWxpZXZlIHRoYXQgdGhlIGxvd2VyIHBl cmZvcm1hbmNlIG1heSBpbiBwYXJ0IGJlIGR1ZSB0byBob3cgSSBidWlsZCBhbmQgbWFpbnRhaW4g dGhlIHJkX2luZGV4aW5mb2xpc3QgYW5kIHRoZSBvdmVyaGVhZCBvZiBleGVjdXRpbmcgZXhwcmVz c2lvbnMgb24gaW5kZXhlcyByZXBlYXRlZGx5IG9ubHkgdG8gZmluZCB0aGF0IHRoZSB1cGRhdGUg c3RpbGwgZG9lc27igJl0IHF1YWxpZnkgZm9yIHRoZSBIT1QgcGF0aC4gSeKAmWQgYmUgdmVyeSBo YXBweSB0byBoZWFyIHRob3VnaHRzIG9uIGhvdyBJIG1pZ2h0IHJlZHVjZSB0aGlzIGdhcCBpZiB5 b3UgaGF2ZSBzdWdnZXN0aW9ucy4NCg0KSSBob3BlIHRvIGZ1cnRoZXIgZGV2ZWxvcCB0aGlzIHBh dGNoIGludG8gYSBmaW5hbCBmb3JtIGFjY2VwdGFibGUgdG8gdGhpcyBjb21tdW5pdHkuDQoNCmJl c3QgcmVnYXJkcywNCi1ncmVnDQoNClsxXSBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNz YWdlLWlkL2ZsYXQvNGQ5OTI4ZWUtYTllNi0xNWY5LTljODItNTk4MWYxM2ZmY2E2JTQwcG9zdGdy ZXNwcm8ucnUNClsyXSBodHRwczovL2dpdC5wb3N0Z3Jlc3FsLm9yZy9naXR3ZWIvP3A9cG9zdGdy ZXNxbC5naXQ7YT1jb21taXQ7aD1jMjAzZDZjZjgNClszXSBodHRwczovL2dpdC5wb3N0Z3Jlc3Fs Lm9yZy9naXR3ZWIvP3A9cG9zdGdyZXNxbC5naXQ7YT1jb21taXQ7aD0wNWY4NDYwNWRiZWI5Y2Y4 Mjc5YTE1NzIzNGIyNGJiYjcwNmM1MjU2DQpbNF0gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcv bWVzc2FnZS1pZC9mbGF0LzJFQ0JCQ0EwLTREOEQtNDg0MS04ODcyLTRBNUJCREMwNjNEMiU0MGFt YXpvbi5jb20NCls1XSBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQv Q0FCT2lrZE1vcDVSYl9SblMyeEZkQVhNWkdTcWNKLVAtQlkycnVNZCUyQmJ1VWtKNGlEUHclNDBt YWlsLmdtYWlsLmNvbQ0KWzZdIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQv ZmxhdC9DQUJPaWtkTU55Nnlvd0ElMkJ3VEdLOVJWZDhpdyUyQkN6cUhlUVNHcFc3WWthXzRSU1pf TE9RJTQwbWFpbC5nbWFpbC5jb20NCls3XSBodHRwczovL2dpdGh1Yi5jb20vbW9uZ29kYi1sYWJz L3B5LXRwY2MNCls4XSBweXRob24zIHRwY2MucHkg4oCUbm8tbG9hZCDigJRkdXJhdGlvbiAzNjAw IOKAlHdhcmVob3VzZXMgMjAwMCDigJRjbGllbnRzIDUwIOKAlHN0b3Atb24tZXJyb3Ig4oCUY29u ZmlnIGdwdXJlLmNvbmZpZyBtb25nb2RiDQoNCg== --_000_78574B24BE0A42C580753FA9FA63B8FCamazoncom_ Content-Type: text/html; charset="utf-8" Content-ID: <150CCE4EB4D3414D925D73E5EB17EB0E@amazon.com> Content-Transfer-Encoding: base64 PGh0bWwgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIiB4 bWxuczp3PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTp3b3JkIiB4bWxuczptPSJo dHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA0LzEyL29tbWwiIHhtbG5zPSJo dHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIj4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVp dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPg0KPG1l dGEgbmFtZT0iR2VuZXJhdG9yIiBjb250ZW50PSJNaWNyb3NvZnQgV29yZCAxNSAoZmlsdGVyZWQg bWVkaXVtKSI+DQo8c3R5bGU+PCEtLQ0KLyogRm9udCBEZWZpbml0aW9ucyAqLw0KQGZvbnQtZmFj ZQ0KCXtmb250LWZhbWlseToiQ2FtYnJpYSBNYXRoIjsNCglwYW5vc2UtMToyIDQgNSAzIDUgNCA2 IDMgMiA0O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCglwYW5vc2UtMToy IDE1IDUgMiAyIDIgNCAzIDIgNDt9DQovKiBTdHlsZSBEZWZpbml0aW9ucyAqLw0KcC5Nc29Ob3Jt YWwsIGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbA0KCXttYXJnaW46MGluOw0KCWZvbnQtc2l6 ZToxMS4wcHQ7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7DQoJbXNvLWxpZ2F0 dXJlczpzdGFuZGFyZGNvbnRleHR1YWw7fQ0KYTpsaW5rLCBzcGFuLk1zb0h5cGVybGluaw0KCXtt c28tc3R5bGUtcHJpb3JpdHk6OTk7DQoJY29sb3I6IzA1NjNDMTsNCgl0ZXh0LWRlY29yYXRpb246 dW5kZXJsaW5lO30NCnNwYW4uRW1haWxTdHlsZTE3DQoJe21zby1zdHlsZS10eXBlOnBlcnNvbmFs LWNvbXBvc2U7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7DQoJY29sb3I6d2lu ZG93dGV4dDt9DQouTXNvQ2hwRGVmYXVsdA0KCXttc28tc3R5bGUtdHlwZTpleHBvcnQtb25seTt9 DQpAcGFnZSBXb3JkU2VjdGlvbjENCgl7c2l6ZTo4LjVpbiAxMS4waW47DQoJbWFyZ2luOjEuMGlu IDEuMGluIDEuMGluIDEuMGluO30NCmRpdi5Xb3JkU2VjdGlvbjENCgl7cGFnZTpXb3JkU2VjdGlv bjE7fQ0KLS0+PC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5IGxhbmc9IkVOLVVTIiBsaW5rPSIjMDU2 M0MxIiB2bGluaz0iIzk1NEY3MiIgc3R5bGU9IndvcmQtd3JhcDpicmVhay13b3JkIj4NCjxkaXYg Y2xhc3M9IldvcmRTZWN0aW9uMSI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5BdHRhY2hlZCBmaW5k IGEgcGF0Y2ggdGhhdCBleHBhbmRzIHRoZSBjYXNlcyB3aGVyZSBoZWFwLW9ubHkgdHVwbGUgKEhP VCkgdXBkYXRlcyBhcmUgcG9zc2libGUgd2l0aG91dCBjaGFuZ2luZyB0aGUgYmFzaWMgc2VtYW50 aWNzIG9mIEhPVC4gVGhpcyBpcyBhY2NvbXBsaXNoZWQgYnkgZXhhbWluaW5nIGV4cHJlc3Npb24g aW5kZXhlcyBmb3IgY2hhbmdlcyB0byBkZXRlcm1pbmUgaWYgaW5kZXhlcyByZXF1aXJlDQogdXBk YXRpbmcgb3Igbm90LiBBIHNpbWlsYXIgYXBwcm9hY2ggaXMgdGFrZW4gZm9yIHBhcnRpYWwgaW5k ZXhlcywgdGhlIHByZWRpY2F0ZSBpcyBldmFsdWF0ZWQgYW5kLCBpbiBzb21lIGNhc2VzLCBIT1Qg dXBkYXRlcyBhcmUgYWxsb3dlZC4gRXZlbiB3aXRoIHRoaXMgcGF0Y2ggaWYgYW55IGluZGV4IGlz IGNoYW5nZWQsIGFsbCBpbmRleGVzIGFyZSB1cGRhdGVkLiBPbmx5IGluIGNhc2VzIHdoZXJlIG5v bmUgYXJlIG1vZGlmaWVkIHdpbGwgdGhpcw0KIHBhdGNoIGFsbG93IHRoZSBIT1QgcGF0aC4gUHJl dmlvdXNseSwgYW4gZXhwcmVzc2lvbiBpbmRleCBvbiBhIG1vZGlmaWVkIGNvbHVtbiB3b3VsZCBk aXNxdWFsaWZ5IHRoZSB1cGRhdGUgZnJvbSB0aGUgSE9UIHBhdGggaW4gdGhlIGhlYXAgYWNjZXNz IG1hbmFnZXIuIFRoaXMgcGF0Y2ggaXMgZnVuY3Rpb25hbCwgaW5jbHVkZXMgbmV3IHRlc3RzLCBh bmQgcGFzc2VzIGNoZWNrLXdvcmxkIGhvd2V2ZXIgSeKAmW0gc3VyZSBpdCB3aWxsIHJlcXVpcmUg bW9yZQ0KIHdvcmsgYWZ0ZXIgY29tbXVuaXR5IHJldmlldy4mbmJzcDs8YnI+DQo8YnI+DQpXaHkg aXMgdGhpcyBpbXBvcnRhbnQ/IEEgZ3Jvd2luZyBudW1iZXIgb2YgUG9zdGdyZXMgdXNlcnMgd29y ayB3aXRoIEpTT05CIGRhdGEuIEluZGV4ZXMgb24gZmllbGRzIHdpdGhpbiBKU09OQiBjb2x1bW5z IHVzZSBleHByZXNzaW9ucyBwcmV2ZW50aW5nIGFsbCB1cGRhdGVzIG9uIGRhdGEgd2l0aGluIEpT T05CIGNvbHVtbnMgZnJvbSB0aGUgSE9UIHBhdGguIFRoaXMgaXMgdW5uZWNlc3NhcnkgYW5kIGEg bWFqb3IgZHJhd2JhY2sgd2hlbiB1c2luZw0KIFBvc3RncmVzLjxicj4NCjxicj4NClRoaXMgaXMg bm90IGEgbmV3IGlkZWE7IGluZGVlZCwgdGhpcyBwYXRjaCBncmV3IG91dCBvZiBTdXJqZWN0aXZl IGZ1bmN0aW9uYWwgaW5kZXhlcyBbMV0gd2hpY2ggd2FzIGFwcGxpZWQgWzJdIGFuZCB0aGVuIHJl dmVydGVkIFszXSBhZnRlciBpdCB3YXMgZGlzY292ZXJlZCB0aGF0IGl0IGNhdXNlZCBhIGJ1ZyBh bmQgaGFkIG90aGVyIHF1YWxpdHkgaXNzdWVzLiBUaGlzIHBhdGNoIGlzIGEgbmV3IGFwcHJvYWNo IHRoYXQgaG9wZWZ1bGx5IGFkZHJlc3MNCiB0aGUgaWRlbnRpZmllZCBidWcgYW5kIG1vc3Qgb2Yg dGhlIG90aGVyIGNvbmNlcm5zIHJhaXNlZCBpbiB0aGF0IGFuZCBvdGhlciBlbWFpbCB0aHJlYWRz IG9uIHRoZSBzdWJqZWN0LiBJ4oCZbSBhbHNvIGF3YXJlIG9mIFBIT1QgWzRdIGFuZCBXQVJNIFs1 XSB3aGljaCBhbGxvdyBmb3IgdXBkYXRpbmcgc29tZSwgYnV0IG5vdCBhbGwgaW5kZXhlcyB3aGls ZSByZW1haW5pbmcgb24gdGhlIEhPVCB1cGRhdGUgcGF0aCwgdGhpcyBwYXRjaCBkb2VzIG5vdA0K IGF0dGVtcHQgdG8gYWNjb21wbGlzaCB0aGF0Ljxicj4NCjxicj4NCkF0dGFjaGVkIHlvdeKAmWxs IGZpbmQgdHdvIHNsaWdodGx5IGRpZmZlcmVudCBhcHByb2FjaGVzLiBUaGUgZmlyc3QgKHYzKSBw YXRjaCBpcyBzbGlnaHRseSBsZXNzIGludHJ1c2l2ZSB0aGFuIHRoZSBzZWNvbmQgKHY0KSwgYnV0 IGJvdGggYXBwbHkgdG8gbWFzdGVyICg1OWQ2YzAzOTU2MTkzZjYyMmMwNjlhNGFiOTg1YmFkZTI3 Mzg0YWM0KS4gVGVzdHMgaGF2ZSBiZWVuIGFkZGVkIChoZWFwX2hvdF91cGRhdGVzLnNxbCkgdGhh dCBleGVyY2lzZSB0aGlzDQogbmV3IGZlYXR1cmUgc2V0LiBPZiB0aGUgdHdvIHBhdGNoZXMgSSBw ZXJzb25hbGx5IHByZWZlciB2NCBhcyBpdCBjbGVhbnMgdXAgdGhlIHN1bW1hcml6aW5nIGluZGV4 IGxvZ2ljIGFuZCByZW1vdmVzIFRVX1VwZGF0ZUluZGV4ZXMuIFRoaXMgb3BlbnMgdGhlIGRvb3Ig dG8gZnV0dXJlIGltcHJvdmVtZW50cyBieSBwcm92aWRpbmcgYSB3YXkgdG8gcGFzcyBhIGJpdG1h cCBvZiBtb2RpZmllZCBpbmRleGVzIGFsb25nIHRvIGJlIGFkZHJlc3NlZCBieQ0KIHNvbWV0aGlu ZyBzaW1pbGFyIHRvIHRoZSBQSE9UL1dBUk0gbG9naWMuPGJyPg0KPGJyPg0KSSBoYXZlIGEgZmV3 IGNvbmNlcm5zIHdpdGggdGhlIHBhdGNoLCB0aGluZ3MgSeKAmWQgZ3JlYXRseSBhcHByZWNpYXRl IHlvdXIgdGhvdWdodHMgb246PGJyPg0KPGJyPg0KRmlyc3QsIEkgcGFzcyBhbiBFU3RhdGUgYWxv bmcgdGhlIHVwZGF0ZSBwYXRoIHRvIGVuYWJsZSBydW5uaW5nIHRoZSBjaGVja3MgaW4gaGVhcGFt LCB0aGlzIHdvcmtzIGJ1dCBsZWF2ZXMgbWUgZmVlbGluZyBhcyBpZiBJIHZpb2xhdGVkIHNlcGFy YXRpb24gb2YgY29uY2VybnMuIElmIHRoZXJlIGlzIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzIGxl dCBtZSBrbm93IG9yIGlmIHlvdSB0aGluayB0aGUgY29zdCBvZiBjcmVhdGluZyBvbmUgaW4gdGhl IGV4ZWNJbmRleGluZy5jDQogRXhlY0luZGV4ZXNSZXF1aXJpbmdVcGRhdGVzKCkgaXMgb2theSB0 aGF04oCZcyBhbm90aGVyIHBvc3NpYmlsaXR5LjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5TZWNv bmQsIEnigJltIHN1cmUgdGhhdCBjcmVhdGluZyB0aGUgcmRfaW5kZXhpbmZvbGlzdCBzaG91bGQg YmUgaW1wcm92ZWQvY2hhbmdlZCBhbmQgbGlrZWx5IGNhY2hlZCB2aWEgcmVsY2FjaGUuYyBhcyB0 aGlzIGlzIGxpa2VseSBwYXJ0IG9mIHRoZSBwZXJmb3JtYW5jZSBvdmVyaGVhZCBtZW50aW9uZWQg YmVsb3cuPGJyPg0KPGJyPg0KVGhpcmQsIHRoZXJlIGlzIG92ZXJoZWFkIHRvIHRoaXMgcGF0Y2gs IGl0IGlzIG5vIGxvbmdlciBhIHNpbmdsZSBzaW1wbGUgYml0bWFwIHRlc3QgdG8gY2hvb3NlIEhP VCBvciBub3QgaW4gaGVhcF91cGRhdGUoKS4gU29tZXRpbWVzIHRoaXMgcGF0Y2ggd2lsbCBwZXJm b3JtIGV4cGVuc2l2ZSBhZGRpdGlvbmFsIGNoZWNrcyBhbmQgdWx0aW1hdGVseSBub3QgZ28gZG93 biB0aGUgSE9UIHBhdGgsIG5ldyBvdmVyaGVhZCB3aXRoIG5vIGJlbmVmaXQuIFNvbWUNCiBleHBy ZXNzaW9ucyBhcmUgbW9yZSBleHBlbnNpdmUgdGhhbiBvdGhlcnMgdG8gZXZhbHVhdGUsIHRoZXJl IGlzIG5vIGxvZ2ljIHRvIGFkanVzdCBmb3IgdGhhdC4gVGhlIFN1cmplY3RpdmUgcGF0Y2gvZW1h aWwgdGhyZWFkIGhhZCBxdWl0ZSBhIGJpdCBvZiBkaXNjdXNzaW9uIG9uIHRoaXMgd2l0aG91dCBy ZXNvbHV0aW9uLiBJ4oCZdmUgY2hvc2VuIHRvIGFkZCBhIEdVQyB0aGF0IG9wdGlvbmFsbHkgYXZv aWRzIHRoZSBleHByZXNzaW9uIGV2YWx1YXRpb24uDQogSeKAmW0gb3BlbiB0byBpZGVhcyBoZXJl IGFzIHdlbGwsIGFkZGl0aW9uIG9mIGFub3RoZXIgR1VDIG9yIHJlbW92YWwgb2YgdGhlIG9uZSBJ 4oCZdmUgYWRkZWQuIEnigJl2ZSB0cmllZCB0byBhdm9pZCByZWNoZWNraW5nIGluZGV4ZXMgZm9y IGNoYW5nZXMgd2hlbiBwb3NzaWJsZS48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3Jt YWwiPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Rm91cnRoLCBJ 4oCZZCBsaWtlIHRvIGtub3cgd2hpY2ggdmVyc2lvbiB0aGUgY29tbXVuaXR5IHByZWZlcnMgKHYz IG9yIHY0KS4mbmJzcDsgSSB0aGluayB2NCBtb3ZlcyB0aGUgY29kZSBpbiBhIGRpcmVjdGlvbiB0 aGF0IGlzIGNsZWFuZXIgb3ZlcmFsbCwgYnV0IHlvdSBtYXkgZGlzYWdyZWUuJm5ic3A7IEkgcmVh bGl6ZSB0aGF0IHRoZSB3YXkgSSB1c2UgdGhlIG1vZGlmaWVkX2luZGV4ZXMgYml0bWFwc2V0IGlz IGEgdGFkIG92ZXJsb2FkZWQNCiAoTlVMTCBtZWFucyBhbGwgaW5kZXhlcyBzaG91bGQgYmUgdXBk YXRlZCwgb3RoZXJ3aXNlIG9ubHkgdXBkYXRlIHRoZSBpbmRleGVzIGluIHRoZSBzZXQgd2hpY2gg bWF5IGJlIGFsbC9zb21lL25vbmUgb2YgdGhlIGluZGV4ZXMpIGFuZCB0aGF0IG1heSB2aW9sYXRl IHRoZSBwcmluY2lwYWwgb2YgbGVhc3Qgc3VycHJpc2UgYnV0IEkgZmVlbCB0aGF0IGl0IGlzIGJl dHRlciB0aGFuIHRoZSBUVV9VcGRhdGVJbmRleGVzIGVudW0gaW4gdGhlIGNvZGUNCiB0b2RheS48 YnI+DQo8YnI+DQpJ4oCZdmUgcnVuIHR3byBwZXJmb3JtYW5jZSB0ZXN0cyBhZ2FpbnN0IHRoaXM7 IGEgdmVyeSBzeW50aGV0aWMgd29ya2xvYWQgdGhhdCB1cGRhdGVzIG9ubHkgbm9uLWluZGV4ZWQg ZmllbGRzIGluIGEgSlNPTkIgZG9jdW1lbnQgdGhhdCBpcyBzbWFsbCBlbm91Z2ggbm90IHRvIGJl IFRPQVNUZWQsIGFuZCBvbmUgdGhhdCBtZWFzdXJlcyBUUEMtQy1saWtlIHdvcmtsb2FkIHVzaW5n IGEgTW9uZ29EQiBBUEkgbWFwcGVkIGludG8gSlNPTkIuPGJyPg0KPGJyPg0KVGhlIHN5bnRoZXRp YyB3b3JrbG9hZCByYW5kb21seSB1cGRhdGVkIG5vbi1pbmRleGVkIGZpZWxkcyB3aXRoaW4gdGhl IEpTT05CIGRvY3VtZW50cyBhcyBmYXN0IGFzIHBvc3NpYmxlIGZyb20gNTAgY2xpZW50IGNvbm5l Y3Rpb25zLiBUaGUgdGVzdCBzdGFydGVkIHByZS1sb2FkZWQgd2l0aCAxMCwwMDAsMDAwIGRvY3Vt ZW50cyB3aXRoaW4gYSBzaW5nbGUgY29sdW1uIHdpdGggNTAgZXhwcmVzc2lvbiBpbmRleGVzIChC VFJFRSkgaW50byBmaWVsZHMNCiBpbiB0aG9zZSBkb2N1bWVudHMuIFRoaXMgdGVzdCBzaG93ZWQg YSBkcmFtYXRpYyBpbmNyZWFzZSBpbiB0aHJvdWdocHV0ICgyOC0xMTAlKSwgcmVkdWN0aW9uIGlu IHBlci1vcGVyYXRpb24gbGF0ZW5jeSAoMjItNTIlKSwgYW5kIGxvd2VyIHN0b3JhZ2UgcmVxdWly ZW1lbnRzIGFsbCB3aGlsZSBDUFUgcmVtYWluZWQgd2l0aGluIDElIG9mIHRoZSB1bnBhdGNoZWQg c2VydmVyLiBUaGUgdGVzdHMgcmFuIGZvciAyaHJzIGR1cmluZyB3aGljaCB0aW1lDQogd2Ugb2Jz ZXJ2ZWQgYWJvdXQgYSAyMC0zMCUgcmVkdWN0aW9uIGluIElPUHMuIE9uIHRoZSB1bnBhdGNoZWQg c2VydmVyIHRoZXJlIHdlcmUgbm8gSE9UIHVwZGF0ZXMsIG9uIHRoZSBwYXRjaGVkIHNlcnZlciB3 aXRoIGRlZmF1bHQgZmlsbGZhY3RvciBIT1QgdXBkYXRlcyBtYWRlIHVwIGF0IGxlYXN0IDMwJSBh bmQgYXQgdGltZXMgbXVjaCBtb3JlIGFzIHRoZSByYW5kb20tYWNjZXNzIHBhdHRlcm4gYW5kIHBy dW5laGVhcCBvcGVuZWQgc3BhY2Ugb24NCiBwYWdlcyBmb3IgSE9UIHVwZGF0ZXMuPGJyPg0KPGJy Pg0KVGhlIFRQQy1DLWxpa2Ugd29ya2xvYWQgWzddIHJhbiBbOF0gZmlyc3Qgd2l0aCDigJRuby1l eGVjdXRlIHRoZW4gWzhdIHdpdGgg4oCUbm8tbG9hZC4gVGhpcyB0ZXN0IHNob3dlZCBIT1QgdXBk YXRlcyBmb3IgQ1VTVE9NRVIgKDclKSwgRElTVFJJQ1QgKDQ4JSksIGFuZCBXQVJFSE9VU0UgKDk5 JSkgYnV0IHplcm8gZm9yIFNUT0NLIGFuZCBPUkRFUlMuIFdoZW4gY29tcGFyZWQgdG8gYSBub24t cGF0Y2hlZCBzZXJ2ZXIgdGhlIHBlcmZvcm1hbmNlIHdpdGgNCiB0aGlzIHBhdGNoIHdhcyA3Ljgl IHNsb3dlciB0aGFuIHdpdGhvdXQuIFRoaXMgd2FzIGNsZWFybHkgbm90IHRoZSByZXN1bHQgSSBl eHBlY3RlZC4mbmJzcDsgSSBiZWxpZXZlIHRoYXQgdGhlIGxvd2VyIHBlcmZvcm1hbmNlIG1heSBp biBwYXJ0IGJlIGR1ZSB0byBob3cgSSBidWlsZCBhbmQgbWFpbnRhaW4gdGhlIHJkX2luZGV4aW5m b2xpc3QgYW5kIHRoZSBvdmVyaGVhZCBvZiBleGVjdXRpbmcgZXhwcmVzc2lvbnMgb24gaW5kZXhl cyByZXBlYXRlZGx5IG9ubHkNCiB0byBmaW5kIHRoYXQgdGhlIHVwZGF0ZSBzdGlsbCBkb2VzbuKA mXQgcXVhbGlmeSBmb3IgdGhlIEhPVCBwYXRoLiBJ4oCZZCBiZSB2ZXJ5IGhhcHB5IHRvIGhlYXIg dGhvdWdodHMgb24gaG93IEkgbWlnaHQgcmVkdWNlIHRoaXMgZ2FwIGlmIHlvdSBoYXZlIHN1Z2dl c3Rpb25zLjxicj4NCjxicj4NCkkgaG9wZSB0byBmdXJ0aGVyIGRldmVsb3AgdGhpcyBwYXRjaCBp bnRvIGEgZmluYWwgZm9ybSBhY2NlcHRhYmxlIHRvIHRoaXMgY29tbXVuaXR5Ljxicj4NCjxicj4N CmJlc3QgcmVnYXJkcyw8YnI+DQotZ3JlZzxicj4NCjxicj4NClsxXSZuYnNwOzxhIGhyZWY9Imh0 dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC80ZDk5MjhlZS1hOWU2LTE1 ZjktOWM4Mi01OTgxZjEzZmZjYTYlNDBwb3N0Z3Jlc3Byby5ydSIgdGl0bGU9Imh0dHBzOi8vd3d3 LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC80ZDk5MjhlZS1hOWU2LTE1ZjktOWM4Mi01 OTgxZjEzZmZjYTYlNDBwb3N0Z3Jlc3Byby5ydSI+aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcv bWVzc2FnZS1pZC9mbGF0LzRkOTkyOGVlLWE5ZTYtMTVmOS05YzgyLTU5ODFmMTNmZmNhNiU0MHBv c3RncmVzcHJvLnJ1PC9hPjxicj4NClsyXSZuYnNwOzxhIGhyZWY9Imh0dHBzOi8vZ2l0LnBvc3Rn cmVzcWwub3JnL2dpdHdlYi8/cD1wb3N0Z3Jlc3FsLmdpdDthPWNvbW1pdDtoPWMyMDNkNmNmOCIg dGl0bGU9Imh0dHBzOi8vZ2l0LnBvc3RncmVzcWwub3JnL2dpdHdlYi8/cD1wb3N0Z3Jlc3FsLmdp dDthPWNvbW1pdDtoPWMyMDNkNmNmOCI+aHR0cHM6Ly9naXQucG9zdGdyZXNxbC5vcmcvZ2l0d2Vi Lz9wPXBvc3RncmVzcWwuZ2l0O2E9Y29tbWl0O2g9YzIwM2Q2Y2Y4PC9hPjxicj4NClszXSZuYnNw OzxhIGhyZWY9Imh0dHBzOi8vZ2l0LnBvc3RncmVzcWwub3JnL2dpdHdlYi8/cD1wb3N0Z3Jlc3Fs LmdpdDthPWNvbW1pdDtoPTA1Zjg0NjA1ZGJlYjljZjgyNzlhMTU3MjM0YjI0YmJiNzA2YzUyNTYi IHRpdGxlPSJodHRwczovL2dpdC5wb3N0Z3Jlc3FsLm9yZy9naXR3ZWIvP3A9cG9zdGdyZXNxbC5n aXQ7YT1jb21taXQ7aD0wNWY4NDYwNWRiZWI5Y2Y4Mjc5YTE1NzIzNGIyNGJiYjcwNmM1MjU2Ij5o dHRwczovL2dpdC5wb3N0Z3Jlc3FsLm9yZy9naXR3ZWIvP3A9cG9zdGdyZXNxbC5naXQ7YT1jb21t aXQ7aD0wNWY4NDYwNWRiZWI5Y2Y4Mjc5YTE1NzIzNGIyNGJiYjcwNmM1MjU2PC9hPjxicj4NCls0 XSZuYnNwOzxhIGhyZWY9Imh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxh dC8yRUNCQkNBMC00RDhELTQ4NDEtODg3Mi00QTVCQkRDMDYzRDIlNDBhbWF6b24uY29tIiB0aXRs ZT0iaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0LzJFQ0JCQ0EwLTRE OEQtNDg0MS04ODcyLTRBNUJCREMwNjNEMiU0MGFtYXpvbi5jb20iPmh0dHBzOi8vd3d3LnBvc3Rn cmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC8yRUNCQkNBMC00RDhELTQ4NDEtODg3Mi00QTVCQkRD MDYzRDIlNDBhbWF6b24uY29tPC9hPjxicj4NCls1XSZuYnNwOzxhIGhyZWY9Imh0dHBzOi8vd3d3 LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9DQUJPaWtkTW9wNVJiX1JuUzJ4RmRBWE1a R1NxY0otUC1CWTJydU1kJTJCYnVVa0o0aURQdyU0MG1haWwuZ21haWwuY29tIiB0aXRsZT0iaHR0 cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0L0NBQk9pa2RNb3A1UmJfUm5T MnhGZEFYTVpHU3FjSi1QLUJZMnJ1TWQlMkJidVVrSjRpRFB3JTQwbWFpbC5nbWFpbC5jb20iPmh0 dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9DQUJPaWtkTW9wNVJiX1Ju UzJ4RmRBWE1aR1NxY0otUC1CWTJydU1kJTJCYnVVa0o0aURQdyU0MG1haWwuZ21haWwuY29tPC9h Pjxicj4NCls2XSZuYnNwOzxhIGhyZWY9Imh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3Nh Z2UtaWQvZmxhdC9DQUJPaWtkTU55Nnlvd0ElMkJ3VEdLOVJWZDhpdyUyQkN6cUhlUVNHcFc3WWth XzRSU1pfTE9RJTQwbWFpbC5nbWFpbC5jb20iIHRpdGxlPSJodHRwczovL3d3dy5wb3N0Z3Jlc3Fs Lm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0FCT2lrZE1OeTZ5b3dBJTJCd1RHSzlSVmQ4aXclMkJDenFI ZVFTR3BXN1lrYV80UlNaX0xPUSU0MG1haWwuZ21haWwuY29tIj5odHRwczovL3d3dy5wb3N0Z3Jl c3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0FCT2lrZE1OeTZ5b3dBJTJCd1RHSzlSVmQ4aXclMkJD enFIZVFTR3BXN1lrYV80UlNaX0xPUSU0MG1haWwuZ21haWwuY29tPC9hPjxicj4NCls3XSZuYnNw OzxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tb25nb2RiLWxhYnMvcHktdHBjYyIgdGl0bGU9 Imh0dHBzOi8vZ2l0aHViLmNvbS9tb25nb2RiLWxhYnMvcHktdHBjYyI+aHR0cHM6Ly9naXRodWIu Y29tL21vbmdvZGItbGFicy9weS10cGNjPC9hPjxicj4NCls4XSBweXRob24zIHRwY2MucHkg4oCU bm8tbG9hZCDigJRkdXJhdGlvbiAzNjAwIOKAlHdhcmVob3VzZXMgMjAwMCDigJRjbGllbnRzIDUw IOKAlHN0b3Atb24tZXJyb3Ig4oCUY29uZmlnIGdwdXJlLmNvbmZpZyBtb25nb2RiPG86cD48L286 cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2 Pg0KPC9ib2R5Pg0KPC9odG1sPg0K --_000_78574B24BE0A42C580753FA9FA63B8FCamazoncom_-- --_005_78574B24BE0A42C580753FA9FA63B8FCamazoncom_ Content-Type: application/octet-stream; name="v3-0001-Expand-HOT-update-path-to-include-expression-and-.patch" Content-Description: v3-0001-Expand-HOT-update-path-to-include-expression-and-.patch Content-Disposition: attachment; filename="v3-0001-Expand-HOT-update-path-to-include-expression-and-.patch"; size=54799; creation-date="Thu, 06 Feb 2025 22:24:34 GMT"; modification-date="Thu, 06 Feb 2025 22:24:34 GMT" Content-ID: <8B3C24304841F14E8A559CA5D28E9F7E@amazon.com> Content-Transfer-Encoding: base64 RnJvbSBlZjhhZmRmZTVjN2QyZjhlMjNjZjhhMjA3NzNlYWUzNWE5ODIzZDczIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnb3J5IEJ1cmQgPGdyZWdidXJkQGFtYXpvbi5jb20+CkRh dGU6IE1vbiwgMjcgSmFuIDIwMjUgMTM6Mjg6NTkgLTA1MDAKU3ViamVjdDogW1BBVENIIHYzXSBF eHBhbmQgSE9UIHVwZGF0ZSBwYXRoIHRvIGluY2x1ZGUgZXhwcmVzc2lvbiBhbmQgcGFydGlhbAog aW5kZXhlcy4KClRoaXMgcGF0Y2ggZXh0ZW5kcyB0aGUgY2FzZXMgd2hlcmUgSE9UIHVwZGF0ZXMg YXJlIHBvc3NpYmxlIGluIHRoZSBoZWFwYW0gYnkKZXhhbWluaW5nIGV4cHJlc3Npb24gaW5kZXhl cyBhbmQgZGV0ZXJtaW5pbmcgaWYgaW5kZXhlZCB2YWx1ZXMgd2hlcmUgbXV0YXRlZApvciBub3Qu ICBQcmV2aW91c2x5LCBhbnkgZXhwcmVzc2lvbiBpbmRleCBvbiBhIGNvbHVtbiB3b3VsZCBkaXNx dWFsaWZ5IGl0CmZyb20gdGhlIEhPVCB1cGRhdGUgcGF0aC4gQWxzbyBleGFtaW5lcyBwYXJ0aWFs IGluZGV4ZXMgdG8gc2VlIGlmIHRoZQp2YWx1ZXMgYXJlIHdpdGhpbiB0aGUgcHJlZGljYXRlIG9y IG5vdC4KClRoaXMgaXMgYSBtb2RpZmllZCBhcHBsaWNhdGlvbiBvZiBhIHBhdGNoIHByb3Bvc2Vk IG9uIHRoZSBwZ3NxbC1oYWNrZXJzIGxpc3Q6Cmh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21l c3NhZ2UtaWQvZmxhdC80ZDk5MjhlZS1hOWU2LTE1ZjktOWM4Mi01OTgxZjEzZmZjYTYlNDBwb3N0 Z3Jlc3Byby5ydQphcHBsaWVkOiBodHRwczovL2dpdC5wb3N0Z3Jlc3FsLm9yZy9naXR3ZWIvP3A9 cG9zdGdyZXNxbC5naXQ7YT1jb21taXQ7aD1jMjAzZDZjZjgKcmV2ZXJ0ZWQ6IGh0dHBzOi8vZ2l0 LnBvc3RncmVzcWwub3JnL2dpdHdlYi8/cD1wb3N0Z3Jlc3FsLmdpdDthPWNvbW1pdDtoPTA1Zjg0 NjA1ZGJlYjljZjgyNzlhMTU3MjM0YjI0YmJiNzA2YzUyNTYKClNpZ25lZC1vZmYtYnk6IEdyZWcg QnVyZCA8Z3JlZ2J1cmRAYW1hem9uLmNvbT4KLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwg ICAgICAgICAgICAgICAgICAgICAgfCAgMTYgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMgICAgICAgICAgICAgIHwgIDQyICsrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX2hhbmRsZXIuYyAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFi bGVhbS5jICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAg ICAgICAgICAgICAgICAgICB8ICAxNSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhp bmcuYyAgICAgICAgICAgfCAyMjYgKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1vZGlmeVRhYmxlLmMgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC91dGlscy9taXNj L2d1Y190YWJsZXMuYyAgICAgICAgICAgfCAgMTMgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9w b3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aCAgICAgICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aCAgICAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRv ci5oICAgICAgICAgICAgICAgfCAgIDYgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgg ICAgICAgICAgICAgICAgIHwgICA4ICsKIHNyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIu aCAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9yZWwuaCAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDQgKwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaCAgICAgICAg ICAgICAgICAgIHwgICAxICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL2hlYXBfaG90X3VwZGF0ZXMu b3V0ICAgICB8IDMxOCArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvc3lzdmlld3Mub3V0ICAgICAgICB8ICAgMyArLQogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZSAgICAgICAgICAgIHwgICA1ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hlYXBf aG90X3VwZGF0ZXMuc3FsICAgICB8IDIwOCArKysrKysrKysrKysKIDIwIGZpbGVzIGNoYW5nZWQs IDg2NyBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hlYXBfaG90X3VwZGF0ZXMub3V0CiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvaGVhcF9ob3RfdXBkYXRlcy5zcWwKCmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwKaW5kZXggYTc4MmYxMDk5OC4uNWI3NTZlNzc1NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNTI0Miw2ICs1 MjQyLDIyIEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3Jl cGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICA8L2xpc3RpdGVtPgogICAg ICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtZW5hYmxlLWV4 cHJlc3Npb24tY2hlY2tzIiB4cmVmbGFiZWw9ImVuYWJsZV9leHByZXNzaW9uX2NoZWNrcyI+Cisg ICAgICA8dGVybT48dmFybmFtZT5lbmFibGVfZXhwcmVzc2lvbl9jaGVja3M8L3Zhcm5hbWU+ICg8 dHlwZT5ib29sZWFuPC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+ PHZhcm5hbWU+ZW5hYmxlX2V4cHJlc3Npb25fY2hlY2tzPC92YXJuYW1lPiBjb25maWd1cmF0aW9u IHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgor ICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBFbmFibGVzIG9yIGRpc2Fi bGVzIHRoZSBhYmlsaXR5IHRvIGRldGVybWluZSBpZiBpbmRleGVzIHdpdGgKKyAgICAgICAgZXhw cmVzc2lvbnMgcGFydGlhbCBpbmRleGVzIGhhdmUgY2hhbmdlZCBhbGxvd2luZyBmb3IgdGhlIGhl YXAtb25seQorICAgICAgICB0dXBsZSAoSE9UKSBvcHRpbXphdGlvbiBvbiB1cGRhdGUgd2hlbiB1 c2luZyB0aGUgaGVhcCBhY2Nlc3MgbWV0aG9kLgorICAgICAgICBUaGUgZGVmYXVsdCBpcyA8bGl0 ZXJhbD5vbjwvbGl0ZXJhbD4uCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAg ICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWVuYWJsZS1n YXRoZXJtZXJnZSIgeHJlZmxhYmVsPSJlbmFibGVfZ2F0aGVybWVyZ2UiPgogICAgICAgPHRlcm0+ PHZhcm5hbWU+ZW5hYmxlX2dhdGhlcm1lcmdlPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlw ZT4pCiAgICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBlYTBh MTJiMzlhLi4zNWU0NzE5MWVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMzE2NCw3 ICszMTY0LDcgQEAgVE1fUmVzdWx0CiBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRl bVBvaW50ZXIgb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAkJCUNvbW1hbmRJZCBjaWQsIFNuYXBz aG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKIAkJCVRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2Nr VHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCVRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVz KQorCQkJVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMsIHN0cnVjdCBFU3RhdGUgKmVz dGF0ZSkKIHsKIAlUTV9SZXN1bHQJcmVzdWx0OwogCVRyYW5zYWN0aW9uSWQgeGlkID0gR2V0Q3Vy cmVudFRyYW5zYWN0aW9uSWQoKTsKQEAgLTM5MjgsMjUgKzM5MjgsNDEgQEAgbDI6CiAKIAlpZiAo bmV3YnVmID09IGJ1ZmZlcikKIAl7CisJCWJvb2wJCW9ubHlfc3VtbWFyaXppbmcgPSBmYWxzZTsK KwkJQml0bWFwc2V0ICAqbW9kaWZpZWRfaW5kZXhlczsKKwogCQkvKgogCQkgKiBTaW5jZSB0aGUg bmV3IHR1cGxlIGlzIGdvaW5nIGludG8gdGhlIHNhbWUgcGFnZSwgd2UgbWlnaHQgYmUgYWJsZQot CQkgKiB0byBkbyBhIEhPVCB1cGRhdGUuICBDaGVjayBpZiBhbnkgb2YgdGhlIGluZGV4IGNvbHVt bnMgaGF2ZSBiZWVuCi0JCSAqIGNoYW5nZWQuCisJCSAqIHRvIGRvIGEgSE9UIHVwZGF0ZS4KIAkJ ICovCiAJCWlmICghYm1zX292ZXJsYXAobW9kaWZpZWRfYXR0cnMsIGhvdF9hdHRycykpCi0JCXsK IAkJCXVzZV9ob3RfdXBkYXRlID0gdHJ1ZTsKLQorCQllbHNlCisJCXsKIAkJCS8qCi0JCQkgKiBJ ZiBub25lIG9mIHRoZSBjb2x1bW5zIHRoYXQgYXJlIHVzZWQgaW4gaG90LWJsb2NraW5nIGluZGV4 ZXMKLQkJCSAqIHdlcmUgdXBkYXRlZCwgd2UgY2FuIGFwcGx5IEhPVCwgYnV0IHdlIGRvIHN0aWxs IG5lZWQgdG8gY2hlY2sKLQkJCSAqIGlmIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBzdW1tYXJpemlu ZyBpbmRleGVzLCBhbmQgdXBkYXRlIHRob3NlCi0JCQkgKiBpbmRleGVzIGlmIHRoZSBjb2x1bW5z IHdlcmUgdXBkYXRlZCwgb3Igd2UgbWF5IGZhaWwgdG8gZGV0ZWN0Ci0JCQkgKiBlLmcuIHZhbHVl IGJvdW5kIGNoYW5nZXMgaW4gQlJJTiBtaW5tYXggaW5kZXhlcy4KKwkJCSAqIFNvbWUgb2YgdGhl IGNvbHVtbnMgdXNlZCBpbiBIT1QtYmxvY2tpbmcgaW5kZXhlcyB3ZXJlIHVwZGF0ZWQsCisJCQkg KiBidXQgdGhlcmUgYXJlIHN0aWxsIGNhc2VzIHdoZXJlIHdlIGNhbiBkbyBhIEhPVCB1cGRhdGUu ICBDaGVjaworCQkJICogaWYgdGhlIGNvbHVtbnMgdGhhdCBhcmUgdXNlZCBpbiB0aGUgSE9ULWJs b2NraW5nIGluZGV4ZXMgd2VyZQorCQkJICogdXBkYXRlZCwgYW5kIGlmIG5vdCwgd2UgY2FuIGRv IGEgSE9UIHVwZGF0ZS4KIAkJCSAqLwotCQkJaWYgKGJtc19vdmVybGFwKG1vZGlmaWVkX2F0dHJz LCBzdW1fYXR0cnMpKQotCQkJCXN1bW1hcml6ZWRfdXBkYXRlID0gdHJ1ZTsKKwkJCW1vZGlmaWVk X2luZGV4ZXMgPQorCQkJCUV4ZWNJbmRleGVzUmVxdWlyaW5nVXBkYXRlcyhyZWxhdGlvbiwgbW9k aWZpZWRfYXR0cnMsCisJCQkJCQkJCQkJCWVzdGF0ZSwgJm9sZHR1cCwgbmV3dHVwLAorCQkJCQkJ CQkJCQkmb25seV9zdW1tYXJpemluZyk7CisJCQlpZiAoYm1zX2lzX2VtcHR5KG1vZGlmaWVkX2lu ZGV4ZXMpIHx8IG9ubHlfc3VtbWFyaXppbmcpCisJCQkJdXNlX2hvdF91cGRhdGUgPSB0cnVlOwor CQkJYm1zX2ZyZWUobW9kaWZpZWRfaW5kZXhlcyk7CiAJCX0KKworCQkvKgorCQkgKiBJZiBub25l IG9mIHRoZSBjb2x1bW5zIHRoYXQgYXJlIHVzZWQgaW4gaG90LWJsb2NraW5nIGluZGV4ZXMgd2Vy ZQorCQkgKiB1cGRhdGVkLCB3ZSBjYW4gYXBwbHkgSE9ULCBidXQgd2UgZG8gc3RpbGwgbmVlZCB0 byBjaGVjayBpZiB3ZSBuZWVkCisJCSAqIHRvIHVwZGF0ZSB0aGUgc3VtbWFyaXppbmcgaW5kZXhl cywgYW5kIHVwZGF0ZSB0aG9zZSBpbmRleGVzIGlmIHRoZQorCQkgKiBjb2x1bW5zIHdlcmUgdXBk YXRlZCwgb3Igd2UgbWF5IGZhaWwgdG8gZGV0ZWN0IGUuZy4gdmFsdWUgYm91bmQKKwkJICogY2hh bmdlcyBpbiBCUklOIG1pbm1heCBpbmRleGVzLgorCQkgKi8KKwkJaWYgKHVzZV9ob3RfdXBkYXRl ICYmIGJtc19vdmVybGFwKG1vZGlmaWVkX2F0dHJzLCBzdW1fYXR0cnMpKQorCQkJc3VtbWFyaXpl ZF91cGRhdGUgPSB0cnVlOwogCX0KIAllbHNlCiAJewpAQCAtNDQxMyw3ICs0NDI5LDcgQEAgc2lt cGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBIZWFw VHVwbGUgdHVwLAogCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXAsCiAJ CQkJCQkgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJ IHRydWUgLyogd2FpdCBmb3IgY29tbWl0ICovICwKLQkJCQkJCSAmdG1mZCwgJmxvY2ttb2RlLCB1 cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkgJnRtZmQsICZsb2NrbW9kZSwgdXBkYXRlX2luZGV4ZXMs IE5VTEwpOwogCXN3aXRjaCAocmVzdWx0KQogCXsKIAkJY2FzZSBUTV9TZWxmTW9kaWZpZWQ6CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBhNDAwM2NmNTllLi44 MzZhYWMzNjRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFu ZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAg LTMxMiw4ICszMTIsOCBAQCBoZWFwYW1fdHVwbGVfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJ dGVtUG9pbnRlciB0aWQsIENvbW1hbmRJZCBjaWQsCiBzdGF0aWMgVE1fUmVzdWx0CiBoZWFwYW1f dHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBUdXBsZVRh YmxlU2xvdCAqc2xvdCwKIAkJCQkJQ29tbWFuZElkIGNpZCwgU25hcHNob3Qgc25hcHNob3QsIFNu YXBzaG90IGNyb3NzY2hlY2ssCi0JCQkJCWJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQs Ci0JCQkJCUxvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVf aW5kZXhlcykKKwkJCQkJYm9vbCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxl TW9kZSAqbG9ja21vZGUsCisJCQkJCVRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzLCBF U3RhdGUgKmVzdGF0ZSkKIHsKIAlib29sCQlzaG91bGRGcmVlID0gdHJ1ZTsKIAlIZWFwVHVwbGUJ dHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKHNsb3QsIHRydWUsICZzaG91bGRGcmVlKTsK QEAgLTMyNCw3ICszMjQsNyBAQCBoZWFwYW1fdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBJdGVtUG9pbnRlciBvdGlkLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAl0dXBsZS0+dF90YWJs ZU9pZCA9IHNsb3QtPnR0c190YWJsZU9pZDsKIAogCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0 aW9uLCBvdGlkLCB0dXBsZSwgY2lkLCBjcm9zc2NoZWNrLCB3YWl0LAotCQkJCQkJIHRtZmQsIGxv Y2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkgdG1mZCwgbG9ja21vZGUsIHVwZGF0ZV9p bmRleGVzLCBlc3RhdGUpOwogCUl0ZW1Qb2ludGVyQ29weSgmdHVwbGUtPnRfc2VsZiwgJnNsb3Qt PnR0c190aWQpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90 YWJsZWFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCmluZGV4IGUxOGE4 ZjgyNTAuLjlmZWNhOGEyOTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90 YWJsZWFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtMzQ1 LDcgKzM0NSw3IEBAIHNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVt UG9pbnRlciBvdGlkLAogCQkJCQkJCQlHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpLAogCQkJCQkJ CQlzbmFwc2hvdCwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQl0cnVlIC8qIHdhaXQgZm9yIGNv bW1pdCAqLyAsCi0JCQkJCQkJCSZ0bWZkLCAmbG9ja21vZGUsIHVwZGF0ZV9pbmRleGVzKTsKKwkJ CQkJCQkJJnRtZmQsICZsb2NrbW9kZSwgdXBkYXRlX2luZGV4ZXMsIE5VTEwpOwogCiAJc3dpdGNo IChyZXN1bHQpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDczNzc5MTJiNDEuLmIwZTY3MGMxZjcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4LmMKQEAgLTI0NTUsNyArMjQ1NSwyMCBAQCBCdWlsZEluZGV4SW5mbyhS ZWxhdGlvbiBpbmRleCkKIAogCS8qIGZpbGwgaW4gYXR0cmlidXRlIG51bWJlcnMgKi8KIAlmb3Ig KGkgPSAwOyBpIDwgbnVtQXR0czsgaSsrKQorCXsKIAkJaWktPmlpX0luZGV4QXR0ck51bWJlcnNb aV0gPSBpbmRleFN0cnVjdC0+aW5ka2V5LnZhbHVlc1tpXTsKKwkJaWktPmlpX0luZGV4QXR0cnMg PQorCQkJYm1zX2FkZF9tZW1iZXIoaWktPmlpX0luZGV4QXR0cnMsCisJCQkJCQkgICBpbmRleFN0 cnVjdC0+aW5ka2V5LnZhbHVlc1tpXSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1i ZXIpOworCX0KKworCS8qIGNvbGxlY3QgYXR0cmlidXRlcyB1c2VkIGluIHRoZSBleHByZXNzaW9u LCBpZiBvbmUgaXMgcHJlc2VudCAqLworCWlmIChpaS0+aWlfRXhwcmVzc2lvbnMpCisJCXB1bGxf dmFyYXR0bm9zKChOb2RlICopIGlpLT5paV9FeHByZXNzaW9ucywgMSwgJmlpLT5paV9FeHByZXNz aW9uQXR0cnMpOworCisJLyogY29sbGVjdCBhdHRyaWJ1dGVzIHVzZWQgaW4gdGhlIHByZWRpY2F0 ZSwgaWYgb25lIGlzIHByZXNlbnQgKi8KKwlpZiAoaWktPmlpX1ByZWRpY2F0ZSkKKwkJcHVsbF92 YXJhdHRub3MoKE5vZGUgKikgaWktPmlpX1ByZWRpY2F0ZSwgMSwgJmlpLT5paV9QcmVkaWNhdGVB dHRycyk7CiAKIAkvKiBmZXRjaCBleGNsdXNpb24gY29uc3RyYWludCBpbmZvIGlmIGFueSAqLwog CWlmIChpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24pCkBAIC0yNDY2LDYgKzI0NzksOCBAQCBC dWlsZEluZGV4SW5mbyhSZWxhdGlvbiBpbmRleCkKIAkJCQkJCQkJICZpaS0+aWlfRXhjbHVzaW9u U3RyYXRzKTsKIAl9CiAKKwlpaS0+aWlfT3BDbGFzc0RhdGFUeXBlcyA9IGluZGV4LT5yZF9vcGNp bnR5cGU7CisKIAlyZXR1cm4gaWk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNJbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMK aW5kZXggN2M4N2YwMTJjMy4uZmEzZGVjNzM3NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0luZGV4aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4 aW5nLmMKQEAgLTExNyw2ICsxMTcsOCBAQAogI2luY2x1ZGUgInV0aWxzL211bHRpcmFuZ2V0eXBl cy5oIgogI2luY2x1ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFw bWdyLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2Fj aGUuaCIKIAogLyogd2FpdE1vZGUgYXJndW1lbnQgdG8gY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1 ZV9jb25zdHJhaW50KCkgKi8KIHR5cGVkZWYgZW51bQpAQCAtMTQ2LDYgKzE0OCwxMSBAQCBzdGF0 aWMgYm9vbCBpbmRleF9leHByZXNzaW9uX2NoYW5nZWRfd2Fsa2VyKE5vZGUgKm5vZGUsCiBzdGF0 aWMgdm9pZCBFeGVjV2l0aG91dE92ZXJsYXBzTm90RW1wdHkoUmVsYXRpb24gcmVsLCBOYW1lRGF0 YSBhdHRuYW1lLCBEYXR1bSBhdHR2YWwsCiAJCQkJCQkJCQkJY2hhciB0eXB0eXBlLCBPaWQgYXR0 dHlwaWQpOwogCisvKgorICogR1VDIHBhcmFtZXRlcnMKKyAqLworYm9vbAkJZW5hYmxlX2V4cHJl c3Npb25fY2hlY2tzID0gdHJ1ZTsKKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNPcGVuSW5kaWNlcwog ICoKQEAgLTE2OCw2ICsxNzUsNyBAQCBFeGVjT3BlbkluZGljZXMoUmVzdWx0UmVsSW5mbyAqcmVz dWx0UmVsSW5mbywgYm9vbCBzcGVjdWxhdGl2ZSkKIAlJbmRleEluZm8gKippbmRleEluZm9BcnJh eTsKIAogCXJlc3VsdFJlbEluZm8tPnJpX051bUluZGljZXMgPSAwOworCXJlc3VsdFJlbGF0aW9u LT5yZF9pbmRleGluZm9saXN0ID0gTklMOwogCiAJLyogZmFzdCBwYXRoIGlmIG5vIGluZGV4ZXMg Ki8KIAlpZiAoIVJlbGF0aW9uR2V0Rm9ybShyZXN1bHRSZWxhdGlvbiktPnJlbGhhc2luZGV4KQpA QCAtMjEwLDYgKzIxOCwxMCBAQCBFeGVjT3BlbkluZGljZXMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0 UmVsSW5mbywgYm9vbCBzcGVjdWxhdGl2ZSkKIAkJLyogZXh0cmFjdCBpbmRleCBrZXkgaW5mb3Jt YXRpb24gZnJvbSB0aGUgaW5kZXgncyBwZ19pbmRleCBpbmZvICovCiAJCWlpID0gQnVpbGRJbmRl eEluZm8oaW5kZXhEZXNjKTsKIAorCQkvKiB1c2VkIHdoZW4gZGV0ZXJtaW5pbmcgaWYgaW5kZXhl ZCB2YWx1ZXMgY2hhbmdlZCBkdXJpbmcgdXBkYXRlICovCisJCXJlc3VsdFJlbGF0aW9uLT5yZF9p bmRleGluZm9saXN0ID0KKwkJCWxhcHBlbmQocmVzdWx0UmVsYXRpb24tPnJkX2luZGV4aW5mb2xp c3QsIGlpKTsKKwogCQkvKgogCQkgKiBJZiB0aGUgaW5kZXhlcyBhcmUgdG8gYmUgdXNlZCBmb3Ig c3BlY3VsYXRpdmUgaW5zZXJ0aW9uIG9yIGNvbmZsaWN0CiAJCSAqIGRldGVjdGlvbiBpbiBsb2dp Y2FsIHJlcGxpY2F0aW9uLCBhZGQgZXh0cmEgaW5mb3JtYXRpb24gcmVxdWlyZWQgYnkKQEAgLTEx NjYsMyArMTE3OCwyMTcgQEAgRXhlY1dpdGhvdXRPdmVybGFwc05vdEVtcHR5KFJlbGF0aW9uIHJl bCwgTmFtZURhdGEgYXR0bmFtZSwgRGF0dW0gYXR0dmFsLCBjaGFyIHQKIAkJCQkgZXJybXNnKCJl bXB0eSBXSVRIT1VUIE9WRVJMQVBTIHZhbHVlIGZvdW5kIGluIGNvbHVtbiBcIiVzXCIgaW4gcmVs YXRpb24gXCIlc1wiIiwKIAkJCQkJCU5hbWVTdHIoYXR0bmFtZSksIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbCkpKSk7CiB9CisKKy8qCisgKiBEZXRlcm1pbmUgd2hpY2ggaW5kZXhlcyBtdXN0 IGJlIGludm9rZWQgZHVyaW5nIEV4ZWNJbmRleEluc2VydFR1cGxlKCkuCisgKgorICogVGhhdCB3 aWxsIGluY2x1ZGU6IGFueSBpbmRleCBvbiBhIGNvbHVtbiB3aGVyZSB0aGVyZSBpcyBhbiBhdHRy aWJ1dGUgdGhhdCB3YXMKKyAqIG1vZGlmaWVkLCBhbnkgZXhwcmVzc2lvbiBpbmRleCB3aGVyZSB0 aGUgZXhwcmVzc2lvbidzIHZhbHVlIHVwZGF0ZWQsIGFueQorICogaW5kZXggdXNlZCBpbiBhIGNv bnN0cmFpbnQsIGFuZCBhbnkgc3VtbWFyaXppbmcgaW5kZXguCisgKi8KK0JpdG1hcHNldCAqCitF eGVjSW5kZXhlc1JlcXVpcmluZ1VwZGF0ZXMoUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkJQml0 bWFwc2V0ICptb2RpZmllZF9hdHRycywKKwkJCQkJCQlFU3RhdGUgKmVzdGF0ZSwKKwkJCQkJCQlI ZWFwVHVwbGUgb2xkX3R1cGxlLAorCQkJCQkJCUhlYXBUdXBsZSBuZXdfdHVwbGUsCisJCQkJCQkJ Ym9vbCAqb25seV9zdW1tYXJpemluZykKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKwlMaXN0CSAgICpp bmRleGluZm9saXN0ID0gcmVsYXRpb24tPnJkX2luZGV4aW5mb2xpc3Q7CisJRXhwckNvbnRleHQg KmVjb250ZXh0ID0gTlVMTDsKKwlpbnQJCQludW1fc3VtbWFyaXppbmcgPSAwOworCVR1cGxlRGVz Ywl0dXBsZWRlc2M7CisJVHVwbGVUYWJsZVNsb3QgKm9sZF90dHMsCisJCQkgICAqbmV3X3R0czsK KwlCaXRtYXBzZXQgICpyZXN1bHQgPSBOVUxMOworCisJLyoKKwkgKiBFeGFtaW5lIGVhY2ggaW5k ZXggb24gdGhpcyByZWxhdGlvbiByZWxhdGl2ZSB0byB0aGUgY2hhbmdlcyBiZXR3ZWVuIG9sZAor CSAqIGFuZCBuZXcgdHVwbGVzLgorCSAqLworCWZvcmVhY2gobGMsIGluZGV4aW5mb2xpc3QpCisJ eworCQlJbmRleEluZm8gICppbmRleEluZm8gPSAoSW5kZXhJbmZvICopIGxmaXJzdChsYyk7CisK KwkJLyoKKwkJICogU3VtbWFyaXppbmcgaW5kZXhlcyBkb24ndCBwcmV2ZW50IEhPVCB1cGRhdGVz LCBidXQgZG8gcmVxdWlyZSB0aGF0CisJCSAqIHRoZXkgYXJlIHVwZGF0ZWQgc28gd2UgaW5jbHVk ZSBpdCBpbiB0aGUgc2V0LgorCQkgKi8KKwkJaWYgKGluZGV4SW5mby0+aWlfU3VtbWFyaXppbmcp CisJCXsKKwkJCW51bV9zdW1tYXJpemluZysrOworCQkJcmVzdWx0ID0gYm1zX2FkZF9tZW1iZXIo cmVzdWx0LCBmb3JlYWNoX2N1cnJlbnRfaW5kZXgobGMpKTsKKwkJCWNvbnRpbnVlOworCQl9CisK KwkJLyoKKwkJICogSWYgdGhpcyBpcyBhIHBhcnRpYWwgaW5kZXggaXQgaGFzIGEgcHJlZGljYXRl LCBldmFsdWF0ZSB0aGUKKwkJICogZXhwcmVzc2lvbiB0byBkZXRlcm1pbmUgaWYgd2UgbmVlZCB0 byBpbmNsdWRlIGl0IG9yIG5vdC4KKwkJICovCisJCWlmIChlbmFibGVfZXhwcmVzc2lvbl9jaGVj a3MgJiYgZXN0YXRlICE9IE5VTEwgJiYKKwkJCWJtc19vdmVybGFwKGluZGV4SW5mby0+aWlfUHJl ZGljYXRlQXR0cnMsIG1vZGlmaWVkX2F0dHJzKSkKKwkJeworCQkJRXhwclN0YXRlICAqcHN0YXRl OworCQkJYm9vbAkJb2xkX3R1cGxlX3F1YWxpZmllcywKKwkJCQkJCW5ld190dXBsZV9xdWFsaWZp ZXM7CisKKwkJCS8qIENyZWF0ZSB0aGVzZSBvbmNlLCBvbmx5IGlmIG5lY2Vzc2FyeSwgdGhlbiBy ZXVzZSB0aGVtLiAqLworCQkJaWYgKCFlY29udGV4dCkKKwkJCXsKKwkJCQllY29udGV4dCA9IEdl dFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKKwkJCQl0dXBsZWRlc2MgPSBSZWxhdGlvbkdl dERlc2NyKHJlbGF0aW9uKTsKKwkJCQlvbGRfdHRzID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90 KHR1cGxlZGVzYywKKwkJCQkJCQkJCQkJCSAgICZUVFNPcHNIZWFwVHVwbGUpOworCQkJCW5ld190 dHMgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QodHVwbGVkZXNjLAorCQkJCQkJCQkJCQkJICAg JlRUU09wc0hlYXBUdXBsZSk7CisKKwkJCQlFeGVjU3RvcmVIZWFwVHVwbGUob2xkX3R1cGxlLCBv bGRfdHRzLCBJbnZhbGlkQnVmZmVyKTsKKwkJCQlFeGVjU3RvcmVIZWFwVHVwbGUobmV3X3R1cGxl LCBuZXdfdHRzLCBJbnZhbGlkQnVmZmVyKTsKKwkJCX0KKworCQkJcHN0YXRlID0gRXhlY1ByZXBh cmVRdWFsKGluZGV4SW5mby0+aWlfUHJlZGljYXRlLCBlc3RhdGUpOworCisJCQkvKgorCQkJICog SGVyZSB0aGUgdGVybSAicXVhbGlmaWVzIiBtZWFucyAic2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUK KwkJCSAqIGNvbmRpdGlvbiBvZiB0aGUgcGFydGlhbCBpbmRleCIuCisJCQkgKi8KKwkJCWVjb250 ZXh0LT5lY3h0X3NjYW50dXBsZSA9IG9sZF90dHM7CisJCQlvbGRfdHVwbGVfcXVhbGlmaWVzID0g RXhlY1F1YWwocHN0YXRlLCBlY29udGV4dCk7CisKKwkJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBs ZSA9IG5ld190dHM7CisJCQluZXdfdHVwbGVfcXVhbGlmaWVzID0gRXhlY1F1YWwocHN0YXRlLCBl Y29udGV4dCk7CisKKwkJCS8qCisJCQkgKiBJZiBuZWl0aGVyIHRoZSBvbGQgbm9yIHRoZSBuZXcg dHVwbGVzIHNhdGlzZnkgdGhlIHByZWRpY2F0ZSB3ZQorCQkJICogY2FuIGJlIHN1cmUgdGhhdCB0 aGlzIGluZGV4IGRvZXNuJ3QgbmVlZCB1cGRhdGluZywgY29udGludWUgdG8KKwkJCSAqIHRoZSBu ZXh0IGluZGV4LgorCQkJICovCisJCQlpZiAoKG5ld190dXBsZV9xdWFsaWZpZXMgPT0gZmFsc2Up ICYmIChvbGRfdHVwbGVfcXVhbGlmaWVzID09IGZhbHNlKSkKKwkJCQljb250aW51ZTsKKworCQkJ LyoKKwkJCSAqIElmIHRoZXJlIGlzIGEgdHJhbnNpdGlvbiBiZXR3ZWVuIGluZGV4ZWQgYW5kIG5v dCBpbmRleGVkLAorCQkJICogdGhhdCdzIGVub3VnaCB0byByZXF1aXJlIHRoYXQgdGhpcyBpbmRl eCBpcyB1cGRhdGVkLgorCQkJICovCisJCQlpZiAobmV3X3R1cGxlX3F1YWxpZmllcyAhPSBvbGRf dHVwbGVfcXVhbGlmaWVzKQorCQkJeworCQkJCXJlc3VsdCA9IGJtc19hZGRfbWVtYmVyKHJlc3Vs dCwgZm9yZWFjaF9jdXJyZW50X2luZGV4KGxjKSk7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJ CS8qCisJCQkgKiBPdGhlcndpc2UgdGhlIG9sZCBhbmQgbmV3IHZhbHVlcyBleGlzdCBpbiB0aGUg aW5kZXgsIGJ1dCBkaWQKKwkJCSAqIHRoZXkgZ2V0IHVwZGF0ZWQ/ICBXZSBkb24ndCB5ZXQga25v dywgc28gcHJvY2VlZCB3aXRoIHRoZSBuZXh0CisJCQkgKiBzdGF0ZW1lbnQgaW4gdGhlIGxvb3Ag dG8gZmluZCBvdXQuCisJCQkgKi8KKwkJfQorCisKKwkJLyoKKwkJICogSW5kZXhlcyB3aXRoIGV4 cHJlc3Npb25zIG1heSBvciBtYXkgbm90IGhhdmUgY2hhbmdlZCwgaXQgaXMKKwkJICogaW1wb3Nz aWJsZSB0byBrbm93IHdpdGhvdXQgZXhlcmNpc2luZyB0aGVpciBleHByZXNzaW9uIGFuZAorCQkg KiByZXZpZXdpbmcgaW5kZXggdHVwbGUgc3RhdGUgZm9yIGNoYW5nZXMuICBUaGlzIGlzIGEgbG90 IG9mIHdvcmssCisJCSAqIGJ1dCBiZWNhdXNlIGFsbCBpbmRleGVzIG9uIEpTT05CIGNvbHVtbnMg ZmFsbCBpbnRvIHRoaXMgY2F0ZWdvcnkgaXQKKwkJICogY2FuIGJlIHdvcnRoIGl0IHRvIGF2b2lk IGluZGV4IHVwZGF0ZXMgYW5kIHJlbWFpbiBvbiB0aGUgSE9UIHVwZGF0ZQorCQkgKiBwYXRoIHdo ZW4gcG9zc2libGUuCisJCSAqLworCQlpZiAoYm1zX292ZXJsYXAoaW5kZXhJbmZvLT5paV9FeHBy ZXNzaW9uQXR0cnMsIG1vZGlmaWVkX2F0dHJzKSkKKwkJeworCQkJRGF0dW0JCW9sZF92YWx1ZXNb SU5ERVhfTUFYX0tFWVNdOworCQkJYm9vbAkJb2xkX2lzbnVsbFtJTkRFWF9NQVhfS0VZU107CisJ CQlEYXR1bQkJbmV3X3ZhbHVlc1tJTkRFWF9NQVhfS0VZU107CisJCQlib29sCQluZXdfaXNudWxs W0lOREVYX01BWF9LRVlTXTsKKwkJCWJvb2wJCWNoYW5nZWQgPSBmYWxzZTsKKworCQkJLyoKKwkJ CSAqIEFzc3VtZSB0aGUgaW5kZXggaXMgY2hhbmdlZCB3aGVuIHdlIGRvbid0IGhhdmUgYW4gZXN0 YXRlCisJCQkgKiBjb250ZXh0IHRvIHVzZSBvciB0aGUgR1VDIGlzIGRpc2FibGVkLgorCQkJICov CisJCQlpZiAoIWVuYWJsZV9leHByZXNzaW9uX2NoZWNrcyB8fCBlc3RhdGUgPT0gTlVMTCkKKwkJ CXsKKwkJCQlyZXN1bHQgPSBibXNfYWRkX21lbWJlcihyZXN1bHQsIGZvcmVhY2hfY3VycmVudF9p bmRleChsYykpOworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQkvKiBDcmVhdGUgdGhlc2Ugb25j ZSwgb25seSBpZiBuZWNlc3NhcnksIHRoZW4gcmV1c2UgdGhlbS4gKi8KKwkJCWlmICghZWNvbnRl eHQpCisJCQl7CisJCQkJZWNvbnRleHQgPSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7 CisJCQkJdHVwbGVkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbik7CisJCQkJb2xkX3R0 cyA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdCh0dXBsZWRlc2MsCisJCQkJCQkJCQkJCQkgICAm VFRTT3BzSGVhcFR1cGxlKTsKKwkJCQluZXdfdHRzID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90 KHR1cGxlZGVzYywKKwkJCQkJCQkJCQkJCSAgICZUVFNPcHNIZWFwVHVwbGUpOworCisJCQkJRXhl Y1N0b3JlSGVhcFR1cGxlKG9sZF90dXBsZSwgb2xkX3R0cywgSW52YWxpZEJ1ZmZlcik7CisJCQkJ RXhlY1N0b3JlSGVhcFR1cGxlKG5ld190dXBsZSwgbmV3X3R0cywgSW52YWxpZEJ1ZmZlcik7CisJ CQl9CisKKwkJCWluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNTdGF0ZSA9IE5JTDsKKworCQkJZWNv bnRleHQtPmVjeHRfc2NhbnR1cGxlID0gb2xkX3R0czsKKwkJCUZvcm1JbmRleERhdHVtKGluZGV4 SW5mbywKKwkJCQkJCSAgIG9sZF90dHMsCisJCQkJCQkgICBlc3RhdGUsCisJCQkJCQkgICBvbGRf dmFsdWVzLAorCQkJCQkJICAgb2xkX2lzbnVsbCk7CisKKwkJCWVjb250ZXh0LT5lY3h0X3NjYW50 dXBsZSA9IG5ld190dHM7CisJCQlGb3JtSW5kZXhEYXR1bShpbmRleEluZm8sCisJCQkJCQkgICBu ZXdfdHRzLAorCQkJCQkJICAgZXN0YXRlLAorCQkJCQkJICAgbmV3X3ZhbHVlcywKKwkJCQkJCSAg IG5ld19pc251bGwpOworCisJCQlmb3IgKGludCBpID0gMDsgaSA8IGluZGV4SW5mby0+aWlfTnVt SW5kZXhLZXlBdHRyczsgaSsrKQorCQkJeworCQkJCWlmIChvbGRfaXNudWxsW2ldICE9IG5ld19p c251bGxbaV0pCisJCQkJeworCQkJCQljaGFuZ2VkID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJ fQorCQkJCWVsc2UgaWYgKCFvbGRfaXNudWxsW2ldKQorCQkJCXsKKwkJCQkJaW50MTYJCWVsbWxl bjsKKwkJCQkJYm9vbAkJZWxtYnl2YWw7CisJCQkJCU9pZAkJCW9wY2ludHlwID0gaW5kZXhJbmZv LT5paV9PcENsYXNzRGF0YVR5cGVzW2ldOworCisJCQkJCWdldF90eXBsZW5ieXZhbChvcGNpbnR5 cCwgJmVsbWxlbiwgJmVsbWJ5dmFsKTsKKwkJCQkJaWYgKCFkYXR1bV9pbWFnZV9lcShvbGRfdmFs dWVzW2ldLCBuZXdfdmFsdWVzW2ldLAorCQkJCQkJCQkJCWVsbWJ5dmFsLCBlbG1sZW4pKQorCQkJ CQl7CisJCQkJCQljaGFuZ2VkID0gdHJ1ZTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQor CQkJfQorCisJCQlpZiAoY2hhbmdlZCkKKwkJCQlyZXN1bHQgPSBibXNfYWRkX21lbWJlcihyZXN1 bHQsIGZvcmVhY2hfY3VycmVudF9pbmRleChsYykpOworCisJCQkvKiBTaG9ydGN1dCBpbmRleF91 bmNoYW5nZWRfYnlfdXBkYXRlKCksIHdlIGtub3cgdGhlIGFuc3dlci4gKi8KKwkJCWluZGV4SW5m by0+aWlfQ2hlY2tlZFVuY2hhbmdlZCA9IHRydWU7CisJCQlpbmRleEluZm8tPmlpX0luZGV4VW5j aGFuZ2VkID0gIWNoYW5nZWQ7CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qCisJCSAqIElmIHRo ZSBpbmRleCByZWZlcmVuY2VzIG1vZGlmaWVkIGF0dHJpYnV0ZXMgdGhlbiBpdCBuZWVkcyB0byBi ZQorCQkgKiB1cGRhdGVkLgorCQkgKi8KKwkJaWYgKGJtc19vdmVybGFwKGluZGV4SW5mby0+aWlf SW5kZXhBdHRycywgbW9kaWZpZWRfYXR0cnMpKQorCQkJcmVzdWx0ID0gYm1zX2FkZF9tZW1iZXIo cmVzdWx0LCBmb3JlYWNoX2N1cnJlbnRfaW5kZXgobGMpKTsKKwl9CisKKwlpZiAoZWNvbnRleHQp CisJeworCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KG9sZF90dHMpOworCQlFeGVjRHJv cFNpbmdsZVR1cGxlVGFibGVTbG90KG5ld190dHMpOworCX0KKworCSpvbmx5X3N1bW1hcml6aW5n ID0gKGxpc3RfbGVuZ3RoKGluZGV4aW5mb2xpc3QpID4gMCAmJgorCQkJCQkJIG51bV9zdW1tYXJp emluZyA9PSBsaXN0X2xlbmd0aChpbmRleGluZm9saXN0KSk7CisKKwlyZXR1cm4gcmVzdWx0Owor fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCBiYzgyZTAzNWJhLi44 OTIxODAxOWMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFi bGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtMjI2 Niw3ICsyMjY2LDggQEAgbHJlcGxhY2U6CiAJCQkJCQkJCWVzdGF0ZS0+ZXNfY3Jvc3NjaGVja19z bmFwc2hvdCwKIAkJCQkJCQkJdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAogCQkJCQkJCQkm Y29udGV4dC0+dG1mZCwgJnVwZGF0ZUN4dC0+bG9ja21vZGUsCi0JCQkJCQkJCSZ1cGRhdGVDeHQt PnVwZGF0ZUluZGV4ZXMpOworCQkJCQkJCQkmdXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzLAorCQkJ CQkJCQllc3RhdGUpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMKaW5kZXggMzhjYjllOTcwZC4uMWYzZWIwY2FhMSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9ndWNfdGFibGVzLmMKQEAgLTEwMDcsNiArMTAwNywxOSBAQCBzdHJ1Y3QgY29uZmlnX2Jvb2wg Q29uZmlndXJlTmFtZXNCb29sW10gPQogCQl0cnVlLAogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwK Kwl7CisJCXsiZW5hYmxlX2V4cHJlc3Npb25fY2hlY2tzIiwgUEdDX1VTRVJTRVQsIFFVRVJZX1RV TklOR19NRVRIT0QsCisJCQlnZXR0ZXh0X25vb3AoIkVuYWJsZXMgdGhlIGFiaWxpdHkgdG8gZXhh bWluZSBleHByZXNzaW9uIGFuZCBwYXJ0aWFsIGluZGV4ZXMgIgorCQkJCQkJICJmb3IgY2hhbmdl cyBkdXJpbmcgdXBkYXRlcy4iKSwKKwkJCWdldHRleHRfbm9vcCgiRXZhbHVhdGVzIHRoZSBleHBy ZXNzaW9ucyBvbiB0aGUgaW5kZXggdG8gZGV0ZXJtaW5lIGlmICIKKwkJCQkJCSAidGhlIGluZGV4 ZWQgdmFsdWVzIGNoYW5nZWQuICBUaGlzIGFsbG93cyBmb3IgaGVhcC1vbmx5ICIKKwkJCQkJCSAi dHVwbGUgKEhPVCkgdXBkYXRlcyB3aGVuIGluZGV4ZXMgaGF2ZSBub3QgY2hhbmdlZC4iKSwKKwkJ CUdVQ19FWFBMQUlOCisJCX0sCisJCSZlbmFibGVfZXhwcmVzc2lvbl9jaGVja3MsCisJCXRydWUs CisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAogCXsKIAkJeyJnZXFvIiwgUEdDX1VTRVJTRVQsIFFV RVJZX1RVTklOR19HRVFPLAogCQkJZ2V0dGV4dF9ub29wKCJFbmFibGVzIGdlbmV0aWMgcXVlcnkg b3B0aW1pemF0aW9uLiIpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0 Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNv bmYuc2FtcGxlCmluZGV4IDA3OWVmYTFiYWEuLjYxYWIxYmI1OWIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTQwOCw2ICs0MDgsNyBAQAog I2VuYWJsZV90aWRzY2FuID0gb24KICNlbmFibGVfZ3JvdXBfYnlfcmVvcmRlcmluZyA9IG9uCiAj ZW5hYmxlX2Rpc3RpbmN0X3Jlb3JkZXJpbmcgPSBvbgorI2VuYWJsZV9leHByZXNzaW9uX2NoZWNr cyA9IG9uCiAKICMgLSBQbGFubmVyIENvc3QgQ29uc3RhbnRzIC0KIApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmlu ZGV4IDE2NDBkOWMzMmYuLmUxMmRhMTkzNGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTIxLDYgKzIx LDcgQEAKICNpbmNsdWRlICJhY2Nlc3Mvc2tleS5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5o IgkJLyogZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKi8KICNpbmNsdWRlICJhY2Nlc3MvdGFi bGVhbS5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAibm9kZXMv bG9ja29wdGlvbnMuaCIKICNpbmNsdWRlICJub2Rlcy9wcmltbm9kZXMuaCIKICNpbmNsdWRlICJz dG9yYWdlL2J1ZnBhZ2UuaCIKQEAgLTMzOSw3ICszNDAsNyBAQCBleHRlcm4gVE1fUmVzdWx0IGhl YXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJCSBI ZWFwVHVwbGUgbmV3dHVwLAogCQkJCQkJCSBDb21tYW5kSWQgY2lkLCBTbmFwc2hvdCBjcm9zc2No ZWNrLCBib29sIHdhaXQsCiAJCQkJCQkJIHN0cnVjdCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9j a1R1cGxlTW9kZSAqbG9ja21vZGUsCi0JCQkJCQkJIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9p bmRleGVzKTsKKwkJCQkJCQkgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMsIHN0cnVj dCBFU3RhdGUgKmVzdGF0ZSk7CiBleHRlcm4gVE1fUmVzdWx0IGhlYXBfbG9ja190dXBsZShSZWxh dGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cGxlLAogCQkJCQkJCQkgQ29tbWFuZElkIGNpZCwg TG9ja1R1cGxlTW9kZSBtb2RlLCBMb2NrV2FpdFBvbGljeSB3YWl0X3BvbGljeSwKIAkJCQkJCQkJ IGJvb2wgZm9sbG93X3VwZGF0ZXMsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFi bGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCAxMzFjMDUwYzE1Li42 MmVkNjU5MmI4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTM4LDYgKzM4LDcgQEAgc3RydWN0IElu ZGV4SW5mbzsKIHN0cnVjdCBTYW1wbGVTY2FuU3RhdGU7CiBzdHJ1Y3QgVmFjdXVtUGFyYW1zOwog c3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZTsKK3N0cnVjdCBFU3RhdGU7CiAKIC8qCiAgKiBCaXRt YXNrIHZhbHVlcyBmb3IgdGhlIGZsYWdzIGFyZ3VtZW50IHRvIHRoZSBzY2FuX2JlZ2luIGNhbGxi YWNrLgpAQCAtNTUwLDcgKzU1MSw4IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJ CQkJCQkJCSBib29sIHdhaXQsCiAJCQkJCQkJCSBUTV9GYWlsdXJlRGF0YSAqdG1mZCwKIAkJCQkJ CQkJIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAotCQkJCQkJCQkgVFVfVXBkYXRlSW5kZXhlcyAq dXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCQkgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4 ZXMsCisJCQkJCQkJCSBzdHJ1Y3QgRVN0YXRlICplc3RhdGUpOwogCiAJLyogc2VlIHRhYmxlX3R1 cGxlX2xvY2soKSBmb3IgcmVmZXJlbmNlIGFib3V0IHBhcmFtZXRlcnMgKi8KIAlUTV9SZXN1bHQJ KCp0dXBsZV9sb2NrKSAoUmVsYXRpb24gcmVsLApAQCAtMTU0MSwxMiArMTU0MywxMiBAQCBzdGF0 aWMgaW5saW5lIFRNX1Jlc3VsdAogdGFibGVfdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRl bVBvaW50ZXIgb3RpZCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJICAgQ29tbWFuZElkIGNp ZCwgU25hcHNob3Qgc25hcHNob3QsIFNuYXBzaG90IGNyb3NzY2hlY2ssCiAJCQkJICAgYm9vbCB3 YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCi0JCQkJ ICAgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpCisJCQkJICAgVFVfVXBkYXRlSW5k ZXhlcyAqdXBkYXRlX2luZGV4ZXMsIHN0cnVjdCBFU3RhdGUgKmVzdGF0ZSkKIHsKIAlyZXR1cm4g cmVsLT5yZF90YWJsZWFtLT50dXBsZV91cGRhdGUocmVsLCBvdGlkLCBzbG90LAogCQkJCQkJCQkJ CSBjaWQsIHNuYXBzaG90LCBjcm9zc2NoZWNrLAotCQkJCQkJCQkJCSB3YWl0LCB0bWZkLAotCQkJ CQkJCQkJCSBsb2NrbW9kZSwgdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCQkJCSB3YWl0LCB0bWZk LCBsb2NrbW9kZSwKKwkJCQkJCQkJCQkgdXBkYXRlX2luZGV4ZXMsIGVzdGF0ZSk7CiB9CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCBjN2RiNmRlZmQzLi5mOWM3YTU0NWFmIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTY2MCw2ICs2NjAsMTIgQEAgZXh0ZXJuIHZvaWQgY2hl Y2tfZXhjbHVzaW9uX2NvbnN0cmFpbnQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJ CQkJCQkJCQkgICBJdGVtUG9pbnRlciB0dXBsZWlkLAogCQkJCQkJCQkJICAgY29uc3QgRGF0dW0g KnZhbHVlcywgY29uc3QgYm9vbCAqaXNudWxsLAogCQkJCQkJCQkJICAgRVN0YXRlICplc3RhdGUs IGJvb2wgbmV3SW5kZXgpOworZXh0ZXJuIEJpdG1hcHNldCAqRXhlY0luZGV4ZXNSZXF1aXJpbmdV cGRhdGVzKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCQkJCQkgIEJpdG1hcHNldCAqbW9kaWZp ZWRfYXR0cnMsCisJCQkJCQkJCQkJCSAgRVN0YXRlICplc3RhdGUsCisJCQkJCQkJCQkJCSAgSGVh cFR1cGxlIG9sZF90dXBsZSwKKwkJCQkJCQkJCQkJICBIZWFwVHVwbGUgbmV3X3R1cGxlLAorCQkJ CQkJCQkJCQkgIGJvb2wgKm9ubHlfc3VtbWFyaXppbmcpOwogCiAvKgogICogcHJvdG90eXBlcyBm cm9tIGZ1bmN0aW9ucyBpbiBleGVjUmVwbGljYXRpb24uYwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRl eCBkMGYyZGNhNTkyLi45ZmU2Y2E2Y2E1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTU5LDEy ICsxNTksMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwclN0YXRlCiAgKgogICoJCU51bUluZGV4QXR0 cnMJCXRvdGFsIG51bWJlciBvZiBjb2x1bW5zIGluIHRoaXMgaW5kZXgKICAqCQlOdW1JbmRleEtl eUF0dHJzCW51bWJlciBvZiBrZXkgY29sdW1ucyBpbiBpbmRleAorICoJCUluZGV4QXR0cnMJCQli aXRtYXAgb2YgaW5kZXggYXR0cmlidXRlcwogICoJCUluZGV4QXR0ck51bWJlcnMJdW5kZXJseWlu Zy1yZWwgYXR0cmlidXRlIG51bWJlcnMgdXNlZCBhcyBrZXlzCiAgKgkJCQkJCQkoemVyb2VzIGlu ZGljYXRlIGV4cHJlc3Npb25zKS4gSXQgYWxzbyBjb250YWlucwogICogCQkJCQkJCWluZm8gYWJv dXQgaW5jbHVkZWQgY29sdW1ucy4KICAqCQlFeHByZXNzaW9ucwkJCWV4cHIgdHJlZXMgZm9yIGV4 cHJlc3Npb24gZW50cmllcywgb3IgTklMIGlmIG5vbmUKKyAqCQlFeHByZXNzaW9uQXR0cnMJCWJp dG1hcCBvZiBhdHRyaWJ1dGVzIHVzZWQgd2l0aGluIHRoZSBleHByZXNzaW9uCiAgKgkJRXhwcmVz c2lvbnNTdGF0ZQlleGVjIHN0YXRlIGZvciBleHByZXNzaW9ucywgb3IgTklMIGlmIG5vbmUKICAq CQlQcmVkaWNhdGUJCQlwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZSwgb3IgTklMIGlmIG5vbmUKKyAq CQlQcmVkaWNhdGVBdHRycwkJYml0bWFwIG9mIGF0dHJpYnV0ZXMgdXNlZCB3aXRoaW4gdGhlIHBy ZWRpY2F0ZQogICoJCVByZWRpY2F0ZVN0YXRlCQlleGVjIHN0YXRlIGZvciBwcmVkaWNhdGUsIG9y IE5JTCBpZiBub25lCiAgKgkJRXhjbHVzaW9uT3BzCQlQZXItY29sdW1uIGV4Y2x1c2lvbiBvcGVy YXRvcnMsIG9yIE5VTEwgaWYgbm9uZQogICoJCUV4Y2x1c2lvblByb2NzCQlVbmRlcmx5aW5nIGZ1 bmN0aW9uIE9JRHMgZm9yIEV4Y2x1c2lvbk9wcwpAQCAtMTgzLDYgKzE4Niw3IEBAIHR5cGVkZWYg c3RydWN0IEV4cHJTdGF0ZQogICoJCVBhcmFsbGVsV29ya2VycwkJIyBvZiB3b3JrZXJzIHJlcXVl c3RlZCAoZXhjbHVkZXMgbGVhZGVyKQogICoJCUFtCQkJCQlPaWQgb2YgaW5kZXggQU0KICAqCQlB bUNhY2hlCQkJCXByaXZhdGUgY2FjaGUgYXJlYSBmb3IgaW5kZXggQU0KKyAqCQlPcENsYXNzRGF0 YVR5cGVzCW9wZXJhdG9yIGNsYXNzIGRhdGEgdHlwZXMKICAqCQlDb250ZXh0CQkJCW1lbW9yeSBj b250ZXh0IGhvbGRpbmcgdGhpcyBJbmRleEluZm8KICAqCiAgKiBpaV9Db25jdXJyZW50LCBpaV9C cm9rZW5Ib3RDaGFpbiwgYW5kIGlpX1BhcmFsbGVsV29ya2VycyBhcmUgdXNlZCBvbmx5CkBAIC0x OTQsMTAgKzE5OCwxMyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8KIAlOb2RlVGFnCQl0eXBl OwogCWludAkJCWlpX051bUluZGV4QXR0cnM7CS8qIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIGlu IGluZGV4ICovCiAJaW50CQkJaWlfTnVtSW5kZXhLZXlBdHRyczsJLyogbnVtYmVyIG9mIGtleSBj b2x1bW5zIGluIGluZGV4ICovCisJQml0bWFwc2V0ICAqaWlfSW5kZXhBdHRyczsKIAlBdHRyTnVt YmVyCWlpX0luZGV4QXR0ck51bWJlcnNbSU5ERVhfTUFYX0tFWVNdOwogCUxpc3QJICAgKmlpX0V4 cHJlc3Npb25zOyAvKiBsaXN0IG9mIEV4cHIgKi8KKwlCaXRtYXBzZXQgICppaV9FeHByZXNzaW9u QXR0cnM7CiAJTGlzdAkgICAqaWlfRXhwcmVzc2lvbnNTdGF0ZTsJLyogbGlzdCBvZiBFeHByU3Rh dGUgKi8KIAlMaXN0CSAgICppaV9QcmVkaWNhdGU7CS8qIGxpc3Qgb2YgRXhwciAqLworCUJpdG1h cHNldCAgKmlpX1ByZWRpY2F0ZUF0dHJzOwogCUV4cHJTdGF0ZSAgKmlpX1ByZWRpY2F0ZVN0YXRl OwogCU9pZAkJICAgKmlpX0V4Y2x1c2lvbk9wczsJLyogYXJyYXkgd2l0aCBvbmUgZW50cnkgcGVy IGNvbHVtbiAqLwogCU9pZAkJICAgKmlpX0V4Y2x1c2lvblByb2NzOwkvKiBhcnJheSB3aXRoIG9u ZSBlbnRyeSBwZXIgY29sdW1uICovCkBAIC0yMTcsNiArMjI0LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg SW5kZXhJbmZvCiAJaW50CQkJaWlfUGFyYWxsZWxXb3JrZXJzOwogCU9pZAkJCWlpX0FtOwogCXZv aWQJICAgKmlpX0FtQ2FjaGU7CisJT2lkCQkgICAqaWlfT3BDbGFzc0RhdGFUeXBlczsKIAlNZW1v cnlDb250ZXh0IGlpX0NvbnRleHQ7CiB9IEluZGV4SW5mbzsKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGlt aXplci5oCmluZGV4IGJjZjhlZDY0NWMuLmY5ODc3NGU5NDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL29wdGltaXplci9vcHRpbWl6ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0 aW1pemVyLmgKQEAgLTExMiw2ICsxMTIsNyBAQCB0eXBlZGVmIGVudW0KIGV4dGVybiBQR0RMTElN UE9SVCBpbnQgZGVidWdfcGFyYWxsZWxfcXVlcnk7CiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBw YXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbjsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGVu YWJsZV9kaXN0aW5jdF9yZW9yZGVyaW5nOworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxl X2V4cHJlc3Npb25fY2hlY2tzOwogCiBleHRlcm4gc3RydWN0IFBsYW5uZWRTdG10ICpwbGFubmVy KFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLAogCQkJCQkJCQkgICBpbnQg Y3Vyc29yT3B0aW9ucywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIvc3Jj L2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXggMzNkMWU0YTRlMi4uMTliN2U2M2I4NiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVs LmgKQEAgLTE1NCw2ICsxNTQsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVsYXRpb25EYXRhCiAJYm9v bAkJcmRfaXNwa2RlZmVycmFibGU7CS8qIGlzIHJkX3BraW5kZXggYSBkZWZlcnJhYmxlIFBLPyAq LwogCU9pZAkJCXJkX3JlcGxpZGluZGV4OyAvKiBPSUQgb2YgcmVwbGljYSBpZGVudGl0eSBpbmRl eCwgaWYgYW55ICovCiAKKwkvKiBsaXN0IG9mIEluZGV4SW5mbyBmb3IgdGhpcyByZWxhdGlvbiAq LworCUxpc3QJICAgKnJkX2luZGV4aW5mb2xpc3Q7CS8qIGFuIG9yZGVyZWQgbGlzdCBvZiBJbmRl eEluZm8gZm9yCisJCQkJCQkJCQkgKiBpbmRleGVzIG9uIHJlbGF0aW9uICovCisKIAkvKiBkYXRh IG1hbmFnZWQgYnkgUmVsYXRpb25HZXRTdGF0RXh0TGlzdDogKi8KIAlMaXN0CSAgICpyZF9zdGF0 bGlzdDsJLyogbGlzdCBvZiBPSURzIG9mIGV4dGVuZGVkIHN0YXRzICovCiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNo ZS5oCmluZGV4IGE3YzU1ZGIzMzkuLjBjYzI4Y2I5N2UgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3V0aWxzL3JlbGNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaApAQCAt NjMsNiArNjMsNyBAQCB0eXBlZGVmIGVudW0gSW5kZXhBdHRyQml0bWFwS2luZAogCUlOREVYX0FU VFJfQklUTUFQX0lERU5USVRZX0tFWSwKIAlJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcs CiAJSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCwKKwlJTkRFWF9BVFRSX0JJVE1BUF9FWFBS RVNTSU9OLAogfSBJbmRleEF0dHJCaXRtYXBLaW5kOwogCiBleHRlcm4gQml0bWFwc2V0ICpSZWxh dGlvbkdldEluZGV4QXR0ckJpdG1hcChSZWxhdGlvbiByZWxhdGlvbiwKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaGVhcF9ob3RfdXBkYXRlcy5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2hlYXBfaG90X3VwZGF0ZXMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjE3N2M2MTA5ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2hlYXBfaG90X3VwZGF0ZXMub3V0CkBAIC0wLDAgKzEsMzE4IEBA CitTSE9XIGVuYWJsZV9leHByZXNzaW9uX2NoZWNrczsKKyBlbmFibGVfZXhwcmVzc2lvbl9jaGVj a3MgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIG9uCisoMSByb3cpCisKKy0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tCistLSBUaGlzIHRhYmxlIHdpbGwgaGF2ZSB0d28gY29sdW1ucyBhbmQgdHdv IGluZGV4ZXMsIG9uZSBvbiB0aGUgcHJpbWFyeSBrZXkKKy0tIGlkIGFuZCBvbmUgb24gdGhlIGV4 cHJlc3Npb24gKGluZm8tPj4nbmFtZScpLiAgVGhhdCBtZWFucyB0aGF0IHRoZSBpbmRleGVkCist LSBhdHRyaWJ1dGVzIGFyZSAnaWQnIGFuZCAnaW5mbycuCitjcmVhdGUgdGFibGUga2V5dmFsdWUo aWQgaW50ZWdlciBwcmltYXJ5IGtleSwgaW5mbyBqc29uYik7CitjcmVhdGUgaW5kZXggbmFtZWlu ZGV4IG9uIGtleXZhbHVlKChpbmZvLT4+J25hbWUnKSk7CitpbnNlcnQgaW50byBrZXl2YWx1ZSB2 YWx1ZXMgKDEsICd7Im5hbWUiOiAiam9obiIsICJkYXRhIjogInNvbWUgZGF0YSJ9Jyk7CistLSBE aXNhYmxlIHRoZSBHVUMgdGhhdCBhbGxvd3MgdXMgdG8gc2tpcCBleHByZXNzaW9uIGNoZWNrcy4K K1NFVCBlbmFibGVfZXhwcmVzc2lvbl9jaGVja3MgPSAnb2ZmJzsKKy0tIFRoZSBpbmRleGVkIGF0 dHJpYnV0ZSAibmFtZSIgd2l0aCB2YWx1ZSAiam9obiIgaXMgdW5jaGFuZ2VkLCBkb24ndCBleHBl Y3QgYSBIT1QgdXBkYXRlLgordXBkYXRlIGtleXZhbHVlIHNldCBpbmZvPSd7Im5hbWUiOiAiam9o biIsICJkYXRhIjogInNvbWV0aGluZyBlbHNlIn0nIHdoZXJlIGlkPTE7CitzZWxlY3QgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xhc3MpOyAtLSBl eHBlY3Q6IDAgcm93CisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDAKKygxIHJvdykKKworLS0gUmUtZW5hYmxlIHRoZSBHVUMgc28gdGhhdCB3 ZSBkb24ndCBza2lwIGV4cHJlc3Npb24gY2hlY2tzLgorU0VUIGVuYWJsZV9leHByZXNzaW9uX2No ZWNrcyA9ICdvbic7CistLSBUaGUgaW5kZXhlZCBhdHRyaWJ1dGUgIm5hbWUiIHdpdGggdmFsdWUg ImpvaG4iIGlzIHVuY2hhbmdlZCwgZXhwZWN0IGEgSE9UIHVwZGF0ZS4KK3VwZGF0ZSBrZXl2YWx1 ZSBzZXQgaW5mbz0neyJuYW1lIjogImpvaG4iLCAiZGF0YSI6ICJzb21lIG90aGVyIGRhdGEifScg d2hlcmUgaWQ9MTsKK3NlbGVjdCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgn a2V5dmFsdWUnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSByb3cKKyBwZ19zdGF0X2dldF94YWN0 X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCistLSBU aGUgZm9sbG93aW5nIHVwZGF0ZSBjaGFuZ2VzIHRoZSBpbmRleGVkIGF0dHJpYnV0ZSAibmFtZSIs IHRoaXMgc2hvdWxkIG5vdCBiZSBhIEhPVCB1cGRhdGUuCit1cGRhdGUga2V5dmFsdWUgc2V0IGlu Zm89J3sibmFtZSI6ICJzbWl0aCIsICJkYXRhIjogInNvbWUgb3RoZXIgZGF0YSJ9JyB3aGVyZSBp ZD0xOworc2VsZWN0IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdrZXl2YWx1 ZSc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIHJvdywgbm8gbmV3IEhPVCB1cGRhdGVzCisgcGdf c3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKKygx IHJvdykKKworLS0gTm93LCB0aGlzIHVwZGF0ZSBkb2VzIG5vdCBjaGFuZ2UgdGhlIGluZGV4ZWQg YXR0cmlidXRlICJuYW1lIiBmcm9tICJzbWl0aCIsIHRoaXMgc2hvdWxkIGJlIEhPVC4KK3VwZGF0 ZSBrZXl2YWx1ZSBzZXQgaW5mbz0neyJuYW1lIjogInNtaXRoIiwgImRhdGEiOiAic29tZSBtb3Jl IGRhdGEifScgd2hlcmUgaWQ9MTsKK3NlbGVjdCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3Rf dXBkYXRlZCgna2V5dmFsdWUnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMiByb3dzIG5vdworIHBn X3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCiso MSByb3cpCisKK2Ryb3AgdGFibGUga2V5dmFsdWU7CistLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLQorLS0g VGhpcyB0YWJsZSBpcyB0aGUgc2FtZSBhcyB0aGUgcHJldmlvdXMgb25lIGJ1dCBpdCBoYXMgYSB0 aGlyZCBpbmRleC4gIFRoZQorLS0gaW5kZXggJ2NvbGluZGV4JyBpc24ndCBhbiBleHByZXNzaW9u IGluZGV4LCBpdCBpbmRleGVzIHRoZSBlbnRpcmUgdmFsdWUKKy0tIGluIHRoZSBpbmZvIGNvbHVt bi4gIFRoZXJlIGFyZSBzdGlsbCBvbmx5IHR3byBpbmRleGVkIGF0dHJpYnV0ZXMgZm9yIHRoaXMK Ky0tIHJlbGF0aW9uLCB0aGUgc2FtZSB0d28gYXMgYmVmb3JlLiAgVGhlIHByZXNlbmNlIG9mIGFu IGluZGV4IG9uIHRoZSBlbnRpcmUKKy0tIHZhbHVlIG9mIHRoZSBpbmZvIGNvbHVtbiBzaG91bGQg cHJldmVudCBIT1QgdXBkYXRlcyBmb3IgYW55IHVwZGF0ZXMgdG8gYW55CistLSBwb3J0aW9uIG9m IEpTT05CIGNvbnRlbnQgaW4gdGhhdCBjb2x1bW4uCitjcmVhdGUgdGFibGUga2V5dmFsdWUoaWQg aW50ZWdlciBwcmltYXJ5IGtleSwgaW5mbyBqc29uYik7CitjcmVhdGUgaW5kZXggbmFtZWluZGV4 IG9uIGtleXZhbHVlKChpbmZvLT4+J25hbWUnKSk7CitjcmVhdGUgaW5kZXggY29saW5kZXggb24g a2V5dmFsdWUoaW5mbyk7CitpbnNlcnQgaW50byBrZXl2YWx1ZSB2YWx1ZXMgKDEsICd7Im5hbWUi OiAiam9obiIsICJkYXRhIjogInNvbWUgZGF0YSJ9Jyk7CistLSBUaGlzIHVwZGF0ZSBkb2Vzbid0 IGNoYW5nZSB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaW5kZXgsIGJ1dCBpdCBkb2VzCist LSBjaGFuZ2UgdGhlIGNvbnRlbnQgb2YgdGhlIGluZm8gY29sdW1uIGFuZCBzbyBzaG91bGQgbm90 IGJlIEhPVCBiZWNhdXNlIHRoZQorLS0gaW5kZXhlZCB2YWx1ZSBjaGFuZ2VkIGFzIGEgcmVzdWx0 IG9mIHRoZSB1cGRhdGUuCit1cGRhdGUga2V5dmFsdWUgc2V0IGluZm89J3sibmFtZSI6ICJqb2hu IiwgImRhdGEiOiAic29tZSBvdGhlciBkYXRhIn0nIHdoZXJlIGlkPTE7CitzZWxlY3QgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xhc3MpOyAtLSBl eHBlY3Q6IDAgcm93cworIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAwCisoMSByb3cpCisKK2Ryb3AgdGFibGUga2V5dmFsdWU7CistLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLQorLS0gVGhlIHRhYmxlIGhhcyBvbmUgY29sdW1uIF92IGFuZCB0d28gaW5k ZXhlcy4gIFRoZXkgYXJlIGJvdGggZXhwcmVzc2lvbgorLS0gaW5kZXhlcyByZWZlcmVuY2luZyB0 aGUgc2FtZSBjb2x1bW4gYXR0cmlidXRlIChfdikgYnV0IG9uZSBpcyBhIHBhcnRpYWwKKy0tIGlu ZGV4LgorQ1JFQVRFIFRBQkxFIHB1YmxpYy5leCAoX3YgSlNPTkIpIFdJVEggKGZpbGxmYWN0b3Ig PSA2MCk7CitJTlNFUlQgSU5UTyBleCAoX3YpIFZBTFVFUyAoJ3siYSI6IDAsICJiIjogMH0nKTsK K0lOU0VSVCBJTlRPIGV4IChfdikgU0VMRUNUIGpzb25iX2J1aWxkX29iamVjdCgnYicsIG4pIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEwMCwgMTAwMDApIGFzIG47CitDUkVBVEUgSU5ERVggaWR4X2V4 X2EgT04gZXggKChfdi0+PidhJykpOworQ1JFQVRFIElOREVYIGlkeF9leF9iIE9OIGV4ICgoX3Yt Pj4nYicpKSBXSEVSRSAoX3YtPj4nYicpOjpudW1lcmljID4gOTsKKy0tIFdlJ3JlIHVzaW5nIEJU UkVFIGluZGV4ZXMgYW5kIGZvciB0aGlzIHRlc3Qgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB0 aGV5IHJlbWFpbgorLS0gaW4gc3luYyB3aXRoIGNoYW5nZXMgdG8gb3VyIHJlbGF0aW9uLiAgRm9y Y2UgdGhlIGNob2ljZSBvZiBpbmRleCBzY2FucyBiZWxvdyBzbworLS0gdGhhdCB3ZSBrbm93IHdl J3JlIGNoZWNraW5nIHRoZSBpbmRleCdzIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB2YWx1ZXMgc2hv dWxkIGJlCistLSBpbiB0aGUgaW5kZXggb3Igbm90LgorU0VUIFNFU1NJT04gZW5hYmxlX3NlcXNj YW4gPSBPRkY7CitTRVQgU0VTU0lPTiBlbmFibGVfYml0bWFwc2NhbiA9IE9GRjsKKy0tIExlYXZl ICdhJyB1bmNoYW5nZWQgYnV0IG1vZGlmeSAnYicgdG8gYSB2YWx1ZSBvdXRzaWRlIG9mIHRoZSBp bmRleCBwcmVkaWNhdGUuCistLSBUaGlzIHNob3VsZCBiZSBhIEhPVCB1cGRhdGUgYmVjYXVzZSBu ZWl0aGVyIGluZGV4IGlzIGNoYW5nZWQuCitVUERBVEUgZXggU0VUIF92ID0ganNvbmJfYnVpbGRf b2JqZWN0KCdhJywgMCwgJ2InLCAxKSBXSEVSRSAoX3YtPj4nYScpOjpudW1lcmljID0gMDsKK1NF TEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpyZWdjbGFzcyk7 IC0tIGV4cGVjdDogMSByb3cKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCistLSBMZXQncyBjaGVjayB0byBtYWtlIHN1 cmUgdGhhdCB0aGUgaW5kZXggZG9lcyBub3QgY29udGFpbiBhIHZhbHVlIGZvciAnYicKK0VYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBleCBXSEVSRSAoX3YtPj4nYicpOjpudW1lcmlj ID4gOSBBTkQgKF92LT4+J2InKTo6bnVtZXJpYyA8IDEwMDsKKyAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2Nh biB1c2luZyBpZHhfZXhfYiBvbiBleAorICAgRmlsdGVyOiAoKChfdiAtPj4gJ2InOjp0ZXh0KSk6 Om51bWVyaWMgPCAnMTAwJzo6bnVtZXJpYykKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gZXgg V0hFUkUgKF92LT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChfdi0+PidiJyk6Om51bWVyaWMgPCAx MDA7CisgX3YgCistLS0tCisoMCByb3dzKQorCistLSBMZWF2ZSAnYScgdW5jaGFuZ2VkIGJ1dCBt b2RpZnkgJ2InIHRvIGEgdmFsdWUgd2l0aGluIHRoZSBpbmRleCBwcmVkaWNhdGUuCistLSBUaGlz IHJlcHJlc2VudHMgYSBjaGFuZ2UgZm9yIGZpZWxkICdiJyBmcm9tIHVuaW5kZXhlZCB0byBpbmRl eGVkIGFuZCBzbworLS0gdGhpcyBzaG91bGQgbm90IHRha2UgdGhlIEhPVCBwYXRoLgorVVBEQVRF IGV4IFNFVCBfdiA9IGpzb25iX2J1aWxkX29iamVjdCgnYScsIDAsICdiJywgMTApIFdIRVJFIChf di0+PidhJyk6Om51bWVyaWMgPSAwOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hv dF91cGRhdGVkKCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIHJvdywgbm8gbmV3IEhPVCB1 cGRhdGVzCisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDEKKygxIHJvdykKKworLS0gTGV0J3MgY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgdGhl IGluZGV4IGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgJ2InCitFWFBMQUlOIChDT1NUUyBPRkYp IFNFTEVDVCAqIEZST00gZXggV0hFUkUgKF92LT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChfdi0+ PidiJyk6Om51bWVyaWMgPCAxMDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgaWR4X2V4 X2Igb24gZXgKKyAgIEZpbHRlcjogKCgoX3YgLT4+ICdiJzo6dGV4dCkpOjpudW1lcmljIDwgJzEw MCc6Om51bWVyaWMpCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChfdi0+Pidi Jyk6Om51bWVyaWMgPiA5IEFORCAoX3YtPj4nYicpOjpudW1lcmljIDwgMTAwOworICAgICAgICBf diAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsiYSI6IDAsICJiIjogMTB9CisoMSBy b3cpCisKKy0tIFRoaXMgdXBkYXRlIG1vZGlmaWVzIHRoZSB2YWx1ZSBvZiAnYScsIGFuIGluZGV4 ZWQgZmllbGQsIHNvIGl0IGFsc28gY2Fubm90CistLSBiZSBhIEhPVCB1cGRhdGUuCitVUERBVEUg ZXggU0VUIF92ID0ganNvbmJfYnVpbGRfb2JqZWN0KCdhJywgMSwgJ2InLCAxMCkgV0hFUkUgKF92 LT4+J2InKTo6bnVtZXJpYyA9IDEwOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hv dF91cGRhdGVkKCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIHJvdywgbm8gbmV3IEhPVCB1 cGRhdGVzCisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDEKKygxIHJvdykKKworLS0gVGhpcyB1cGRhdGUgY2hhbmdlcyBib3RoICdhJyBhbmQg J2InIHRvIG5ldyB2YWx1ZXMgdGhhdCByZXF1aXJlIGluZGV4IHVwZGF0ZXMsCistLSB0aGlzIGNh bm5vdCB1c2UgdGhlIEhPVCBwYXRoLgorVVBEQVRFIGV4IFNFVCBfdiA9IGpzb25iX2J1aWxkX29i amVjdCgnYScsIDIsICdiJywgMTIpIFdIRVJFIChfdi0+PidiJyk6Om51bWVyaWMgPSAxMDsKK1NF TEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpyZWdjbGFzcyk7 IC0tIGV4cGVjdDogMSByb3csIG5vIG5ldyBIT1QgdXBkYXRlcworIHBnX3N0YXRfZ2V0X3hhY3Rf dHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIExl dCdzIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleCBjb250YWlucyB0aGUgbmV3IHZh bHVlIG9mICdiJworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChf di0+PidiJyk6Om51bWVyaWMgPiA5IEFORCAoX3YtPj4nYicpOjpudW1lcmljIDwgMTAwOworICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIGlkeF9leF9iIG9uIGV4CisgICBGaWx0ZXI6ICgoKF92 IC0+PiAnYic6OnRleHQpKTo6bnVtZXJpYyA8ICcxMDAnOjpudW1lcmljKQorKDIgcm93cykKKwor U0VMRUNUICogRlJPTSBleCBXSEVSRSAoX3YtPj4nYicpOjpudW1lcmljID4gOSBBTkQgKF92LT4+ J2InKTo6bnVtZXJpYyA8IDEwMDsKKyAgICAgICAgX3YgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0KKyB7ImEiOiAyLCAiYiI6IDEyfQorKDEgcm93KQorCistLSBUaGlzIHVwZGF0ZSBjaGFu Z2VzICdiJyB0byBhIHZhbHVlIG91dHNpZGUgaXRzIHByZWRpY2F0ZSByZXF1aXJpbmcgdGhhdAor LS0gd2UgcmVtb3ZlIGl0IGZyb20gdGhlIGluZGV4LiAgVGhhdCdzIGEgdHJhbnNpdGlvbiB0aGF0 IGNhbid0IGJlIGRvbmUKKy0tIGR1cmluZyBhIEhPVCB1cGRhdGUuCitVUERBVEUgZXggU0VUIF92 ID0ganNvbmJfYnVpbGRfb2JqZWN0KCdhJywgMiwgJ2InLCAxKSBXSEVSRSAoX3YtPj4nYicpOjpu dW1lcmljID0gMTI7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQo J2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgcm93LCBubyBuZXcgSE9UIHVwZGF0ZXMKKyBw Z19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQor KDEgcm93KQorCistLSBMZXQncyBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaW5kZXggbm8g bG9uZ2VyIGNvbnRhaW5zIHRoZSB2YWx1ZSBvZiAnYicKK0VYUExBSU4gKENPU1RTIE9GRikgU0VM RUNUICogRlJPTSBleCBXSEVSRSAoX3YtPj4nYicpOjpudW1lcmljID4gOSBBTkQgKF92LT4+J2In KTo6bnVtZXJpYyA8IDEwMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBpZHhfZXhfYiBv biBleAorICAgRmlsdGVyOiAoKChfdiAtPj4gJ2InOjp0ZXh0KSk6Om51bWVyaWMgPCAnMTAwJzo6 bnVtZXJpYykKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gZXggV0hFUkUgKF92LT4+J2InKTo6 bnVtZXJpYyA+IDkgQU5EIChfdi0+PidiJyk6Om51bWVyaWMgPCAxMDA7CisgX3YgCistLS0tCiso MCByb3dzKQorCistLSBMZXQncyBtYWtlIHN1cmUgd2UncmUgcmVjb3JkaW5nIEhPVCB1cGRhdGVz IGZvciBvdXIgJ2V4JyByZWxhdGlvbiBwcm9wZXJseSBpbiB0aGUgc3lzdGVtCistLSB0YWJsZSBw Z19zdGF0X3VzZXJfdGFibGVzLiAgTm90ZSB0aGF0IHN0YXRpc3RpY3MgYXJlIHN0b3JlZCB3aXRo aW4gYSB0cmFuc2FjdGlvbiBjb250ZXh0CistLSBmaXJzdCAoeGFjdCkgYW5kIHRoZW4gbGF0ZXIg aW50byB0aGUgZ2xvYmFsIHN0YXRpc3RpY3MgZm9yIGEgcmVsYXRpb24uCitTRUxFQ1QgCisgICAg Yy5yZWxuYW1lIEFTIHRhYmxlX25hbWUsCisgICAgLS0gVHJhbnNhY3Rpb24gc3RhdGlzdGljcwor ICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQoYy5vaWQpIEFTIHhhY3RfdXBkYXRl cywKKyAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChjLm9pZCkgQVMgeGFj dF9ob3RfdXBkYXRlcywKKyAgICBST1VORCgoCisgICAgICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX2hvdF91cGRhdGVkKGMub2lkKTo6ZmxvYXQgLyAKKyAgICAgICAgTlVMTElGKHBnX3N0YXRf Z2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQoYy5vaWQpLCAwKSAqIDEwMAorICAgICk6Om51bWVyaWMs IDIpIEFTIHhhY3RfaG90X3VwZGF0ZV9wZXJjZW50YWdlLAorICAgIC0tIEN1bXVsYXRpdmUgc3Rh dGlzdGljcworICAgIHMubl90dXBfdXBkIEFTIHRvdGFsX3VwZGF0ZXMsCisgICAgcy5uX3R1cF9o b3RfdXBkIEFTIGhvdF91cGRhdGVzLAorICAgIFJPVU5EKCgKKyAgICAgICAgcy5uX3R1cF9ob3Rf dXBkOjpmbG9hdCAvIAorICAgICAgICBOVUxMSUYocy5uX3R1cF91cGQsIDApICogMTAwCisgICAg KTo6bnVtZXJpYywgMikgQVMgdG90YWxfaG90X3VwZGF0ZV9wZXJjZW50YWdlCitGUk9NIHBnX2Ns YXNzIGMKK0xFRlQgSk9JTiBwZ19zdGF0X3VzZXJfdGFibGVzIHMgT04gYy5yZWxuYW1lID0gcy5y ZWxuYW1lCitXSEVSRSBjLnJlbG5hbWUgPSAnZXgnIAorQU5EIGMucmVsbmFtZXNwYWNlID0gJ3B1 YmxpYyc6OnJlZ25hbWVzcGFjZTsKKyB0YWJsZV9uYW1lIHwgeGFjdF91cGRhdGVzIHwgeGFjdF9o b3RfdXBkYXRlcyB8IHhhY3RfaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgdG90YWxfdXBkYXRlcyB8 IGhvdF91cGRhdGVzIHwgdG90YWxfaG90X3VwZGF0ZV9wZXJjZW50YWdlIAorLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgZXggICAgICAgICB8ICAgICAgICAgICAgNSB8ICAgICAgICAgICAgICAgIDEg fCAgICAgICAgICAgICAgICAgICAgICAyMC4wMCB8ICAgICAgICAgICAgIDAgfCAgICAgICAgICAg MCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCistLSBleHBlY3Q6IDUg eGFjdCB1cGRhdGVzIHdpdGggMSB4YWN0IGhvdCB1cGRhdGUgYW5kIG5vIGN1bXVsYXRpdmUgdXBk YXRlcyBhcyB5ZXQKK0RST1AgVEFCTEUgcHVibGljLmV4OworLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0K Ky0tIFRoaXMgdGFibGUgaGFzIGEgc2luZ2xlIGNvbHVtbiAnZW1haWwnIGFuZCBhIHVuaXF1ZSBj b25zdHJhaW50IG9uIGl0IHRoYXQKKy0tIHNob3VsZCBwcmVjbHVkZSBIT1QgdXBkYXRlcy4KK0NS RUFURSBUQUJMRSB1c2VycyAoCisgICAgdXNlcl9pZCBzZXJpYWwgcHJpbWFyeSBrZXksCisgICAg bmFtZSBWQVJDSEFSKDI1NSkgTk9UIE5VTEwsCisgICAgZW1haWwgVkFSQ0hBUigyNTUpIE5PVCBO VUxMLAorICAgIEVYQ0xVREUgVVNJTkcgYnRyZWUgKGxvd2VyKGVtYWlsKSBXSVRIID0pCispOwor LS0gQWRkIHNvbWUgZGF0YSB0byB0aGUgdGFibGUgYW5kIHRoZW4gdXBkYXRlIGl0IGluIHdheXMg dGhhdCBzaG91bGQgYW5kIHNob3VsZAorLS0gbm90IGJlIEhPVCB1cGRhdGVzLgorSU5TRVJUIElO VE8gdXNlcnMgKG5hbWUsIGVtYWlsKSBWQUxVRVMKKygndXNlcjEnLCAndXNlcjFAZXhhbXBsZS5j b20nKSwKKygndXNlcjInLCAndXNlcjJAZXhhbXBsZS5jb20nKSwKKygndGFrZW4nLCAndGFrZW5A RVhBTVBMRS5jb20nKSwKKygneW91JywgJ3lvdUBkb21haW4uY29tJyksCisoJ3Rha2VuJywgJ3Rh a2VuQGRvbWFpbi5jb20nKTsKKy0tIFNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgdGhlIHVuaXF1ZSBj b25zdHJhaW50IG9uIHRoZSBlbWFpbCBjb2x1bW4uCitVUERBVEUgdXNlcnMgU0VUIGVtYWlsID0g J3VzZXIxQGV4YW1wbGUuY29tJyBXSEVSRSBlbWFpbCA9ICd1c2VyMkBleGFtcGxlLmNvbSc7CitF UlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWlu dCAidXNlcnNfbG93ZXJfZXhjbCIKK0RFVEFJTDogIEtleSAobG93ZXIoZW1haWw6OnRleHQpKT0o dXNlcjFAZXhhbXBsZS5jb20pIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAobG93ZXIoZW1h aWw6OnRleHQpKT0odXNlcjFAZXhhbXBsZS5jb20pLgorU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3Rf dHVwbGVzX2hvdF91cGRhdGVkKCd1c2Vycyc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAwIHJvd3Ms IG5vIG5ldyBIT1QgdXBkYXRlcworIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAwCisoMSByb3cpCisKKy0tIFNob3VsZCBzdWNjZWVkIGJlY2F1 c2UgdGhlIGVtYWlsIGNvbHVtbiBpcyBub3QgYmVpbmcgdXBkYXRlZCBhbmQgc2hvdWxkIGdvIEhP VC4KK1VQREFURSB1c2VycyBTRVQgbmFtZSA9ICdmb28nIFdIRVJFIGVtYWlsID0gJ3VzZXIxQGV4 YW1wbGUuY29tJzsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgn dXNlcnMnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSByb3csIGEgc2luZ2xlIG5ldyBIT1QgdXBk YXRlCisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDEKKygxIHJvdykKKworLS0gQ3JlYXRlIGEgcGFydGlhbCBpbmRleCBvbiB0aGUgZW1haWwg Y29sdW1uLCB1cGRhdGVzIAorQ1JFQVRFIElOREVYIGlkeF91c2Vyc19lbWFpbF9ub19leGFtcGxl IE9OIHVzZXJzIChsb3dlcihlbWFpbCkpIFdIRVJFIGxvd2VyKGVtYWlsKSBMSUtFICclQGV4YW1w bGUuY29tJSc7CistLSBBbiB1cGRhdGUgdGhhdCBjaGFuZ2VzIHRoZSBlbWFpbCBjb2x1bW4gYnV0 IG5vdCB0aGUgaW5kZXhlZCBwb3J0aW9uIG9mIGl0IGFuZCBmYWxscyBvdXRzaWRlIHRoZSBjb25z dHJhaW50LgorLS0gU2hvdWxkbid0IGJlIGEgSE9UIHVwZGF0ZSBiZWNhdXNlIG9mIHRoZSBleGNs dXNpb24gY29uc3RyYWludC4KK1VQREFURSB1c2VycyBTRVQgZW1haWwgPSAneW91KzJAZG9tYWlu LmNvbScgV0hFUkUgbmFtZSA9ICd5b3UnOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVz X2hvdF91cGRhdGVkKCd1c2Vycyc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIHJvdywgbm8gbmV3 IEhPVCB1cGRhdGVzCisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDEKKygxIHJvdykKKworLS0gQW4gdXBkYXRlIHRoYXQgY2hhbmdlcyB0aGUg ZW1haWwgY29sdW1uIGJ1dCBub3QgdGhlIGluZGV4ZWQgcG9ydGlvbiBvZiBpdCBhbmQgZmFsbHMg d2l0aGluIHRoZSBjb25zdHJhaW50LgorLS0gQWdhaW4sIHNob3VsZCBmYWlsIGNvbnN0cmFpbnQg YW5kIGZhaWwgdG8gYmUgYSBIT1QgdXBkYXRlLgorVVBEQVRFIHVzZXJzIFNFVCBlbWFpbCA9ICd0 YWtlbkBkb21haW4uY29tJyBXSEVSRSBuYW1lID0gJ3lvdSc7CitFUlJPUjogIGNvbmZsaWN0aW5n IGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAidXNlcnNfbG93ZXJfZXhj bCIKK0RFVEFJTDogIEtleSAobG93ZXIoZW1haWw6OnRleHQpKT0odGFrZW5AZG9tYWluLmNvbSkg Y29uZmxpY3RzIHdpdGggZXhpc3Rpbmcga2V5IChsb3dlcihlbWFpbDo6dGV4dCkpPSh0YWtlbkBk b21haW4uY29tKS4KK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgn dXNlcnMnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSByb3csIG5vIG5ldyBIT1QgdXBkYXRlcwor IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx CisoMSByb3cpCisKK0RST1AgVEFCTEUgdXNlcnM7CistLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLQorLS0g QW5vdGhlciB0ZXN0IG9mIGNvbnN0cmFpbnRzIHNwb2lsaW5nIEhPVCB1cGRhdGVzLCB0aGlzIHRp bWUgd2l0aCBhIHJhbmdlLgorQ1JFQVRFIFRBQkxFIGV2ZW50cyAoCisgICAgaWQgc2VyaWFsIHBy aW1hcnkga2V5LAorICAgIG5hbWUgVkFSQ0hBUigyNTUpIE5PVCBOVUxMLAorICAgIGV2ZW50X3Rp bWUgdHN0enJhbmdlLAorICAgIGNvbnN0cmFpbnQgbm9fc2NyZWVuaW5nX3RpbWVfb3ZlcmxhcCBl eGNsdWRlIHVzaW5nIGdpc3QgKAorICAgICAgICBldmVudF90aW1lIFdJVEggJiYKKyAgICApCisp OworLS0gQWRkIHR3byBub24tb3ZlcmxhcHBpbmcgZXZlbnRzLgorSU5TRVJUIElOVE8gZXZlbnRz IChpZCwgZXZlbnRfdGltZSwgbmFtZSkKK1ZBTFVFUworICAgICgxLCAnWyIyMDIzLTAxLTAxIDE5 OjAwOjAwIiwgIjIwMjMtMDEtMDEgMjA6NDU6MDAiXScsICdldmVudDEnKSwKKyAgICAoMiwgJ1si MjAyMy0wMS0wMSAyMTowMDowMCIsICIyMDIzLTAxLTAxIDIxOjQ1OjAwIl0nLCAnZXZlbnQyJyk7 CistLSBVcGRhdGUgdGhlIGZpcnN0IGV2ZW50IHRvIG92ZXJsYXAgd2l0aCB0aGUgc2Vjb25kLCBz aG91bGQgZmFpbCB0aGUgY29uc3RyYWludCBhbmQgbm90IGJlIEhPVC4KK1VQREFURSBldmVudHMg U0VUIGV2ZW50X3RpbWUgPSAnWyIyMDIzLTAxLTAxIDIwOjAwOjAwIiwgIjIwMjMtMDEtMDEgMjE6 NDU6MDAiXScgV0hFUkUgaWQgPSAxOworRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUgdmlv bGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgIm5vX3NjcmVlbmluZ190aW1lX292ZXJsYXAiCitE RVRBSUw6ICBLZXkgKGV2ZW50X3RpbWUpPShbIlN1biBKYW4gMDEgMjA6MDA6MDAgMjAyMyBQU1Qi LCJTdW4gSmFuIDAxIDIxOjQ1OjAwIDIwMjMgUFNUIl0pIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5n IGtleSAoZXZlbnRfdGltZSk9KFsiU3VuIEphbiAwMSAyMTowMDowMCAyMDIzIFBTVCIsIlN1biBK YW4gMDEgMjE6NDU6MDAgMjAyMyBQU1QiXSkuCitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBs ZXNfaG90X3VwZGF0ZWQoJ2V2ZW50cyc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAwIHJvdywgbm8g bmV3IEhPVCB1cGRhdGVzCisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDAKKygxIHJvdykKKworLS0gVXBkYXRlIHRoZSBmaXJzdCBldmVudCB0 byBub3Qgb3ZlcmxhcCB3aXRoIHRoZSBzZWNvbmQsIGFnYWluIG5vdCBIT1QgZHVlIHRvIHRoZSBj b25zdHJhaW50LgorVVBEQVRFIGV2ZW50cyBTRVQgZXZlbnRfdGltZSA9ICdbIjIwMjMtMDEtMDEg MjI6MDA6MDAiLCAiMjAyMy0wMS0wMSAyMjo0NTowMCJdJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V2ZW50cyc6OnJlZ2NsYXNzKTsg LS0gZXhwZWN0OiAwIHJvdywgbm8gbmV3IEhPVCB1cGRhdGVzCisgcGdfc3RhdF9nZXRfeGFjdF90 dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKygxIHJvdykKKworLS0gVXBk YXRlIHRoZSBmaXJzdCBldmVudCB0byBub3Qgb3ZlcmxhcCB3aXRoIHRoZSBzZWNvbmQsIHRoaXMg dGltZSB3ZSdyZSBIT1QgYmVjYXVzZSB3ZSBkb24ndCBvdmVybGFwIHdpdGggdGhlIGNvbnN0cmFp bnQuCitVUERBVEUgZXZlbnRzIFNFVCBuYW1lID0gJ25ldyBuYW1lIGhlcmUnIFdIRVJFIGlkID0g MTsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXZlbnRzJzo6 cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgcm93LCBvbmUgbmV3IEhPVCB1cGRhdGUKKyBwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93 KQorCitEUk9QIFRBQkxFIGV2ZW50czsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc3lzdmlld3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5v dXQKaW5kZXggMzUyYWJjMGJkNC4uNTY0NTFiZjc4MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zeXN2aWV3cy5vdXQKQEAgLTE1MSw2ICsxNTEsNyBAQCBzZWxlY3QgbmFtZSwgc2V0dGluZyBm cm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUgbGlrZSAnZW5hYmxlJSc7CiAgZW5hYmxlX2FzeW5j X2FwcGVuZCAgICAgICAgICAgIHwgb24KICBlbmFibGVfYml0bWFwc2NhbiAgICAgICAgICAgICAg fCBvbgogIGVuYWJsZV9kaXN0aW5jdF9yZW9yZGVyaW5nICAgICB8IG9uCisgZW5hYmxlX2V4cHJl c3Npb25fY2hlY2tzICAgICAgIHwgb24KICBlbmFibGVfZ2F0aGVybWVyZ2UgICAgICAgICAgICAg fCBvbgogIGVuYWJsZV9ncm91cF9ieV9yZW9yZGVyaW5nICAgICB8IG9uCiAgZW5hYmxlX2hhc2hh Z2cgICAgICAgICAgICAgICAgIHwgb24KQEAgLTE3MSw3ICsxNzIsNyBAQCBzZWxlY3QgbmFtZSwg c2V0dGluZyBmcm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUgbGlrZSAnZW5hYmxlJSc7CiAgZW5h YmxlX3NlcXNjYW4gICAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVfc29ydCAgICAgICAgICAg ICAgICAgICAgfCBvbgogIGVuYWJsZV90aWRzY2FuICAgICAgICAgICAgICAgICB8IG9uCi0oMjMg cm93cykKKygyNCByb3dzKQogCiAtLSBUaGVyZSBhcmUgYWx3YXlzIHdhaXQgZXZlbnQgZGVzY3Jp cHRpb25zIGZvciB2YXJpb3VzIHR5cGVzLiAgSW5qZWN0aW9uUG9pbnQKIC0tIG1heSBiZSBwcmVz ZW50IG9yIGFic2VudCwgZGVwZW5kaW5nIG9uIGhpc3Rvcnkgc2luY2UgbGFzdCBwb3N0bWFzdGVy IHN0YXJ0LgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBi L3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggMWVkZDllNDVlYi4uMzQy MzJmZDMzNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC02OCw2ICs2OCwxMSBA QCB0ZXN0OiBzZWxlY3RfaW50byBzZWxlY3RfZGlzdGluY3Qgc2VsZWN0X2Rpc3RpbmN0X29uIHNl bGVjdF9pbXBsaWNpdCBzZWxlY3RfaGF2aQogIyAtLS0tLS0tLS0tCiB0ZXN0OiBicmluIGdpbiBn aXN0IHNwZ2lzdCBwcml2aWxlZ2VzIGluaXRfcHJpdnMgc2VjdXJpdHlfbGFiZWwgY29sbGF0ZSBt YXR2aWV3IGxvY2sgcmVwbGljYV9pZGVudGl0eSByb3dzZWN1cml0eSBvYmplY3RfYWRkcmVzcyB0 YWJsZXNhbXBsZSBncm91cGluZ3NldHMgZHJvcF9vcGVyYXRvciBwYXNzd29yZCBpZGVudGl0eSBn ZW5lcmF0ZWRfc3RvcmVkIGpvaW5faGFzaAogCisjIC0tLS0tLS0tLS0KKyMgQW5vdGhlciBncm91 cCBvZiBwYXJhbGxlbCB0ZXN0cworIyAtLS0tLS0tLS0tCit0ZXN0OiBoZWFwX2hvdF91cGRhdGVz CisKICMgLS0tLS0tLS0tLQogIyBBZGRpdGlvbmFsIEJSSU4gdGVzdHMKICMgLS0tLS0tLS0tLQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaGVhcF9ob3RfdXBkYXRlcy5zcWwgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9oZWFwX2hvdF91cGRhdGVzLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi4yMmM2ZWFmZWFiCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvaGVhcF9ob3RfdXBkYXRlcy5zcWwKQEAgLTAsMCArMSwyMDggQEAK K1NIT1cgZW5hYmxlX2V4cHJlc3Npb25fY2hlY2tzOworCistLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLQor LS0gVGhpcyB0YWJsZSB3aWxsIGhhdmUgdHdvIGNvbHVtbnMgYW5kIHR3byBpbmRleGVzLCBvbmUg b24gdGhlIHByaW1hcnkga2V5CistLSBpZCBhbmQgb25lIG9uIHRoZSBleHByZXNzaW9uIChpbmZv LT4+J25hbWUnKS4gIFRoYXQgbWVhbnMgdGhhdCB0aGUgaW5kZXhlZAorLS0gYXR0cmlidXRlcyBh cmUgJ2lkJyBhbmQgJ2luZm8nLgorY3JlYXRlIHRhYmxlIGtleXZhbHVlKGlkIGludGVnZXIgcHJp bWFyeSBrZXksIGluZm8ganNvbmIpOworY3JlYXRlIGluZGV4IG5hbWVpbmRleCBvbiBrZXl2YWx1 ZSgoaW5mby0+PiduYW1lJykpOworaW5zZXJ0IGludG8ga2V5dmFsdWUgdmFsdWVzICgxLCAneyJu YW1lIjogImpvaG4iLCAiZGF0YSI6ICJzb21lIGRhdGEifScpOworCistLSBEaXNhYmxlIHRoZSBH VUMgdGhhdCBhbGxvd3MgdXMgdG8gc2tpcCBleHByZXNzaW9uIGNoZWNrcy4KK1NFVCBlbmFibGVf ZXhwcmVzc2lvbl9jaGVja3MgPSAnb2ZmJzsKKworLS0gVGhlIGluZGV4ZWQgYXR0cmlidXRlICJu YW1lIiB3aXRoIHZhbHVlICJqb2huIiBpcyB1bmNoYW5nZWQsIGRvbid0IGV4cGVjdCBhIEhPVCB1 cGRhdGUuCit1cGRhdGUga2V5dmFsdWUgc2V0IGluZm89J3sibmFtZSI6ICJqb2huIiwgImRhdGEi OiAic29tZXRoaW5nIGVsc2UifScgd2hlcmUgaWQ9MTsKK3NlbGVjdCBwZ19zdGF0X2dldF94YWN0 X3R1cGxlc19ob3RfdXBkYXRlZCgna2V5dmFsdWUnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMCBy b3cKKworLS0gUmUtZW5hYmxlIHRoZSBHVUMgc28gdGhhdCB3ZSBkb24ndCBza2lwIGV4cHJlc3Np b24gY2hlY2tzLgorU0VUIGVuYWJsZV9leHByZXNzaW9uX2NoZWNrcyA9ICdvbic7CisKKy0tIFRo ZSBpbmRleGVkIGF0dHJpYnV0ZSAibmFtZSIgd2l0aCB2YWx1ZSAiam9obiIgaXMgdW5jaGFuZ2Vk LCBleHBlY3QgYSBIT1QgdXBkYXRlLgordXBkYXRlIGtleXZhbHVlIHNldCBpbmZvPSd7Im5hbWUi OiAiam9obiIsICJkYXRhIjogInNvbWUgb3RoZXIgZGF0YSJ9JyB3aGVyZSBpZD0xOworc2VsZWN0 IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdrZXl2YWx1ZSc6OnJlZ2NsYXNz KTsgLS0gZXhwZWN0OiAxIHJvdworCistLSBUaGUgZm9sbG93aW5nIHVwZGF0ZSBjaGFuZ2VzIHRo ZSBpbmRleGVkIGF0dHJpYnV0ZSAibmFtZSIsIHRoaXMgc2hvdWxkIG5vdCBiZSBhIEhPVCB1cGRh dGUuCit1cGRhdGUga2V5dmFsdWUgc2V0IGluZm89J3sibmFtZSI6ICJzbWl0aCIsICJkYXRhIjog InNvbWUgb3RoZXIgZGF0YSJ9JyB3aGVyZSBpZD0xOworc2VsZWN0IHBnX3N0YXRfZ2V0X3hhY3Rf dHVwbGVzX2hvdF91cGRhdGVkKCdrZXl2YWx1ZSc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIHJv dywgbm8gbmV3IEhPVCB1cGRhdGVzCisKKy0tIE5vdywgdGhpcyB1cGRhdGUgZG9lcyBub3QgY2hh bmdlIHRoZSBpbmRleGVkIGF0dHJpYnV0ZSAibmFtZSIgZnJvbSAic21pdGgiLCB0aGlzIHNob3Vs ZCBiZSBIT1QuCit1cGRhdGUga2V5dmFsdWUgc2V0IGluZm89J3sibmFtZSI6ICJzbWl0aCIsICJk YXRhIjogInNvbWUgbW9yZSBkYXRhIn0nIHdoZXJlIGlkPTE7CitzZWxlY3QgcGdfc3RhdF9nZXRf eGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6 IDIgcm93cyBub3cKK2Ryb3AgdGFibGUga2V5dmFsdWU7CisKKworLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0KKy0tIFRoaXMgdGFibGUgaXMgdGhlIHNhbWUgYXMgdGhlIHByZXZpb3VzIG9uZSBidXQgaXQg aGFzIGEgdGhpcmQgaW5kZXguICBUaGUKKy0tIGluZGV4ICdjb2xpbmRleCcgaXNuJ3QgYW4gZXhw cmVzc2lvbiBpbmRleCwgaXQgaW5kZXhlcyB0aGUgZW50aXJlIHZhbHVlCistLSBpbiB0aGUgaW5m byBjb2x1bW4uICBUaGVyZSBhcmUgc3RpbGwgb25seSB0d28gaW5kZXhlZCBhdHRyaWJ1dGVzIGZv ciB0aGlzCistLSByZWxhdGlvbiwgdGhlIHNhbWUgdHdvIGFzIGJlZm9yZS4gIFRoZSBwcmVzZW5j ZSBvZiBhbiBpbmRleCBvbiB0aGUgZW50aXJlCistLSB2YWx1ZSBvZiB0aGUgaW5mbyBjb2x1bW4g c2hvdWxkIHByZXZlbnQgSE9UIHVwZGF0ZXMgZm9yIGFueSB1cGRhdGVzIHRvIGFueQorLS0gcG9y dGlvbiBvZiBKU09OQiBjb250ZW50IGluIHRoYXQgY29sdW1uLgorY3JlYXRlIHRhYmxlIGtleXZh bHVlKGlkIGludGVnZXIgcHJpbWFyeSBrZXksIGluZm8ganNvbmIpOworY3JlYXRlIGluZGV4IG5h bWVpbmRleCBvbiBrZXl2YWx1ZSgoaW5mby0+PiduYW1lJykpOworY3JlYXRlIGluZGV4IGNvbGlu ZGV4IG9uIGtleXZhbHVlKGluZm8pOworaW5zZXJ0IGludG8ga2V5dmFsdWUgdmFsdWVzICgxLCAn eyJuYW1lIjogImpvaG4iLCAiZGF0YSI6ICJzb21lIGRhdGEifScpOworCistLSBUaGlzIHVwZGF0 ZSBkb2Vzbid0IGNoYW5nZSB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaW5kZXgsIGJ1dCBp dCBkb2VzCistLSBjaGFuZ2UgdGhlIGNvbnRlbnQgb2YgdGhlIGluZm8gY29sdW1uIGFuZCBzbyBz aG91bGQgbm90IGJlIEhPVCBiZWNhdXNlIHRoZQorLS0gaW5kZXhlZCB2YWx1ZSBjaGFuZ2VkIGFz IGEgcmVzdWx0IG9mIHRoZSB1cGRhdGUuCit1cGRhdGUga2V5dmFsdWUgc2V0IGluZm89J3sibmFt ZSI6ICJqb2huIiwgImRhdGEiOiAic29tZSBvdGhlciBkYXRhIn0nIHdoZXJlIGlkPTE7CitzZWxl Y3QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xh c3MpOyAtLSBleHBlY3Q6IDAgcm93cworZHJvcCB0YWJsZSBrZXl2YWx1ZTsKKworLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0KKy0tIFRoZSB0YWJsZSBoYXMgb25lIGNvbHVtbiBfdiBhbmQgdHdvIGluZGV4 ZXMuICBUaGV5IGFyZSBib3RoIGV4cHJlc3Npb24KKy0tIGluZGV4ZXMgcmVmZXJlbmNpbmcgdGhl IHNhbWUgY29sdW1uIGF0dHJpYnV0ZSAoX3YpIGJ1dCBvbmUgaXMgYSBwYXJ0aWFsCistLSBpbmRl eC4KK0NSRUFURSBUQUJMRSBwdWJsaWMuZXggKF92IEpTT05CKSBXSVRIIChmaWxsZmFjdG9yID0g NjApOworSU5TRVJUIElOVE8gZXggKF92KSBWQUxVRVMgKCd7ImEiOiAwLCAiYiI6IDB9Jyk7CitJ TlNFUlQgSU5UTyBleCAoX3YpIFNFTEVDVCBqc29uYl9idWlsZF9vYmplY3QoJ2InLCBuKSBGUk9N IGdlbmVyYXRlX3NlcmllcygxMDAsIDEwMDAwKSBhcyBuOworQ1JFQVRFIElOREVYIGlkeF9leF9h IE9OIGV4ICgoX3YtPj4nYScpKTsKK0NSRUFURSBJTkRFWCBpZHhfZXhfYiBPTiBleCAoKF92LT4+ J2InKSkgV0hFUkUgKF92LT4+J2InKTo6bnVtZXJpYyA+IDk7CisKKy0tIFdlJ3JlIHVzaW5nIEJU UkVFIGluZGV4ZXMgYW5kIGZvciB0aGlzIHRlc3Qgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB0 aGV5IHJlbWFpbgorLS0gaW4gc3luYyB3aXRoIGNoYW5nZXMgdG8gb3VyIHJlbGF0aW9uLiAgRm9y Y2UgdGhlIGNob2ljZSBvZiBpbmRleCBzY2FucyBiZWxvdyBzbworLS0gdGhhdCB3ZSBrbm93IHdl J3JlIGNoZWNraW5nIHRoZSBpbmRleCdzIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB2YWx1ZXMgc2hv dWxkIGJlCistLSBpbiB0aGUgaW5kZXggb3Igbm90LgorU0VUIFNFU1NJT04gZW5hYmxlX3NlcXNj YW4gPSBPRkY7CitTRVQgU0VTU0lPTiBlbmFibGVfYml0bWFwc2NhbiA9IE9GRjsKKworLS0gTGVh dmUgJ2EnIHVuY2hhbmdlZCBidXQgbW9kaWZ5ICdiJyB0byBhIHZhbHVlIG91dHNpZGUgb2YgdGhl IGluZGV4IHByZWRpY2F0ZS4KKy0tIFRoaXMgc2hvdWxkIGJlIGEgSE9UIHVwZGF0ZSBiZWNhdXNl IG5laXRoZXIgaW5kZXggaXMgY2hhbmdlZC4KK1VQREFURSBleCBTRVQgX3YgPSBqc29uYl9idWls ZF9vYmplY3QoJ2EnLCAwLCAnYicsIDEpIFdIRVJFIChfdi0+PidhJyk6Om51bWVyaWMgPSAwOwor U0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6OnJlZ2NsYXNz KTsgLS0gZXhwZWN0OiAxIHJvdworLS0gTGV0J3MgY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgdGhl IGluZGV4IGRvZXMgbm90IGNvbnRhaW4gYSB2YWx1ZSBmb3IgJ2InCitFWFBMQUlOIChDT1NUUyBP RkYpIFNFTEVDVCAqIEZST00gZXggV0hFUkUgKF92LT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChf di0+PidiJyk6Om51bWVyaWMgPCAxMDA7CitTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChfdi0+Pidi Jyk6Om51bWVyaWMgPiA5IEFORCAoX3YtPj4nYicpOjpudW1lcmljIDwgMTAwOworCistLSBMZWF2 ZSAnYScgdW5jaGFuZ2VkIGJ1dCBtb2RpZnkgJ2InIHRvIGEgdmFsdWUgd2l0aGluIHRoZSBpbmRl eCBwcmVkaWNhdGUuCistLSBUaGlzIHJlcHJlc2VudHMgYSBjaGFuZ2UgZm9yIGZpZWxkICdiJyBm cm9tIHVuaW5kZXhlZCB0byBpbmRleGVkIGFuZCBzbworLS0gdGhpcyBzaG91bGQgbm90IHRha2Ug dGhlIEhPVCBwYXRoLgorVVBEQVRFIGV4IFNFVCBfdiA9IGpzb25iX2J1aWxkX29iamVjdCgnYScs IDAsICdiJywgMTApIFdIRVJFIChfdi0+PidhJyk6Om51bWVyaWMgPSAwOworU0VMRUNUIHBnX3N0 YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0 OiAxIHJvdywgbm8gbmV3IEhPVCB1cGRhdGVzCistLSBMZXQncyBjaGVjayB0byBtYWtlIHN1cmUg dGhhdCB0aGUgaW5kZXggY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiAnYicKK0VYUExBSU4gKENP U1RTIE9GRikgU0VMRUNUICogRlJPTSBleCBXSEVSRSAoX3YtPj4nYicpOjpudW1lcmljID4gOSBB TkQgKF92LT4+J2InKTo6bnVtZXJpYyA8IDEwMDsKK1NFTEVDVCAqIEZST00gZXggV0hFUkUgKF92 LT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChfdi0+PidiJyk6Om51bWVyaWMgPCAxMDA7CisKKy0t IFRoaXMgdXBkYXRlIG1vZGlmaWVzIHRoZSB2YWx1ZSBvZiAnYScsIGFuIGluZGV4ZWQgZmllbGQs IHNvIGl0IGFsc28gY2Fubm90CistLSBiZSBhIEhPVCB1cGRhdGUuCitVUERBVEUgZXggU0VUIF92 ID0ganNvbmJfYnVpbGRfb2JqZWN0KCdhJywgMSwgJ2InLCAxMCkgV0hFUkUgKF92LT4+J2InKTo6 bnVtZXJpYyA9IDEwOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk KCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIHJvdywgbm8gbmV3IEhPVCB1cGRhdGVzCisK Ky0tIFRoaXMgdXBkYXRlIGNoYW5nZXMgYm90aCAnYScgYW5kICdiJyB0byBuZXcgdmFsdWVzIHRo YXQgcmVxdWlyZSBpbmRleCB1cGRhdGVzLAorLS0gdGhpcyBjYW5ub3QgdXNlIHRoZSBIT1QgcGF0 aC4KK1VQREFURSBleCBTRVQgX3YgPSBqc29uYl9idWlsZF9vYmplY3QoJ2EnLCAyLCAnYicsIDEy KSBXSEVSRSAoX3YtPj4nYicpOjpudW1lcmljID0gMTA7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFj dF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgcm93LCBu byBuZXcgSE9UIHVwZGF0ZXMKKy0tIExldCdzIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBp bmRleCBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9mICdiJworRVhQTEFJTiAoQ09TVFMgT0ZGKSBT RUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChfdi0+PidiJyk6Om51bWVyaWMgPiA5IEFORCAoX3YtPj4n YicpOjpudW1lcmljIDwgMTAwOworU0VMRUNUICogRlJPTSBleCBXSEVSRSAoX3YtPj4nYicpOjpu dW1lcmljID4gOSBBTkQgKF92LT4+J2InKTo6bnVtZXJpYyA8IDEwMDsKKworLS0gVGhpcyB1cGRh dGUgY2hhbmdlcyAnYicgdG8gYSB2YWx1ZSBvdXRzaWRlIGl0cyBwcmVkaWNhdGUgcmVxdWlyaW5n IHRoYXQKKy0tIHdlIHJlbW92ZSBpdCBmcm9tIHRoZSBpbmRleC4gIFRoYXQncyBhIHRyYW5zaXRp b24gdGhhdCBjYW4ndCBiZSBkb25lCistLSBkdXJpbmcgYSBIT1QgdXBkYXRlLgorVVBEQVRFIGV4 IFNFVCBfdiA9IGpzb25iX2J1aWxkX29iamVjdCgnYScsIDIsICdiJywgMSkgV0hFUkUgKF92LT4+ J2InKTo6bnVtZXJpYyA9IDEyOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91 cGRhdGVkKCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIHJvdywgbm8gbmV3IEhPVCB1cGRh dGVzCistLSBMZXQncyBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaW5kZXggbm8gbG9uZ2Vy IGNvbnRhaW5zIHRoZSB2YWx1ZSBvZiAnYicKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICog RlJPTSBleCBXSEVSRSAoX3YtPj4nYicpOjpudW1lcmljID4gOSBBTkQgKF92LT4+J2InKTo6bnVt ZXJpYyA8IDEwMDsKK1NFTEVDVCAqIEZST00gZXggV0hFUkUgKF92LT4+J2InKTo6bnVtZXJpYyA+ IDkgQU5EIChfdi0+PidiJyk6Om51bWVyaWMgPCAxMDA7CisKKy0tIExldCdzIG1ha2Ugc3VyZSB3 ZSdyZSByZWNvcmRpbmcgSE9UIHVwZGF0ZXMgZm9yIG91ciAnZXgnIHJlbGF0aW9uIHByb3Blcmx5 IGluIHRoZSBzeXN0ZW0KKy0tIHRhYmxlIHBnX3N0YXRfdXNlcl90YWJsZXMuICBOb3RlIHRoYXQg c3RhdGlzdGljcyBhcmUgc3RvcmVkIHdpdGhpbiBhIHRyYW5zYWN0aW9uIGNvbnRleHQKKy0tIGZp cnN0ICh4YWN0KSBhbmQgdGhlbiBsYXRlciBpbnRvIHRoZSBnbG9iYWwgc3RhdGlzdGljcyBmb3Ig YSByZWxhdGlvbi4KK1NFTEVDVCAKKyAgICBjLnJlbG5hbWUgQVMgdGFibGVfbmFtZSwKKyAgICAt LSBUcmFuc2FjdGlvbiBzdGF0aXN0aWNzCisgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBk YXRlZChjLm9pZCkgQVMgeGFjdF91cGRhdGVzLAorICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVz X2hvdF91cGRhdGVkKGMub2lkKSBBUyB4YWN0X2hvdF91cGRhdGVzLAorICAgIFJPVU5EKCgKKyAg ICAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoYy5vaWQpOjpmbG9hdCAv IAorICAgICAgICBOVUxMSUYocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChjLm9pZCks IDApICogMTAwCisgICAgKTo6bnVtZXJpYywgMikgQVMgeGFjdF9ob3RfdXBkYXRlX3BlcmNlbnRh Z2UsCisgICAgLS0gQ3VtdWxhdGl2ZSBzdGF0aXN0aWNzCisgICAgcy5uX3R1cF91cGQgQVMgdG90 YWxfdXBkYXRlcywKKyAgICBzLm5fdHVwX2hvdF91cGQgQVMgaG90X3VwZGF0ZXMsCisgICAgUk9V TkQoKAorICAgICAgICBzLm5fdHVwX2hvdF91cGQ6OmZsb2F0IC8gCisgICAgICAgIE5VTExJRihz Lm5fdHVwX3VwZCwgMCkgKiAxMDAKKyAgICApOjpudW1lcmljLCAyKSBBUyB0b3RhbF9ob3RfdXBk YXRlX3BlcmNlbnRhZ2UKK0ZST00gcGdfY2xhc3MgYworTEVGVCBKT0lOIHBnX3N0YXRfdXNlcl90 YWJsZXMgcyBPTiBjLnJlbG5hbWUgPSBzLnJlbG5hbWUKK1dIRVJFIGMucmVsbmFtZSA9ICdleCcg CitBTkQgYy5yZWxuYW1lc3BhY2UgPSAncHVibGljJzo6cmVnbmFtZXNwYWNlOworLS0gZXhwZWN0 OiA1IHhhY3QgdXBkYXRlcyB3aXRoIDEgeGFjdCBob3QgdXBkYXRlIGFuZCBubyBjdW11bGF0aXZl IHVwZGF0ZXMgYXMgeWV0CisKK0RST1AgVEFCTEUgcHVibGljLmV4OworCistLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLQorLS0gVGhpcyB0YWJsZSBoYXMgYSBzaW5nbGUgY29sdW1uICdlbWFpbCcgYW5kIGEg dW5pcXVlIGNvbnN0cmFpbnQgb24gaXQgdGhhdAorLS0gc2hvdWxkIHByZWNsdWRlIEhPVCB1cGRh dGVzLgorQ1JFQVRFIFRBQkxFIHVzZXJzICgKKyAgICB1c2VyX2lkIHNlcmlhbCBwcmltYXJ5IGtl eSwKKyAgICBuYW1lIFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwKKyAgICBlbWFpbCBWQVJDSEFSKDI1 NSkgTk9UIE5VTEwsCisgICAgRVhDTFVERSBVU0lORyBidHJlZSAobG93ZXIoZW1haWwpIFdJVEgg PSkKKyk7CisKKy0tIEFkZCBzb21lIGRhdGEgdG8gdGhlIHRhYmxlIGFuZCB0aGVuIHVwZGF0ZSBp dCBpbiB3YXlzIHRoYXQgc2hvdWxkIGFuZCBzaG91bGQKKy0tIG5vdCBiZSBIT1QgdXBkYXRlcy4K K0lOU0VSVCBJTlRPIHVzZXJzIChuYW1lLCBlbWFpbCkgVkFMVUVTCisoJ3VzZXIxJywgJ3VzZXIx QGV4YW1wbGUuY29tJyksCisoJ3VzZXIyJywgJ3VzZXIyQGV4YW1wbGUuY29tJyksCisoJ3Rha2Vu JywgJ3Rha2VuQEVYQU1QTEUuY29tJyksCisoJ3lvdScsICd5b3VAZG9tYWluLmNvbScpLAorKCd0 YWtlbicsICd0YWtlbkBkb21haW4uY29tJyk7CisKKy0tIFNob3VsZCBmYWlsIGJlY2F1c2Ugb2Yg dGhlIHVuaXF1ZSBjb25zdHJhaW50IG9uIHRoZSBlbWFpbCBjb2x1bW4uCitVUERBVEUgdXNlcnMg U0VUIGVtYWlsID0gJ3VzZXIxQGV4YW1wbGUuY29tJyBXSEVSRSBlbWFpbCA9ICd1c2VyMkBleGFt cGxlLmNvbSc7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ3Vz ZXJzJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDAgcm93cywgbm8gbmV3IEhPVCB1cGRhdGVzCisK Ky0tIFNob3VsZCBzdWNjZWVkIGJlY2F1c2UgdGhlIGVtYWlsIGNvbHVtbiBpcyBub3QgYmVpbmcg dXBkYXRlZCBhbmQgc2hvdWxkIGdvIEhPVC4KK1VQREFURSB1c2VycyBTRVQgbmFtZSA9ICdmb28n IFdIRVJFIGVtYWlsID0gJ3VzZXIxQGV4YW1wbGUuY29tJzsKK1NFTEVDVCBwZ19zdGF0X2dldF94 YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgndXNlcnMnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSBy b3csIGEgc2luZ2xlIG5ldyBIT1QgdXBkYXRlCisKKy0tIENyZWF0ZSBhIHBhcnRpYWwgaW5kZXgg b24gdGhlIGVtYWlsIGNvbHVtbiwgdXBkYXRlcyAKK0NSRUFURSBJTkRFWCBpZHhfdXNlcnNfZW1h aWxfbm9fZXhhbXBsZSBPTiB1c2VycyAobG93ZXIoZW1haWwpKSBXSEVSRSBsb3dlcihlbWFpbCkg TElLRSAnJUBleGFtcGxlLmNvbSUnOworCistLSBBbiB1cGRhdGUgdGhhdCBjaGFuZ2VzIHRoZSBl bWFpbCBjb2x1bW4gYnV0IG5vdCB0aGUgaW5kZXhlZCBwb3J0aW9uIG9mIGl0IGFuZCBmYWxscyBv dXRzaWRlIHRoZSBjb25zdHJhaW50LgorLS0gU2hvdWxkbid0IGJlIGEgSE9UIHVwZGF0ZSBiZWNh dXNlIG9mIHRoZSBleGNsdXNpb24gY29uc3RyYWludC4KK1VQREFURSB1c2VycyBTRVQgZW1haWwg PSAneW91KzJAZG9tYWluLmNvbScgV0hFUkUgbmFtZSA9ICd5b3UnOworU0VMRUNUIHBnX3N0YXRf Z2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCd1c2Vycyc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0 OiAxIHJvdywgbm8gbmV3IEhPVCB1cGRhdGVzCisKKy0tIEFuIHVwZGF0ZSB0aGF0IGNoYW5nZXMg dGhlIGVtYWlsIGNvbHVtbiBidXQgbm90IHRoZSBpbmRleGVkIHBvcnRpb24gb2YgaXQgYW5kIGZh bGxzIHdpdGhpbiB0aGUgY29uc3RyYWludC4KKy0tIEFnYWluLCBzaG91bGQgZmFpbCBjb25zdHJh aW50IGFuZCBmYWlsIHRvIGJlIGEgSE9UIHVwZGF0ZS4KK1VQREFURSB1c2VycyBTRVQgZW1haWwg PSAndGFrZW5AZG9tYWluLmNvbScgV0hFUkUgbmFtZSA9ICd5b3UnOworU0VMRUNUIHBnX3N0YXRf Z2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCd1c2Vycyc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0 OiAxIHJvdywgbm8gbmV3IEhPVCB1cGRhdGVzCisKK0RST1AgVEFCTEUgdXNlcnM7CisKKy0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tCistLSBBbm90aGVyIHRlc3Qgb2YgY29uc3RyYWludHMgc3BvaWxpbmcg SE9UIHVwZGF0ZXMsIHRoaXMgdGltZSB3aXRoIGEgcmFuZ2UuCitDUkVBVEUgVEFCTEUgZXZlbnRz ICgKKyAgICBpZCBzZXJpYWwgcHJpbWFyeSBrZXksCisgICAgbmFtZSBWQVJDSEFSKDI1NSkgTk9U IE5VTEwsCisgICAgZXZlbnRfdGltZSB0c3R6cmFuZ2UsCisgICAgY29uc3RyYWludCBub19zY3Jl ZW5pbmdfdGltZV9vdmVybGFwIGV4Y2x1ZGUgdXNpbmcgZ2lzdCAoCisgICAgICAgIGV2ZW50X3Rp bWUgV0lUSCAmJgorICAgICkKKyk7CisKKy0tIEFkZCB0d28gbm9uLW92ZXJsYXBwaW5nIGV2ZW50 cy4KK0lOU0VSVCBJTlRPIGV2ZW50cyAoaWQsIGV2ZW50X3RpbWUsIG5hbWUpCitWQUxVRVMKKyAg ICAoMSwgJ1siMjAyMy0wMS0wMSAxOTowMDowMCIsICIyMDIzLTAxLTAxIDIwOjQ1OjAwIl0nLCAn ZXZlbnQxJyksCisgICAgKDIsICdbIjIwMjMtMDEtMDEgMjE6MDA6MDAiLCAiMjAyMy0wMS0wMSAy MTo0NTowMCJdJywgJ2V2ZW50MicpOworCistLSBVcGRhdGUgdGhlIGZpcnN0IGV2ZW50IHRvIG92 ZXJsYXAgd2l0aCB0aGUgc2Vjb25kLCBzaG91bGQgZmFpbCB0aGUgY29uc3RyYWludCBhbmQgbm90 IGJlIEhPVC4KK1VQREFURSBldmVudHMgU0VUIGV2ZW50X3RpbWUgPSAnWyIyMDIzLTAxLTAxIDIw OjAwOjAwIiwgIjIwMjMtMDEtMDEgMjE6NDU6MDAiXScgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBn X3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdldmVudHMnOjpyZWdjbGFzcyk7IC0t IGV4cGVjdDogMCByb3csIG5vIG5ldyBIT1QgdXBkYXRlcworCistLSBVcGRhdGUgdGhlIGZpcnN0 IGV2ZW50IHRvIG5vdCBvdmVybGFwIHdpdGggdGhlIHNlY29uZCwgYWdhaW4gbm90IEhPVCBkdWUg dG8gdGhlIGNvbnN0cmFpbnQuCitVUERBVEUgZXZlbnRzIFNFVCBldmVudF90aW1lID0gJ1siMjAy My0wMS0wMSAyMjowMDowMCIsICIyMDIzLTAxLTAxIDIyOjQ1OjAwIl0nIFdIRVJFIGlkID0gMTsK K1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXZlbnRzJzo6cmVn Y2xhc3MpOyAtLSBleHBlY3Q6IDAgcm93LCBubyBuZXcgSE9UIHVwZGF0ZXMKKworLS0gVXBkYXRl IHRoZSBmaXJzdCBldmVudCB0byBub3Qgb3ZlcmxhcCB3aXRoIHRoZSBzZWNvbmQsIHRoaXMgdGlt ZSB3ZSdyZSBIT1QgYmVjYXVzZSB3ZSBkb24ndCBvdmVybGFwIHdpdGggdGhlIGNvbnN0cmFpbnQu CitVUERBVEUgZXZlbnRzIFNFVCBuYW1lID0gJ25ldyBuYW1lIGhlcmUnIFdIRVJFIGlkID0gMTsK K1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXZlbnRzJzo6cmVn Y2xhc3MpOyAtLSBleHBlY3Q6IDEgcm93LCBvbmUgbmV3IEhPVCB1cGRhdGUKKworRFJPUCBUQUJM RSBldmVudHM7Ci0tIAoyLjQyLjAKCg== --_005_78574B24BE0A42C580753FA9FA63B8FCamazoncom_ Content-Type: application/octet-stream; name="v4-0001-Expand-HOT-update-path-to-include-expression-and-.patch" Content-Description: v4-0001-Expand-HOT-update-path-to-include-expression-and-.patch Content-Disposition: attachment; filename="v4-0001-Expand-HOT-update-path-to-include-expression-and-.patch"; size=73797; creation-date="Thu, 06 Feb 2025 22:24:34 GMT"; modification-date="Thu, 06 Feb 2025 22:24:34 GMT" Content-ID: <59C65BBDEE1DE84B80483D59F6F3BD66@amazon.com> Content-Transfer-Encoding: base64 RnJvbSA1NzMxYWJjY2Q2NWUwMDJjM2EzYWQ0N2E0MGQ5ODJiN2ViM2JkMjA5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnb3J5IEJ1cmQgPGdyZWdidXJkQGFtYXpvbi5jb20+CkRh dGU6IE1vbiwgMjcgSmFuIDIwMjUgMTM6Mjg6NTkgLTA1MDAKU3ViamVjdDogW1BBVENIIHY0XSBF eHBhbmQgSE9UIHVwZGF0ZSBwYXRoIHRvIGluY2x1ZGUgZXhwcmVzc2lvbiBhbmQgcGFydGlhbAog aW5kZXhlcy4KClRoaXMgcGF0Y2ggZXh0ZW5kcyB0aGUgY2FzZXMgd2hlcmUgSE9UIHVwZGF0ZXMg YXJlIHBvc3NpYmxlIGluIHRoZSBoZWFwYW0gYnkKZXhhbWluaW5nIGV4cHJlc3Npb24gaW5kZXhl cyBhbmQgZGV0ZXJtaW5pbmcgaWYgaW5kZXhlZCB2YWx1ZXMgd2hlcmUgbXV0YXRlZApvciBub3Qu ICBQcmV2aW91c2x5LCBhbnkgZXhwcmVzc2lvbiBpbmRleCBvbiBhIGNvbHVtbiB3b3VsZCBkaXNx dWFsaWZ5IGl0CmZyb20gdGhlIEhPVCB1cGRhdGUgcGF0aC4gQWxzbyBleGFtaW5lcyBwYXJ0aWFs IGluZGV4ZXMgdG8gc2VlIGlmIHRoZQp2YWx1ZXMgYXJlIHdpdGhpbiB0aGUgcHJlZGljYXRlIG9y IG5vdC4KClRoaXMgaXMgYSBtb2RpZmllZCBhcHBsaWNhdGlvbiBvZiBhIHBhdGNoIHByb3Bvc2Vk IG9uIHRoZSBwZ3NxbC1oYWNrZXJzIGxpc3Q6Cmh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21l c3NhZ2UtaWQvZmxhdC80ZDk5MjhlZS1hOWU2LTE1ZjktOWM4Mi01OTgxZjEzZmZjYTYlNDBwb3N0 Z3Jlc3Byby5ydQphcHBsaWVkOiBodHRwczovL2dpdC5wb3N0Z3Jlc3FsLm9yZy9naXR3ZWIvP3A9 cG9zdGdyZXNxbC5naXQ7YT1jb21taXQ7aD1jMjAzZDZjZjgKcmV2ZXJ0ZWQ6IGh0dHBzOi8vZ2l0 LnBvc3RncmVzcWwub3JnL2dpdHdlYi8/cD1wb3N0Z3Jlc3FsLmdpdDthPWNvbW1pdDtoPTA1Zjg0 NjA1ZGJlYjljZjgyNzlhMTU3MjM0YjI0YmJiNzA2YzUyNTYKClNpZ25lZC1vZmYtYnk6IEdyZWcg QnVyZCA8Z3JlZ2J1cmRAYW1hem9uLmNvbT4KLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwg ICAgICAgICAgICAgICAgICAgICAgfCAgMTYgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMgICAgICAgICAgICAgIHwgIDgyICsrLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1faGFuZGxlci5jICAgICAgfCAgMjcgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90 YWJsZWFtLmMgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5j ICAgICAgICAgICAgICAgICAgIHwgIDE1ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXhpbmcu YyAgICAgICAgICAgICAgICB8ICA1MSArLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRl eGluZy5jICAgICAgICAgICB8IDIzOSArKysrKysrKysrKystCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUmVwbGljYXRpb24uYyAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcmVsY2FjaGUuYyAgICAgICAgICAgIHwgIDM0ICstCiBzcmMvYmFja2VuZC91dGlscy9taXNj L2d1Y190YWJsZXMuYyAgICAgICAgICAgfCAgMTMgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9w b3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aCAgICAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aCAgICAgICAgICAgICAgICAgIHwgIDI4ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRv ci5oICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o ICAgICAgICAgICAgICAgICB8ICAgOCArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVy LmggICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAg ICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oICAgICAg ICAgICAgICAgICAgfCAgIDEgKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvaGVhcF9ob3RfdXBkYXRl cy5vdXQgICAgIHwgMzE4ICsrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9zeXN2aWV3cy5vdXQgICAgICAgIHwgICAzICstCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgIDUgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvaGVh cF9ob3RfdXBkYXRlcy5zcWwgICAgIHwgMjA4ICsrKysrKysrKysrKwogMjMgZmlsZXMgY2hhbmdl ZCwgOTIxIGluc2VydGlvbnMoKyksIDE3NSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hlYXBfaG90X3VwZGF0ZXMub3V0CiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvaGVhcF9ob3RfdXBkYXRlcy5zcWwKCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwKaW5kZXggYTc4MmYxMDk5OC4uNWI3NTZlNzc1NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNTI0Miw2 ICs1MjQyLDIyIEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8 L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICA8L2xpc3RpdGVtPgog ICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtZW5hYmxl LWV4cHJlc3Npb24tY2hlY2tzIiB4cmVmbGFiZWw9ImVuYWJsZV9leHByZXNzaW9uX2NoZWNrcyI+ CisgICAgICA8dGVybT48dmFybmFtZT5lbmFibGVfZXhwcmVzc2lvbl9jaGVja3M8L3Zhcm5hbWU+ ICg8dHlwZT5ib29sZWFuPC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1h cnk+PHZhcm5hbWU+ZW5hYmxlX2V4cHJlc3Npb25fY2hlY2tzPC92YXJuYW1lPiBjb25maWd1cmF0 aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJt PgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBFbmFibGVzIG9yIGRp c2FibGVzIHRoZSBhYmlsaXR5IHRvIGRldGVybWluZSBpZiBpbmRleGVzIHdpdGgKKyAgICAgICAg ZXhwcmVzc2lvbnMgcGFydGlhbCBpbmRleGVzIGhhdmUgY2hhbmdlZCBhbGxvd2luZyBmb3IgdGhl IGhlYXAtb25seQorICAgICAgICB0dXBsZSAoSE9UKSBvcHRpbXphdGlvbiBvbiB1cGRhdGUgd2hl biB1c2luZyB0aGUgaGVhcCBhY2Nlc3MgbWV0aG9kLgorICAgICAgICBUaGUgZGVmYXVsdCBpcyA8 bGl0ZXJhbD5vbjwvbGl0ZXJhbD4uCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4K KyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWVuYWJs ZS1nYXRoZXJtZXJnZSIgeHJlZmxhYmVsPSJlbmFibGVfZ2F0aGVybWVyZ2UiPgogICAgICAgPHRl cm0+PHZhcm5hbWU+ZW5hYmxlX2dhdGhlcm1lcmdlPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwv dHlwZT4pCiAgICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBl YTBhMTJiMzlhLi4wMTI0YmE0ZTViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMzE2 NCwxMiArMzE2NCwxMSBAQCBUTV9SZXN1bHQKIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBJdGVtUG9pbnRlciBvdGlkLCBIZWFwVHVwbGUgbmV3dHVwLAogCQkJQ29tbWFuZElkIGNpZCwg U25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LAogCQkJVE1fRmFpbHVyZURhdGEgKnRtZmQs IExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAotCQkJVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2lu ZGV4ZXMpCisJCQlCaXRtYXBzZXQgKiptb2RpZmllZF9pbmRleGVzLCBzdHJ1Y3QgRVN0YXRlICpl c3RhdGUpCiB7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAlUcmFuc2FjdGlvbklkIHhpZCA9IEdldEN1 cnJlbnRUcmFuc2FjdGlvbklkKCk7CiAJQml0bWFwc2V0ICAqaG90X2F0dHJzOwotCUJpdG1hcHNl dCAgKnN1bV9hdHRyczsKIAlCaXRtYXBzZXQgICprZXlfYXR0cnM7CiAJQml0bWFwc2V0ICAqaWRf YXR0cnM7CiAJQml0bWFwc2V0ICAqaW50ZXJlc3RpbmdfYXR0cnM7CkBAIC0zMTkyLDcgKzMxOTEs NiBAQCBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgb3RpZCwgSGVh cFR1cGxlIG5ld3R1cCwKIAlib29sCQloYXZlX3R1cGxlX2xvY2sgPSBmYWxzZTsKIAlib29sCQlp c2NvbWJvOwogCWJvb2wJCXVzZV9ob3RfdXBkYXRlID0gZmFsc2U7Ci0JYm9vbAkJc3VtbWFyaXpl ZF91cGRhdGUgPSBmYWxzZTsKIAlib29sCQlrZXlfaW50YWN0OwogCWJvb2wJCWFsbF92aXNpYmxl X2NsZWFyZWQgPSBmYWxzZTsKIAlib29sCQlhbGxfdmlzaWJsZV9jbGVhcmVkX25ldyA9IGZhbHNl OwpAQCAtMzI0NCwxNCArMzI0MiwxMSBAQCBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwg SXRlbVBvaW50ZXIgb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAkgKi8KIAlob3RfYXR0cnMgPSBS ZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKIAkJCQkJCQkJCQkgICBJTkRFWF9B VFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcpOwotCXN1bV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhB dHRyQml0bWFwKHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX1NVTU1B UklaRUQpOwogCWtleV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9u LCBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOwogCWlkX2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0 dHJCaXRtYXAocmVsYXRpb24sCiAJCQkJCQkJCQkJICBJTkRFWF9BVFRSX0JJVE1BUF9JREVOVElU WV9LRVkpOwogCWludGVyZXN0aW5nX2F0dHJzID0gTlVMTDsKIAlpbnRlcmVzdGluZ19hdHRycyA9 IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywgaG90X2F0dHJzKTsKLQlpbnRlcmVz dGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywgc3VtX2F0dHJz KTsKIAlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRy cywga2V5X2F0dHJzKTsKIAlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRl cmVzdGluZ19hdHRycywgaWRfYXR0cnMpOwogCkBAIC0zMzA3LDEwICszMzAyLDggQEAgaGVhcF91 cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsIEhlYXBUdXBsZSBuZXd0 dXAsCiAJCXRtZmQtPmN0aWQgPSAqb3RpZDsKIAkJdG1mZC0+eG1heCA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwogCQl0bWZkLT5jbWF4ID0gSW52YWxpZENvbW1hbmRJZDsKLQkJKnVwZGF0ZV9pbmRl eGVzID0gVFVfTm9uZTsKIAogCQlibXNfZnJlZShob3RfYXR0cnMpOwotCQlibXNfZnJlZShzdW1f YXR0cnMpOwogCQlibXNfZnJlZShrZXlfYXR0cnMpOwogCQlibXNfZnJlZShpZF9hdHRycyk7CiAJ CS8qIG1vZGlmaWVkX2F0dHJzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgKi8KQEAgLTM2MDgsMTAgKzM2 MDEsOCBAQCBsMjoKIAkJCVVubG9ja1R1cGxlVHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9z ZWxmKSwgKmxvY2ttb2RlKTsKIAkJaWYgKHZtYnVmZmVyICE9IEludmFsaWRCdWZmZXIpCiAJCQlS ZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsKLQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsKIAog CQlibXNfZnJlZShob3RfYXR0cnMpOwotCQlibXNfZnJlZShzdW1fYXR0cnMpOwogCQlibXNfZnJl ZShrZXlfYXR0cnMpOwogCQlibXNfZnJlZShpZF9hdHRycyk7CiAJCWJtc19mcmVlKG1vZGlmaWVk X2F0dHJzKTsKQEAgLTM5MjYsMzAgKzM5MTcsNTcgQEAgbDI6CiAJICogb25lIHBpbiBpcyBoZWxk LgogCSAqLwogCi0JaWYgKG5ld2J1ZiA9PSBidWZmZXIpCisJaWYgKG1vZGlmaWVkX2luZGV4ZXMg JiYgbmV3YnVmID09IGJ1ZmZlcikKIAl7CisJCWJvb2wJCW9ubHlfc3VtbWFyaXppbmcgPSBmYWxz ZTsKKwkJaW50CQkJbnVtX2luZGV4ZXMgPSBsaXN0X2xlbmd0aChyZWxhdGlvbi0+cmRfaW5kZXhp bmZvbGlzdCk7CisKIAkJLyoKIAkJICogU2luY2UgdGhlIG5ldyB0dXBsZSBpcyBnb2luZyBpbnRv IHRoZSBzYW1lIHBhZ2UsIHdlIG1pZ2h0IGJlIGFibGUKLQkJICogdG8gZG8gYSBIT1QgdXBkYXRl LiAgQ2hlY2sgaWYgYW55IG9mIHRoZSBpbmRleCBjb2x1bW5zIGhhdmUgYmVlbgotCQkgKiBjaGFu Z2VkLgorCQkgKiB0byBkbyBhIEhPVCB1cGRhdGUuCiAJCSAqLwogCQlpZiAoIWJtc19vdmVybGFw KG1vZGlmaWVkX2F0dHJzLCBob3RfYXR0cnMpKQogCQl7CisJCQkvKgorCQkJICogSWYgbm8gYXR0 cmlidXRlcyB3ZXJlIG1vZGlmaWVkLCB3ZSBjYW4gYmUgb24gdGhlIEhPVCBwYXRoIGJ1dAorCQkJ ICogd2UgbmVlZCB0byBzaWduYWwgd2l0aCBhIG5vbi1OVUxMIG1vZGlmaWVkX2luZGV4ZXMgYml0 bWFwIHRoYXQKKwkJCSAqIG5vbmUgb2YgdGhlIGluZGV4ZXMgbmVlZCB0byBiZSB1cGRhdGVkLCBz byBhZGQgYSBub24tZXhpc3RlbnQKKwkJCSAqIGluZGV4IHdoaWNoIHdvbid0IG1hdGNoIGxhdGVy IHdoZW4gY3JlYXRpbmcgaW5kZXggZW50cmllcy4KKwkJCSAqLworCQkJKm1vZGlmaWVkX2luZGV4 ZXMgPSBibXNfYWRkX21lbWJlcigqbW9kaWZpZWRfaW5kZXhlcywgbnVtX2luZGV4ZXMpOwogCQkJ dXNlX2hvdF91cGRhdGUgPSB0cnVlOwotCisJCX0KKwkJZWxzZQorCQl7CiAJCQkvKgotCQkJICog SWYgbm9uZSBvZiB0aGUgY29sdW1ucyB0aGF0IGFyZSB1c2VkIGluIGhvdC1ibG9ja2luZyBpbmRl eGVzCi0JCQkgKiB3ZXJlIHVwZGF0ZWQsIHdlIGNhbiBhcHBseSBIT1QsIGJ1dCB3ZSBkbyBzdGls bCBuZWVkIHRvIGNoZWNrCi0JCQkgKiBpZiB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgc3VtbWFyaXpp bmcgaW5kZXhlcywgYW5kIHVwZGF0ZSB0aG9zZQotCQkJICogaW5kZXhlcyBpZiB0aGUgY29sdW1u cyB3ZXJlIHVwZGF0ZWQsIG9yIHdlIG1heSBmYWlsIHRvIGRldGVjdAotCQkJICogZS5nLiB2YWx1 ZSBib3VuZCBjaGFuZ2VzIGluIEJSSU4gbWlubWF4IGluZGV4ZXMuCisJCQkgKiBTb21lIG9mIHRo ZSBjb2x1bW5zIHVzZWQgaW4gSE9ULWJsb2NraW5nIGluZGV4ZXMgd2VyZSB1cGRhdGVkLAorCQkJ ICogYnV0IHRoZXJlIGFyZSBzdGlsbCBjYXNlcyB3aGVyZSB3ZSBjYW4gZG8gYSBIT1QgdXBkYXRl LiAgQ2hlY2sKKwkJCSAqIGlmIHRoZSBjb2x1bW5zIHRoYXQgYXJlIHVzZWQgaW4gdGhlIEhPVC1i bG9ja2luZyBpbmRleGVzIHdlcmUKKwkJCSAqIHVwZGF0ZWQsIGFuZCBpZiBub3QsIHdlIGNhbiBk byBhIEhPVCB1cGRhdGUuCiAJCQkgKi8KLQkJCWlmIChibXNfb3ZlcmxhcChtb2RpZmllZF9hdHRy cywgc3VtX2F0dHJzKSkKLQkJCQlzdW1tYXJpemVkX3VwZGF0ZSA9IHRydWU7CisJCQkqbW9kaWZp ZWRfaW5kZXhlcyA9CisJCQkJRXhlY0luZGV4ZXNSZXF1aXJpbmdVcGRhdGVzKHJlbGF0aW9uLCBt b2RpZmllZF9hdHRycywKKwkJCQkJCQkJCQkJZXN0YXRlLCAmb2xkdHVwLCBuZXd0dXAsCisJCQkJ CQkJCQkJCSZvbmx5X3N1bW1hcml6aW5nKTsKKwkJCWlmIChibXNfaXNfZW1wdHkoKm1vZGlmaWVk X2luZGV4ZXMpIHx8IG9ubHlfc3VtbWFyaXppbmcpCisJCQl7CisJCQkJLyogU2VlIGVhcmxpZXIg Y29tbWVudC4uLiAqLworCQkJCSptb2RpZmllZF9pbmRleGVzID0gYm1zX2FkZF9tZW1iZXIoKm1v ZGlmaWVkX2luZGV4ZXMsIG51bV9pbmRleGVzKTsKKwkJCQl1c2VfaG90X3VwZGF0ZSA9IHRydWU7 CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJYm1zX2ZyZWUoKm1vZGlmaWVkX2luZGV4ZXMpOwor CQkJCSptb2RpZmllZF9pbmRleGVzID0gTlVMTDsKKwkJCX0KIAkJfQogCX0KIAllbHNlCiAJewor CQkvKiBTaWduYWwgdGhhdCB3ZSdyZSBub3Qgb24gdGhlIEhPVCBwYXRoIGJ5IHNldHRpbmcgdGhp cyB0byBOVUxMICovCisJCWlmIChtb2RpZmllZF9pbmRleGVzKQorCQkJKm1vZGlmaWVkX2luZGV4 ZXMgPSBOVUxMOworCiAJCS8qIFNldCBhIGhpbnQgdGhhdCB0aGUgb2xkIHBhZ2UgY291bGQgdXNl IHBydW5lL2RlZnJhZyAqLwogCQlQYWdlU2V0RnVsbChwYWdlKTsKIAl9CkBAIC00MTA2LDI3ICs0 MTI0LDEwIEBAIGwyOgogCQloZWFwX2ZyZWV0dXBsZShoZWFwdHVwKTsKIAl9CiAKLQkvKgotCSAq IElmIGl0IGlzIGEgSE9UIHVwZGF0ZSwgdGhlIHVwZGF0ZSBtYXkgc3RpbGwgbmVlZCB0byB1cGRh dGUgc3VtbWFyaXplZAotCSAqIGluZGV4ZXMsIGxlc3Qgd2UgZmFpbCB0byB1cGRhdGUgdGhvc2Ug c3VtbWFyaWVzIGFuZCBnZXQgaW5jb3JyZWN0Ci0JICogcmVzdWx0cyAoZm9yIGV4YW1wbGUsIG1p bm1heCBib3VuZHMgb2YgdGhlIGJsb2NrIG1heSBjaGFuZ2Ugd2l0aCB0aGlzCi0JICogdXBkYXRl KS4KLQkgKi8KLQlpZiAodXNlX2hvdF91cGRhdGUpCi0JewotCQlpZiAoc3VtbWFyaXplZF91cGRh dGUpCi0JCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9TdW1tYXJpemluZzsKLQkJZWxzZQotCQkJKnVw ZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsKLQl9Ci0JZWxzZQotCQkqdXBkYXRlX2luZGV4ZXMgPSBU VV9BbGw7Ci0KIAlpZiAob2xkX2tleV90dXBsZSAhPSBOVUxMICYmIG9sZF9rZXlfY29waWVkKQog CQloZWFwX2ZyZWV0dXBsZShvbGRfa2V5X3R1cGxlKTsKIAogCWJtc19mcmVlKGhvdF9hdHRycyk7 Ci0JYm1zX2ZyZWUoc3VtX2F0dHJzKTsKIAlibXNfZnJlZShrZXlfYXR0cnMpOwogCWJtc19mcmVl KGlkX2F0dHJzKTsKIAlibXNfZnJlZShtb2RpZmllZF9hdHRycyk7CkBAIC00NDAzLDggKzQ0MDQs NyBAQCBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRpb24sCiAgKiB2aWEg ZXJlcG9ydCgpLgogICovCiB2b2lkCi1zaW1wbGVfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRp b24sIEl0ZW1Qb2ludGVyIG90aWQsIEhlYXBUdXBsZSB0dXAsCi0JCQkJICAgVFVfVXBkYXRlSW5k ZXhlcyAqdXBkYXRlX2luZGV4ZXMpCitzaW1wbGVfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRp b24sIEl0ZW1Qb2ludGVyIG90aWQsIEhlYXBUdXBsZSB0dXApCiB7CiAJVE1fUmVzdWx0CXJlc3Vs dDsKIAlUTV9GYWlsdXJlRGF0YSB0bWZkOwpAQCAtNDQxMyw3ICs0NDEzLDcgQEAgc2ltcGxlX2hl YXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBIZWFwVHVwbGUg dHVwLAogCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXAsCiAJCQkJCQkg R2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJIHRydWUg Lyogd2FpdCBmb3IgY29tbWl0ICovICwKLQkJCQkJCSAmdG1mZCwgJmxvY2ttb2RlLCB1cGRhdGVf aW5kZXhlcyk7CisJCQkJCQkgJnRtZmQsICZsb2NrbW9kZSwgTlVMTCwgTlVMTCk7CiAJc3dpdGNo IChyZXN1bHQpCiAJewogCQljYXNlIFRNX1NlbGZNb2RpZmllZDoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IGE0MDAzY2Y1OWUuLmUyYWM5ZjQ4NmUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMzEyLDggKzMxMiw4IEBA IGhlYXBhbV90dXBsZV9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIHRpZCwg Q29tbWFuZElkIGNpZCwKIHN0YXRpYyBUTV9SZXN1bHQKIGhlYXBhbV90dXBsZV91cGRhdGUoUmVs YXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAog CQkJCQlDb21tYW5kSWQgY2lkLCBTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3QgY3Jvc3NjaGVj aywKLQkJCQkJYm9vbCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwKLQkJCQkJTG9ja1R1cGxl TW9kZSAqbG9ja21vZGUsIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQorCQkJCQli b29sIHdhaXQsIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwK KwkJCQkJQml0bWFwc2V0ICoqbW9kaWZpZWRfaW5kZXhlcywgRVN0YXRlICplc3RhdGUpCiB7CiAJ Ym9vbAkJc2hvdWxkRnJlZSA9IHRydWU7CiAJSGVhcFR1cGxlCXR1cGxlID0gRXhlY0ZldGNoU2xv dEhlYXBUdXBsZShzbG90LCB0cnVlLCAmc2hvdWxkRnJlZSk7CkBAIC0zMjQsMzAgKzMyNCw5IEBA IGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90aWQs IFR1cGxlVGFibGVTbG90ICpzbG90LAogCXR1cGxlLT50X3RhYmxlT2lkID0gc2xvdC0+dHRzX3Rh YmxlT2lkOwogCiAJcmVzdWx0ID0gaGVhcF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cGxlLCBj aWQsIGNyb3NzY2hlY2ssIHdhaXQsCi0JCQkJCQkgdG1mZCwgbG9ja21vZGUsIHVwZGF0ZV9pbmRl eGVzKTsKKwkJCQkJCSB0bWZkLCBsb2NrbW9kZSwgbW9kaWZpZWRfaW5kZXhlcywgZXN0YXRlKTsK IAlJdGVtUG9pbnRlckNvcHkoJnR1cGxlLT50X3NlbGYsICZzbG90LT50dHNfdGlkKTsKIAotCS8q Ci0JICogRGVjaWRlIHdoZXRoZXIgbmV3IGluZGV4IGVudHJpZXMgYXJlIG5lZWRlZCBmb3IgdGhl IHR1cGxlCi0JICoKLQkgKiBOb3RlOiBoZWFwX3VwZGF0ZSByZXR1cm5zIHRoZSB0aWQgKGxvY2F0 aW9uKSBvZiB0aGUgbmV3IHR1cGxlIGluIHRoZQotCSAqIHRfc2VsZiBmaWVsZC4KLQkgKgotCSAq IElmIHRoZSB1cGRhdGUgaXMgbm90IEhPVCwgd2UgbXVzdCB1cGRhdGUgYWxsIGluZGV4ZXMuIElm IHRoZSB1cGRhdGUgaXMKLQkgKiBIT1QsIGl0IGNvdWxkIGJlIHRoYXQgd2UgdXBkYXRlZCBzdW1t YXJpemVkIGNvbHVtbnMsIHNvIHdlIGVpdGhlcgotCSAqIHVwZGF0ZSBvbmx5IHN1bW1hcml6ZWQg aW5kZXhlcywgb3Igbm9uZSBhdCBhbGwuCi0JICovCi0JaWYgKHJlc3VsdCAhPSBUTV9PaykKLQl7 Ci0JCUFzc2VydCgqdXBkYXRlX2luZGV4ZXMgPT0gVFVfTm9uZSk7Ci0JCSp1cGRhdGVfaW5kZXhl cyA9IFRVX05vbmU7Ci0JfQotCWVsc2UgaWYgKCFIZWFwVHVwbGVJc0hlYXBPbmx5KHR1cGxlKSkK LQkJQXNzZXJ0KCp1cGRhdGVfaW5kZXhlcyA9PSBUVV9BbGwpOwotCWVsc2UKLQkJQXNzZXJ0KCgq dXBkYXRlX2luZGV4ZXMgPT0gVFVfU3VtbWFyaXppbmcpIHx8Ci0JCQkgICAoKnVwZGF0ZV9pbmRl eGVzID09IFRVX05vbmUpKTsKLQogCWlmIChzaG91bGRGcmVlKQogCQlwZnJlZSh0dXBsZSk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCmluZGV4IGUxOGE4ZjgyNTAuLjJiNWZlMzNlNDMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtMzM0LDggKzMzNCw3IEBAIHNpbXBs ZV90YWJsZV90dXBsZV9kZWxldGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciB0aWQsIFNuYXBz aG90IHNuYXBzaG90KQogdm9pZAogc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiBy ZWwsIEl0ZW1Qb2ludGVyIG90aWQsCiAJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90LAotCQkJ CQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJCSAgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRl X2luZGV4ZXMpCisJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90KQogewogCVRNX1Jlc3VsdAlyZXN1 bHQ7CiAJVE1fRmFpbHVyZURhdGEgdG1mZDsKQEAgLTM0NSw3ICszNDQsNyBAQCBzaW1wbGVfdGFi bGVfdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwKIAkJCQkJCQkJ R2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwKIAkJCQkJCQkJc25hcHNob3QsIEludmFsaWRTbmFw c2hvdCwKIAkJCQkJCQkJdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAotCQkJCQkJCQkmdG1m ZCwgJmxvY2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCSZ0bWZkLCAmbG9ja21vZGUs IE5VTEwsIE5VTEwpOwogCiAJc3dpdGNoIChyZXN1bHQpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4 IDczNzc5MTJiNDEuLmIwZTY3MGMxZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv aW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTI0NTUsNyArMjQ1 NSwyMCBAQCBCdWlsZEluZGV4SW5mbyhSZWxhdGlvbiBpbmRleCkKIAogCS8qIGZpbGwgaW4gYXR0 cmlidXRlIG51bWJlcnMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbnVtQXR0czsgaSsrKQorCXsKIAkJ aWktPmlpX0luZGV4QXR0ck51bWJlcnNbaV0gPSBpbmRleFN0cnVjdC0+aW5ka2V5LnZhbHVlc1tp XTsKKwkJaWktPmlpX0luZGV4QXR0cnMgPQorCQkJYm1zX2FkZF9tZW1iZXIoaWktPmlpX0luZGV4 QXR0cnMsCisJCQkJCQkgICBpbmRleFN0cnVjdC0+aW5ka2V5LnZhbHVlc1tpXSAtIEZpcnN0TG93 SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCX0KKworCS8qIGNvbGxlY3QgYXR0cmlidXRl cyB1c2VkIGluIHRoZSBleHByZXNzaW9uLCBpZiBvbmUgaXMgcHJlc2VudCAqLworCWlmIChpaS0+ aWlfRXhwcmVzc2lvbnMpCisJCXB1bGxfdmFyYXR0bm9zKChOb2RlICopIGlpLT5paV9FeHByZXNz aW9ucywgMSwgJmlpLT5paV9FeHByZXNzaW9uQXR0cnMpOworCisJLyogY29sbGVjdCBhdHRyaWJ1 dGVzIHVzZWQgaW4gdGhlIHByZWRpY2F0ZSwgaWYgb25lIGlzIHByZXNlbnQgKi8KKwlpZiAoaWkt PmlpX1ByZWRpY2F0ZSkKKwkJcHVsbF92YXJhdHRub3MoKE5vZGUgKikgaWktPmlpX1ByZWRpY2F0 ZSwgMSwgJmlpLT5paV9QcmVkaWNhdGVBdHRycyk7CiAKIAkvKiBmZXRjaCBleGNsdXNpb24gY29u c3RyYWludCBpbmZvIGlmIGFueSAqLwogCWlmIChpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24p CkBAIC0yNDY2LDYgKzI0NzksOCBAQCBCdWlsZEluZGV4SW5mbyhSZWxhdGlvbiBpbmRleCkKIAkJ CQkJCQkJICZpaS0+aWlfRXhjbHVzaW9uU3RyYXRzKTsKIAl9CiAKKwlpaS0+aWlfT3BDbGFzc0Rh dGFUeXBlcyA9IGluZGV4LT5yZF9vcGNpbnR5cGU7CisKIAlyZXR1cm4gaWk7CiB9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5kZXhpbmcuYwppbmRleCAyNWM0YjZiZGM4Li4zZmRlYmJhM2YwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL2luZGV4aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmRleGluZy5jCkBAIC03Miw4ICs3Miw3IEBAIENhdGFsb2dDbG9zZUluZGV4ZXMoQ2F0YWxvZ0lu ZGV4U3RhdGUgaW5kc3RhdGUpCiAgKiBUaGlzIGlzIGVmZmVjdGl2ZWx5IGEgY3V0LWRvd24gdmVy c2lvbiBvZiBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMuCiAgKi8KIHN0YXRpYyB2b2lkCi1DYXRhbG9n SW5kZXhJbnNlcnQoQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3RhdGUsIEhlYXBUdXBsZSBoZWFwVHVw bGUsCi0JCQkJICAgVFVfVXBkYXRlSW5kZXhlcyB1cGRhdGVJbmRleGVzKQorQ2F0YWxvZ0luZGV4 SW5zZXJ0KENhdGFsb2dJbmRleFN0YXRlIGluZHN0YXRlLCBIZWFwVHVwbGUgaGVhcFR1cGxlKQog ewogCWludAkJCWk7CiAJaW50CQkJbnVtSW5kZXhlczsKQEAgLTgzLDIwICs4Miw5IEBAIENhdGFs b2dJbmRleEluc2VydChDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZSwgSGVhcFR1cGxlIGhlYXBU dXBsZSwKIAlJbmRleEluZm8gKippbmRleEluZm9BcnJheTsKIAlEYXR1bQkJdmFsdWVzW0lOREVY X01BWF9LRVlTXTsKIAlib29sCQlpc251bGxbSU5ERVhfTUFYX0tFWVNdOwotCWJvb2wJCW9ubHlT dW1tYXJpemVkID0gKHVwZGF0ZUluZGV4ZXMgPT0gVFVfU3VtbWFyaXppbmcpOwogCi0JLyoKLQkg KiBIT1QgdXBkYXRlIGRvZXMgbm90IHJlcXVpcmUgaW5kZXggaW5zZXJ0cy4gQnV0IHdpdGggYXNz ZXJ0cyBlbmFibGVkIHdlCi0JICogd2FudCB0byBjaGVjayB0aGF0IGl0J2QgYmUgbGVnYWwgdG8g Y3VycmVudGx5IGluc2VydCBpbnRvIHRoZQotCSAqIHRhYmxlL2luZGV4LgotCSAqLwotI2lmbmRl ZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi0JaWYgKEhlYXBUdXBsZUlzSGVhcE9ubHkoaGVhcFR1cGxl KSAmJiAhb25seVN1bW1hcml6ZWQpCi0JCXJldHVybjsKLSNlbmRpZgotCi0JLyogV2hlbiBvbmx5 IHVwZGF0aW5nIHN1bW1hcml6ZWQgaW5kZXhlcywgdGhlIHR1cGxlIGhhcyB0byBiZSBIT1QuICov Ci0JQXNzZXJ0KCghb25seVN1bW1hcml6ZWQpIHx8IEhlYXBUdXBsZUlzSGVhcE9ubHkoaGVhcFR1 cGxlKSk7CisJLyogVGhlIHR1cGxlIG5ldmVyIGJlIEhPVC4gKi8KKwlBc3NlcnQoIUhlYXBUdXBs ZUlzSGVhcE9ubHkoaGVhcFR1cGxlKSk7CiAKIAkvKgogCSAqIEdldCBpbmZvcm1hdGlvbiBmcm9t IHRoZSBzdGF0ZSBzdHJ1Y3R1cmUuICBGYWxsIG91dCBpZiBub3RoaW5nIHRvIGRvLgpAQCAtMTM4 LDIyICsxMjYsNiBAQCBDYXRhbG9nSW5kZXhJbnNlcnQoQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3Rh dGUsIEhlYXBUdXBsZSBoZWFwVHVwbGUsCiAJCUFzc2VydChpbmRleC0+cmRfaW5kZXgtPmluZGlt bWVkaWF0ZSk7CiAJCUFzc2VydChpbmRleEluZm8tPmlpX051bUluZGV4S2V5QXR0cnMgIT0gMCk7 CiAKLQkJLyogc2VlIGVhcmxpZXIgY2hlY2sgYWJvdmUgKi8KLSNpZmRlZiBVU0VfQVNTRVJUX0NI RUNLSU5HCi0JCWlmIChIZWFwVHVwbGVJc0hlYXBPbmx5KGhlYXBUdXBsZSkgJiYgIW9ubHlTdW1t YXJpemVkKQotCQl7Ci0JCQlBc3NlcnQoIVJlaW5kZXhJc1Byb2Nlc3NpbmdJbmRleChSZWxhdGlv bkdldFJlbGlkKGluZGV4KSkpOwotCQkJY29udGludWU7Ci0JCX0KLSNlbmRpZgkJCQkJCQkvKiBV U0VfQVNTRVJUX0NIRUNLSU5HICovCi0KLQkJLyoKLQkJICogU2tpcCBpbnNlcnRpb25zIGludG8g bm9uLXN1bW1hcml6aW5nIGluZGV4ZXMgaWYgd2Ugb25seSBuZWVkIHRvCi0JCSAqIHVwZGF0ZSBz dW1tYXJpemluZyBpbmRleGVzLgotCQkgKi8KLQkJaWYgKG9ubHlTdW1tYXJpemVkICYmICFpbmRl eEluZm8tPmlpX1N1bW1hcml6aW5nKQotCQkJY29udGludWU7Ci0KIAkJLyoKIAkJICogRm9ybUlu ZGV4RGF0dW0gZmlsbHMgaW4gaXRzIHZhbHVlcyBhbmQgaXNudWxsIHBhcmFtZXRlcnMgd2l0aCB0 aGUKIAkJICogYXBwcm9wcmlhdGUgdmFsdWVzIGZvciB0aGUgY29sdW1uKHMpIG9mIHRoZSBpbmRl eC4KQEAgLTI0MCw3ICsyMTIsNyBAQCBDYXRhbG9nVHVwbGVJbnNlcnQoUmVsYXRpb24gaGVhcFJl bCwgSGVhcFR1cGxlIHR1cCkKIAogCXNpbXBsZV9oZWFwX2luc2VydChoZWFwUmVsLCB0dXApOwog Ci0JQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXAsIFRVX0FsbCk7CisJQ2F0YWxvZ0lu ZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXApOwogCUNhdGFsb2dDbG9zZUluZGV4ZXMoaW5kc3RhdGUp OwogfQogCkBAIC0yNjAsNyArMjMyLDcgQEAgQ2F0YWxvZ1R1cGxlSW5zZXJ0V2l0aEluZm8oUmVs YXRpb24gaGVhcFJlbCwgSGVhcFR1cGxlIHR1cCwKIAogCXNpbXBsZV9oZWFwX2luc2VydChoZWFw UmVsLCB0dXApOwogCi0JQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXAsIFRVX0FsbCk7 CisJQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXApOwogfQogCiAvKgpAQCAtMjkxLDcg KzI2Myw3IEBAIENhdGFsb2dUdXBsZXNNdWx0aUluc2VydFdpdGhJbmZvKFJlbGF0aW9uIGhlYXBS ZWwsIFR1cGxlVGFibGVTbG90ICoqc2xvdCwKIAogCQl0dXBsZSA9IEV4ZWNGZXRjaFNsb3RIZWFw VHVwbGUoc2xvdFtpXSwgdHJ1ZSwgJnNob3VsZF9mcmVlKTsKIAkJdHVwbGUtPnRfdGFibGVPaWQg PSBzbG90W2ldLT50dHNfdGFibGVPaWQ7Ci0JCUNhdGFsb2dJbmRleEluc2VydChpbmRzdGF0ZSwg dHVwbGUsIFRVX0FsbCk7CisJCUNhdGFsb2dJbmRleEluc2VydChpbmRzdGF0ZSwgdHVwbGUpOwog CiAJCWlmIChzaG91bGRfZnJlZSkKIAkJCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKQEAgLTMxMywx NSArMjg1LDE0IEBAIHZvaWQKIENhdGFsb2dUdXBsZVVwZGF0ZShSZWxhdGlvbiBoZWFwUmVsLCBJ dGVtUG9pbnRlciBvdGlkLCBIZWFwVHVwbGUgdHVwKQogewogCUNhdGFsb2dJbmRleFN0YXRlIGlu ZHN0YXRlOwotCVRVX1VwZGF0ZUluZGV4ZXMgdXBkYXRlSW5kZXhlcyA9IFRVX0FsbDsKIAogCUNh dGFsb2dUdXBsZUNoZWNrQ29uc3RyYWludHMoaGVhcFJlbCwgdHVwKTsKIAogCWluZHN0YXRlID0g Q2F0YWxvZ09wZW5JbmRleGVzKGhlYXBSZWwpOwogCi0Jc2ltcGxlX2hlYXBfdXBkYXRlKGhlYXBS ZWwsIG90aWQsIHR1cCwgJnVwZGF0ZUluZGV4ZXMpOworCXNpbXBsZV9oZWFwX3VwZGF0ZShoZWFw UmVsLCBvdGlkLCB0dXApOwogCi0JQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXAsIHVw ZGF0ZUluZGV4ZXMpOworCUNhdGFsb2dJbmRleEluc2VydChpbmRzdGF0ZSwgdHVwKTsKIAlDYXRh bG9nQ2xvc2VJbmRleGVzKGluZHN0YXRlKTsKIH0KIApAQCAtMzM3LDEzICszMDgsMTEgQEAgdm9p ZAogQ2F0YWxvZ1R1cGxlVXBkYXRlV2l0aEluZm8oUmVsYXRpb24gaGVhcFJlbCwgSXRlbVBvaW50 ZXIgb3RpZCwgSGVhcFR1cGxlIHR1cCwKIAkJCQkJCSAgIENhdGFsb2dJbmRleFN0YXRlIGluZHN0 YXRlKQogewotCVRVX1VwZGF0ZUluZGV4ZXMgdXBkYXRlSW5kZXhlcyA9IFRVX0FsbDsKLQogCUNh dGFsb2dUdXBsZUNoZWNrQ29uc3RyYWludHMoaGVhcFJlbCwgdHVwKTsKIAotCXNpbXBsZV9oZWFw X3VwZGF0ZShoZWFwUmVsLCBvdGlkLCB0dXAsICZ1cGRhdGVJbmRleGVzKTsKKwlzaW1wbGVfaGVh cF91cGRhdGUoaGVhcFJlbCwgb3RpZCwgdHVwKTsKIAotCUNhdGFsb2dJbmRleEluc2VydChpbmRz dGF0ZSwgdHVwLCB1cGRhdGVJbmRleGVzKTsKKwlDYXRhbG9nSW5kZXhJbnNlcnQoaW5kc3RhdGUs IHR1cCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5k ZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCmluZGV4IDdjODdm MDEyYzMuLjNjYmJmNTQ5NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBAIC0x MTcsNiArMTE3LDggQEAKICNpbmNsdWRlICJ1dGlscy9tdWx0aXJhbmdldHlwZXMuaCIKICNpbmNs dWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2lu Y2x1ZGUgInV0aWxzL2RhdHVtLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAKIC8q IHdhaXRNb2RlIGFyZ3VtZW50IHRvIGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWlu dCgpICovCiB0eXBlZGVmIGVudW0KQEAgLTE0Niw2ICsxNDgsMTEgQEAgc3RhdGljIGJvb2wgaW5k ZXhfZXhwcmVzc2lvbl9jaGFuZ2VkX3dhbGtlcihOb2RlICpub2RlLAogc3RhdGljIHZvaWQgRXhl Y1dpdGhvdXRPdmVybGFwc05vdEVtcHR5KFJlbGF0aW9uIHJlbCwgTmFtZURhdGEgYXR0bmFtZSwg RGF0dW0gYXR0dmFsLAogCQkJCQkJCQkJCWNoYXIgdHlwdHlwZSwgT2lkIGF0dHR5cGlkKTsKIAor LyoKKyAqIEdVQyBwYXJhbWV0ZXJzCisgKi8KK2Jvb2wJCWVuYWJsZV9leHByZXNzaW9uX2NoZWNr cyA9IHRydWU7CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjT3BlbkluZGljZXMKICAqCkBAIC0xNjgs NiArMTc1LDcgQEAgRXhlY09wZW5JbmRpY2VzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8s IGJvb2wgc3BlY3VsYXRpdmUpCiAJSW5kZXhJbmZvICoqaW5kZXhJbmZvQXJyYXk7CiAKIAlyZXN1 bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID0gMDsKKwlyZXN1bHRSZWxhdGlvbi0+cmRfaW5kZXhp bmZvbGlzdCA9IE5JTDsKIAogCS8qIGZhc3QgcGF0aCBpZiBubyBpbmRleGVzICovCiAJaWYgKCFS ZWxhdGlvbkdldEZvcm0ocmVzdWx0UmVsYXRpb24pLT5yZWxoYXNpbmRleCkKQEAgLTIxMCw2ICsy MTgsMTAgQEAgRXhlY09wZW5JbmRpY2VzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sIGJv b2wgc3BlY3VsYXRpdmUpCiAJCS8qIGV4dHJhY3QgaW5kZXgga2V5IGluZm9ybWF0aW9uIGZyb20g dGhlIGluZGV4J3MgcGdfaW5kZXggaW5mbyAqLwogCQlpaSA9IEJ1aWxkSW5kZXhJbmZvKGluZGV4 RGVzYyk7CiAKKwkJLyogdXNlZCB3aGVuIGRldGVybWluaW5nIGlmIGluZGV4ZWQgdmFsdWVzIGNo YW5nZWQgZHVyaW5nIHVwZGF0ZSAqLworCQlyZXN1bHRSZWxhdGlvbi0+cmRfaW5kZXhpbmZvbGlz dCA9CisJCQlsYXBwZW5kKHJlc3VsdFJlbGF0aW9uLT5yZF9pbmRleGluZm9saXN0LCBpaSk7CisK IAkJLyoKIAkJICogSWYgdGhlIGluZGV4ZXMgYXJlIHRvIGJlIHVzZWQgZm9yIHNwZWN1bGF0aXZl IGluc2VydGlvbiBvciBjb25mbGljdAogCQkgKiBkZXRlY3Rpb24gaW4gbG9naWNhbCByZXBsaWNh dGlvbiwgYWRkIGV4dHJhIGluZm9ybWF0aW9uIHJlcXVpcmVkIGJ5CkBAIC0zMDcsNyArMzE5LDcg QEAgRXhlY0luc2VydEluZGV4VHVwbGVzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJ CQkJCSAgYm9vbCBub0R1cEVyciwKIAkJCQkJICBib29sICpzcGVjQ29uZmxpY3QsCiAJCQkJCSAg TGlzdCAqYXJiaXRlckluZGV4ZXMsCi0JCQkJCSAgYm9vbCBvbmx5U3VtbWFyaXppbmcpCisJCQkJ CSAgQml0bWFwc2V0ICptb2RpZmllZF9pbmRleGVzKQogewogCUl0ZW1Qb2ludGVyIHR1cGxlaWQg PSAmc2xvdC0+dHRzX3RpZDsKIAlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CkBAIC0zNjQsMTAgKzM3 NiwxMiBAQCBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5m bywKIAkJCWNvbnRpbnVlOwogCiAJCS8qCi0JCSAqIFNraXAgcHJvY2Vzc2luZyBvZiBub24tc3Vt bWFyaXppbmcgaW5kZXhlcyBpZiB3ZSBvbmx5IHVwZGF0ZQotCQkgKiBzdW1tYXJpemluZyBpbmRl eGVzCisJCSAqIElmIG1vZGlmaWVkX2luZGV4ZXMgaXMgTlVMTCwgd2UncmUgbm90IGluIGEgSE9U IHVwZGF0ZSwgc28gd2UKKwkJICogc2hvdWxkIHVwZGF0ZSBhbGwgaW5kZXhlcy4gIElmIGl0J3Mg bm90IE5VTEwsIHdlIHNob3VsZCBvbmx5IHVwZGF0ZQorCQkgKiB0aGUgbGlzdGVkIGluZGV4ZXMu ICBUaGlzIGxpc3Qgd2lsbCBpbmNsdWRlIGFueSBzdW1tYXJpemluZyBpbmRleGVzCisJCSAqIHRo YXQgcmVxdWlyZSB1cGRhdGVzIG9uIHRoZSBIT1QgcGF0aCBhcyB3ZWxsLgogCQkgKi8KLQkJaWYg KG9ubHlTdW1tYXJpemluZyAmJiAhaW5kZXhJbmZvLT5paV9TdW1tYXJpemluZykKKwkJaWYgKHVw ZGF0ZSAmJiBtb2RpZmllZF9pbmRleGVzICYmICFibXNfaXNfbWVtYmVyKGksIG1vZGlmaWVkX2lu ZGV4ZXMpKQogCQkJY29udGludWU7CiAKIAkJLyogQ2hlY2sgZm9yIHBhcnRpYWwgaW5kZXggKi8K QEAgLTEwODksNiArMTEwMyw5IEBAIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUoUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbywgRVN0YXRlICplc3RhdGUsCiAKIAlpZiAoaGFzZXhwcmVzc2lv bikKIAl7CisJCWlmIChpbmRleEluZm8tPmlpX0luZGV4VW5jaGFuZ2VkKQorCQkJcmV0dXJuIHRy dWU7CisKIAkJaW5kZXhJbmZvLT5paV9JbmRleFVuY2hhbmdlZCA9IGZhbHNlOwogCQlyZXR1cm4g ZmFsc2U7CiAJfQpAQCAtMTE2NiwzICsxMTgzLDIxNyBAQCBFeGVjV2l0aG91dE92ZXJsYXBzTm90 RW1wdHkoUmVsYXRpb24gcmVsLCBOYW1lRGF0YSBhdHRuYW1lLCBEYXR1bSBhdHR2YWwsIGNoYXIg dAogCQkJCSBlcnJtc2coImVtcHR5IFdJVEhPVVQgT1ZFUkxBUFMgdmFsdWUgZm91bmQgaW4gY29s dW1uIFwiJXNcIiBpbiByZWxhdGlvbiBcIiVzXCIiLAogCQkJCQkJTmFtZVN0cihhdHRuYW1lKSwg UmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKIH0KKworLyoKKyAqIERldGVybWluZSB3 aGljaCBpbmRleGVzIG11c3QgYmUgaW52b2tlZCBkdXJpbmcgRXhlY0luZGV4SW5zZXJ0VHVwbGUo KS4KKyAqCisgKiBUaGF0IHdpbGwgaW5jbHVkZTogYW55IGluZGV4IG9uIGEgY29sdW1uIHdoZXJl IHRoZXJlIGlzIGFuIGF0dHJpYnV0ZSB0aGF0IHdhcworICogbW9kaWZpZWQsIGFueSBleHByZXNz aW9uIGluZGV4IHdoZXJlIHRoZSBleHByZXNzaW9uJ3MgdmFsdWUgdXBkYXRlZCwgYW55CisgKiBp bmRleCB1c2VkIGluIGEgY29uc3RyYWludCwgYW5kIGFueSBzdW1tYXJpemluZyBpbmRleC4KKyAq LworQml0bWFwc2V0ICoKK0V4ZWNJbmRleGVzUmVxdWlyaW5nVXBkYXRlcyhSZWxhdGlvbiByZWxh dGlvbiwKKwkJCQkJCQlCaXRtYXBzZXQgKm1vZGlmaWVkX2F0dHJzLAorCQkJCQkJCUVTdGF0ZSAq ZXN0YXRlLAorCQkJCQkJCUhlYXBUdXBsZSBvbGRfdHVwbGUsCisJCQkJCQkJSGVhcFR1cGxlIG5l d190dXBsZSwKKwkJCQkJCQlib29sICpvbmx5X3N1bW1hcml6aW5nKQoreworCUxpc3RDZWxsICAg KmxjOworCUxpc3QJICAgKmluZGV4aW5mb2xpc3QgPSByZWxhdGlvbi0+cmRfaW5kZXhpbmZvbGlz dDsKKwlFeHByQ29udGV4dCAqZWNvbnRleHQgPSBOVUxMOworCWludAkJCW51bV9zdW1tYXJpemlu ZyA9IDA7CisJVHVwbGVEZXNjCXR1cGxlZGVzYzsKKwlUdXBsZVRhYmxlU2xvdCAqb2xkX3R0cywK KwkJCSAgICpuZXdfdHRzOworCUJpdG1hcHNldCAgKnJlc3VsdCA9IE5VTEw7CisKKwkvKgorCSAq IEV4YW1pbmUgZWFjaCBpbmRleCBvbiB0aGlzIHJlbGF0aW9uIHJlbGF0aXZlIHRvIHRoZSBjaGFu Z2VzIGJldHdlZW4gb2xkCisJICogYW5kIG5ldyB0dXBsZXMuCisJICovCisJZm9yZWFjaChsYywg aW5kZXhpbmZvbGlzdCkKKwl7CisJCUluZGV4SW5mbyAgKmluZGV4SW5mbyA9IChJbmRleEluZm8g KikgbGZpcnN0KGxjKTsKKworCQkvKgorCQkgKiBTdW1tYXJpemluZyBpbmRleGVzIGRvbid0IHBy ZXZlbnQgSE9UIHVwZGF0ZXMsIGJ1dCBkbyByZXF1aXJlIHRoYXQKKwkJICogdGhleSBhcmUgdXBk YXRlZCBzbyB3ZSBpbmNsdWRlIGl0IGluIHRoZSBzZXQuCisJCSAqLworCQlpZiAoaW5kZXhJbmZv LT5paV9TdW1tYXJpemluZykKKwkJeworCQkJbnVtX3N1bW1hcml6aW5nKys7CisJCQlyZXN1bHQg PSBibXNfYWRkX21lbWJlcihyZXN1bHQsIGZvcmVhY2hfY3VycmVudF9pbmRleChsYykpOworCQkJ Y29udGludWU7CisJCX0KKworCQkvKgorCQkgKiBJZiB0aGlzIGlzIGEgcGFydGlhbCBpbmRleCBp dCBoYXMgYSBwcmVkaWNhdGUsIGV2YWx1YXRlIHRoZQorCQkgKiBleHByZXNzaW9uIHRvIGRldGVy bWluZSBpZiB3ZSBuZWVkIHRvIGluY2x1ZGUgaXQgb3Igbm90LgorCQkgKi8KKwkJaWYgKGVuYWJs ZV9leHByZXNzaW9uX2NoZWNrcyAmJiBlc3RhdGUgIT0gTlVMTCAmJgorCQkJYm1zX292ZXJsYXAo aW5kZXhJbmZvLT5paV9QcmVkaWNhdGVBdHRycywgbW9kaWZpZWRfYXR0cnMpKQorCQl7CisJCQlF eHByU3RhdGUgICpwc3RhdGU7CisJCQlib29sCQlvbGRfdHVwbGVfcXVhbGlmaWVzLAorCQkJCQkJ bmV3X3R1cGxlX3F1YWxpZmllczsKKworCQkJLyogQ3JlYXRlIHRoZXNlIG9uY2UsIG9ubHkgaWYg bmVjZXNzYXJ5LCB0aGVuIHJldXNlIHRoZW0uICovCisJCQlpZiAoIWVjb250ZXh0KQorCQkJewor CQkJCWVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpOworCQkJCXR1cGxl ZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pOworCQkJCW9sZF90dHMgPSBNYWtlU2lu Z2xlVHVwbGVUYWJsZVNsb3QodHVwbGVkZXNjLAorCQkJCQkJCQkJCQkJICAgJlRUU09wc0hlYXBU dXBsZSk7CisJCQkJbmV3X3R0cyA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdCh0dXBsZWRlc2Ms CisJCQkJCQkJCQkJCQkgICAmVFRTT3BzSGVhcFR1cGxlKTsKKworCQkJCUV4ZWNTdG9yZUhlYXBU dXBsZShvbGRfdHVwbGUsIG9sZF90dHMsIEludmFsaWRCdWZmZXIpOworCQkJCUV4ZWNTdG9yZUhl YXBUdXBsZShuZXdfdHVwbGUsIG5ld190dHMsIEludmFsaWRCdWZmZXIpOworCQkJfQorCisJCQlw c3RhdGUgPSBFeGVjUHJlcGFyZVF1YWwoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUsIGVzdGF0ZSk7 CisKKwkJCS8qCisJCQkgKiBIZXJlIHRoZSB0ZXJtICJxdWFsaWZpZXMiIG1lYW5zICJzYXRpc2Zp ZXMgdGhlIHByZWRpY2F0ZQorCQkJICogY29uZGl0aW9uIG9mIHRoZSBwYXJ0aWFsIGluZGV4Ii4K KwkJCSAqLworCQkJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gb2xkX3R0czsKKwkJCW9sZF90 dXBsZV9xdWFsaWZpZXMgPSBFeGVjUXVhbChwc3RhdGUsIGVjb250ZXh0KTsKKworCQkJZWNvbnRl eHQtPmVjeHRfc2NhbnR1cGxlID0gbmV3X3R0czsKKwkJCW5ld190dXBsZV9xdWFsaWZpZXMgPSBF eGVjUXVhbChwc3RhdGUsIGVjb250ZXh0KTsKKworCQkJLyoKKwkJCSAqIElmIG5laXRoZXIgdGhl IG9sZCBub3IgdGhlIG5ldyB0dXBsZXMgc2F0aXNmeSB0aGUgcHJlZGljYXRlIHdlCisJCQkgKiBj YW4gYmUgc3VyZSB0aGF0IHRoaXMgaW5kZXggZG9lc24ndCBuZWVkIHVwZGF0aW5nLCBjb250aW51 ZSB0bworCQkJICogdGhlIG5leHQgaW5kZXguCisJCQkgKi8KKwkJCWlmICgobmV3X3R1cGxlX3F1 YWxpZmllcyA9PSBmYWxzZSkgJiYgKG9sZF90dXBsZV9xdWFsaWZpZXMgPT0gZmFsc2UpKQorCQkJ CWNvbnRpbnVlOworCisJCQkvKgorCQkJICogSWYgdGhlcmUgaXMgYSB0cmFuc2l0aW9uIGJldHdl ZW4gaW5kZXhlZCBhbmQgbm90IGluZGV4ZWQsCisJCQkgKiB0aGF0J3MgZW5vdWdoIHRvIHJlcXVp cmUgdGhhdCB0aGlzIGluZGV4IGlzIHVwZGF0ZWQuCisJCQkgKi8KKwkJCWlmIChuZXdfdHVwbGVf cXVhbGlmaWVzICE9IG9sZF90dXBsZV9xdWFsaWZpZXMpCisJCQl7CisJCQkJcmVzdWx0ID0gYm1z X2FkZF9tZW1iZXIocmVzdWx0LCBmb3JlYWNoX2N1cnJlbnRfaW5kZXgobGMpKTsKKwkJCQljb250 aW51ZTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIE90aGVyd2lzZSB0aGUgb2xkIGFuZCBuZXcgdmFs dWVzIGV4aXN0IGluIHRoZSBpbmRleCwgYnV0IGRpZAorCQkJICogdGhleSBnZXQgdXBkYXRlZD8g IFdlIGRvbid0IHlldCBrbm93LCBzbyBwcm9jZWVkIHdpdGggdGhlIG5leHQKKwkJCSAqIHN0YXRl bWVudCBpbiB0aGUgbG9vcCB0byBmaW5kIG91dC4KKwkJCSAqLworCQl9CisKKworCQkvKgorCQkg KiBJbmRleGVzIHdpdGggZXhwcmVzc2lvbnMgbWF5IG9yIG1heSBub3QgaGF2ZSBjaGFuZ2VkLCBp dCBpcworCQkgKiBpbXBvc3NpYmxlIHRvIGtub3cgd2l0aG91dCBleGVyY2lzaW5nIHRoZWlyIGV4 cHJlc3Npb24gYW5kCisJCSAqIHJldmlld2luZyBpbmRleCB0dXBsZSBzdGF0ZSBmb3IgY2hhbmdl cy4gIFRoaXMgaXMgYSBsb3Qgb2Ygd29yaywKKwkJICogYnV0IGJlY2F1c2UgYWxsIGluZGV4ZXMg b24gSlNPTkIgY29sdW1ucyBmYWxsIGludG8gdGhpcyBjYXRlZ29yeSBpdAorCQkgKiBjYW4gYmUg d29ydGggaXQgdG8gYXZvaWQgaW5kZXggdXBkYXRlcyBhbmQgcmVtYWluIG9uIHRoZSBIT1QgdXBk YXRlCisJCSAqIHBhdGggd2hlbiBwb3NzaWJsZS4KKwkJICovCisJCWlmIChibXNfb3ZlcmxhcChp bmRleEluZm8tPmlpX0V4cHJlc3Npb25BdHRycywgbW9kaWZpZWRfYXR0cnMpKQorCQl7CisJCQlE YXR1bQkJb2xkX3ZhbHVlc1tJTkRFWF9NQVhfS0VZU107CisJCQlib29sCQlvbGRfaXNudWxsW0lO REVYX01BWF9LRVlTXTsKKwkJCURhdHVtCQluZXdfdmFsdWVzW0lOREVYX01BWF9LRVlTXTsKKwkJ CWJvb2wJCW5ld19pc251bGxbSU5ERVhfTUFYX0tFWVNdOworCQkJYm9vbAkJY2hhbmdlZCA9IGZh bHNlOworCisJCQkvKgorCQkJICogQXNzdW1lIHRoZSBpbmRleCBpcyBjaGFuZ2VkIHdoZW4gd2Ug ZG9uJ3QgaGF2ZSBhbiBlc3RhdGUKKwkJCSAqIGNvbnRleHQgdG8gdXNlIG9yIHRoZSBHVUMgaXMg ZGlzYWJsZWQuCisJCQkgKi8KKwkJCWlmICghZW5hYmxlX2V4cHJlc3Npb25fY2hlY2tzIHx8IGVz dGF0ZSA9PSBOVUxMKQorCQkJeworCQkJCXJlc3VsdCA9IGJtc19hZGRfbWVtYmVyKHJlc3VsdCwg Zm9yZWFjaF9jdXJyZW50X2luZGV4KGxjKSk7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCS8q IENyZWF0ZSB0aGVzZSBvbmNlLCBvbmx5IGlmIG5lY2Vzc2FyeSwgdGhlbiByZXVzZSB0aGVtLiAq LworCQkJaWYgKCFlY29udGV4dCkKKwkJCXsKKwkJCQllY29udGV4dCA9IEdldFBlclR1cGxlRXhw ckNvbnRleHQoZXN0YXRlKTsKKwkJCQl0dXBsZWRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbGF0 aW9uKTsKKwkJCQlvbGRfdHRzID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KHR1cGxlZGVzYywK KwkJCQkJCQkJCQkJCSAgICZUVFNPcHNIZWFwVHVwbGUpOworCQkJCW5ld190dHMgPSBNYWtlU2lu Z2xlVHVwbGVUYWJsZVNsb3QodHVwbGVkZXNjLAorCQkJCQkJCQkJCQkJICAgJlRUU09wc0hlYXBU dXBsZSk7CisKKwkJCQlFeGVjU3RvcmVIZWFwVHVwbGUob2xkX3R1cGxlLCBvbGRfdHRzLCBJbnZh bGlkQnVmZmVyKTsKKwkJCQlFeGVjU3RvcmVIZWFwVHVwbGUobmV3X3R1cGxlLCBuZXdfdHRzLCBJ bnZhbGlkQnVmZmVyKTsKKwkJCX0KKworCQkJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc1N0YXRl ID0gTklMOworCisJCQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBvbGRfdHRzOworCQkJRm9y bUluZGV4RGF0dW0oaW5kZXhJbmZvLAorCQkJCQkJICAgb2xkX3R0cywKKwkJCQkJCSAgIGVzdGF0 ZSwKKwkJCQkJCSAgIG9sZF92YWx1ZXMsCisJCQkJCQkgICBvbGRfaXNudWxsKTsKKworCQkJZWNv bnRleHQtPmVjeHRfc2NhbnR1cGxlID0gbmV3X3R0czsKKwkJCUZvcm1JbmRleERhdHVtKGluZGV4 SW5mbywKKwkJCQkJCSAgIG5ld190dHMsCisJCQkJCQkgICBlc3RhdGUsCisJCQkJCQkgICBuZXdf dmFsdWVzLAorCQkJCQkJICAgbmV3X2lzbnVsbCk7CisKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwg aW5kZXhJbmZvLT5paV9OdW1JbmRleEtleUF0dHJzOyBpKyspCisJCQl7CisJCQkJaWYgKG9sZF9p c251bGxbaV0gIT0gbmV3X2lzbnVsbFtpXSkKKwkJCQl7CisJCQkJCWNoYW5nZWQgPSB0cnVlOwor CQkJCQlicmVhazsKKwkJCQl9CisJCQkJZWxzZSBpZiAoIW9sZF9pc251bGxbaV0pCisJCQkJewor CQkJCQlpbnQxNgkJZWxtbGVuOworCQkJCQlib29sCQllbG1ieXZhbDsKKwkJCQkJT2lkCQkJb3Bj aW50eXAgPSBpbmRleEluZm8tPmlpX09wQ2xhc3NEYXRhVHlwZXNbaV07CisKKwkJCQkJZ2V0X3R5 cGxlbmJ5dmFsKG9wY2ludHlwLCAmZWxtbGVuLCAmZWxtYnl2YWwpOworCQkJCQlpZiAoIWRhdHVt X2ltYWdlX2VxKG9sZF92YWx1ZXNbaV0sIG5ld192YWx1ZXNbaV0sCisJCQkJCQkJCQkJZWxtYnl2 YWwsIGVsbWxlbikpCisJCQkJCXsKKwkJCQkJCWNoYW5nZWQgPSB0cnVlOworCQkJCQkJYnJlYWs7 CisJCQkJCX0KKwkJCQl9CisJCQl9CisKKwkJCWlmIChjaGFuZ2VkKQorCQkJCXJlc3VsdCA9IGJt c19hZGRfbWVtYmVyKHJlc3VsdCwgZm9yZWFjaF9jdXJyZW50X2luZGV4KGxjKSk7CisKKwkJCS8q IFNob3J0Y3V0IGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUoKSwgd2Uga25vdyB0aGUgYW5zd2Vy LiAqLworCQkJaW5kZXhJbmZvLT5paV9DaGVja2VkVW5jaGFuZ2VkID0gdHJ1ZTsKKwkJCWluZGV4 SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQgPSAhY2hhbmdlZDsKKwkJCWNvbnRpbnVlOworCQl9CisK KwkJLyoKKwkJICogSWYgdGhlIGluZGV4IHJlZmVyZW5jZXMgbW9kaWZpZWQgYXR0cmlidXRlcyB0 aGVuIGl0IG5lZWRzIHRvIGJlCisJCSAqIHVwZGF0ZWQuCisJCSAqLworCQlpZiAoYm1zX292ZXJs YXAoaW5kZXhJbmZvLT5paV9JbmRleEF0dHJzLCBtb2RpZmllZF9hdHRycykpCisJCQlyZXN1bHQg PSBibXNfYWRkX21lbWJlcihyZXN1bHQsIGZvcmVhY2hfY3VycmVudF9pbmRleChsYykpOworCX0K KworCWlmIChlY29udGV4dCkKKwl7CisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qob2xk X3R0cyk7CisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3QobmV3X3R0cyk7CisJfQorCisJ Km9ubHlfc3VtbWFyaXppbmcgPSAobGlzdF9sZW5ndGgoaW5kZXhpbmZvbGlzdCkgPiAwICYmCisJ CQkJCQkgbnVtX3N1bW1hcml6aW5nID09IGJtc19udW1fbWVtYmVycyhyZXN1bHQpKTsKKworCXJl dHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVw bGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCmluZGV4 IDM5ODVlODRkM2EuLmJiYWZiNGZlMGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNSZXBsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNh dGlvbi5jCkBAIC02NzEsOSArNjcxLDkgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKFJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJaWYgKCFza2lwX3R1cGxlKQogCXsKIAkJTGlzdAkg ICAqcmVjaGVja0luZGV4ZXMgPSBOSUw7Ci0JCVRVX1VwZGF0ZUluZGV4ZXMgdXBkYXRlX2luZGV4 ZXM7CiAJCUxpc3QJICAgKmNvbmZsaWN0aW5kZXhlczsKIAkJYm9vbAkJY29uZmxpY3QgPSBmYWxz ZTsKKwkJQml0bWFwc2V0ICAqbW9kaWZpZWRfaW5kZXhlcyA9IE5VTEw7CiAKIAkJLyogQ29tcHV0 ZSBzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbnMgKi8KIAkJaWYgKHJlbC0+cmRfYXR0LT5jb25zdHIg JiYKQEAgLTY4NywxNyArNjg3LDE2IEBAIEV4ZWNTaW1wbGVSZWxhdGlvblVwZGF0ZShSZXN1bHRS ZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQlpZiAocmVsLT5yZF9yZWwtPnJlbGlzcGFydGl0aW9u KQogCQkJRXhlY1BhcnRpdGlvbkNoZWNrKHJlc3VsdFJlbEluZm8sIHNsb3QsIGVzdGF0ZSwgdHJ1 ZSk7CiAKLQkJc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZShyZWwsIHRpZCwgc2xvdCwgZXN0YXRl LT5lc19zbmFwc2hvdCwKLQkJCQkJCQkJICAmdXBkYXRlX2luZGV4ZXMpOworCQlzaW1wbGVfdGFi bGVfdHVwbGVfdXBkYXRlKHJlbCwgdGlkLCBzbG90LCBlc3RhdGUtPmVzX3NuYXBzaG90KTsKIAog CQljb25mbGljdGluZGV4ZXMgPSByZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlcklu ZGV4ZXM7CiAKLQkJaWYgKHJlc3VsdFJlbEluZm8tPnJpX051bUluZGljZXMgPiAwICYmICh1cGRh dGVfaW5kZXhlcyAhPSBUVV9Ob25lKSkKKwkJaWYgKHJlc3VsdFJlbEluZm8tPnJpX051bUluZGlj ZXMgPiAwKQogCQkJcmVjaGVja0luZGV4ZXMgPSBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMocmVzdWx0 UmVsSW5mbywKIAkJCQkJCQkJCQkJCSAgIHNsb3QsIGVzdGF0ZSwgdHJ1ZSwKIAkJCQkJCQkJCQkJ CSAgIGNvbmZsaWN0aW5kZXhlcyA/IHRydWUgOiBmYWxzZSwKIAkJCQkJCQkJCQkJCSAgICZjb25m bGljdCwgY29uZmxpY3RpbmRleGVzLAotCQkJCQkJCQkJCQkJICAgKHVwZGF0ZV9pbmRleGVzID09 IFRVX1N1bW1hcml6aW5nKSk7CisJCQkJCQkJCQkJCQkgICAmbW9kaWZpZWRfaW5kZXhlcyk7CiAK IAkJLyoKIAkJICogUmVmZXIgdG8gdGhlIGNvbW1lbnRzIGFib3ZlIHRoZSBjYWxsIHRvIENoZWNr QW5kUmVwb3J0Q29uZmxpY3QoKSBpbgpAQCAtNzE1LDYgKzcxNCw3IEBAIEV4ZWNTaW1wbGVSZWxh dGlvblVwZGF0ZShSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJCQkJCSByZWNoZWNr SW5kZXhlcywgTlVMTCwgZmFsc2UpOwogCiAJCWxpc3RfZnJlZShyZWNoZWNrSW5kZXhlcyk7CisJ CWJtc19mcmVlKG1vZGlmaWVkX2luZGV4ZXMpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTW9kaWZ5VGFibGUuYwppbmRleCBiYzgyZTAzNWJhLi5mOTliZjY2MTc3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtMTIwLDggKzEyMCwxMiBAQCB0eXBlZGVm IHN0cnVjdCBNb2RpZnlUYWJsZUNvbnRleHQKICAqLwogdHlwZWRlZiBzdHJ1Y3QgVXBkYXRlQ29u dGV4dAogeworCUJpdG1hcHNldCAgKm1vZGlmaWVkSW5kZXhlczsJLyogRWl0aGVyIE5VTEwgaW5k aWNhdGluZyB0aGF0IGFsbCBpbmRleGVzCisJCQkJCQkJCQkgKiBzaG91bGQgYmUgdXBkYXRlZCBv ciBhIGJpdG1hcCBvZgorCQkJCQkJCQkJICogSW5kZXhJbmZvIGFycmF5IHBvc2l0aW9ucyBmb3Ig dGhlCisJCQkJCQkJCQkgKiBzdWJzZXQgb2YgbW9kaWZpZWQgaW5kZXhlcyByZXF1aXJpbmcKKwkJ CQkJCQkJCSAqIHVwZGF0ZXMuICovCiAJYm9vbAkJY3Jvc3NQYXJ0VXBkYXRlOwkvKiB3YXMgaXQg YSBjcm9zcy1wYXJ0aXRpb24gdXBkYXRlPyAqLwotCVRVX1VwZGF0ZUluZGV4ZXMgdXBkYXRlSW5k ZXhlczsgLyogV2hpY2ggaW5kZXggdXBkYXRlcyBhcmUgcmVxdWlyZWQ/ICovCiAKIAkvKgogCSAq IExvY2sgbW9kZSB0byBhY3F1aXJlIG9uIHRoZSBsYXRlc3QgdHVwbGUgdmVyc2lvbiBiZWZvcmUg cGVyZm9ybWluZwpAQCAtMjI2Niw3ICsyMjcwLDggQEAgbHJlcGxhY2U6CiAJCQkJCQkJCWVzdGF0 ZS0+ZXNfY3Jvc3NjaGVja19zbmFwc2hvdCwKIAkJCQkJCQkJdHJ1ZSAvKiB3YWl0IGZvciBjb21t aXQgKi8gLAogCQkJCQkJCQkmY29udGV4dC0+dG1mZCwgJnVwZGF0ZUN4dC0+bG9ja21vZGUsCi0J CQkJCQkJCSZ1cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMpOworCQkJCQkJCQkmdXBkYXRlQ3h0LT5t b2RpZmllZEluZGV4ZXMsCisJCQkJCQkJCWVzdGF0ZSk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpA QCAtMjI4NiwxMiArMjI5MSwxMiBAQCBFeGVjVXBkYXRlRXBpbG9ndWUoTW9kaWZ5VGFibGVDb250 ZXh0ICpjb250ZXh0LCBVcGRhdGVDb250ZXh0ICp1cGRhdGVDeHQsCiAJTGlzdAkgICAqcmVjaGVj a0luZGV4ZXMgPSBOSUw7CiAKIAkvKiBpbnNlcnQgaW5kZXggZW50cmllcyBmb3IgdHVwbGUgaWYg bmVjZXNzYXJ5ICovCi0JaWYgKHJlc3VsdFJlbEluZm8tPnJpX051bUluZGljZXMgPiAwICYmICh1 cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMgIT0gVFVfTm9uZSkpCisJaWYgKHJlc3VsdFJlbEluZm8t PnJpX051bUluZGljZXMgPiAwKQogCQlyZWNoZWNrSW5kZXhlcyA9IEV4ZWNJbnNlcnRJbmRleFR1 cGxlcyhyZXN1bHRSZWxJbmZvLAogCQkJCQkJCQkJCQkgICBzbG90LCBjb250ZXh0LT5lc3RhdGUs CiAJCQkJCQkJCQkJCSAgIHRydWUsIGZhbHNlLAogCQkJCQkJCQkJCQkgICBOVUxMLCBOSUwsCi0J CQkJCQkJCQkJCSAgICh1cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMgPT0gVFVfU3VtbWFyaXppbmcp KTsKKwkJCQkJCQkJCQkJICAgdXBkYXRlQ3h0LT5tb2RpZmllZEluZGV4ZXMpOwogCiAJLyogQUZU RVIgUk9XIFVQREFURSBUcmlnZ2VycyAqLwogCUV4ZWNBUlVwZGF0ZVRyaWdnZXJzKGNvbnRleHQt PmVzdGF0ZSwgcmVzdWx0UmVsSW5mbywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4 IDQzMjE5YTk2MjkuLmY5YTIxYTYwNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpA QCAtMjQzMyw3ICsyNDMzLDYgQEAgUmVsYXRpb25EZXN0cm95UmVsYXRpb24oUmVsYXRpb24gcmVs YXRpb24sIGJvb2wgcmVtZW1iZXJfdHVwZGVzYykKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfcGth dHRyKTsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfaWRhdHRyKTsKIAlibXNfZnJlZShyZWxhdGlv bi0+cmRfaG90YmxvY2tpbmdhdHRyKTsKLQlibXNfZnJlZShyZWxhdGlvbi0+cmRfc3VtbWFyaXpl ZGF0dHIpOwogCWlmIChyZWxhdGlvbi0+cmRfcHViZGVzYykKIAkJcGZyZWUocmVsYXRpb24tPnJk X3B1YmRlc2MpOwogCWlmIChyZWxhdGlvbi0+cmRfb3B0aW9ucykKQEAgLTUyMjYsNyArNTIyNSw2 IEBAIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0aW9uLCBJbmRleEF0 dHJCaXRtYXBLaW5kIGF0dHJLaW5kKQogCUJpdG1hcHNldCAgKnBraW5kZXhhdHRyczsJLyogY29s dW1ucyBpbiB0aGUgcHJpbWFyeSBpbmRleCAqLwogCUJpdG1hcHNldCAgKmlkaW5kZXhhdHRyczsJ LyogY29sdW1ucyBpbiB0aGUgcmVwbGljYSBpZGVudGl0eSAqLwogCUJpdG1hcHNldCAgKmhvdGJs b2NraW5nYXR0cnM7CS8qIGNvbHVtbnMgd2l0aCBIT1QgYmxvY2tpbmcgaW5kZXhlcyAqLwotCUJp dG1hcHNldCAgKnN1bW1hcml6ZWRhdHRyczsJLyogY29sdW1ucyB3aXRoIHN1bW1hcml6aW5nIGlu ZGV4ZXMgKi8KIAlMaXN0CSAgICppbmRleG9pZGxpc3Q7CiAJTGlzdAkgICAqbmV3aW5kZXhvaWRs aXN0OwogCU9pZAkJCXJlbHBraW5kZXg7CkBAIC01MjQ3LDggKzUyNDUsNiBAQCBSZWxhdGlvbkdl dEluZGV4QXR0ckJpdG1hcChSZWxhdGlvbiByZWxhdGlvbiwgSW5kZXhBdHRyQml0bWFwS2luZCBh dHRyS2luZCkKIAkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX2lkYXR0cik7CiAJCQlj YXNlIElOREVYX0FUVFJfQklUTUFQX0hPVF9CTE9DS0lORzoKIAkJCQlyZXR1cm4gYm1zX2NvcHko cmVsYXRpb24tPnJkX2hvdGJsb2NraW5nYXR0cik7Ci0JCQljYXNlIElOREVYX0FUVFJfQklUTUFQ X1NVTU1BUklaRUQ6Ci0JCQkJcmV0dXJuIGJtc19jb3B5KHJlbGF0aW9uLT5yZF9zdW1tYXJpemVk YXR0cik7CiAJCQlkZWZhdWx0OgogCQkJCWVsb2coRVJST1IsICJ1bmtub3duIGF0dHJLaW5kICV1 IiwgYXR0cktpbmQpOwogCQl9CkBAIC01MjkyLDcgKzUyODgsNiBAQCByZXN0YXJ0OgogCXBraW5k ZXhhdHRycyA9IE5VTEw7CiAJaWRpbmRleGF0dHJzID0gTlVMTDsKIAlob3RibG9ja2luZ2F0dHJz ID0gTlVMTDsKLQlzdW1tYXJpemVkYXR0cnMgPSBOVUxMOwogCWZvcmVhY2gobCwgaW5kZXhvaWRs aXN0KQogCXsKIAkJT2lkCQkJaW5kZXhPaWQgPSBsZmlyc3Rfb2lkKGwpOwpAQCAtNTMwNSw3ICs1 MzAwLDYgQEAgcmVzdGFydDoKIAkJYm9vbAkJaXNLZXk7CQkvKiBjYW5kaWRhdGUga2V5ICovCiAJ CWJvb2wJCWlzUEs7CQkvKiBwcmltYXJ5IGtleSAqLwogCQlib29sCQlpc0lES2V5OwkvKiByZXBs aWNhIGlkZW50aXR5IGluZGV4ICovCi0JCUJpdG1hcHNldCAqKmF0dHJzOwogCiAJCWluZGV4RGVz YyA9IGluZGV4X29wZW4oaW5kZXhPaWQsIEFjY2Vzc1NoYXJlTG9jayk7CiAKQEAgLTUzNDMsMTYg KzUzMzcsNiBAQCByZXN0YXJ0OgogCQkvKiBJcyB0aGlzIGluZGV4IHRoZSBjb25maWd1cmVkIChv ciBkZWZhdWx0KSByZXBsaWNhIGlkZW50aXR5PyAqLwogCQlpc0lES2V5ID0gKGluZGV4T2lkID09 IHJlbHJlcGxpbmRleCk7CiAKLQkJLyoKLQkJICogSWYgdGhlIGluZGV4IGlzIHN1bW1hcml6aW5n LCBpdCBkb2Vzbid0IGJsb2NrIEhPVCB1cGRhdGVzLCBidXQgd2UKLQkJICogbWF5IHN0aWxsIG5l ZWQgdG8gdXBkYXRlIGl0IChpZiB0aGUgYXR0cmlidXRlcyB3ZXJlIG1vZGlmaWVkKS4gU28KLQkJ ICogZGVjaWRlIHdoaWNoIGJpdG1hcCB3ZSdsbCB1cGRhdGUgaW4gdGhlIGZvbGxvd2luZyBsb29w LgotCQkgKi8KLQkJaWYgKGluZGV4RGVzYy0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcpCi0JCQlh dHRycyA9ICZzdW1tYXJpemVkYXR0cnM7Ci0JCWVsc2UKLQkJCWF0dHJzID0gJmhvdGJsb2NraW5n YXR0cnM7Ci0KIAkJLyogQ29sbGVjdCBzaW1wbGUgYXR0cmlidXRlIHJlZmVyZW5jZXMgKi8KIAkJ Zm9yIChpID0gMDsgaSA8IGluZGV4RGVzYy0+cmRfaW5kZXgtPmluZG5hdHRzOyBpKyspCiAJCXsK QEAgLTUzNzQsOCArNTM1OCw4IEBAIHJlc3RhcnQ6CiAJCQkgKi8KIAkJCWlmIChhdHRybnVtICE9 IDApCiAJCQl7Ci0JCQkJKmF0dHJzID0gYm1zX2FkZF9tZW1iZXIoKmF0dHJzLAotCQkJCQkJCQkJ CWF0dHJudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJCQlob3Ri bG9ja2luZ2F0dHJzID0gYm1zX2FkZF9tZW1iZXIoaG90YmxvY2tpbmdhdHRycywKKwkJCQkJCQkJ CQkJCSAgYXR0cm51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOwogCiAJ CQkJaWYgKGlzS2V5ICYmIGkgPCBpbmRleERlc2MtPnJkX2luZGV4LT5pbmRua2V5YXR0cykKIAkJ CQkJdWluZGV4YXR0cnMgPSBibXNfYWRkX21lbWJlcih1aW5kZXhhdHRycywKQEAgLTUzOTIsMTIg KzUzNzYsMTQgQEAgcmVzdGFydDoKIAkJfQogCiAJCS8qIENvbGxlY3QgYWxsIGF0dHJpYnV0ZXMg dXNlZCBpbiBleHByZXNzaW9ucywgdG9vICovCi0JCXB1bGxfdmFyYXR0bm9zKGluZGV4RXhwcmVz c2lvbnMsIDEsIGF0dHJzKTsKKwkJcHVsbF92YXJhdHRub3MoaW5kZXhFeHByZXNzaW9ucywgMSwg JmhvdGJsb2NraW5nYXR0cnMpOwogCiAJCS8qIENvbGxlY3QgYWxsIGF0dHJpYnV0ZXMgaW4gdGhl IGluZGV4IHByZWRpY2F0ZSwgdG9vICovCi0JCXB1bGxfdmFyYXR0bm9zKGluZGV4UHJlZGljYXRl LCAxLCBhdHRycyk7CisJCXB1bGxfdmFyYXR0bm9zKGluZGV4UHJlZGljYXRlLCAxLCAmaG90Ymxv Y2tpbmdhdHRycyk7CisKKwkJaWYgKGluZGV4RGVzYy0+cmRfaW5kZXgpCiAKLQkJaW5kZXhfY2xv c2UoaW5kZXhEZXNjLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJaW5kZXhfY2xvc2UoaW5kZXhEZXNj LCBBY2Nlc3NTaGFyZUxvY2spOwogCX0KIAogCS8qCkBAIC01NDI0LDcgKzU0MTAsNiBAQCByZXN0 YXJ0OgogCQlibXNfZnJlZShwa2luZGV4YXR0cnMpOwogCQlibXNfZnJlZShpZGluZGV4YXR0cnMp OwogCQlibXNfZnJlZShob3RibG9ja2luZ2F0dHJzKTsKLQkJYm1zX2ZyZWUoc3VtbWFyaXplZGF0 dHJzKTsKIAogCQlnb3RvIHJlc3RhcnQ7CiAJfQpAQCAtNTQzOSw4ICs1NDI0LDYgQEAgcmVzdGFy dDoKIAlyZWxhdGlvbi0+cmRfaWRhdHRyID0gTlVMTDsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRf aG90YmxvY2tpbmdhdHRyKTsKIAlyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyID0gTlVMTDsK LQlibXNfZnJlZShyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIpOwotCXJlbGF0aW9uLT5yZF9z dW1tYXJpemVkYXR0ciA9IE5VTEw7CiAKIAkvKgogCSAqIE5vdyBzYXZlIGNvcGllcyBvZiB0aGUg Yml0bWFwcyBpbiB0aGUgcmVsY2FjaGUgZW50cnkuICBXZSBpbnRlbnRpb25hbGx5CkBAIC01NDU0 LDcgKzU0MzcsNiBAQCByZXN0YXJ0OgogCXJlbGF0aW9uLT5yZF9wa2F0dHIgPSBibXNfY29weShw a2luZGV4YXR0cnMpOwogCXJlbGF0aW9uLT5yZF9pZGF0dHIgPSBibXNfY29weShpZGluZGV4YXR0 cnMpOwogCXJlbGF0aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIgPSBibXNfY29weShob3RibG9ja2lu Z2F0dHJzKTsKLQlyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIgPSBibXNfY29weShzdW1tYXJp emVkYXR0cnMpOwogCXJlbGF0aW9uLT5yZF9hdHRyc3ZhbGlkID0gdHJ1ZTsKIAlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIApAQCAtNTQ2OSw4ICs1NDUxLDYgQEAgcmVzdGFydDoKIAkJ CXJldHVybiBpZGluZGV4YXR0cnM7CiAJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSE9UX0JMT0NL SU5HOgogCQkJcmV0dXJuIGhvdGJsb2NraW5nYXR0cnM7Ci0JCWNhc2UgSU5ERVhfQVRUUl9CSVRN QVBfU1VNTUFSSVpFRDoKLQkJCXJldHVybiBzdW1tYXJpemVkYXR0cnM7CiAJCWRlZmF1bHQ6CiAJ CQllbG9nKEVSUk9SLCAidW5rbm93biBhdHRyS2luZCAldSIsIGF0dHJLaW5kKTsKIAkJCXJldHVy biBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCAzOGNiOWU5NzBkLi4x ZjNlYjBjYWExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMTAwNyw2ICsx MDA3LDE5IEBAIHN0cnVjdCBjb25maWdfYm9vbCBDb25maWd1cmVOYW1lc0Jvb2xbXSA9CiAJCXRy dWUsCiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAorCXsKKwkJeyJlbmFibGVfZXhwcmVzc2lvbl9j aGVja3MiLCBQR0NfVVNFUlNFVCwgUVVFUllfVFVOSU5HX01FVEhPRCwKKwkJCWdldHRleHRfbm9v cCgiRW5hYmxlcyB0aGUgYWJpbGl0eSB0byBleGFtaW5lIGV4cHJlc3Npb24gYW5kIHBhcnRpYWwg aW5kZXhlcyAiCisJCQkJCQkgImZvciBjaGFuZ2VzIGR1cmluZyB1cGRhdGVzLiIpLAorCQkJZ2V0 dGV4dF9ub29wKCJFdmFsdWF0ZXMgdGhlIGV4cHJlc3Npb25zIG9uIHRoZSBpbmRleCB0byBkZXRl cm1pbmUgaWYgIgorCQkJCQkJICJ0aGUgaW5kZXhlZCB2YWx1ZXMgY2hhbmdlZC4gIFRoaXMgYWxs b3dzIGZvciBoZWFwLW9ubHkgIgorCQkJCQkJICJ0dXBsZSAoSE9UKSB1cGRhdGVzIHdoZW4gaW5k ZXhlcyBoYXZlIG5vdCBjaGFuZ2VkLiIpLAorCQkJR1VDX0VYUExBSU4KKwkJfSwKKwkJJmVuYWJs ZV9leHByZXNzaW9uX2NoZWNrcywKKwkJdHJ1ZSwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCiAJ ewogCQl7ImdlcW8iLCBQR0NfVVNFUlNFVCwgUVVFUllfVFVOSU5HX0dFUU8sCiAJCQlnZXR0ZXh0 X25vb3AoIkVuYWJsZXMgZ2VuZXRpYyBxdWVyeSBvcHRpbWl6YXRpb24uIiksCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggMDc5ZWZhMWJhYS4u NjFhYjFiYjU5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3Fs LmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25m LnNhbXBsZQpAQCAtNDA4LDYgKzQwOCw3IEBACiAjZW5hYmxlX3RpZHNjYW4gPSBvbgogI2VuYWJs ZV9ncm91cF9ieV9yZW9yZGVyaW5nID0gb24KICNlbmFibGVfZGlzdGluY3RfcmVvcmRlcmluZyA9 IG9uCisjZW5hYmxlX2V4cHJlc3Npb25fY2hlY2tzID0gb24KIAogIyAtIFBsYW5uZXIgQ29zdCBD b25zdGFudHMgLQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMTY0MGQ5YzMyZi4uZTEyMTczZWJhNCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9za2V5 LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCQkvKiBmb3IgYmFja3dhcmQgY29tcGF0aWJp bGl0eSAqLwogI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCisjaW5jbHVkZSAiZXhlY3V0b3Iv ZXhlY3V0b3IuaCIKICNpbmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5oIgogI2luY2x1ZGUgIm5v ZGVzL3ByaW1ub2Rlcy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmcGFnZS5oIgpAQCAtMzM5LDcg KzM0MCw3IEBAIGV4dGVybiBUTV9SZXN1bHQgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24s IEl0ZW1Qb2ludGVyIG90aWQsCiAJCQkJCQkJIEhlYXBUdXBsZSBuZXd0dXAsCiAJCQkJCQkJIENv bW1hbmRJZCBjaWQsIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKIAkJCQkJCQkgc3Ry dWN0IFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCQkJ CQkgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCSBCaXRtYXBzZXQg Kiptb2RpZmllZF9pbmRleGVzLCBzdHJ1Y3QgRVN0YXRlICplc3RhdGUpOwogZXh0ZXJuIFRNX1Jl c3VsdCBoZWFwX2xvY2tfdHVwbGUoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXBsZSwK IAkJCQkJCQkJIENvbW1hbmRJZCBjaWQsIExvY2tUdXBsZU1vZGUgbW9kZSwgTG9ja1dhaXRQb2xp Y3kgd2FpdF9wb2xpY3ksCiAJCQkJCQkJCSBib29sIGZvbGxvd191cGRhdGVzLApAQCAtMzc0LDcg KzM3NSw3IEBAIGV4dGVybiBib29sIGhlYXBfdHVwbGVfbmVlZHNfZXZlbnR1YWxfZnJlZXplKEhl YXBUdXBsZUhlYWRlciB0dXBsZSk7CiBleHRlcm4gdm9pZCBzaW1wbGVfaGVhcF9pbnNlcnQoUmVs YXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXApOwogZXh0ZXJuIHZvaWQgc2ltcGxlX2hlYXBf ZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciB0aWQpOwogZXh0ZXJuIHZvaWQg c2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLAot CQkJCQkJCSAgIEhlYXBUdXBsZSB0dXAsIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVz KTsKKwkJCQkJCQkgICBIZWFwVHVwbGUgdHVwKTsKIAogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVh cF9pbmRleF9kZWxldGVfdHVwbGVzKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCQkJICBUTV9JbmRl eERlbGV0ZU9wICpkZWxzdGF0ZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFi bGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCAxMzFjMDUwYzE1Li4z MDAyMjZkNDRkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTM4LDYgKzM4LDcgQEAgc3RydWN0IElu ZGV4SW5mbzsKIHN0cnVjdCBTYW1wbGVTY2FuU3RhdGU7CiBzdHJ1Y3QgVmFjdXVtUGFyYW1zOwog c3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZTsKK3N0cnVjdCBFU3RhdGU7CiAKIC8qCiAgKiBCaXRt YXNrIHZhbHVlcyBmb3IgdGhlIGZsYWdzIGFyZ3VtZW50IHRvIHRoZSBzY2FuX2JlZ2luIGNhbGxi YWNrLgpAQCAtMTA5LDIxICsxMTAsNiBAQCB0eXBlZGVmIGVudW0gVE1fUmVzdWx0CiAJVE1fV291 bGRCbG9jaywKIH0gVE1fUmVzdWx0OwogCi0vKgotICogUmVzdWx0IGNvZGVzIGZvciB0YWJsZV91 cGRhdGUoLi4uLCB1cGRhdGVfaW5kZXhlcyouLikuCi0gKiBVc2VkIHRvIGRldGVybWluZSB3aGlj aCBpbmRleGVzIHRvIHVwZGF0ZS4KLSAqLwotdHlwZWRlZiBlbnVtIFRVX1VwZGF0ZUluZGV4ZXMK LXsKLQkvKiBObyBpbmRleGVkIGNvbHVtbnMgd2VyZSB1cGRhdGVkIChpbmNsLiBUSUQgYWRkcmVz c2luZyBvZiB0dXBsZSkgKi8KLQlUVV9Ob25lLAotCi0JLyogQSBub24tc3VtbWFyaXppbmcgaW5k ZXhlZCBjb2x1bW4gd2FzIHVwZGF0ZWQsIG9yIHRoZSBUSUQgaGFzIGNoYW5nZWQgKi8KLQlUVV9B bGwsCi0KLQkvKiBPbmx5IHN1bW1hcml6ZWQgY29sdW1ucyB3ZXJlIHVwZGF0ZWQsIFRJRCBpcyB1 bmNoYW5nZWQgKi8KLQlUVV9TdW1tYXJpemluZywKLX0gVFVfVXBkYXRlSW5kZXhlczsKIAogLyoK ICAqIFdoZW4gdGFibGVfdHVwbGVfdXBkYXRlLCB0YWJsZV90dXBsZV9kZWxldGUsIG9yIHRhYmxl X3R1cGxlX2xvY2sgZmFpbApAQCAtNTUwLDcgKzUzNiw4IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxl QW1Sb3V0aW5lCiAJCQkJCQkJCSBib29sIHdhaXQsCiAJCQkJCQkJCSBUTV9GYWlsdXJlRGF0YSAq dG1mZCwKIAkJCQkJCQkJIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAotCQkJCQkJCQkgVFVfVXBk YXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCQkgQml0bWFwc2V0ICoqbW9kaWZp ZWRfaW5kZXhlcywKKwkJCQkJCQkJIHN0cnVjdCBFU3RhdGUgKmVzdGF0ZSk7CiAKIAkvKiBzZWUg dGFibGVfdHVwbGVfbG9jaygpIGZvciByZWZlcmVuY2UgYWJvdXQgcGFyYW1ldGVycyAqLwogCVRN X1Jlc3VsdAkoKnR1cGxlX2xvY2spIChSZWxhdGlvbiByZWwsCkBAIC0xNTQxLDEyICsxNTI4LDEy IEBAIHN0YXRpYyBpbmxpbmUgVE1fUmVzdWx0CiB0YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24g cmVsLCBJdGVtUG9pbnRlciBvdGlkLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkgICBDb21t YW5kSWQgY2lkLCBTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3QgY3Jvc3NjaGVjaywKIAkJCQkg ICBib29sIHdhaXQsIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9k ZSwKLQkJCQkgICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkgICBCaXRt YXBzZXQgKiptb2RpZmllZF9pbmRleGVzLCBzdHJ1Y3QgRVN0YXRlICplc3RhdGUpCiB7CiAJcmV0 dXJuIHJlbC0+cmRfdGFibGVhbS0+dHVwbGVfdXBkYXRlKHJlbCwgb3RpZCwgc2xvdCwKIAkJCQkJ CQkJCQkgY2lkLCBzbmFwc2hvdCwgY3Jvc3NjaGVjaywKLQkJCQkJCQkJCQkgd2FpdCwgdG1mZCwK LQkJCQkJCQkJCQkgbG9ja21vZGUsIHVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkJCQkgd2FpdCwg dG1mZCwgbG9ja21vZGUsCisJCQkJCQkJCQkJIG1vZGlmaWVkX2luZGV4ZXMsIGVzdGF0ZSk7CiB9 CiAKIC8qCkBAIC0yMDc1LDggKzIwNjIsNyBAQCBleHRlcm4gdm9pZCBzaW1wbGVfdGFibGVfdHVw bGVfaW5zZXJ0KFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOwogZXh0ZXJuIHZv aWQgc2ltcGxlX3RhYmxlX3R1cGxlX2RlbGV0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIHRp ZCwKIAkJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QpOwogZXh0ZXJuIHZvaWQgc2ltcGxlX3Rh YmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQsCi0JCQkJCQkJ CQkgIFR1cGxlVGFibGVTbG90ICpzbG90LCBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJCQkJCSAg VFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCQkJICBUdXBsZVRhYmxl U2xvdCAqc2xvdCwgU25hcHNob3Qgc25hcHNob3QpOwogCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IGM3ZGI2ZGVmZDMuLjJkYTQ0OGZjYTAgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAtNjQ5LDcgKzY0OSw3IEBAIGV4dGVybiBMaXN0ICpF eGVjSW5zZXJ0SW5kZXhUdXBsZXMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCQkJ CQkJICAgYm9vbCB1cGRhdGUsCiAJCQkJCQkJCSAgIGJvb2wgbm9EdXBFcnIsCiAJCQkJCQkJCSAg IGJvb2wgKnNwZWNDb25mbGljdCwgTGlzdCAqYXJiaXRlckluZGV4ZXMsCi0JCQkJCQkJCSAgIGJv b2wgb25seVN1bW1hcml6aW5nKTsKKwkJCQkJCQkJICAgQml0bWFwc2V0ICptb2RpZmllZF9pbmRl eGVzKTsKIGV4dGVybiBib29sIEV4ZWNDaGVja0luZGV4Q29uc3RyYWludHMoUmVzdWx0UmVsSW5m byAqcmVzdWx0UmVsSW5mbywKIAkJCQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJ CQkJCQkgIEVTdGF0ZSAqZXN0YXRlLCBJdGVtUG9pbnRlciBjb25mbGljdFRpZCwKQEAgLTY2MCw2 ICs2NjAsMTIgQEAgZXh0ZXJuIHZvaWQgY2hlY2tfZXhjbHVzaW9uX2NvbnN0cmFpbnQoUmVsYXRp b24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJCQkJCQkJCQkgICBJdGVtUG9pbnRlciB0dXBsZWlk LAogCQkJCQkJCQkJICAgY29uc3QgRGF0dW0gKnZhbHVlcywgY29uc3QgYm9vbCAqaXNudWxsLAog CQkJCQkJCQkJICAgRVN0YXRlICplc3RhdGUsIGJvb2wgbmV3SW5kZXgpOworZXh0ZXJuIEJpdG1h cHNldCAqRXhlY0luZGV4ZXNSZXF1aXJpbmdVcGRhdGVzKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJ CQkJCQkJCQkgIEJpdG1hcHNldCAqbW9kaWZpZWRfYXR0cnMsCisJCQkJCQkJCQkJCSAgRVN0YXRl ICplc3RhdGUsCisJCQkJCQkJCQkJCSAgSGVhcFR1cGxlIG9sZF90dXBsZSwKKwkJCQkJCQkJCQkJ ICBIZWFwVHVwbGUgbmV3X3R1cGxlLAorCQkJCQkJCQkJCQkgIGJvb2wgKm9ubHlfc3VtbWFyaXpp bmcpOwogCiAvKgogICogcHJvdG90eXBlcyBmcm9tIGZ1bmN0aW9ucyBpbiBleGVjUmVwbGljYXRp b24uYwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA4Y2U0NDMwYWYwLi42NDE3NzY5YTlhIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaApAQCAtMTU5LDEyICsxNTksMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhw clN0YXRlCiAgKgogICoJCU51bUluZGV4QXR0cnMJCXRvdGFsIG51bWJlciBvZiBjb2x1bW5zIGlu IHRoaXMgaW5kZXgKICAqCQlOdW1JbmRleEtleUF0dHJzCW51bWJlciBvZiBrZXkgY29sdW1ucyBp biBpbmRleAorICoJCUluZGV4QXR0cnMJCQliaXRtYXAgb2YgaW5kZXggYXR0cmlidXRlcwogICoJ CUluZGV4QXR0ck51bWJlcnMJdW5kZXJseWluZy1yZWwgYXR0cmlidXRlIG51bWJlcnMgdXNlZCBh cyBrZXlzCiAgKgkJCQkJCQkoemVyb2VzIGluZGljYXRlIGV4cHJlc3Npb25zKS4gSXQgYWxzbyBj b250YWlucwogICogCQkJCQkJCWluZm8gYWJvdXQgaW5jbHVkZWQgY29sdW1ucy4KICAqCQlFeHBy ZXNzaW9ucwkJCWV4cHIgdHJlZXMgZm9yIGV4cHJlc3Npb24gZW50cmllcywgb3IgTklMIGlmIG5v bmUKKyAqCQlFeHByZXNzaW9uQXR0cnMJCWJpdG1hcCBvZiBhdHRyaWJ1dGVzIHVzZWQgd2l0aGlu IHRoZSBleHByZXNzaW9uCiAgKgkJRXhwcmVzc2lvbnNTdGF0ZQlleGVjIHN0YXRlIGZvciBleHBy ZXNzaW9ucywgb3IgTklMIGlmIG5vbmUKICAqCQlQcmVkaWNhdGUJCQlwYXJ0aWFsLWluZGV4IHBy ZWRpY2F0ZSwgb3IgTklMIGlmIG5vbmUKKyAqCQlQcmVkaWNhdGVBdHRycwkJYml0bWFwIG9mIGF0 dHJpYnV0ZXMgdXNlZCB3aXRoaW4gdGhlIHByZWRpY2F0ZQogICoJCVByZWRpY2F0ZVN0YXRlCQll eGVjIHN0YXRlIGZvciBwcmVkaWNhdGUsIG9yIE5JTCBpZiBub25lCiAgKgkJRXhjbHVzaW9uT3Bz CQlQZXItY29sdW1uIGV4Y2x1c2lvbiBvcGVyYXRvcnMsIG9yIE5VTEwgaWYgbm9uZQogICoJCUV4 Y2x1c2lvblByb2NzCQlVbmRlcmx5aW5nIGZ1bmN0aW9uIE9JRHMgZm9yIEV4Y2x1c2lvbk9wcwpA QCAtMTgzLDYgKzE4Niw3IEBAIHR5cGVkZWYgc3RydWN0IEV4cHJTdGF0ZQogICoJCVBhcmFsbGVs V29ya2VycwkJIyBvZiB3b3JrZXJzIHJlcXVlc3RlZCAoZXhjbHVkZXMgbGVhZGVyKQogICoJCUFt CQkJCQlPaWQgb2YgaW5kZXggQU0KICAqCQlBbUNhY2hlCQkJCXByaXZhdGUgY2FjaGUgYXJlYSBm b3IgaW5kZXggQU0KKyAqCQlPcENsYXNzRGF0YVR5cGVzCW9wZXJhdG9yIGNsYXNzIGRhdGEgdHlw ZXMKICAqCQlDb250ZXh0CQkJCW1lbW9yeSBjb250ZXh0IGhvbGRpbmcgdGhpcyBJbmRleEluZm8K ICAqCiAgKiBpaV9Db25jdXJyZW50LCBpaV9Ccm9rZW5Ib3RDaGFpbiwgYW5kIGlpX1BhcmFsbGVs V29ya2VycyBhcmUgdXNlZCBvbmx5CkBAIC0xOTQsMTAgKzE5OCwxMyBAQCB0eXBlZGVmIHN0cnVj dCBJbmRleEluZm8KIAlOb2RlVGFnCQl0eXBlOwogCWludAkJCWlpX051bUluZGV4QXR0cnM7CS8q IHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIGluIGluZGV4ICovCiAJaW50CQkJaWlfTnVtSW5kZXhL ZXlBdHRyczsJLyogbnVtYmVyIG9mIGtleSBjb2x1bW5zIGluIGluZGV4ICovCisJQml0bWFwc2V0 ICAqaWlfSW5kZXhBdHRyczsKIAlBdHRyTnVtYmVyCWlpX0luZGV4QXR0ck51bWJlcnNbSU5ERVhf TUFYX0tFWVNdOwogCUxpc3QJICAgKmlpX0V4cHJlc3Npb25zOyAvKiBsaXN0IG9mIEV4cHIgKi8K KwlCaXRtYXBzZXQgICppaV9FeHByZXNzaW9uQXR0cnM7CiAJTGlzdAkgICAqaWlfRXhwcmVzc2lv bnNTdGF0ZTsJLyogbGlzdCBvZiBFeHByU3RhdGUgKi8KIAlMaXN0CSAgICppaV9QcmVkaWNhdGU7 CS8qIGxpc3Qgb2YgRXhwciAqLworCUJpdG1hcHNldCAgKmlpX1ByZWRpY2F0ZUF0dHJzOwogCUV4 cHJTdGF0ZSAgKmlpX1ByZWRpY2F0ZVN0YXRlOwogCU9pZAkJICAgKmlpX0V4Y2x1c2lvbk9wczsJ LyogYXJyYXkgd2l0aCBvbmUgZW50cnkgcGVyIGNvbHVtbiAqLwogCU9pZAkJICAgKmlpX0V4Y2x1 c2lvblByb2NzOwkvKiBhcnJheSB3aXRoIG9uZSBlbnRyeSBwZXIgY29sdW1uICovCkBAIC0yMTcs NiArMjI0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhJbmZvCiAJaW50CQkJaWlfUGFyYWxsZWxX b3JrZXJzOwogCU9pZAkJCWlpX0FtOwogCXZvaWQJICAgKmlpX0FtQ2FjaGU7CisJT2lkCQkgICAq aWlfT3BDbGFzc0RhdGFUeXBlczsKIAlNZW1vcnlDb250ZXh0IGlpX0NvbnRleHQ7CiB9IEluZGV4 SW5mbzsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oIGIv c3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oCmluZGV4IGJjZjhlZDY0NWMuLmY5ODc3 NGU5NDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaAorKysg Yi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgKQEAgLTExMiw2ICsxMTIsNyBAQCB0 eXBlZGVmIGVudW0KIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgZGVidWdfcGFyYWxsZWxfcXVlcnk7 CiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbjsK IGV4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV9kaXN0aW5jdF9yZW9yZGVyaW5nOworZXh0 ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX2V4cHJlc3Npb25fY2hlY2tzOwogCiBleHRlcm4g c3RydWN0IFBsYW5uZWRTdG10ICpwbGFubmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVl cnlfc3RyaW5nLAogCQkJCQkJCQkgICBpbnQgY3Vyc29yT3B0aW9ucywKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXggMzNk MWU0YTRlMi4uMzI5NGJjZjA1NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTE1NCw2ICsxNTQsMTAgQEAgdHlwZWRl ZiBzdHJ1Y3QgUmVsYXRpb25EYXRhCiAJYm9vbAkJcmRfaXNwa2RlZmVycmFibGU7CS8qIGlzIHJk X3BraW5kZXggYSBkZWZlcnJhYmxlIFBLPyAqLwogCU9pZAkJCXJkX3JlcGxpZGluZGV4OyAvKiBP SUQgb2YgcmVwbGljYSBpZGVudGl0eSBpbmRleCwgaWYgYW55ICovCiAKKwkvKiBsaXN0IG9mIElu ZGV4SW5mbyBmb3IgdGhpcyByZWxhdGlvbiAqLworCUxpc3QJICAgKnJkX2luZGV4aW5mb2xpc3Q7 CS8qIGFuIG9yZGVyZWQgbGlzdCBvZiBJbmRleEluZm8gZm9yCisJCQkJCQkJCQkgKiBpbmRleGVz IG9uIHJlbGF0aW9uICovCisKIAkvKiBkYXRhIG1hbmFnZWQgYnkgUmVsYXRpb25HZXRTdGF0RXh0 TGlzdDogKi8KIAlMaXN0CSAgICpyZF9zdGF0bGlzdDsJLyogbGlzdCBvZiBPSURzIG9mIGV4dGVu ZGVkIHN0YXRzICovCiAKQEAgLTE2Myw3ICsxNjcsNiBAQCB0eXBlZGVmIHN0cnVjdCBSZWxhdGlv bkRhdGEKIAlCaXRtYXBzZXQgICpyZF9wa2F0dHI7CQkvKiBjb2xzIGluY2x1ZGVkIGluIHByaW1h cnkga2V5ICovCiAJQml0bWFwc2V0ICAqcmRfaWRhdHRyOwkJLyogaW5jbHVkZWQgaW4gcmVwbGlj YSBpZGVudGl0eSBpbmRleCAqLwogCUJpdG1hcHNldCAgKnJkX2hvdGJsb2NraW5nYXR0cjsgLyog Y29scyBibG9ja2luZyBIT1QgdXBkYXRlICovCi0JQml0bWFwc2V0ICAqcmRfc3VtbWFyaXplZGF0 dHI7CS8qIGNvbHMgaW5kZXhlZCBieSBzdW1tYXJpemluZyBpbmRleGVzICovCiAKIAlQdWJsaWNh dGlvbkRlc2MgKnJkX3B1YmRlc2M7CS8qIHB1YmxpY2F0aW9uIGRlc2NyaXB0b3IsIG9yIE5VTEwg Ki8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL3JlbGNhY2hlLmgKaW5kZXggYTdjNTVkYjMzOS4uMGNjMjhjYjk3ZSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGls cy9yZWxjYWNoZS5oCkBAIC02Myw2ICs2Myw3IEBAIHR5cGVkZWYgZW51bSBJbmRleEF0dHJCaXRt YXBLaW5kCiAJSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZLAogCUlOREVYX0FUVFJfQklU TUFQX0hPVF9CTE9DS0lORywKIAlJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVELAorCUlOREVY X0FUVFJfQklUTUFQX0VYUFJFU1NJT04sCiB9IEluZGV4QXR0ckJpdG1hcEtpbmQ7CiAKIGV4dGVy biBCaXRtYXBzZXQgKlJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0aW9u LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9oZWFwX2hvdF91cGRhdGVz Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaGVhcF9ob3RfdXBkYXRlcy5vdXQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMTc3YzYxMDlmNQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaGVhcF9ob3RfdXBkYXRlcy5vdXQK QEAgLTAsMCArMSwzMTggQEAKK1NIT1cgZW5hYmxlX2V4cHJlc3Npb25fY2hlY2tzOworIGVuYWJs ZV9leHByZXNzaW9uX2NoZWNrcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgb24KKygx IHJvdykKKworLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0KKy0tIFRoaXMgdGFibGUgd2lsbCBoYXZlIHR3 byBjb2x1bW5zIGFuZCB0d28gaW5kZXhlcywgb25lIG9uIHRoZSBwcmltYXJ5IGtleQorLS0gaWQg YW5kIG9uZSBvbiB0aGUgZXhwcmVzc2lvbiAoaW5mby0+PiduYW1lJykuICBUaGF0IG1lYW5zIHRo YXQgdGhlIGluZGV4ZWQKKy0tIGF0dHJpYnV0ZXMgYXJlICdpZCcgYW5kICdpbmZvJy4KK2NyZWF0 ZSB0YWJsZSBrZXl2YWx1ZShpZCBpbnRlZ2VyIHByaW1hcnkga2V5LCBpbmZvIGpzb25iKTsKK2Ny ZWF0ZSBpbmRleCBuYW1laW5kZXggb24ga2V5dmFsdWUoKGluZm8tPj4nbmFtZScpKTsKK2luc2Vy dCBpbnRvIGtleXZhbHVlIHZhbHVlcyAoMSwgJ3sibmFtZSI6ICJqb2huIiwgImRhdGEiOiAic29t ZSBkYXRhIn0nKTsKKy0tIERpc2FibGUgdGhlIEdVQyB0aGF0IGFsbG93cyB1cyB0byBza2lwIGV4 cHJlc3Npb24gY2hlY2tzLgorU0VUIGVuYWJsZV9leHByZXNzaW9uX2NoZWNrcyA9ICdvZmYnOwor LS0gVGhlIGluZGV4ZWQgYXR0cmlidXRlICJuYW1lIiB3aXRoIHZhbHVlICJqb2huIiBpcyB1bmNo YW5nZWQsIGRvbid0IGV4cGVjdCBhIEhPVCB1cGRhdGUuCit1cGRhdGUga2V5dmFsdWUgc2V0IGlu Zm89J3sibmFtZSI6ICJqb2huIiwgImRhdGEiOiAic29tZXRoaW5nIGVsc2UifScgd2hlcmUgaWQ9 MTsKK3NlbGVjdCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgna2V5dmFsdWUn OjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMCByb3cKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19o b3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorKDEgcm93KQorCistLSBSZS1lbmFibGUg dGhlIEdVQyBzbyB0aGF0IHdlIGRvbid0IHNraXAgZXhwcmVzc2lvbiBjaGVja3MuCitTRVQgZW5h YmxlX2V4cHJlc3Npb25fY2hlY2tzID0gJ29uJzsKKy0tIFRoZSBpbmRleGVkIGF0dHJpYnV0ZSAi bmFtZSIgd2l0aCB2YWx1ZSAiam9obiIgaXMgdW5jaGFuZ2VkLCBleHBlY3QgYSBIT1QgdXBkYXRl LgordXBkYXRlIGtleXZhbHVlIHNldCBpbmZvPSd7Im5hbWUiOiAiam9obiIsICJkYXRhIjogInNv bWUgb3RoZXIgZGF0YSJ9JyB3aGVyZSBpZD0xOworc2VsZWN0IHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX2hvdF91cGRhdGVkKCdrZXl2YWx1ZSc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIHJvdwor IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx CisoMSByb3cpCisKKy0tIFRoZSBmb2xsb3dpbmcgdXBkYXRlIGNoYW5nZXMgdGhlIGluZGV4ZWQg YXR0cmlidXRlICJuYW1lIiwgdGhpcyBzaG91bGQgbm90IGJlIGEgSE9UIHVwZGF0ZS4KK3VwZGF0 ZSBrZXl2YWx1ZSBzZXQgaW5mbz0neyJuYW1lIjogInNtaXRoIiwgImRhdGEiOiAic29tZSBvdGhl ciBkYXRhIn0nIHdoZXJlIGlkPTE7CitzZWxlY3QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90 X3VwZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgcm93LCBubyBuZXcg SE9UIHVwZGF0ZXMKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMQorKDEgcm93KQorCistLSBOb3csIHRoaXMgdXBkYXRlIGRvZXMgbm90IGNo YW5nZSB0aGUgaW5kZXhlZCBhdHRyaWJ1dGUgIm5hbWUiIGZyb20gInNtaXRoIiwgdGhpcyBzaG91 bGQgYmUgSE9ULgordXBkYXRlIGtleXZhbHVlIHNldCBpbmZvPSd7Im5hbWUiOiAic21pdGgiLCAi ZGF0YSI6ICJzb21lIG1vcmUgZGF0YSJ9JyB3aGVyZSBpZD0xOworc2VsZWN0IHBnX3N0YXRfZ2V0 X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdrZXl2YWx1ZSc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0 OiAyIHJvd3Mgbm93CisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDIKKygxIHJvdykKKworZHJvcCB0YWJsZSBrZXl2YWx1ZTsKKy0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tCistLSBUaGlzIHRhYmxlIGlzIHRoZSBzYW1lIGFzIHRoZSBwcmV2aW91cyBv bmUgYnV0IGl0IGhhcyBhIHRoaXJkIGluZGV4LiAgVGhlCistLSBpbmRleCAnY29saW5kZXgnIGlz bid0IGFuIGV4cHJlc3Npb24gaW5kZXgsIGl0IGluZGV4ZXMgdGhlIGVudGlyZSB2YWx1ZQorLS0g aW4gdGhlIGluZm8gY29sdW1uLiAgVGhlcmUgYXJlIHN0aWxsIG9ubHkgdHdvIGluZGV4ZWQgYXR0 cmlidXRlcyBmb3IgdGhpcworLS0gcmVsYXRpb24sIHRoZSBzYW1lIHR3byBhcyBiZWZvcmUuICBU aGUgcHJlc2VuY2Ugb2YgYW4gaW5kZXggb24gdGhlIGVudGlyZQorLS0gdmFsdWUgb2YgdGhlIGlu Zm8gY29sdW1uIHNob3VsZCBwcmV2ZW50IEhPVCB1cGRhdGVzIGZvciBhbnkgdXBkYXRlcyB0byBh bnkKKy0tIHBvcnRpb24gb2YgSlNPTkIgY29udGVudCBpbiB0aGF0IGNvbHVtbi4KK2NyZWF0ZSB0 YWJsZSBrZXl2YWx1ZShpZCBpbnRlZ2VyIHByaW1hcnkga2V5LCBpbmZvIGpzb25iKTsKK2NyZWF0 ZSBpbmRleCBuYW1laW5kZXggb24ga2V5dmFsdWUoKGluZm8tPj4nbmFtZScpKTsKK2NyZWF0ZSBp bmRleCBjb2xpbmRleCBvbiBrZXl2YWx1ZShpbmZvKTsKK2luc2VydCBpbnRvIGtleXZhbHVlIHZh bHVlcyAoMSwgJ3sibmFtZSI6ICJqb2huIiwgImRhdGEiOiAic29tZSBkYXRhIn0nKTsKKy0tIFRo aXMgdXBkYXRlIGRvZXNuJ3QgY2hhbmdlIHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpbmRl eCwgYnV0IGl0IGRvZXMKKy0tIGNoYW5nZSB0aGUgY29udGVudCBvZiB0aGUgaW5mbyBjb2x1bW4g YW5kIHNvIHNob3VsZCBub3QgYmUgSE9UIGJlY2F1c2UgdGhlCistLSBpbmRleGVkIHZhbHVlIGNo YW5nZWQgYXMgYSByZXN1bHQgb2YgdGhlIHVwZGF0ZS4KK3VwZGF0ZSBrZXl2YWx1ZSBzZXQgaW5m bz0neyJuYW1lIjogImpvaG4iLCAiZGF0YSI6ICJzb21lIG90aGVyIGRhdGEifScgd2hlcmUgaWQ9 MTsKK3NlbGVjdCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgna2V5dmFsdWUn OjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMCByb3dzCisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNf aG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKygxIHJvdykKKworZHJvcCB0YWJsZSBr ZXl2YWx1ZTsKKy0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tCistLSBUaGUgdGFibGUgaGFzIG9uZSBjb2x1 bW4gX3YgYW5kIHR3byBpbmRleGVzLiAgVGhleSBhcmUgYm90aCBleHByZXNzaW9uCistLSBpbmRl eGVzIHJlZmVyZW5jaW5nIHRoZSBzYW1lIGNvbHVtbiBhdHRyaWJ1dGUgKF92KSBidXQgb25lIGlz IGEgcGFydGlhbAorLS0gaW5kZXguCitDUkVBVEUgVEFCTEUgcHVibGljLmV4IChfdiBKU09OQikg V0lUSCAoZmlsbGZhY3RvciA9IDYwKTsKK0lOU0VSVCBJTlRPIGV4IChfdikgVkFMVUVTICgneyJh IjogMCwgImIiOiAwfScpOworSU5TRVJUIElOVE8gZXggKF92KSBTRUxFQ1QganNvbmJfYnVpbGRf b2JqZWN0KCdiJywgbikgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwLCAxMDAwMCkgYXMgbjsKK0NS RUFURSBJTkRFWCBpZHhfZXhfYSBPTiBleCAoKF92LT4+J2EnKSk7CitDUkVBVEUgSU5ERVggaWR4 X2V4X2IgT04gZXggKChfdi0+PidiJykpIFdIRVJFIChfdi0+PidiJyk6Om51bWVyaWMgPiA5Owor LS0gV2UncmUgdXNpbmcgQlRSRUUgaW5kZXhlcyBhbmQgZm9yIHRoaXMgdGVzdCB3ZSB3YW50IHRv IG1ha2Ugc3VyZSB0aGF0IHRoZXkgcmVtYWluCistLSBpbiBzeW5jIHdpdGggY2hhbmdlcyB0byBv dXIgcmVsYXRpb24uICBGb3JjZSB0aGUgY2hvaWNlIG9mIGluZGV4IHNjYW5zIGJlbG93IHNvCist LSB0aGF0IHdlIGtub3cgd2UncmUgY2hlY2tpbmcgdGhlIGluZGV4J3MgdW5kZXJzdGFuZGluZyBv ZiB3aGF0IHZhbHVlcyBzaG91bGQgYmUKKy0tIGluIHRoZSBpbmRleCBvciBub3QuCitTRVQgU0VT U0lPTiBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKK1NFVCBTRVNTSU9OIGVuYWJsZV9iaXRtYXBzY2Fu ID0gT0ZGOworLS0gTGVhdmUgJ2EnIHVuY2hhbmdlZCBidXQgbW9kaWZ5ICdiJyB0byBhIHZhbHVl IG91dHNpZGUgb2YgdGhlIGluZGV4IHByZWRpY2F0ZS4KKy0tIFRoaXMgc2hvdWxkIGJlIGEgSE9U IHVwZGF0ZSBiZWNhdXNlIG5laXRoZXIgaW5kZXggaXMgY2hhbmdlZC4KK1VQREFURSBleCBTRVQg X3YgPSBqc29uYl9idWlsZF9vYmplY3QoJ2EnLCAwLCAnYicsIDEpIFdIRVJFIChfdi0+PidhJyk6 Om51bWVyaWMgPSAwOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk KCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIHJvdworIHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIExldCdz IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleCBkb2VzIG5vdCBjb250YWluIGEgdmFs dWUgZm9yICdiJworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChf di0+PidiJyk6Om51bWVyaWMgPiA5IEFORCAoX3YtPj4nYicpOjpudW1lcmljIDwgMTAwOworICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIGlkeF9leF9iIG9uIGV4CisgICBGaWx0ZXI6ICgoKF92 IC0+PiAnYic6OnRleHQpKTo6bnVtZXJpYyA8ICcxMDAnOjpudW1lcmljKQorKDIgcm93cykKKwor U0VMRUNUICogRlJPTSBleCBXSEVSRSAoX3YtPj4nYicpOjpudW1lcmljID4gOSBBTkQgKF92LT4+ J2InKTo6bnVtZXJpYyA8IDEwMDsKKyBfdiAKKy0tLS0KKygwIHJvd3MpCisKKy0tIExlYXZlICdh JyB1bmNoYW5nZWQgYnV0IG1vZGlmeSAnYicgdG8gYSB2YWx1ZSB3aXRoaW4gdGhlIGluZGV4IHBy ZWRpY2F0ZS4KKy0tIFRoaXMgcmVwcmVzZW50cyBhIGNoYW5nZSBmb3IgZmllbGQgJ2InIGZyb20g dW5pbmRleGVkIHRvIGluZGV4ZWQgYW5kIHNvCistLSB0aGlzIHNob3VsZCBub3QgdGFrZSB0aGUg SE9UIHBhdGguCitVUERBVEUgZXggU0VUIF92ID0ganNvbmJfYnVpbGRfb2JqZWN0KCdhJywgMCwg J2InLCAxMCkgV0hFUkUgKF92LT4+J2EnKTo6bnVtZXJpYyA9IDA7CitTRUxFQ1QgcGdfc3RhdF9n ZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEg cm93LCBubyBuZXcgSE9UIHVwZGF0ZXMKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBk YXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCistLSBMZXQncyBjaGVjayB0byBt YWtlIHN1cmUgdGhhdCB0aGUgaW5kZXggY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiAnYicKK0VY UExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBleCBXSEVSRSAoX3YtPj4nYicpOjpudW1l cmljID4gOSBBTkQgKF92LT4+J2InKTo6bnVtZXJpYyA8IDEwMDsKKyAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXgg U2NhbiB1c2luZyBpZHhfZXhfYiBvbiBleAorICAgRmlsdGVyOiAoKChfdiAtPj4gJ2InOjp0ZXh0 KSk6Om51bWVyaWMgPCAnMTAwJzo6bnVtZXJpYykKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00g ZXggV0hFUkUgKF92LT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChfdi0+PidiJyk6Om51bWVyaWMg PCAxMDA7CisgICAgICAgIF92ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJhIjog MCwgImIiOiAxMH0KKygxIHJvdykKKworLS0gVGhpcyB1cGRhdGUgbW9kaWZpZXMgdGhlIHZhbHVl IG9mICdhJywgYW4gaW5kZXhlZCBmaWVsZCwgc28gaXQgYWxzbyBjYW5ub3QKKy0tIGJlIGEgSE9U IHVwZGF0ZS4KK1VQREFURSBleCBTRVQgX3YgPSBqc29uYl9idWlsZF9vYmplY3QoJ2EnLCAxLCAn YicsIDEwKSBXSEVSRSAoX3YtPj4nYicpOjpudW1lcmljID0gMTA7CitTRUxFQ1QgcGdfc3RhdF9n ZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEg cm93LCBubyBuZXcgSE9UIHVwZGF0ZXMKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBk YXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCistLSBUaGlzIHVwZGF0ZSBjaGFu Z2VzIGJvdGggJ2EnIGFuZCAnYicgdG8gbmV3IHZhbHVlcyB0aGF0IHJlcXVpcmUgaW5kZXggdXBk YXRlcywKKy0tIHRoaXMgY2Fubm90IHVzZSB0aGUgSE9UIHBhdGguCitVUERBVEUgZXggU0VUIF92 ID0ganNvbmJfYnVpbGRfb2JqZWN0KCdhJywgMiwgJ2InLCAxMikgV0hFUkUgKF92LT4+J2InKTo6 bnVtZXJpYyA9IDEwOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk KCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIHJvdywgbm8gbmV3IEhPVCB1cGRhdGVzCisg cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEK KygxIHJvdykKKworLS0gTGV0J3MgY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGluZGV4IGNv bnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgJ2InCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAq IEZST00gZXggV0hFUkUgKF92LT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChfdi0+PidiJyk6Om51 bWVyaWMgPCAxMDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgaWR4X2V4X2Igb24gZXgK KyAgIEZpbHRlcjogKCgoX3YgLT4+ICdiJzo6dGV4dCkpOjpudW1lcmljIDwgJzEwMCc6Om51bWVy aWMpCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChfdi0+PidiJyk6Om51bWVy aWMgPiA5IEFORCAoX3YtPj4nYicpOjpudW1lcmljIDwgMTAwOworICAgICAgICBfdiAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsiYSI6IDIsICJiIjogMTJ9CisoMSByb3cpCisKKy0t IFRoaXMgdXBkYXRlIGNoYW5nZXMgJ2InIHRvIGEgdmFsdWUgb3V0c2lkZSBpdHMgcHJlZGljYXRl IHJlcXVpcmluZyB0aGF0CistLSB3ZSByZW1vdmUgaXQgZnJvbSB0aGUgaW5kZXguICBUaGF0J3Mg YSB0cmFuc2l0aW9uIHRoYXQgY2FuJ3QgYmUgZG9uZQorLS0gZHVyaW5nIGEgSE9UIHVwZGF0ZS4K K1VQREFURSBleCBTRVQgX3YgPSBqc29uYl9idWlsZF9vYmplY3QoJ2EnLCAyLCAnYicsIDEpIFdI RVJFIChfdi0+PidiJyk6Om51bWVyaWMgPSAxMjsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1 cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSByb3csIG5vIG5l dyBIT1QgdXBkYXRlcworIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIExldCdzIGNoZWNrIHRvIG1ha2Ugc3VyZSB0 aGF0IHRoZSBpbmRleCBubyBsb25nZXIgY29udGFpbnMgdGhlIHZhbHVlIG9mICdiJworRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChfdi0+PidiJyk6Om51bWVyaWMg PiA5IEFORCAoX3YtPj4nYicpOjpudW1lcmljIDwgMTAwOworICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2Fu IHVzaW5nIGlkeF9leF9iIG9uIGV4CisgICBGaWx0ZXI6ICgoKF92IC0+PiAnYic6OnRleHQpKTo6 bnVtZXJpYyA8ICcxMDAnOjpudW1lcmljKQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBleCBX SEVSRSAoX3YtPj4nYicpOjpudW1lcmljID4gOSBBTkQgKF92LT4+J2InKTo6bnVtZXJpYyA8IDEw MDsKKyBfdiAKKy0tLS0KKygwIHJvd3MpCisKKy0tIExldCdzIG1ha2Ugc3VyZSB3ZSdyZSByZWNv cmRpbmcgSE9UIHVwZGF0ZXMgZm9yIG91ciAnZXgnIHJlbGF0aW9uIHByb3Blcmx5IGluIHRoZSBz eXN0ZW0KKy0tIHRhYmxlIHBnX3N0YXRfdXNlcl90YWJsZXMuICBOb3RlIHRoYXQgc3RhdGlzdGlj cyBhcmUgc3RvcmVkIHdpdGhpbiBhIHRyYW5zYWN0aW9uIGNvbnRleHQKKy0tIGZpcnN0ICh4YWN0 KSBhbmQgdGhlbiBsYXRlciBpbnRvIHRoZSBnbG9iYWwgc3RhdGlzdGljcyBmb3IgYSByZWxhdGlv bi4KK1NFTEVDVCAKKyAgICBjLnJlbG5hbWUgQVMgdGFibGVfbmFtZSwKKyAgICAtLSBUcmFuc2Fj dGlvbiBzdGF0aXN0aWNzCisgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChjLm9p ZCkgQVMgeGFjdF91cGRhdGVzLAorICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRh dGVkKGMub2lkKSBBUyB4YWN0X2hvdF91cGRhdGVzLAorICAgIFJPVU5EKCgKKyAgICAgICAgcGdf c3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoYy5vaWQpOjpmbG9hdCAvIAorICAgICAg ICBOVUxMSUYocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChjLm9pZCksIDApICogMTAw CisgICAgKTo6bnVtZXJpYywgMikgQVMgeGFjdF9ob3RfdXBkYXRlX3BlcmNlbnRhZ2UsCisgICAg LS0gQ3VtdWxhdGl2ZSBzdGF0aXN0aWNzCisgICAgcy5uX3R1cF91cGQgQVMgdG90YWxfdXBkYXRl cywKKyAgICBzLm5fdHVwX2hvdF91cGQgQVMgaG90X3VwZGF0ZXMsCisgICAgUk9VTkQoKAorICAg ICAgICBzLm5fdHVwX2hvdF91cGQ6OmZsb2F0IC8gCisgICAgICAgIE5VTExJRihzLm5fdHVwX3Vw ZCwgMCkgKiAxMDAKKyAgICApOjpudW1lcmljLCAyKSBBUyB0b3RhbF9ob3RfdXBkYXRlX3BlcmNl bnRhZ2UKK0ZST00gcGdfY2xhc3MgYworTEVGVCBKT0lOIHBnX3N0YXRfdXNlcl90YWJsZXMgcyBP TiBjLnJlbG5hbWUgPSBzLnJlbG5hbWUKK1dIRVJFIGMucmVsbmFtZSA9ICdleCcgCitBTkQgYy5y ZWxuYW1lc3BhY2UgPSAncHVibGljJzo6cmVnbmFtZXNwYWNlOworIHRhYmxlX25hbWUgfCB4YWN0 X3VwZGF0ZXMgfCB4YWN0X2hvdF91cGRhdGVzIHwgeGFjdF9ob3RfdXBkYXRlX3BlcmNlbnRhZ2Ug fCB0b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCB0b3RhbF9ob3RfdXBkYXRlX3BlcmNlbnRh Z2UgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBleCAgICAgICAgIHwgICAgICAgICAgICA1IHwg ICAgICAgICAgICAgICAgMSB8ICAgICAgICAgICAgICAgICAgICAgIDIwLjAwIHwgICAgICAgICAg ICAgMCB8ICAgICAgICAgICAwIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cp CisKKy0tIGV4cGVjdDogNSB4YWN0IHVwZGF0ZXMgd2l0aCAxIHhhY3QgaG90IHVwZGF0ZSBhbmQg bm8gY3VtdWxhdGl2ZSB1cGRhdGVzIGFzIHlldAorRFJPUCBUQUJMRSBwdWJsaWMuZXg7CistLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLQorLS0gVGhpcyB0YWJsZSBoYXMgYSBzaW5nbGUgY29sdW1uICdlbWFp bCcgYW5kIGEgdW5pcXVlIGNvbnN0cmFpbnQgb24gaXQgdGhhdAorLS0gc2hvdWxkIHByZWNsdWRl IEhPVCB1cGRhdGVzLgorQ1JFQVRFIFRBQkxFIHVzZXJzICgKKyAgICB1c2VyX2lkIHNlcmlhbCBw cmltYXJ5IGtleSwKKyAgICBuYW1lIFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwKKyAgICBlbWFpbCBW QVJDSEFSKDI1NSkgTk9UIE5VTEwsCisgICAgRVhDTFVERSBVU0lORyBidHJlZSAobG93ZXIoZW1h aWwpIFdJVEggPSkKKyk7CistLSBBZGQgc29tZSBkYXRhIHRvIHRoZSB0YWJsZSBhbmQgdGhlbiB1 cGRhdGUgaXQgaW4gd2F5cyB0aGF0IHNob3VsZCBhbmQgc2hvdWxkCistLSBub3QgYmUgSE9UIHVw ZGF0ZXMuCitJTlNFUlQgSU5UTyB1c2VycyAobmFtZSwgZW1haWwpIFZBTFVFUworKCd1c2VyMScs ICd1c2VyMUBleGFtcGxlLmNvbScpLAorKCd1c2VyMicsICd1c2VyMkBleGFtcGxlLmNvbScpLAor KCd0YWtlbicsICd0YWtlbkBFWEFNUExFLmNvbScpLAorKCd5b3UnLCAneW91QGRvbWFpbi5jb20n KSwKKygndGFrZW4nLCAndGFrZW5AZG9tYWluLmNvbScpOworLS0gU2hvdWxkIGZhaWwgYmVjYXVz ZSBvZiB0aGUgdW5pcXVlIGNvbnN0cmFpbnQgb24gdGhlIGVtYWlsIGNvbHVtbi4KK1VQREFURSB1 c2VycyBTRVQgZW1haWwgPSAndXNlcjFAZXhhbXBsZS5jb20nIFdIRVJFIGVtYWlsID0gJ3VzZXIy QGV4YW1wbGUuY29tJzsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4 Y2x1c2lvbiBjb25zdHJhaW50ICJ1c2Vyc19sb3dlcl9leGNsIgorREVUQUlMOiAgS2V5IChsb3dl cihlbWFpbDo6dGV4dCkpPSh1c2VyMUBleGFtcGxlLmNvbSkgY29uZmxpY3RzIHdpdGggZXhpc3Rp bmcga2V5IChsb3dlcihlbWFpbDo6dGV4dCkpPSh1c2VyMUBleGFtcGxlLmNvbSkuCitTRUxFQ1Qg cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ3VzZXJzJzo6cmVnY2xhc3MpOyAt LSBleHBlY3Q6IDAgcm93cywgbm8gbmV3IEhPVCB1cGRhdGVzCisgcGdfc3RhdF9nZXRfeGFjdF90 dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKygxIHJvdykKKworLS0gU2hv dWxkIHN1Y2NlZWQgYmVjYXVzZSB0aGUgZW1haWwgY29sdW1uIGlzIG5vdCBiZWluZyB1cGRhdGVk IGFuZCBzaG91bGQgZ28gSE9ULgorVVBEQVRFIHVzZXJzIFNFVCBuYW1lID0gJ2ZvbycgV0hFUkUg ZW1haWwgPSAndXNlcjFAZXhhbXBsZS5jb20nOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX2hvdF91cGRhdGVkKCd1c2Vycyc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIHJvdywgYSBz aW5nbGUgbmV3IEhPVCB1cGRhdGUKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRl ZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCistLSBDcmVhdGUgYSBwYXJ0aWFsIGlu ZGV4IG9uIHRoZSBlbWFpbCBjb2x1bW4sIHVwZGF0ZXMgCitDUkVBVEUgSU5ERVggaWR4X3VzZXJz X2VtYWlsX25vX2V4YW1wbGUgT04gdXNlcnMgKGxvd2VyKGVtYWlsKSkgV0hFUkUgbG93ZXIoZW1h aWwpIExJS0UgJyVAZXhhbXBsZS5jb20lJzsKKy0tIEFuIHVwZGF0ZSB0aGF0IGNoYW5nZXMgdGhl IGVtYWlsIGNvbHVtbiBidXQgbm90IHRoZSBpbmRleGVkIHBvcnRpb24gb2YgaXQgYW5kIGZhbGxz IG91dHNpZGUgdGhlIGNvbnN0cmFpbnQuCistLSBTaG91bGRuJ3QgYmUgYSBIT1QgdXBkYXRlIGJl Y2F1c2Ugb2YgdGhlIGV4Y2x1c2lvbiBjb25zdHJhaW50LgorVVBEQVRFIHVzZXJzIFNFVCBlbWFp bCA9ICd5b3UrMkBkb21haW4uY29tJyBXSEVSRSBuYW1lID0gJ3lvdSc7CitTRUxFQ1QgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ3VzZXJzJzo6cmVnY2xhc3MpOyAtLSBleHBl Y3Q6IDEgcm93LCBubyBuZXcgSE9UIHVwZGF0ZXMKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19o b3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCistLSBBbiB1cGRhdGUg dGhhdCBjaGFuZ2VzIHRoZSBlbWFpbCBjb2x1bW4gYnV0IG5vdCB0aGUgaW5kZXhlZCBwb3J0aW9u IG9mIGl0IGFuZCBmYWxscyB3aXRoaW4gdGhlIGNvbnN0cmFpbnQuCistLSBBZ2Fpbiwgc2hvdWxk IGZhaWwgY29uc3RyYWludCBhbmQgZmFpbCB0byBiZSBhIEhPVCB1cGRhdGUuCitVUERBVEUgdXNl cnMgU0VUIGVtYWlsID0gJ3Rha2VuQGRvbWFpbi5jb20nIFdIRVJFIG5hbWUgPSAneW91JzsKK0VS Uk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50 ICJ1c2Vyc19sb3dlcl9leGNsIgorREVUQUlMOiAgS2V5IChsb3dlcihlbWFpbDo6dGV4dCkpPSh0 YWtlbkBkb21haW4uY29tKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGxvd2VyKGVtYWls Ojp0ZXh0KSk9KHRha2VuQGRvbWFpbi5jb20pLgorU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX2hvdF91cGRhdGVkKCd1c2Vycyc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIHJvdywgbm8g bmV3IEhPVCB1cGRhdGVzCisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworRFJPUCBUQUJMRSB1c2VyczsKKy0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tCistLSBBbm90aGVyIHRlc3Qgb2YgY29uc3RyYWludHMgc3BvaWxpbmcgSE9U IHVwZGF0ZXMsIHRoaXMgdGltZSB3aXRoIGEgcmFuZ2UuCitDUkVBVEUgVEFCTEUgZXZlbnRzICgK KyAgICBpZCBzZXJpYWwgcHJpbWFyeSBrZXksCisgICAgbmFtZSBWQVJDSEFSKDI1NSkgTk9UIE5V TEwsCisgICAgZXZlbnRfdGltZSB0c3R6cmFuZ2UsCisgICAgY29uc3RyYWludCBub19zY3JlZW5p bmdfdGltZV9vdmVybGFwIGV4Y2x1ZGUgdXNpbmcgZ2lzdCAoCisgICAgICAgIGV2ZW50X3RpbWUg V0lUSCAmJgorICAgICkKKyk7CistLSBBZGQgdHdvIG5vbi1vdmVybGFwcGluZyBldmVudHMuCitJ TlNFUlQgSU5UTyBldmVudHMgKGlkLCBldmVudF90aW1lLCBuYW1lKQorVkFMVUVTCisgICAgKDEs ICdbIjIwMjMtMDEtMDEgMTk6MDA6MDAiLCAiMjAyMy0wMS0wMSAyMDo0NTowMCJdJywgJ2V2ZW50 MScpLAorICAgICgyLCAnWyIyMDIzLTAxLTAxIDIxOjAwOjAwIiwgIjIwMjMtMDEtMDEgMjE6NDU6 MDAiXScsICdldmVudDInKTsKKy0tIFVwZGF0ZSB0aGUgZmlyc3QgZXZlbnQgdG8gb3ZlcmxhcCB3 aXRoIHRoZSBzZWNvbmQsIHNob3VsZCBmYWlsIHRoZSBjb25zdHJhaW50IGFuZCBub3QgYmUgSE9U LgorVVBEQVRFIGV2ZW50cyBTRVQgZXZlbnRfdGltZSA9ICdbIjIwMjMtMDEtMDEgMjA6MDA6MDAi LCAiMjAyMy0wMS0wMSAyMTo0NTowMCJdJyBXSEVSRSBpZCA9IDE7CitFUlJPUjogIGNvbmZsaWN0 aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAibm9fc2NyZWVuaW5n X3RpbWVfb3ZlcmxhcCIKK0RFVEFJTDogIEtleSAoZXZlbnRfdGltZSk9KFsiU3VuIEphbiAwMSAy MDowMDowMCAyMDIzIFBTVCIsIlN1biBKYW4gMDEgMjE6NDU6MDAgMjAyMyBQU1QiXSkgY29uZmxp Y3RzIHdpdGggZXhpc3Rpbmcga2V5IChldmVudF90aW1lKT0oWyJTdW4gSmFuIDAxIDIxOjAwOjAw IDIwMjMgUFNUIiwiU3VuIEphbiAwMSAyMTo0NTowMCAyMDIzIFBTVCJdKS4KK1NFTEVDVCBwZ19z dGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXZlbnRzJzo6cmVnY2xhc3MpOyAtLSBl eHBlY3Q6IDAgcm93LCBubyBuZXcgSE9UIHVwZGF0ZXMKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxl c19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorKDEgcm93KQorCistLSBVcGRhdGUg dGhlIGZpcnN0IGV2ZW50IHRvIG5vdCBvdmVybGFwIHdpdGggdGhlIHNlY29uZCwgYWdhaW4gbm90 IEhPVCBkdWUgdG8gdGhlIGNvbnN0cmFpbnQuCitVUERBVEUgZXZlbnRzIFNFVCBldmVudF90aW1l ID0gJ1siMjAyMy0wMS0wMSAyMjowMDowMCIsICIyMDIzLTAxLTAxIDIyOjQ1OjAwIl0nIFdIRVJF IGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXZl bnRzJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDAgcm93LCBubyBuZXcgSE9UIHVwZGF0ZXMKKyBw Z19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAor KDEgcm93KQorCistLSBVcGRhdGUgdGhlIGZpcnN0IGV2ZW50IHRvIG5vdCBvdmVybGFwIHdpdGgg dGhlIHNlY29uZCwgdGhpcyB0aW1lIHdlJ3JlIEhPVCBiZWNhdXNlIHdlIGRvbid0IG92ZXJsYXAg d2l0aCB0aGUgY29uc3RyYWludC4KK1VQREFURSBldmVudHMgU0VUIG5hbWUgPSAnbmV3IG5hbWUg aGVyZScgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91 cGRhdGVkKCdldmVudHMnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSByb3csIG9uZSBuZXcgSE9U IHVwZGF0ZQorIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAxCisoMSByb3cpCisKK0RST1AgVEFCTEUgZXZlbnRzOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3N5c3ZpZXdzLm91dAppbmRleCAzNTJhYmMwYmQ0Li41NjQ1MWJmNzgzIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dApAQCAtMTUxLDYgKzE1MSw3IEBAIHNlbGVj dCBuYW1lLCBzZXR0aW5nIGZyb20gcGdfc2V0dGluZ3Mgd2hlcmUgbmFtZSBsaWtlICdlbmFibGUl JzsKICBlbmFibGVfYXN5bmNfYXBwZW5kICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9iaXRtYXBz Y2FuICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX2Rpc3RpbmN0X3Jlb3JkZXJpbmcgICAgIHwg b24KKyBlbmFibGVfZXhwcmVzc2lvbl9jaGVja3MgICAgICAgfCBvbgogIGVuYWJsZV9nYXRoZXJt ZXJnZSAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX2dyb3VwX2J5X3Jlb3JkZXJpbmcgICAgIHwg b24KICBlbmFibGVfaGFzaGFnZyAgICAgICAgICAgICAgICAgfCBvbgpAQCAtMTcxLDcgKzE3Miw3 IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZyb20gcGdfc2V0dGluZ3Mgd2hlcmUgbmFtZSBsaWtl ICdlbmFibGUlJzsKICBlbmFibGVfc2Vxc2NhbiAgICAgICAgICAgICAgICAgfCBvbgogIGVuYWJs ZV9zb3J0ICAgICAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX3RpZHNjYW4gICAgICAgICAg ICAgICAgIHwgb24KLSgyMyByb3dzKQorKDI0IHJvd3MpCiAKIC0tIFRoZXJlIGFyZSBhbHdheXMg d2FpdCBldmVudCBkZXNjcmlwdGlvbnMgZm9yIHZhcmlvdXMgdHlwZXMuICBJbmplY3Rpb25Qb2lu dAogLS0gbWF5IGJlIHByZXNlbnQgb3IgYWJzZW50LCBkZXBlbmRpbmcgb24gaGlzdG9yeSBzaW5j ZSBsYXN0IHBvc3RtYXN0ZXIgc3RhcnQuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRl eCAxZWRkOWU0NWViLi4zNDIzMmZkMzM3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUK QEAgLTY4LDYgKzY4LDExIEBAIHRlc3Q6IHNlbGVjdF9pbnRvIHNlbGVjdF9kaXN0aW5jdCBzZWxl Y3RfZGlzdGluY3Rfb24gc2VsZWN0X2ltcGxpY2l0IHNlbGVjdF9oYXZpCiAjIC0tLS0tLS0tLS0K IHRlc3Q6IGJyaW4gZ2luIGdpc3Qgc3BnaXN0IHByaXZpbGVnZXMgaW5pdF9wcml2cyBzZWN1cml0 eV9sYWJlbCBjb2xsYXRlIG1hdHZpZXcgbG9jayByZXBsaWNhX2lkZW50aXR5IHJvd3NlY3VyaXR5 IG9iamVjdF9hZGRyZXNzIHRhYmxlc2FtcGxlIGdyb3VwaW5nc2V0cyBkcm9wX29wZXJhdG9yIHBh c3N3b3JkIGlkZW50aXR5IGdlbmVyYXRlZF9zdG9yZWQgam9pbl9oYXNoCiAKKyMgLS0tLS0tLS0t LQorIyBBbm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzCisjIC0tLS0tLS0tLS0KK3Rlc3Q6 IGhlYXBfaG90X3VwZGF0ZXMKKwogIyAtLS0tLS0tLS0tCiAjIEFkZGl0aW9uYWwgQlJJTiB0ZXN0 cwogIyAtLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9oZWFwX2hv dF91cGRhdGVzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hlYXBfaG90X3VwZGF0ZXMuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjIyYzZlYWZlYWIKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9oZWFwX2hvdF91cGRhdGVzLnNxbApA QCAtMCwwICsxLDIwOCBAQAorU0hPVyBlbmFibGVfZXhwcmVzc2lvbl9jaGVja3M7CisKKy0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tCistLSBUaGlzIHRhYmxlIHdpbGwgaGF2ZSB0d28gY29sdW1ucyBhbmQg dHdvIGluZGV4ZXMsIG9uZSBvbiB0aGUgcHJpbWFyeSBrZXkKKy0tIGlkIGFuZCBvbmUgb24gdGhl IGV4cHJlc3Npb24gKGluZm8tPj4nbmFtZScpLiAgVGhhdCBtZWFucyB0aGF0IHRoZSBpbmRleGVk CistLSBhdHRyaWJ1dGVzIGFyZSAnaWQnIGFuZCAnaW5mbycuCitjcmVhdGUgdGFibGUga2V5dmFs dWUoaWQgaW50ZWdlciBwcmltYXJ5IGtleSwgaW5mbyBqc29uYik7CitjcmVhdGUgaW5kZXggbmFt ZWluZGV4IG9uIGtleXZhbHVlKChpbmZvLT4+J25hbWUnKSk7CitpbnNlcnQgaW50byBrZXl2YWx1 ZSB2YWx1ZXMgKDEsICd7Im5hbWUiOiAiam9obiIsICJkYXRhIjogInNvbWUgZGF0YSJ9Jyk7CisK Ky0tIERpc2FibGUgdGhlIEdVQyB0aGF0IGFsbG93cyB1cyB0byBza2lwIGV4cHJlc3Npb24gY2hl Y2tzLgorU0VUIGVuYWJsZV9leHByZXNzaW9uX2NoZWNrcyA9ICdvZmYnOworCistLSBUaGUgaW5k ZXhlZCBhdHRyaWJ1dGUgIm5hbWUiIHdpdGggdmFsdWUgImpvaG4iIGlzIHVuY2hhbmdlZCwgZG9u J3QgZXhwZWN0IGEgSE9UIHVwZGF0ZS4KK3VwZGF0ZSBrZXl2YWx1ZSBzZXQgaW5mbz0neyJuYW1l IjogImpvaG4iLCAiZGF0YSI6ICJzb21ldGhpbmcgZWxzZSJ9JyB3aGVyZSBpZD0xOworc2VsZWN0 IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdrZXl2YWx1ZSc6OnJlZ2NsYXNz KTsgLS0gZXhwZWN0OiAwIHJvdworCistLSBSZS1lbmFibGUgdGhlIEdVQyBzbyB0aGF0IHdlIGRv bid0IHNraXAgZXhwcmVzc2lvbiBjaGVja3MuCitTRVQgZW5hYmxlX2V4cHJlc3Npb25fY2hlY2tz ID0gJ29uJzsKKworLS0gVGhlIGluZGV4ZWQgYXR0cmlidXRlICJuYW1lIiB3aXRoIHZhbHVlICJq b2huIiBpcyB1bmNoYW5nZWQsIGV4cGVjdCBhIEhPVCB1cGRhdGUuCit1cGRhdGUga2V5dmFsdWUg c2V0IGluZm89J3sibmFtZSI6ICJqb2huIiwgImRhdGEiOiAic29tZSBvdGhlciBkYXRhIn0nIHdo ZXJlIGlkPTE7CitzZWxlY3QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2tl eXZhbHVlJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgcm93CisKKy0tIFRoZSBmb2xsb3dpbmcg dXBkYXRlIGNoYW5nZXMgdGhlIGluZGV4ZWQgYXR0cmlidXRlICJuYW1lIiwgdGhpcyBzaG91bGQg bm90IGJlIGEgSE9UIHVwZGF0ZS4KK3VwZGF0ZSBrZXl2YWx1ZSBzZXQgaW5mbz0neyJuYW1lIjog InNtaXRoIiwgImRhdGEiOiAic29tZSBvdGhlciBkYXRhIn0nIHdoZXJlIGlkPTE7CitzZWxlY3Qg cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xhc3Mp OyAtLSBleHBlY3Q6IDEgcm93LCBubyBuZXcgSE9UIHVwZGF0ZXMKKworLS0gTm93LCB0aGlzIHVw ZGF0ZSBkb2VzIG5vdCBjaGFuZ2UgdGhlIGluZGV4ZWQgYXR0cmlidXRlICJuYW1lIiBmcm9tICJz bWl0aCIsIHRoaXMgc2hvdWxkIGJlIEhPVC4KK3VwZGF0ZSBrZXl2YWx1ZSBzZXQgaW5mbz0neyJu YW1lIjogInNtaXRoIiwgImRhdGEiOiAic29tZSBtb3JlIGRhdGEifScgd2hlcmUgaWQ9MTsKK3Nl bGVjdCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgna2V5dmFsdWUnOjpyZWdj bGFzcyk7IC0tIGV4cGVjdDogMiByb3dzIG5vdworZHJvcCB0YWJsZSBrZXl2YWx1ZTsKKworCist LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLQorLS0gVGhpcyB0YWJsZSBpcyB0aGUgc2FtZSBhcyB0aGUgcHJl dmlvdXMgb25lIGJ1dCBpdCBoYXMgYSB0aGlyZCBpbmRleC4gIFRoZQorLS0gaW5kZXggJ2NvbGlu ZGV4JyBpc24ndCBhbiBleHByZXNzaW9uIGluZGV4LCBpdCBpbmRleGVzIHRoZSBlbnRpcmUgdmFs dWUKKy0tIGluIHRoZSBpbmZvIGNvbHVtbi4gIFRoZXJlIGFyZSBzdGlsbCBvbmx5IHR3byBpbmRl eGVkIGF0dHJpYnV0ZXMgZm9yIHRoaXMKKy0tIHJlbGF0aW9uLCB0aGUgc2FtZSB0d28gYXMgYmVm b3JlLiAgVGhlIHByZXNlbmNlIG9mIGFuIGluZGV4IG9uIHRoZSBlbnRpcmUKKy0tIHZhbHVlIG9m IHRoZSBpbmZvIGNvbHVtbiBzaG91bGQgcHJldmVudCBIT1QgdXBkYXRlcyBmb3IgYW55IHVwZGF0 ZXMgdG8gYW55CistLSBwb3J0aW9uIG9mIEpTT05CIGNvbnRlbnQgaW4gdGhhdCBjb2x1bW4uCitj cmVhdGUgdGFibGUga2V5dmFsdWUoaWQgaW50ZWdlciBwcmltYXJ5IGtleSwgaW5mbyBqc29uYik7 CitjcmVhdGUgaW5kZXggbmFtZWluZGV4IG9uIGtleXZhbHVlKChpbmZvLT4+J25hbWUnKSk7Citj cmVhdGUgaW5kZXggY29saW5kZXggb24ga2V5dmFsdWUoaW5mbyk7CitpbnNlcnQgaW50byBrZXl2 YWx1ZSB2YWx1ZXMgKDEsICd7Im5hbWUiOiAiam9obiIsICJkYXRhIjogInNvbWUgZGF0YSJ9Jyk7 CisKKy0tIFRoaXMgdXBkYXRlIGRvZXNuJ3QgY2hhbmdlIHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVz c2lvbiBpbmRleCwgYnV0IGl0IGRvZXMKKy0tIGNoYW5nZSB0aGUgY29udGVudCBvZiB0aGUgaW5m byBjb2x1bW4gYW5kIHNvIHNob3VsZCBub3QgYmUgSE9UIGJlY2F1c2UgdGhlCistLSBpbmRleGVk IHZhbHVlIGNoYW5nZWQgYXMgYSByZXN1bHQgb2YgdGhlIHVwZGF0ZS4KK3VwZGF0ZSBrZXl2YWx1 ZSBzZXQgaW5mbz0neyJuYW1lIjogImpvaG4iLCAiZGF0YSI6ICJzb21lIG90aGVyIGRhdGEifScg d2hlcmUgaWQ9MTsKK3NlbGVjdCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgn a2V5dmFsdWUnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMCByb3dzCitkcm9wIHRhYmxlIGtleXZh bHVlOworCistLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLQorLS0gVGhlIHRhYmxlIGhhcyBvbmUgY29sdW1u IF92IGFuZCB0d28gaW5kZXhlcy4gIFRoZXkgYXJlIGJvdGggZXhwcmVzc2lvbgorLS0gaW5kZXhl cyByZWZlcmVuY2luZyB0aGUgc2FtZSBjb2x1bW4gYXR0cmlidXRlIChfdikgYnV0IG9uZSBpcyBh IHBhcnRpYWwKKy0tIGluZGV4LgorQ1JFQVRFIFRBQkxFIHB1YmxpYy5leCAoX3YgSlNPTkIpIFdJ VEggKGZpbGxmYWN0b3IgPSA2MCk7CitJTlNFUlQgSU5UTyBleCAoX3YpIFZBTFVFUyAoJ3siYSI6 IDAsICJiIjogMH0nKTsKK0lOU0VSVCBJTlRPIGV4IChfdikgU0VMRUNUIGpzb25iX2J1aWxkX29i amVjdCgnYicsIG4pIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMCwgMTAwMDApIGFzIG47CitDUkVB VEUgSU5ERVggaWR4X2V4X2EgT04gZXggKChfdi0+PidhJykpOworQ1JFQVRFIElOREVYIGlkeF9l eF9iIE9OIGV4ICgoX3YtPj4nYicpKSBXSEVSRSAoX3YtPj4nYicpOjpudW1lcmljID4gOTsKKwor LS0gV2UncmUgdXNpbmcgQlRSRUUgaW5kZXhlcyBhbmQgZm9yIHRoaXMgdGVzdCB3ZSB3YW50IHRv IG1ha2Ugc3VyZSB0aGF0IHRoZXkgcmVtYWluCistLSBpbiBzeW5jIHdpdGggY2hhbmdlcyB0byBv dXIgcmVsYXRpb24uICBGb3JjZSB0aGUgY2hvaWNlIG9mIGluZGV4IHNjYW5zIGJlbG93IHNvCist LSB0aGF0IHdlIGtub3cgd2UncmUgY2hlY2tpbmcgdGhlIGluZGV4J3MgdW5kZXJzdGFuZGluZyBv ZiB3aGF0IHZhbHVlcyBzaG91bGQgYmUKKy0tIGluIHRoZSBpbmRleCBvciBub3QuCitTRVQgU0VT U0lPTiBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKK1NFVCBTRVNTSU9OIGVuYWJsZV9iaXRtYXBzY2Fu ID0gT0ZGOworCistLSBMZWF2ZSAnYScgdW5jaGFuZ2VkIGJ1dCBtb2RpZnkgJ2InIHRvIGEgdmFs dWUgb3V0c2lkZSBvZiB0aGUgaW5kZXggcHJlZGljYXRlLgorLS0gVGhpcyBzaG91bGQgYmUgYSBI T1QgdXBkYXRlIGJlY2F1c2UgbmVpdGhlciBpbmRleCBpcyBjaGFuZ2VkLgorVVBEQVRFIGV4IFNF VCBfdiA9IGpzb25iX2J1aWxkX29iamVjdCgnYScsIDAsICdiJywgMSkgV0hFUkUgKF92LT4+J2En KTo6bnVtZXJpYyA9IDA7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0 ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgcm93CistLSBMZXQncyBjaGVjayB0byBt YWtlIHN1cmUgdGhhdCB0aGUgaW5kZXggZG9lcyBub3QgY29udGFpbiBhIHZhbHVlIGZvciAnYicK K0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBleCBXSEVSRSAoX3YtPj4nYicpOjpu dW1lcmljID4gOSBBTkQgKF92LT4+J2InKTo6bnVtZXJpYyA8IDEwMDsKK1NFTEVDVCAqIEZST00g ZXggV0hFUkUgKF92LT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChfdi0+PidiJyk6Om51bWVyaWMg PCAxMDA7CisKKy0tIExlYXZlICdhJyB1bmNoYW5nZWQgYnV0IG1vZGlmeSAnYicgdG8gYSB2YWx1 ZSB3aXRoaW4gdGhlIGluZGV4IHByZWRpY2F0ZS4KKy0tIFRoaXMgcmVwcmVzZW50cyBhIGNoYW5n ZSBmb3IgZmllbGQgJ2InIGZyb20gdW5pbmRleGVkIHRvIGluZGV4ZWQgYW5kIHNvCistLSB0aGlz IHNob3VsZCBub3QgdGFrZSB0aGUgSE9UIHBhdGguCitVUERBVEUgZXggU0VUIF92ID0ganNvbmJf YnVpbGRfb2JqZWN0KCdhJywgMCwgJ2InLCAxMCkgV0hFUkUgKF92LT4+J2EnKTo6bnVtZXJpYyA9 IDA7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVn Y2xhc3MpOyAtLSBleHBlY3Q6IDEgcm93LCBubyBuZXcgSE9UIHVwZGF0ZXMKKy0tIExldCdzIGNo ZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleCBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9m ICdiJworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChfdi0+Pidi Jyk6Om51bWVyaWMgPiA5IEFORCAoX3YtPj4nYicpOjpudW1lcmljIDwgMTAwOworU0VMRUNUICog RlJPTSBleCBXSEVSRSAoX3YtPj4nYicpOjpudW1lcmljID4gOSBBTkQgKF92LT4+J2InKTo6bnVt ZXJpYyA8IDEwMDsKKworLS0gVGhpcyB1cGRhdGUgbW9kaWZpZXMgdGhlIHZhbHVlIG9mICdhJywg YW4gaW5kZXhlZCBmaWVsZCwgc28gaXQgYWxzbyBjYW5ub3QKKy0tIGJlIGEgSE9UIHVwZGF0ZS4K K1VQREFURSBleCBTRVQgX3YgPSBqc29uYl9idWlsZF9vYmplY3QoJ2EnLCAxLCAnYicsIDEwKSBX SEVSRSAoX3YtPj4nYicpOjpudW1lcmljID0gMTA7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90 dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgcm93LCBubyBu ZXcgSE9UIHVwZGF0ZXMKKworLS0gVGhpcyB1cGRhdGUgY2hhbmdlcyBib3RoICdhJyBhbmQgJ2In IHRvIG5ldyB2YWx1ZXMgdGhhdCByZXF1aXJlIGluZGV4IHVwZGF0ZXMsCistLSB0aGlzIGNhbm5v dCB1c2UgdGhlIEhPVCBwYXRoLgorVVBEQVRFIGV4IFNFVCBfdiA9IGpzb25iX2J1aWxkX29iamVj dCgnYScsIDIsICdiJywgMTIpIFdIRVJFIChfdi0+PidiJyk6Om51bWVyaWMgPSAxMDsKK1NFTEVD VCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpyZWdjbGFzcyk7IC0t IGV4cGVjdDogMSByb3csIG5vIG5ldyBIT1QgdXBkYXRlcworLS0gTGV0J3MgY2hlY2sgdG8gbWFr ZSBzdXJlIHRoYXQgdGhlIGluZGV4IGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgJ2InCitFWFBM QUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZXggV0hFUkUgKF92LT4+J2InKTo6bnVtZXJp YyA+IDkgQU5EIChfdi0+PidiJyk6Om51bWVyaWMgPCAxMDA7CitTRUxFQ1QgKiBGUk9NIGV4IFdI RVJFIChfdi0+PidiJyk6Om51bWVyaWMgPiA5IEFORCAoX3YtPj4nYicpOjpudW1lcmljIDwgMTAw OworCistLSBUaGlzIHVwZGF0ZSBjaGFuZ2VzICdiJyB0byBhIHZhbHVlIG91dHNpZGUgaXRzIHBy ZWRpY2F0ZSByZXF1aXJpbmcgdGhhdAorLS0gd2UgcmVtb3ZlIGl0IGZyb20gdGhlIGluZGV4LiAg VGhhdCdzIGEgdHJhbnNpdGlvbiB0aGF0IGNhbid0IGJlIGRvbmUKKy0tIGR1cmluZyBhIEhPVCB1 cGRhdGUuCitVUERBVEUgZXggU0VUIF92ID0ganNvbmJfYnVpbGRfb2JqZWN0KCdhJywgMiwgJ2In LCAxKSBXSEVSRSAoX3YtPj4nYicpOjpudW1lcmljID0gMTI7CitTRUxFQ1QgcGdfc3RhdF9nZXRf eGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgcm93 LCBubyBuZXcgSE9UIHVwZGF0ZXMKKy0tIExldCdzIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRo ZSBpbmRleCBubyBsb25nZXIgY29udGFpbnMgdGhlIHZhbHVlIG9mICdiJworRVhQTEFJTiAoQ09T VFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChfdi0+PidiJyk6Om51bWVyaWMgPiA5IEFO RCAoX3YtPj4nYicpOjpudW1lcmljIDwgMTAwOworU0VMRUNUICogRlJPTSBleCBXSEVSRSAoX3Yt Pj4nYicpOjpudW1lcmljID4gOSBBTkQgKF92LT4+J2InKTo6bnVtZXJpYyA8IDEwMDsKKworLS0g TGV0J3MgbWFrZSBzdXJlIHdlJ3JlIHJlY29yZGluZyBIT1QgdXBkYXRlcyBmb3Igb3VyICdleCcg cmVsYXRpb24gcHJvcGVybHkgaW4gdGhlIHN5c3RlbQorLS0gdGFibGUgcGdfc3RhdF91c2VyX3Rh Ymxlcy4gIE5vdGUgdGhhdCBzdGF0aXN0aWNzIGFyZSBzdG9yZWQgd2l0aGluIGEgdHJhbnNhY3Rp b24gY29udGV4dAorLS0gZmlyc3QgKHhhY3QpIGFuZCB0aGVuIGxhdGVyIGludG8gdGhlIGdsb2Jh bCBzdGF0aXN0aWNzIGZvciBhIHJlbGF0aW9uLgorU0VMRUNUIAorICAgIGMucmVsbmFtZSBBUyB0 YWJsZV9uYW1lLAorICAgIC0tIFRyYW5zYWN0aW9uIHN0YXRpc3RpY3MKKyAgICBwZ19zdGF0X2dl dF94YWN0X3R1cGxlc191cGRhdGVkKGMub2lkKSBBUyB4YWN0X3VwZGF0ZXMsCisgICAgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoYy5vaWQpIEFTIHhhY3RfaG90X3VwZGF0ZXMs CisgICAgUk9VTkQoKAorICAgICAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRl ZChjLm9pZCk6OmZsb2F0IC8gCisgICAgICAgIE5VTExJRihwZ19zdGF0X2dldF94YWN0X3R1cGxl c191cGRhdGVkKGMub2lkKSwgMCkgKiAxMDAKKyAgICApOjpudW1lcmljLCAyKSBBUyB4YWN0X2hv dF91cGRhdGVfcGVyY2VudGFnZSwKKyAgICAtLSBDdW11bGF0aXZlIHN0YXRpc3RpY3MKKyAgICBz Lm5fdHVwX3VwZCBBUyB0b3RhbF91cGRhdGVzLAorICAgIHMubl90dXBfaG90X3VwZCBBUyBob3Rf dXBkYXRlcywKKyAgICBST1VORCgoCisgICAgICAgIHMubl90dXBfaG90X3VwZDo6ZmxvYXQgLyAK KyAgICAgICAgTlVMTElGKHMubl90dXBfdXBkLCAwKSAqIDEwMAorICAgICk6Om51bWVyaWMsIDIp IEFTIHRvdGFsX2hvdF91cGRhdGVfcGVyY2VudGFnZQorRlJPTSBwZ19jbGFzcyBjCitMRUZUIEpP SU4gcGdfc3RhdF91c2VyX3RhYmxlcyBzIE9OIGMucmVsbmFtZSA9IHMucmVsbmFtZQorV0hFUkUg Yy5yZWxuYW1lID0gJ2V4JyAKK0FORCBjLnJlbG5hbWVzcGFjZSA9ICdwdWJsaWMnOjpyZWduYW1l c3BhY2U7CistLSBleHBlY3Q6IDUgeGFjdCB1cGRhdGVzIHdpdGggMSB4YWN0IGhvdCB1cGRhdGUg YW5kIG5vIGN1bXVsYXRpdmUgdXBkYXRlcyBhcyB5ZXQKKworRFJPUCBUQUJMRSBwdWJsaWMuZXg7 CisKKy0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tCistLSBUaGlzIHRhYmxlIGhhcyBhIHNpbmdsZSBjb2x1 bW4gJ2VtYWlsJyBhbmQgYSB1bmlxdWUgY29uc3RyYWludCBvbiBpdCB0aGF0CistLSBzaG91bGQg cHJlY2x1ZGUgSE9UIHVwZGF0ZXMuCitDUkVBVEUgVEFCTEUgdXNlcnMgKAorICAgIHVzZXJfaWQg c2VyaWFsIHByaW1hcnkga2V5LAorICAgIG5hbWUgVkFSQ0hBUigyNTUpIE5PVCBOVUxMLAorICAg IGVtYWlsIFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwKKyAgICBFWENMVURFIFVTSU5HIGJ0cmVlIChs b3dlcihlbWFpbCkgV0lUSCA9KQorKTsKKworLS0gQWRkIHNvbWUgZGF0YSB0byB0aGUgdGFibGUg YW5kIHRoZW4gdXBkYXRlIGl0IGluIHdheXMgdGhhdCBzaG91bGQgYW5kIHNob3VsZAorLS0gbm90 IGJlIEhPVCB1cGRhdGVzLgorSU5TRVJUIElOVE8gdXNlcnMgKG5hbWUsIGVtYWlsKSBWQUxVRVMK KygndXNlcjEnLCAndXNlcjFAZXhhbXBsZS5jb20nKSwKKygndXNlcjInLCAndXNlcjJAZXhhbXBs ZS5jb20nKSwKKygndGFrZW4nLCAndGFrZW5ARVhBTVBMRS5jb20nKSwKKygneW91JywgJ3lvdUBk b21haW4uY29tJyksCisoJ3Rha2VuJywgJ3Rha2VuQGRvbWFpbi5jb20nKTsKKworLS0gU2hvdWxk IGZhaWwgYmVjYXVzZSBvZiB0aGUgdW5pcXVlIGNvbnN0cmFpbnQgb24gdGhlIGVtYWlsIGNvbHVt bi4KK1VQREFURSB1c2VycyBTRVQgZW1haWwgPSAndXNlcjFAZXhhbXBsZS5jb20nIFdIRVJFIGVt YWlsID0gJ3VzZXIyQGV4YW1wbGUuY29tJzsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxl c19ob3RfdXBkYXRlZCgndXNlcnMnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMCByb3dzLCBubyBu ZXcgSE9UIHVwZGF0ZXMKKworLS0gU2hvdWxkIHN1Y2NlZWQgYmVjYXVzZSB0aGUgZW1haWwgY29s dW1uIGlzIG5vdCBiZWluZyB1cGRhdGVkIGFuZCBzaG91bGQgZ28gSE9ULgorVVBEQVRFIHVzZXJz IFNFVCBuYW1lID0gJ2ZvbycgV0hFUkUgZW1haWwgPSAndXNlcjFAZXhhbXBsZS5jb20nOworU0VM RUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCd1c2Vycyc6OnJlZ2NsYXNz KTsgLS0gZXhwZWN0OiAxIHJvdywgYSBzaW5nbGUgbmV3IEhPVCB1cGRhdGUKKworLS0gQ3JlYXRl IGEgcGFydGlhbCBpbmRleCBvbiB0aGUgZW1haWwgY29sdW1uLCB1cGRhdGVzIAorQ1JFQVRFIElO REVYIGlkeF91c2Vyc19lbWFpbF9ub19leGFtcGxlIE9OIHVzZXJzIChsb3dlcihlbWFpbCkpIFdI RVJFIGxvd2VyKGVtYWlsKSBMSUtFICclQGV4YW1wbGUuY29tJSc7CisKKy0tIEFuIHVwZGF0ZSB0 aGF0IGNoYW5nZXMgdGhlIGVtYWlsIGNvbHVtbiBidXQgbm90IHRoZSBpbmRleGVkIHBvcnRpb24g b2YgaXQgYW5kIGZhbGxzIG91dHNpZGUgdGhlIGNvbnN0cmFpbnQuCistLSBTaG91bGRuJ3QgYmUg YSBIT1QgdXBkYXRlIGJlY2F1c2Ugb2YgdGhlIGV4Y2x1c2lvbiBjb25zdHJhaW50LgorVVBEQVRF IHVzZXJzIFNFVCBlbWFpbCA9ICd5b3UrMkBkb21haW4uY29tJyBXSEVSRSBuYW1lID0gJ3lvdSc7 CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ3VzZXJzJzo6cmVn Y2xhc3MpOyAtLSBleHBlY3Q6IDEgcm93LCBubyBuZXcgSE9UIHVwZGF0ZXMKKworLS0gQW4gdXBk YXRlIHRoYXQgY2hhbmdlcyB0aGUgZW1haWwgY29sdW1uIGJ1dCBub3QgdGhlIGluZGV4ZWQgcG9y dGlvbiBvZiBpdCBhbmQgZmFsbHMgd2l0aGluIHRoZSBjb25zdHJhaW50LgorLS0gQWdhaW4sIHNo b3VsZCBmYWlsIGNvbnN0cmFpbnQgYW5kIGZhaWwgdG8gYmUgYSBIT1QgdXBkYXRlLgorVVBEQVRF IHVzZXJzIFNFVCBlbWFpbCA9ICd0YWtlbkBkb21haW4uY29tJyBXSEVSRSBuYW1lID0gJ3lvdSc7 CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ3VzZXJzJzo6cmVn Y2xhc3MpOyAtLSBleHBlY3Q6IDEgcm93LCBubyBuZXcgSE9UIHVwZGF0ZXMKKworRFJPUCBUQUJM RSB1c2VyczsKKworLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0KKy0tIEFub3RoZXIgdGVzdCBvZiBjb25z dHJhaW50cyBzcG9pbGluZyBIT1QgdXBkYXRlcywgdGhpcyB0aW1lIHdpdGggYSByYW5nZS4KK0NS RUFURSBUQUJMRSBldmVudHMgKAorICAgIGlkIHNlcmlhbCBwcmltYXJ5IGtleSwKKyAgICBuYW1l IFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwKKyAgICBldmVudF90aW1lIHRzdHpyYW5nZSwKKyAgICBj b25zdHJhaW50IG5vX3NjcmVlbmluZ190aW1lX292ZXJsYXAgZXhjbHVkZSB1c2luZyBnaXN0ICgK KyAgICAgICAgZXZlbnRfdGltZSBXSVRIICYmCisgICAgKQorKTsKKworLS0gQWRkIHR3byBub24t b3ZlcmxhcHBpbmcgZXZlbnRzLgorSU5TRVJUIElOVE8gZXZlbnRzIChpZCwgZXZlbnRfdGltZSwg bmFtZSkKK1ZBTFVFUworICAgICgxLCAnWyIyMDIzLTAxLTAxIDE5OjAwOjAwIiwgIjIwMjMtMDEt MDEgMjA6NDU6MDAiXScsICdldmVudDEnKSwKKyAgICAoMiwgJ1siMjAyMy0wMS0wMSAyMTowMDow MCIsICIyMDIzLTAxLTAxIDIxOjQ1OjAwIl0nLCAnZXZlbnQyJyk7CisKKy0tIFVwZGF0ZSB0aGUg Zmlyc3QgZXZlbnQgdG8gb3ZlcmxhcCB3aXRoIHRoZSBzZWNvbmQsIHNob3VsZCBmYWlsIHRoZSBj b25zdHJhaW50IGFuZCBub3QgYmUgSE9ULgorVVBEQVRFIGV2ZW50cyBTRVQgZXZlbnRfdGltZSA9 ICdbIjIwMjMtMDEtMDEgMjA6MDA6MDAiLCAiMjAyMy0wMS0wMSAyMTo0NTowMCJdJyBXSEVSRSBp ZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V2ZW50 cyc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAwIHJvdywgbm8gbmV3IEhPVCB1cGRhdGVzCisKKy0t IFVwZGF0ZSB0aGUgZmlyc3QgZXZlbnQgdG8gbm90IG92ZXJsYXAgd2l0aCB0aGUgc2Vjb25kLCBh Z2FpbiBub3QgSE9UIGR1ZSB0byB0aGUgY29uc3RyYWludC4KK1VQREFURSBldmVudHMgU0VUIGV2 ZW50X3RpbWUgPSAnWyIyMDIzLTAxLTAxIDIyOjAwOjAwIiwgIjIwMjMtMDEtMDEgMjI6NDU6MDAi XScgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRh dGVkKCdldmVudHMnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMCByb3csIG5vIG5ldyBIT1QgdXBk YXRlcworCistLSBVcGRhdGUgdGhlIGZpcnN0IGV2ZW50IHRvIG5vdCBvdmVybGFwIHdpdGggdGhl IHNlY29uZCwgdGhpcyB0aW1lIHdlJ3JlIEhPVCBiZWNhdXNlIHdlIGRvbid0IG92ZXJsYXAgd2l0 aCB0aGUgY29uc3RyYWludC4KK1VQREFURSBldmVudHMgU0VUIG5hbWUgPSAnbmV3IG5hbWUgaGVy ZScgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRh dGVkKCdldmVudHMnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSByb3csIG9uZSBuZXcgSE9UIHVw ZGF0ZQorCitEUk9QIFRBQkxFIGV2ZW50czsKLS0gCjIuNDIuMAoK --_005_78574B24BE0A42C580753FA9FA63B8FCamazoncom_--