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 1tx2nn-002AKJ-W5 for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Mar 2025 11:50:40 +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 1tx2nl-003Nhh-SM for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Mar 2025 11:50:37 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tx2ki-003JWo-IO for pgsql-hackers@lists.postgresql.org; Tue, 25 Mar 2025 11:47:29 +0000 Received: from smtp-fw-6001.amazon.com ([52.95.48.154]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tx2kg-0012AL-1C for pgsql-hackers@postgresql.org; Tue, 25 Mar 2025 11:47:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1742903247; x=1774439247; h=from:to:cc:date:message-id:references:mime-version: subject; bh=VGfYBtdX1O8f8dx44+qFVVLsM4qn9wYfvA3Rl0k9xj0=; b=v//ivIuobIsNR172FFeu6RDhVAIa0+mI7OD6jThsEDLpYQaXKeCxFZyr 3cPMBzgu8kxkmHFnTqL69XhmQlxKmJR9YASxSXfZiSsi/vHxJy0vF9WLY xjXF+zz3SgaIuv7zPUtYmQsXhnUtREXnHEazSyCORnIKjWhy45FZxJOCg I=; X-Amazon-filename: v14-0001-Expand-HOT-update-path-to-include-expression-and.patch X-Secure-Attach-Ingestion: ProdSecureAttachHeaderAddedFromMessageFilter X-IronPort-AV: E=Sophos;i="6.14,274,1736812800"; d="scan'208,223";a="474148761" Subject: Re: Expanding HOT updates for expression and partial indexes Thread-Topic: Expanding HOT updates for expression and partial indexes 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-6001.iad6.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Mar 2025 11:47:24 +0000 Received: from EX19MTAUEB001.ant.amazon.com [10.0.44.209:10754] by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.14.245:2525] with esmtp (Farcaster) id de9e0144-127c-40a5-a53f-15252f36d974; Tue, 25 Mar 2025 11:47:22 +0000 (UTC) X-Farcaster-Flow-ID: de9e0144-127c-40a5-a53f-15252f36d974 Received: from EX19D018UEC001.ant.amazon.com (10.252.135.153) 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.1544.14; Tue, 25 Mar 2025 11:47:22 +0000 Received: from EX19D018UEC003.ant.amazon.com (10.252.135.218) by EX19D018UEC001.ant.amazon.com (10.252.135.153) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1544.14; Tue, 25 Mar 2025 11:47:22 +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.1544.014; Tue, 25 Mar 2025 11:47:22 +0000 From: "Burd, Greg" To: Matthias van de Meent CC: "pgsql-hackers@postgresql.org" Thread-Index: AQHbgjA8Gt6ExU8qBkWj3c8Md8j0Mw== Date: Tue, 25 Mar 2025 11:47:21 +0000 Message-ID: <52AFF055-07B2-495E-9312-A5395E5282E6@amazon.com> References: <78574B24-BE0A-42C5-8075-3FA9FA63B8FC@amazon.com> <238EEE41-B206-4590-8C20-DA52C25A2291@amazon.com> <51C77060-059F-4BB3-8EAF-83F08656F6D2@amazon.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [10.106.178.32] Content-Type: multipart/mixed; boundary="_002_52AFF05507B2495E9312A5395E5282E6amazoncom_" MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_52AFF05507B2495E9312A5395E5282E6amazoncom_ Content-Type: text/plain; charset="utf-8" Content-ID: <44AEBD1A34748A46804590EFCAB992DD@amazon.com> Content-Transfer-Encoding: base64 TWF0dGhpYXMsIA0KDQpSZWJhc2VkIHBhdGNoIGF0dGFjaGVkLg0KDQpDaGFuZ2VzIGluIHYxNDoN CiogVXBkYXRlQ29udGV4dCBub3cgdGhlIGxvY2F0aW9uIEkndmUgc3RvcmVkIGVzdGF0ZSwgcmVz dWx0UmVsSW5mbywgZXRjLg0KKiBSZXVzZSB0aGUgcmVzdWx0IGZyb20gdGhlIHByZWRpY2F0ZSBv biB0aGUgcGFydGlhbCBpbmRleC4NCg0KIC1ncmVnDQoNCg0KPiBPbiBNYXIgNywgMjAyNSwgYXQg NTo0N+KAr1BNLCBNYXR0aGlhcyB2YW4gZGUgTWVlbnQgPGJvZWtld3VybStwb3N0Z3Jlc0BnbWFp bC5jb20+IHdyb3RlOg0KPiANCj4gT24gVGh1LCA2IE1hciAyMDI1IGF0IDEzOjQwLCBCdXJkLCBH cmVnIDxncmVnYnVyZEBhbWF6b24uY29tPiB3cm90ZToNCj4gDQo+PiANCj4+IA0KPj4+IE9uIE1h ciA1LCAyMDI1LCBhdCA2OjM54oCvUE0sIE1hdHRoaWFzIHZhbiBkZSBNZWVudCA8Ym9la2V3dXJt K3Bvc3RncmVzQGdtYWlsLmNvbT4gd3JvdGU6DQo+Pj4gDQo+Pj4gT24gV2VkLCA1IE1hciAyMDI1 IGF0IDE4OjIxLCBCdXJkLCBHcmVnIDxncmVnYnVyZEBhbWF6b24uY29tPiB3cm90ZToNCj4+PiAN Cj4+Pj4gKiBhdWdtZW50cyBJbmRleEluZm8gb25seSB3aGVuIG5lZWRlZCBmb3IgdGVzdGluZyBl eHByZXNzaW9ucyBhbmQgb25seSBvbmNlDQo+Pj4gDQo+Pj4gDQo+Pj4gRXhlY0V4cHJlc3Npb25J bmRleGVzVXBkYXRlZCBzZWVtcyB0byBhbHdheXMgbG9vcCBvdmVyIGFsbCBpbmRleGVzLA0KPj4+ IGFsd2F5cyBjYWxsaW5nIEF0dHJpYnV0ZUluZGV4SW5mbyB3aGljaCBhbHdheXMgdXBkYXRlcyB0 aGUgZmllbGRzIGluDQo+Pj4gdGhlIEluZGV4SW5mbyB3aGVuIHRoZSBpbmRleCBoYXMgb25seSAh Ynl2YWwgYXR0cmlidXRlcyAoZS5nLiB0ZXh0LA0KPj4+IGpzb24sIG9yIG90aGVyIHN1Y2ggdmFy bGVuYSB0eXBlcykuIFlvdSBzYXkgaXQgaGFwcGVucyBvbmx5IG9uY2UsIGhhdmUNCj4+PiBJIG1p c3NlZCBzb21ldGhpbmc/DQo+PiANCj4+IA0KPj4gVGhlcmUncyBhIHRlc3QgdGhhdCBhdm9pZHMg ZG9pbmcgaXQgbW9yZSB0aGFuIG9uY2UsIFsuLi5dDQo+IA0KPiANCj4gSXMgdGhpcyB0aGF0IG9u ZT8NCj4gDQo+ICsgICAgaWYgKGluZGV4SW5mby0+aWlfSW5kZXhBdHRyQnlWYWwpDQo+ICsgICAg ICAgIHJldHVybiBpbmRleEluZm87DQo+IA0KPiBJIHRoaW5rIHRoYXQgdGVzdCBkb2Vzbid0IHdv cmsgY29uc2lzdGVudGx5OiBhIGJpdG1hcHNldCAqIGlzIE5VTEwNCj4gd2hlbiBubyBiaXRzIGFy ZSBzZXQ7IGFuZCBmb3Igc29tZSBpbmRleGVzIG5vIGF0dHJpYnV0ZSB3aWxsIGJlIGJ5dmFsLA0K PiB0aHVzIGZhaWxpbmcgdGhpcyBlYXJseS1leGl0IGV2ZW4gYWZ0ZXIgcHJvY2Vzc2luZy4NCj4g DQo+IEFub3RoZXIgc21hbGwgaXNzdWUgd2l0aCB0aGlzIGFwcHJvYWNoIGlzIHRoYXQgaXQgYWx3 YXlzIGNhbGxzIGFuZA0KPiB0ZXN0cyBpbiBFRUlVKCksIHdoaWxlIGl0J3MgcXVpdGUgbGlrZWx5 IHdlIHdvdWxkIGRvIGJldHRlciBpZiB3ZQ0KPiBwcmUtcHJvY2Vzc2VkIF9hbGxfIGluZGV4ZXMg YXQgb25jZSwgc28gdGhhdCB3ZSBjYW4gaGF2ZSBhIHBhdGggdGhhdA0KPiBkb2Vzbid0IHJlcGVh dGVkbHkgZ2V0IGludG8gRUVJVSBvbmx5IHRvIGV4aXQgaW1tZWRpYXRlbHkgYWZ0ZXIuIEl0J2xs DQo+IHByb2JhYmx5IGJlIGhvdCBlbm91Z2ggdG8gbm90IG1hdHRlciBtdWNoLCBidXQgaXQncyBz dGlsbCBjeWNsZXMgc3BlbnQNCj4gb24gc29tZXRoaW5nIHRoYXQgd2UgY2FuIG9wdGltaXplIGZv ciBpbiBjb2RlLg0KDQpJJ3ZlIGNoYW5nZWQgdGhpcyBhIGJpdCwgbm93IGluIEV4ZWNPcGVuSW5k aWNlcygpIHdoZW4gdGhlcmUgYXJlIGV4cHJlc3Npb25zIG9yIHByZWRpY2F0ZXMgSSBhdWdtZW50 IHRoZSBJbmRleEluZm8gd2l0aCBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgdG8gcGVyZm9ybSB0aGUg dGVzdHMgaW4gRUVJVSgpLiAgSSd2ZSBkZWJhdGVkIGFkZGluZyBhbm90aGVyIGJvb2wgdG8gRXhl Y09wZW5JbmRpY2VzKCkgdG8gaW5kaWNhdGUgdGhhdCB3ZSdyZSBvcGVuaW5nIGluZGV4ZXMgZm9y IHRoZSBwdXJwb3NlIG9mIGFuIHVwZGF0ZSB0byBhdm9pZCBidWlsZGluZyB0aGF0IGluZm9ybWF0 aW9uIGluIGNhc2VzIHdoZXJlIHdlIGFyZSBub3QuICBTaW1pbGFyIHRvIHRoZSBib29sIGBzcGVj dWxhdGl2ZWAgb24gRXhlY09wZW5JbmRpY2VzKCkgdG9kYXkuICBUaG91Z2h0cz8NCg0KPj4gSSBt aWdodCB3aWRlbiB0aGlzIHBhdGNoIGEgYml0IHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgdGVzdGlu ZyBlcXVhbGl0eSBvZiBpbmRleCB0dXBsZXMgdXNpbmcgY3VzdG9tIG9wZXJhdG9ycyB3aGVuIHRo ZXkgZXhpc3QgZm9yIHRoZSBpbmRleC4gIEluIHRoZSB1c2UgY2FzZSBJJ20gc29sdmluZyBmb3Ig d2UgdXNlIGEgY3VzdG9tIG9wZXJhdG9yIGZvciBlcXVhbGl0eSB0aGF0IGlzIG5vdCB0aGUgc2Ft ZSBhcyBhIG1lbWNtcCgpLiAgRG8geW91IGhhdmUgdGhvdWdodHMgb24gdGhhdD8NCj4gDQo+IA0K PiBJIGRvbid0IHRoaW5rIHRoYXQncyBhIHZlcnkgZ3JlYXQgaWRlYS4gRnJvbSBhIGNlcnRhaW4g cG9pbnQgb2YgdmlldywNCj4geW91IGNhbiBzZWUgSE9UIGFzICJkZWR1cGxpY2F0aW5nIG11bHRp cGxlIHR1cGxlIHZlcnNpb25zIGJlaGluZCBhDQo+IHNpbmdsZSBUSUQiLiBCdHJlZSBkb2Vzbid0 IHN1cHBvcnQgZGVkdXBsaWNhdGlvbiBmb3IgdHlwZXMgdGhhdCBjYW4NCj4gaGF2ZSBtb3JlIHRo YW4gb25lIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzYW1lIHZhbHVlIHNvIHRoYXQgZS5nLg0KPiAn MC4wJzo6bnVtZXJpYyBhbmQgJzAnOjpudW1lcmljIGFyZSBib3RoIGRpc3BsYXllZCBjb3JyZWN0 bHksIGV2ZW4NCj4gd2hlbiB0aGV5IGNvbXBhcmUgYXMgZXF1YWwgYWNjb3JkaW5nIHRvIGNlcnRh aW4gZXF1YWxpdHkgb3BlcmF0b3JzLg0KDQpJbnRlcmVzdGluZywgZ29vZCBwb2ludC4gIFNlZW1z IGxpa2UgaXQgd291bGQgcmVxdWlyZSBhIG5ldyBpbmRleCBBTSBmdW5jdGlvbjoNCmJvb2wgaW5k ZXhlZF90dXBsZV93b3VsZF9jaGFuZ2UoKQ0KDQpJJ2xsIGRyb3AgdGhpcyBmb3Igbm93LCBpdCBz ZWVtcyBvdXQgb2Ygc2NvcGUgZm9yIHRoaXMgcGF0Y2ggc2V0Lg0KDQoNCg0KICA= --_002_52AFF05507B2495E9312A5395E5282E6amazoncom_ Content-Type: application/octet-stream; name="v14-0001-Expand-HOT-update-path-to-include-expression-and.patch" Content-Description: v14-0001-Expand-HOT-update-path-to-include-expression-and.patch Content-Disposition: attachment; filename="v14-0001-Expand-HOT-update-path-to-include-expression-and.patch"; size=101085; creation-date="Tue, 25 Mar 2025 11:47:21 GMT"; modification-date="Tue, 25 Mar 2025 11:47:21 GMT" Content-ID: <480BDD15040EEA4CB5236F930CB22039@amazon.com> Content-Transfer-Encoding: base64 RnJvbSAwNWUyYTg0ZGMzNTQxODg1MzkyZWJlODViZDI2NjAxOGVjMjllODk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnb3J5IEJ1cmQgPGdyZWdidXJkQGFtYXpvbi5jb20+CkRh dGU6IE1vbiwgMjcgSmFuIDIwMjUgMTM6Mjg6NTkgLTA1MDAKU3ViamVjdDogW1BBVENIIHYxNF0g RXhwYW5kIEhPVCB1cGRhdGUgcGF0aCB0byBpbmNsdWRlIGV4cHJlc3Npb24gYW5kIHBhcnRpYWwK IGluZGV4ZXMuCgpUaGlzIHBhdGNoIGV4dGVuZHMgdGhlIGNhc2VzIHdoZXJlIEhPVCB1cGRhdGVz IGFyZSBwb3NzaWJsZSBpbiB0aGUgaGVhcGFtIGJ5CmV4YW1pbmluZyBleHByZXNzaW9uIGluZGV4 ZXMgYW5kIGRldGVybWluaW5nIGlmIGluZGV4ZWQgdmFsdWVzIHdoZXJlIG11dGF0ZWQKb3Igbm90 LiAgUHJldmlvdXNseSwgYW55IGV4cHJlc3Npb24gaW5kZXggb24gYSBjb2x1bW4gd291bGQgZGlz cXVhbGlmeSBpdApmcm9tIHRoZSBIT1QgdXBkYXRlIHBhdGguIEFsc28gZXhhbWluZXMgcGFydGlh bCBpbmRleGVzIHRvIHNlZSBpZiB0aGUKdmFsdWVzIGFyZSB3aXRoaW4gdGhlIHByZWRpY2F0ZSBv ciBub3QuCgpUaGlzIGlzIGEgbW9kaWZpZWQgYXBwbGljYXRpb24gb2YgYSBwYXRjaCBwcm9wb3Nl ZCBvbiB0aGUgcGdzcWwtaGFja2VycyBsaXN0OgpodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9t ZXNzYWdlLWlkL2ZsYXQvNGQ5OTI4ZWUtYTllNi0xNWY5LTljODItNTk4MWYxM2ZmY2E2JTQwcG9z dGdyZXNwcm8ucnUKYXBwbGllZDogaHR0cHM6Ly9naXQucG9zdGdyZXNxbC5vcmcvZ2l0d2ViLz9w PXBvc3RncmVzcWwuZ2l0O2E9Y29tbWl0O2g9YzIwM2Q2Y2Y4CnJldmVydGVkOiBodHRwczovL2dp dC5wb3N0Z3Jlc3FsLm9yZy9naXR3ZWIvP3A9cG9zdGdyZXNxbC5naXQ7YT1jb21taXQ7aD0wNWY4 NDYwNWRiZWI5Y2Y4Mjc5YTE1NzIzNGIyNGJiYjcwNmM1MjU2CgpTaWduZWQtb2ZmLWJ5OiBHcmVn IEJ1cmQgPGdyZWdidXJkQGFtYXpvbi5jb20+Ci0tLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf dGFibGUuc2dtbCAgICAgICAgICAgIHwgIDE4ICsKIGRvYy9zcmMvc2dtbC9zdG9yYWdlLnNnbWwg ICAgICAgICAgICAgICAgICAgICB8ICAyMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3Jl bG9wdGlvbnMuYyAgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURN RS5IT1QgICAgICAgICAgICB8ICA0NSArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMgICAgICAgICAgICAgIHwgIDQzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f aGFuZGxlci5jICAgICAgfCAgMTUgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFt LmMgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAg ICAgICAgICAgICAgIHwgIDQ3ICsrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4aW5nLmMgICAg ICAgICAgICAgICAgfCAgMTYgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5j ICAgICAgICAgICB8IDE5MiArKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0 aW9uLmMgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFi bGUuYyAgICAgICAgfCAgMjcgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMg ICAgICAgICAgICB8ICA3MCArLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAg ICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAg ICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAg ICAgICAgICB8ICAzMyArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAg ICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAg ICAgfCAgMTMgKwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAgICAgICAgICAgICAg IHwgIDEwICsKIHNyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmggICAgICAgICAgICAgICAgICB8 ICAgMSArCiAuLi4vcmVncmVzcy9leHBlY3RlZC9oZWFwX2hvdF91cGRhdGVzLm91dCAgICAgfCA2 NjUgKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl ICAgICAgICAgICAgfCAgIDUgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvaGVhcF9ob3RfdXBkYXRl cy5zcWwgICAgIHwgNDgxICsrKysrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0ICAgICAgICAgICAgICB8ICAgMiArLQogMjUgZmlsZXMgY2hhbmdlZCwgMTY0MCBpbnNl cnRpb25zKCspLCAxMDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9oZWFwX2hvdF91cGRhdGVzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hlYXBfaG90X3VwZGF0ZXMuc3FsCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3RhYmxlLnNnbWwKaW5kZXggZTVjMDM0ZDcyNGUuLjU2OWIyYzNlZTQ1IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3RhYmxlLnNnbWwKQEAgLTE5ODAsNiArMTk4MCwyNCBAQCBXSVRIICggTU9EVUxV UyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNl YWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZh cmxpc3RlbnRyeSBpZD0icmVsb3B0aW9uLWV4cHJlc3Npb24tY2hlY2tzIiB4cmVmbGFiZWw9ImV4 cHJlc3Npb25fY2hlY2tzIj4KKyAgICA8dGVybT48bGl0ZXJhbD5leHByZXNzaW9uX2NoZWNrczwv bGl0ZXJhbD4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KQorICAgIDxpbmRleHRlcm0+CisgICAgIDxw cmltYXJ5Pjx2YXJuYW1lPmV4cHJlc3Npb25fY2hlY2tzPC92YXJuYW1lPiBzdG9yYWdlIHBhcmFt ZXRlcjwvcHJpbWFyeT4KKyAgICA8L2luZGV4dGVybT4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIEVuYWJsZXMgb3IgZGlzYWJsZXMgZXZhdWxhdGlvbiBv ZiBwcmVkaWNhdGUgZXhwcmVzc2lvbnMgb24gcGFydGlhbAorICAgICAgaW5kZXhlcyBvciBleHBy ZXNzaW9ucyB1c2VkIHRvIGRlZmluZSBpbmRleGVzIGR1cmluZyB1cGRhdGVzLgorICAgICAgSWYg PGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4sIHRoZW4gdGhlc2UgZXhwcmVzc2lvbnMgYXJlIGV2YWx1 YXRlZCBkdXJpbmcKKyAgICAgIHVwZGF0ZXMgdG8gZGF0YSB3aXRoaW4gdGhlIGhlYXAgcmVsYXRp b24gYWdhaW5zdCB0aGUgb2xkIGFuZCBuZXcgdmFsdWVzCisgICAgICBhbmQgdGhlbiBjb21wYXJl ZCB0byBkZXRlcm1pbmUgaWYgPGFjcm9ueW0+SE9UPC9hY3JvbnltPiB1cGRhdGVzIGFyZQorICAg ICAgYWxsb3dhYmxlIG9yIG5vdC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxpdGVyYWw+dHJ1ZTwv bGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKICAgIDwvdmFyaWFibGVsaXN0PgogCiAgIDwvcmVmc2VjdDI+CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvc3RvcmFnZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3N0b3JhZ2Uuc2dtbAppbmRl eCA2MTI1MDc5OWVjMC4uNjRhNjI2NGQ4ZmQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zdG9y YWdlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N0b3JhZ2Uuc2dtbApAQCAtMTEzOCw2ICsxMTM4 LDI3IEBAIGRhdGEuIEVtcHR5IGluIG9yZGluYXJ5IHRhYmxlcy48L2VudHJ5PgogICA8L2l0ZW1p emVkbGlzdD4KICA8L3BhcmE+CiAKKyA8cGFyYT4KKyAgPGFjcm9ueW0+SE9UPC9hY3JvbnltPiB1 cGRhdGVzIGNhbiBvY2N1ciB3aGVuIHRoZSBleHByZXNzaW9uIHVzZWQgdG8gZGVmaW5lCisgIGFu IGluZGV4IHNob3dzIG5vIGNoYW5nZXMgdG8gdGhlIGluZGV4ZWQgdmFsdWUuIFRvIGRldGVybWlu ZSB0aGlzIHJlcXVpcmVzCisgIHRoYXQgdGhlIGV4cHJlc3Npb24gYmUgZXZhdWxhdGVkIGZvciB0 aGUgb2xkIGFuZCBuZXcgdmFsdWVzIHRvIGJlIHN0b3JlZCBpbgorICB0aGUgaW5kZXggYW5kIHRo ZW4gY29tcGFyZWQuIFRoaXMgYWxsb3dzIGZvciA8YWNyb255bT5IT1Q8L2Fjcm9ueW0+IHVwZGF0 ZXMKKyAgd2hlbiBkYXRhIGluZGV4ZWQgd2l0aGluIEpTT05CIGNvbHVtbnMgaXMgdW5jaGFuZ2Vk LiBUbyBkaXNhYmxlIHRoaXMKKyAgYmVoYXZpb3IgYW5kIGF2b2lkIHRoZSBvdmVyaGVhZCBvZiBl dmFsdWF0aW5nIHRoZSBleHByZXNzaW9uIGR1cmluZyB1cGRhdGVzCisgIHNldCB0aGUgPGxpdGVy YWw+ZXhwcmVzc2lvbl9jaGVja3M8L2xpdGVyYWw+IG9wdGlvbiB0byBmYWxzZSBmb3IgdGhlIHRh YmxlLgorIDwvcGFyYT4KKworIDxwYXJhPgorICA8YWNyb255bT5IT1Q8L2Fjcm9ueW0+IHVwZGF0 ZXMgY2FuIGFsc28gb2NjdXIgd2hlbiB1cGRhdGVkIHZhbHVlcyBhcmUgbm90CisgIHdpdGhpbiB0 aGUgcHJlZGljYXRlIG9mIGEgcGFydGlhbCBpbmRleC4gSG93ZXZlciwgPGFjcm9ueW0+SE9UPC9h Y3JvbnltPgorICB1cGRhdGVzIGFyZSBub3QgcG9zc2libGUgd2hlbiB0aGUgdXBkYXRlZCB2YWx1 ZSBhbmQgdGhlIGN1cnJlbnQgdmFsdWUgZGlmZmVyCisgIHdpdGggcmVnYXJkcyB0byB0aGUgcHJl ZGljYXRlLiBUbyBkZXRlcm1pbiB0aGlzIHJlcXVpcmVzIHRoYXQgdGhlIHByZWRpY2F0ZQorICBl eHByZXNzaW9uIGJlIGV2YWx1YXRlZCBmb3IgdGhlIG9sZCBhbmQgbmV3IHZhbHVlcyB0byBiZSBz dG9yZWQgaW4gdGhlIGluZGV4CisgIGFuZCB0aGVuIGNvbXBhcmVkLiBUbyBkaXNhYmxlIHRoaXMg YmVoYXZpb3IgYW5kIGF2b2lkIHRoZSBvdmVyaGVhZCBvZgorICBldmFsdWF0aW5nIHRoZSBleHBy ZXNzaW9uIGR1cmluZyB1cGRhdGVzIHNldAorICB0aGUgPGxpdGVyYWw+ZXhwcmVzc2lvbl9jaGVj a3M8L2xpdGVyYWw+IG9wdGlvbiB0byBmYWxzZSBmb3IgdGhlIHRhYmxlLgorIDwvcGFyYT4KKwog IDxwYXJhPgogICBZb3UgY2FuIGluY3JlYXNlIHRoZSBsaWtlbGlob29kIG9mIHN1ZmZpY2llbnQg cGFnZSBzcGFjZSBmb3IKICAgPGFjcm9ueW0+SE9UPC9hY3JvbnltPiB1cGRhdGVzIGJ5IGRlY3Jl YXNpbmcgYSB0YWJsZSdzIDxsaW5rCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29t bW9uL3JlbG9wdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5j CmluZGV4IDY0NWI1YzAwNDY3Li40MWM3MjdlYWZjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1v bi9yZWxvcHRpb25zLmMKQEAgLTE2Niw2ICsxNjYsMTUgQEAgc3RhdGljIHJlbG9wdF9ib29sIGJv b2xSZWxPcHRzW10gPQogCQl9LAogCQl0cnVlCiAJfSwKKwl7CisJCXsKKwkJCSJleHByZXNzaW9u X2NoZWNrcyIsCisJCQkiV2hlbiBkaXNhYmxlZCBwcmV2ZW50cyBjaGVja2luZyBleHByZXNzaW9u cyBvbiBpbmRleGVzIGFuZCBwcmVkaWNhdGVzIG9uIHBhcnRpYWwgaW5kZXhlcyBmb3IgY2hhbmdl cyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBoZWFwLW9ubHkgdHVwbGUgKEhPVCkgdXBkYXRlcy4iLAor CQkJUkVMT1BUX0tJTkRfSEVBUCwKKwkJCVNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jaworCQl9LAor CQl0cnVlCisJfSwKIAkvKiBsaXN0IHRlcm1pbmF0b3IgKi8KIAl7e05VTEx9fQogfTsKQEAgLTE5 MTQsNyArMTkyMyw4IEBAIGRlZmF1bHRfcmVsb3B0aW9ucyhEYXR1bSByZWxvcHRpb25zLCBib29s IHZhbGlkYXRlLCByZWxvcHRfa2luZCBraW5kKQogCQl7InZhY3V1bV90cnVuY2F0ZSIsIFJFTE9Q VF9UWVBFX0JPT0wsCiAJCW9mZnNldG9mKFN0ZFJkT3B0aW9ucywgdmFjdXVtX3RydW5jYXRlKSwg b2Zmc2V0b2YoU3RkUmRPcHRpb25zLCB2YWN1dW1fdHJ1bmNhdGVfc2V0KX0sCiAJCXsidmFjdXVt X21heF9lYWdlcl9mcmVlemVfZmFpbHVyZV9yYXRlIiwgUkVMT1BUX1RZUEVfUkVBTCwKLQkJb2Zm c2V0b2YoU3RkUmRPcHRpb25zLCB2YWN1dW1fbWF4X2VhZ2VyX2ZyZWV6ZV9mYWlsdXJlX3JhdGUp fQorCQlvZmZzZXRvZihTdGRSZE9wdGlvbnMsIHZhY3V1bV9tYXhfZWFnZXJfZnJlZXplX2ZhaWx1 cmVfcmF0ZSl9LAorCQl7ImV4cHJlc3Npb25fY2hlY2tzIiwgUkVMT1BUX1RZUEVfQk9PTCwgb2Zm c2V0b2YoU3RkUmRPcHRpb25zLCBleHByZXNzaW9uX2NoZWNrcyl9CiAJfTsKIAogCXJldHVybiAo Ynl0ZWEgKikgYnVpbGRfcmVsb3B0aW9ucyhyZWxvcHRpb25zLCB2YWxpZGF0ZSwga2luZCwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCmluZGV4IDc0ZTQwN2YzNzVhLi4yMzQwZDgyMDUzZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVAorKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCkBAIC0zNiw3ICszNiw3IEBAIEhPVCBzb2x2 ZXMgdGhpcyBwcm9ibGVtIGZvciB0d28gcmVzdHJpY3RlZCBidXQgdXNlZnVsIHNwZWNpYWwgY2Fz ZXM6CiBGaXJzdCwgd2hlcmUgYSB0dXBsZSBpcyByZXBlYXRlZGx5IHVwZGF0ZWQgaW4gd2F5cyB0 aGF0IGRvIG5vdCBjaGFuZ2UKIGl0cyBpbmRleGVkIGNvbHVtbnMuICAoSGVyZSwgImluZGV4ZWQg Y29sdW1uIiBtZWFucyBhbnkgY29sdW1uIHJlZmVyZW5jZWQKIGF0IGFsbCBpbiBhbiBpbmRleCBk ZWZpbml0aW9uLCBpbmNsdWRpbmcgZm9yIGV4YW1wbGUgY29sdW1ucyB0aGF0IGFyZQotdGVzdGVk IGluIGEgcGFydGlhbC1pbmRleCBwcmVkaWNhdGUgYnV0IGFyZSBub3Qgc3RvcmVkIGluIHRoZSBp bmRleC4pCit0ZXN0ZWQgaW4gYSBwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZSwgdGhhdCBoYXMgbWF0 ZXJpYWxseSBjaGFuZ2VkLikKIAogU2Vjb25kLCB3aGVyZSB0aGUgbW9kaWZpZWQgY29sdW1ucyBh cmUgb25seSB1c2VkIGluIGluZGV4ZXMgdGhhdCBkbyBub3QKIGNvbnRhaW4gdHVwbGUgSURzLCBi dXQgbWFpbnRhaW4gc3VtbWFyaWVzIG9mIHRoZSBpbmRleGVkIGRhdGEgYnkgYmxvY2suCkBAIC0x MzMsMjggKzEzMywzNCBAQCBOb3RlOiB3ZSBjYW4gdXNlIGEgImRlYWQiIGxpbmUgcG9pbnRlciBm b3IgYW55IERFTEVURWQgdHVwbGUsCiB3aGV0aGVyIGl0IHdhcyBwYXJ0IG9mIGEgSE9UIGNoYWlu IG9yIG5vdC4gIFRoaXMgYWxsb3dzIHNwYWNlIHJlY2xhbWF0aW9uCiBpbiBhZHZhbmNlIG9mIHJ1 bm5pbmcgVkFDVVVNIGZvciBwbGFpbiBERUxFVEVzIGFzIHdlbGwgYXMgSE9UIHVwZGF0ZXMuCiAK LVRoZSByZXF1aXJlbWVudCBmb3IgZG9pbmcgYSBIT1QgdXBkYXRlIGlzIHRoYXQgaW5kZXhlcyB3 aGljaCBwb2ludCB0bwotdGhlIHJvb3QgbGluZSBwb2ludGVyIChhbmQgdGh1cyBuZWVkIHRvIGJl IGNsZWFuZWQgdXAgYnkgVkFDVVVNIHdoZW4gdGhlCi10dXBsZSBpcyBkZWFkKSBkbyBub3QgcmVm ZXJlbmNlIGNvbHVtbnMgd2hpY2ggYXJlIHVwZGF0ZWQgaW4gdGhhdCBIT1QKLWNoYWluLiAgU3Vt bWFyaXppbmcgaW5kZXhlcyAoc3VjaCBhcyBCUklOKSBhcmUgYXNzdW1lZCB0byBoYXZlIG5vCi1y ZWZlcmVuY2VzIHRvIGluZGl2aWR1YWwgdHVwbGVzIGFuZCB0aHVzIGFyZSBpZ25vcmVkIHdoZW4g Y2hlY2tpbmcgSE9UCi1hcHBsaWNhYmlsaXR5LiAgVGhlIHVwZGF0ZWQgY29sdW1ucyBhcmUgY2hl Y2tlZCBhdCBleGVjdXRpb24gdGltZSBieQotY29tcGFyaW5nIHRoZSBiaW5hcnkgcmVwcmVzZW50 YXRpb24gb2YgdGhlIG9sZCBhbmQgbmV3IHZhbHVlcy4gIFdlIGluc2lzdAotb24gYml0d2lzZSBl cXVhbGl0eSByYXRoZXIgdGhhbiB1c2luZyBkYXRhdHlwZS1zcGVjaWZpYyBlcXVhbGl0eSByb3V0 aW5lcy4KLVRoZSBtYWluIHJlYXNvbiB0byBhdm9pZCB0aGUgbGF0dGVyIGlzIHRoYXQgdGhlcmUg bWlnaHQgYmUgbXVsdGlwbGUKLW5vdGlvbnMgb2YgZXF1YWxpdHkgZm9yIGEgZGF0YXR5cGUsIGFu ZCB3ZSBkb24ndCBrbm93IGV4YWN0bHkgd2hpY2ggb25lCi1pcyByZWxldmFudCBmb3IgdGhlIGlu ZGV4ZXMgYXQgaGFuZC4gIFdlIGFzc3VtZSB0aGF0IGJpdHdpc2UgZXF1YWxpdHkKLWd1YXJhbnRl ZXMgZXF1YWxpdHkgZm9yIGFsbCBwdXJwb3Nlcy4KK1RoZSByZXF1aXJlbWVudCBmb3IgZG9pbmcg YSBIT1QgdXBkYXRlIGlzIHRoYXQgaW5kZXhlcyB3aGljaCBwb2ludCB0byB0aGUgcm9vdAorbGlu ZSBwb2ludGVyIChhbmQgdGh1cyBuZWVkIHRvIGJlIGNsZWFuZWQgdXAgYnkgVkFDVVVNIHdoZW4g dGhlIHR1cGxlIGlzIGRlYWQpCitkbyBub3QgcmVmZXJlbmNlIGNvbHVtbnMgd2hpY2ggYXJlIHVw ZGF0ZWQgaW4gdGhhdCBIT1QgY2hhaW4uCisKK1N1bW1hcml6aW5nIGluZGV4ZXMgKHN1Y2ggYXMg QlJJTikgYXJlIGFzc3VtZWQgdG8gaGF2ZSBubyByZWZlcmVuY2VzIHRvCitpbmRpdmlkdWFsIHR1 cGxlcyBhbmQgdGh1cyBhcmUgaWdub3JlZCB3aGVuIGNoZWNraW5nIEhPVCBhcHBsaWNhYmlsaXR5 LgorCitFeHByZXNzaW9ucyBvbiBpbmRleGVzIGFyZSBldmFsdWF0ZWQgYW5kIHRoZSByZXN1bHRz IHVzZWQgd2hlbiBjaGVja2luZyBmb3IKK2NoYW5nZXMuICBUaGlzIGFsbG93cyBmb3IgdGhlIEpT T05CIGRhdGF0eXBlIHRvIGhhdmUgSE9UIHVwZGF0ZXMgd2hlbiB0aGUKK2luZGV4ZWQgcG9ydGlv biBvZiB0aGUgZG9jdW1lbnQgYXJlIG5vdCBtb2RpZmllZC4KKworUGFydGlhbCBpbmRleCBleHBy ZXNzaW9ucyBhcmUgZXZhbHVhdGVkLCBIT1QgdXBkYXRlcyBhcmUgYWxsb3dlZCB3aGVuIHRoZQor dXBkYXRlZCBpbmRleCB2YWx1ZXMgZG8gbm90IHNhdGlzZnkgdGhlIHByZWRpY2F0ZS4KKworVGhl IHVwZGF0ZWQgY29sdW1ucyBhcmUgY2hlY2tlZCBhdCBleGVjdXRpb24gdGltZSBieSBjb21wYXJp bmcgdGhlIGJpbmFyeQorcmVwcmVzZW50YXRpb24gb2YgdGhlIG9sZCBhbmQgbmV3IHZhbHVlcy4g IFdlIGluc2lzdCBvbiBiaXR3aXNlIGVxdWFsaXR5IHJhdGhlcgordGhhbiB1c2luZyBkYXRhdHlw ZS1zcGVjaWZpYyBlcXVhbGl0eSByb3V0aW5lcy4gIFRoZSBtYWluIHJlYXNvbiB0byBhdm9pZCB0 aGUKK2xhdHRlciBpcyB0aGF0IHRoZXJlIG1pZ2h0IGJlIG11bHRpcGxlIG5vdGlvbnMgb2YgZXF1 YWxpdHkgZm9yIGEgZGF0YXR5cGUsIGFuZAord2UgZG9uJ3Qga25vdyBleGFjdGx5IHdoaWNoIG9u ZSBpcyByZWxldmFudCBmb3IgdGhlIGluZGV4ZXMgYXQgaGFuZC4gIFdlIGFzc3VtZQordGhhdCBi aXR3aXNlIGVxdWFsaXR5IGd1YXJhbnRlZXMgZXF1YWxpdHkgZm9yIGFsbCBwdXJwb3Nlcy4KIAog SWYgYW55IGNvbHVtbnMgdGhhdCBhcmUgaW5jbHVkZWQgYnkgbm9uLXN1bW1hcml6aW5nIGluZGV4 ZXMgYXJlIHVwZGF0ZWQsCiB0aGUgSE9UIG9wdGltaXphdGlvbiBpcyBub3QgYXBwbGllZCwgYW5k IHRoZSBuZXcgdHVwbGUgaXMgaW5zZXJ0ZWQgaW50bwogYWxsIGluZGV4ZXMgb2YgdGhlIHRhYmxl LiAgSWYgbm9uZSBvZiB0aGUgdXBkYXRlZCBjb2x1bW5zIGFyZSBpbmNsdWRlZCBpbgogdGhlIHRh YmxlJ3MgaW5kZXhlcywgdGhlIEhPVCBvcHRpbWl6YXRpb24gaXMgYXBwbGllZCBhbmQgbm8gaW5k ZXhlcyBhcmUKIHVwZGF0ZWQuICBJZiBpbnN0ZWFkIHRoZSB1cGRhdGVkIGNvbHVtbnMgYXJlIG9u bHkgaW5kZXhlZCBieSBzdW1tYXJpemluZwotaW5kZXhlcywgdGhlIEhPVCBvcHRpbWl6YXRpb24g aXMgYXBwbGllZCwgYnV0IHRoZSB1cGRhdGUgaXMgcHJvcGFnYXRlZCB0bwotYWxsIHN1bW1hcml6 aW5nIGluZGV4ZXMuICAoUmVhbGlzdGljYWxseSwgd2Ugb25seSBuZWVkIHRvIHByb3BhZ2F0ZSB0 aGUKLXVwZGF0ZSB0byB0aGUgaW5kZXhlcyB0aGF0IGNvbnRhaW4gdGhlIHVwZGF0ZWQgdmFsdWVz LCBidXQgdGhhdCBpcyB5ZXQgdG8KLWJlIGltcGxlbWVudGVkLikKK2luZGV4ZXMsIHRoZSBIT1Qg b3B0aW1pemF0aW9uIGlzIGFwcGxpZWQgYW5kIHRoZSB1cGRhdGUgaXMgcHJvcGFnYXRlZCB0bwor YWxsIG9mIHRoZSBzdW1tYXJpemluZyBpbmRleGVzLgogCiBBYm9ydCBDYXNlcwogLS0tLS0tLS0t LS0KQEAgLTQ3Nyw4ICs0ODMsOSBAQCBIZWFwLW9ubHkgdHVwbGUKIEhPVC1zYWZlCiAKIAlBIHBy b3Bvc2VkIHR1cGxlIHVwZGF0ZSBpcyBzYWlkIHRvIGJlIEhPVC1zYWZlIGlmIGl0IGNoYW5nZXMK LQlub25lIG9mIHRoZSB0dXBsZSdzIGluZGV4ZWQgY29sdW1ucy4gIEl0IHdpbGwgb25seSBiZWNv bWUgYW4KLQlhY3R1YWwgSE9UIHVwZGF0ZSBpZiB3ZSBjYW4gZmluZCByb29tIG9uIHRoZSBzYW1l IHBhZ2UgZm9yCisJbm9uZSBvZiB0aGUgdHVwbGUncyBpbmRleGVkIGNvbHVtbnMgb3IgaWYgdGhl IGNoYW5nZXMgcmVtYWluCisJb3V0c2lkZSBvZiBhIHBhcnRpYWwgaW5kZXgncyBwcmVkaWNhdGUu ICBJdCB3aWxsIG9ubHkgYmVjb21lCisJYW4gYWN0dWFsIEhPVCB1cGRhdGUgaWYgd2UgY2FuIGZp bmQgcm9vbSBvbiB0aGUgc2FtZSBwYWdlIGZvcgogCXRoZSBuZXcgdHVwbGUgdmVyc2lvbi4KIAog SE9UIHVwZGF0ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBiMTJiNTgzYzRkOS4uOGI1 MjNkOWNiODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC0zMjQ0LDEzICszMjQ0LDE0 IEBAIHNpbXBsZV9oZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgdGlk KQogVE1fUmVzdWx0CiBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIg b3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAkJCUNvbW1hbmRJZCBjaWQsIFNuYXBzaG90IGNyb3Nz Y2hlY2ssIGJvb2wgd2FpdCwKLQkJCVRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVNb2Rl ICpsb2NrbW9kZSwKLQkJCVRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQorCQkJVE1f RmFpbHVyZURhdGEgKnRtZmQsIFVwZGF0ZUNvbnRleHQgKnVwZGF0ZUN4dCkKIHsKIAlUTV9SZXN1 bHQJcmVzdWx0OwogCVRyYW5zYWN0aW9uSWQgeGlkID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQo KTsKKwlMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSA9ICZ1cGRhdGVDeHQtPmxvY2ttb2RlOwogCUJp dG1hcHNldCAgKmhvdF9hdHRyczsKIAlCaXRtYXBzZXQgICpzdW1fYXR0cnM7CisJQml0bWFwc2V0 ICAqZXhwX2F0dHJzOwogCUJpdG1hcHNldCAgKmtleV9hdHRyczsKIAlCaXRtYXBzZXQgICppZF9h dHRyczsKIAlCaXRtYXBzZXQgICppbnRlcmVzdGluZ19hdHRyczsKQEAgLTMzMjcsNiArMzMyOCw4 IEBAIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBIZWFw VHVwbGUgbmV3dHVwLAogCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX0hPVF9CTE9DS0lO Ryk7CiAJc3VtX2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sCiAJ CQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCk7CisJZXhwX2F0dHJzID0g UmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sCisJCQkJCQkJCQkJICAgSU5ERVhf QVRUUl9CSVRNQVBfRVhQUkVTU0lPTik7CiAJa2V5X2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0 dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJfQklUTUFQX0tFWSk7CiAJaWRfYXR0cnMgPSBS ZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKIAkJCQkJCQkJCQkgIElOREVYX0FU VFJfQklUTUFQX0lERU5USVRZX0tFWSk7CkBAIC0zMzg4LDEwICszMzkxLDExIEBAIGhlYXBfdXBk YXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBIZWFwVHVwbGUgbmV3dHVw LAogCQl0bWZkLT5jdGlkID0gKm90aWQ7CiAJCXRtZmQtPnhtYXggPSBJbnZhbGlkVHJhbnNhY3Rp b25JZDsKIAkJdG1mZC0+Y21heCA9IEludmFsaWRDb21tYW5kSWQ7Ci0JCSp1cGRhdGVfaW5kZXhl cyA9IFRVX05vbmU7CisJCXVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyA9IFRVX05vbmU7CiAKIAkJ Ym1zX2ZyZWUoaG90X2F0dHJzKTsKIAkJYm1zX2ZyZWUoc3VtX2F0dHJzKTsKKwkJYm1zX2ZyZWUo ZXhwX2F0dHJzKTsKIAkJYm1zX2ZyZWUoa2V5X2F0dHJzKTsKIAkJYm1zX2ZyZWUoaWRfYXR0cnMp OwogCQkvKiBtb2RpZmllZF9hdHRycyBub3QgeWV0IGluaXRpYWxpemVkICovCkBAIC0zNjg5LDEw ICszNjkzLDExIEBAIGwyOgogCQkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1 cC50X3NlbGYpLCAqbG9ja21vZGUpOwogCQlpZiAodm1idWZmZXIgIT0gSW52YWxpZEJ1ZmZlcikK IAkJCVJlbGVhc2VCdWZmZXIodm1idWZmZXIpOwotCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25l OworCQl1cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMgPSBUVV9Ob25lOwogCiAJCWJtc19mcmVlKGhv dF9hdHRycyk7CiAJCWJtc19mcmVlKHN1bV9hdHRycyk7CisJCWJtc19mcmVlKGV4cF9hdHRycyk7 CiAJCWJtc19mcmVlKGtleV9hdHRycyk7CiAJCWJtc19mcmVlKGlkX2F0dHJzKTsKIAkJYm1zX2Zy ZWUobW9kaWZpZWRfYXR0cnMpOwpAQCAtNDAwOSwxMiArNDAxNCwyNCBAQCBsMjoKIAogCWlmIChu ZXdidWYgPT0gYnVmZmVyKQogCXsKKwkJUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbyA9IHVw ZGF0ZUN4dC0+cnJpOworCQlFU3RhdGUJICAgKmVzdGF0ZSA9IHVwZGF0ZUN4dC0+ZXN0YXRlOwor CQlib29sCQlleHByZXNzaW9uX2NoZWNrcyA9IFJlbGF0aW9uR2V0RXhwcmVzc2lvbkNoZWNrcyhy ZWxhdGlvbik7CisKIAkJLyoKIAkJICogU2luY2UgdGhlIG5ldyB0dXBsZSBpcyBnb2luZyBpbnRv IHRoZSBzYW1lIHBhZ2UsIHdlIG1pZ2h0IGJlIGFibGUKLQkJICogdG8gZG8gYSBIT1QgdXBkYXRl LiAgQ2hlY2sgaWYgYW55IG9mIHRoZSBpbmRleCBjb2x1bW5zIGhhdmUgYmVlbgotCQkgKiBjaGFu Z2VkLgorCQkgKiB0byBkbyBhIEhPVCB1cGRhdGUuICBBcyBhIHJlbWluZGVyLCBob3RfYXR0cnMg aW5jbHVkZXMgYXR0cmlidXRlcworCQkgKiB1c2VkIGJ5IGluZGV4ZXMgaW5jbHVkaW5nIHdpdGhp biBleHByZXNzaW9ucyBhbmQgcHJlZGljYXRlcywgYnV0CisJCSAqIG5vdCBhdHRyaWJ1dGVzIG9u bHkgdXNlZCBieSBzdW1tYXJpemluZyBpbmRleGVzLgogCQkgKi8KLQkJaWYgKCFibXNfb3Zlcmxh cChtb2RpZmllZF9hdHRycywgaG90X2F0dHJzKSkKKwkJaWYgKCFibXNfb3ZlcmxhcChtb2RpZmll ZF9hdHRycywgaG90X2F0dHJzKSB8fAorCQkJKGVzdGF0ZSAmJiByZXN1bHRSZWxJbmZvICYmIGV4 cHJlc3Npb25fY2hlY2tzICYmCisJCQkgYm1zX292ZXJsYXAobW9kaWZpZWRfYXR0cnMsIGV4cF9h dHRycykgJiYKKwkJCSAhRXhlY0V4cHJlc3Npb25JbmRleGVzVXBkYXRlZChyZXN1bHRSZWxJbmZv LAorCQkJCQkJCQkJCSAgIG1vZGlmaWVkX2F0dHJzLAorCQkJCQkJCQkJCSAgIGVzdGF0ZSwKKwkJ CQkJCQkJCQkgICByZXN1bHRSZWxJbmZvLT5yaV9vbGRUdXBsZVNsb3QsCisJCQkJCQkJCQkJICAg cmVzdWx0UmVsSW5mby0+cmlfbmV3VHVwbGVTbG90KSkpCiAJCXsKIAkJCXVzZV9ob3RfdXBkYXRl ID0gdHJ1ZTsKIApAQCAtNDE5NiwxOCArNDIxMywxOSBAQCBsMjoKIAlpZiAodXNlX2hvdF91cGRh dGUpCiAJewogCQlpZiAoc3VtbWFyaXplZF91cGRhdGUpCi0JCQkqdXBkYXRlX2luZGV4ZXMgPSBU VV9TdW1tYXJpemluZzsKKwkJCXVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyA9IFRVX1N1bW1hcml6 aW5nOwogCQllbHNlCi0JCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOworCQkJdXBkYXRlQ3h0 LT51cGRhdGVJbmRleGVzID0gVFVfTm9uZTsKIAl9CiAJZWxzZQotCQkqdXBkYXRlX2luZGV4ZXMg PSBUVV9BbGw7CisJCXVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyA9IFRVX0FsbDsKIAogCWlmIChv bGRfa2V5X3R1cGxlICE9IE5VTEwgJiYgb2xkX2tleV9jb3BpZWQpCiAJCWhlYXBfZnJlZXR1cGxl KG9sZF9rZXlfdHVwbGUpOwogCiAJYm1zX2ZyZWUoaG90X2F0dHJzKTsKIAlibXNfZnJlZShzdW1f YXR0cnMpOworCWJtc19mcmVlKGV4cF9hdHRycyk7CiAJYm1zX2ZyZWUoa2V5X2F0dHJzKTsKIAli bXNfZnJlZShpZF9hdHRycyk7CiAJYm1zX2ZyZWUobW9kaWZpZWRfYXR0cnMpOwpAQCAtNDQ4NSwx NiArNDUwMywxNSBAQCBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRpb24s CiAgKi8KIHZvaWQKIHNpbXBsZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBv aW50ZXIgb3RpZCwgSGVhcFR1cGxlIHR1cCwKLQkJCQkgICBUVV9VcGRhdGVJbmRleGVzICp1cGRh dGVfaW5kZXhlcykKKwkJCQkgICBVcGRhdGVDb250ZXh0ICp1cGRhdGVDeHQpCiB7CiAJVE1fUmVz dWx0CXJlc3VsdDsKIAlUTV9GYWlsdXJlRGF0YSB0bWZkOwotCUxvY2tUdXBsZU1vZGUgbG9ja21v ZGU7CiAKIAlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3RpZCwgdHVwLAogCQkJCQkJ IEdldEN1cnJlbnRDb21tYW5kSWQodHJ1ZSksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCSB0cnVl IC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCi0JCQkJCQkgJnRtZmQsICZsb2NrbW9kZSwgdXBkYXRl X2luZGV4ZXMpOworCQkJCQkJICZ0bWZkLCB1cGRhdGVDeHQpOwogCXN3aXRjaCAocmVzdWx0KQog CXsKIAkJY2FzZSBUTV9TZWxmTW9kaWZpZWQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X2hhbmRsZXIuYwppbmRleCAyNGQzNzY1YWEyMC4uNTRmNjI3YzViMjcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMzE2LDggKzMxNiw3IEBAIGhlYXBhbV90 dXBsZV9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIHRpZCwgQ29tbWFuZElk IGNpZCwKIHN0YXRpYyBUTV9SZXN1bHQKIGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVs YXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQlDb21t YW5kSWQgY2lkLCBTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3QgY3Jvc3NjaGVjaywKLQkJCQkJ Ym9vbCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwKLQkJCQkJTG9ja1R1cGxlTW9kZSAqbG9j a21vZGUsIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQorCQkJCQlib29sIHdhaXQs IFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBVcGRhdGVDb250ZXh0ICp1cGRhdGVDeHQpCiB7CiAJYm9v bAkJc2hvdWxkRnJlZSA9IHRydWU7CiAJSGVhcFR1cGxlCXR1cGxlID0gRXhlY0ZldGNoU2xvdEhl YXBUdXBsZShzbG90LCB0cnVlLCAmc2hvdWxkRnJlZSk7CkBAIC0zMjgsNyArMzI3LDcgQEAgaGVh cGFtX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgb3RpZCwgVHVw bGVUYWJsZVNsb3QgKnNsb3QsCiAJdHVwbGUtPnRfdGFibGVPaWQgPSBzbG90LT50dHNfdGFibGVP aWQ7CiAKIAlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3RpZCwgdHVwbGUsIGNpZCwg Y3Jvc3NjaGVjaywgd2FpdCwKLQkJCQkJCSB0bWZkLCBsb2NrbW9kZSwgdXBkYXRlX2luZGV4ZXMp OworCQkJCQkJIHRtZmQsIHVwZGF0ZUN4dCk7CiAJSXRlbVBvaW50ZXJDb3B5KCZ0dXBsZS0+dF9z ZWxmLCAmc2xvdC0+dHRzX3RpZCk7CiAKIAkvKgpAQCAtMzQzLDE0ICszNDIsMTQgQEAgaGVhcGFt X3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgb3RpZCwgVHVwbGVU YWJsZVNsb3QgKnNsb3QsCiAJICovCiAJaWYgKHJlc3VsdCAhPSBUTV9PaykKIAl7Ci0JCUFzc2Vy dCgqdXBkYXRlX2luZGV4ZXMgPT0gVFVfTm9uZSk7Ci0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05v bmU7CisJCUFzc2VydCh1cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMgPT0gVFVfTm9uZSk7CisJCXVw ZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyA9IFRVX05vbmU7CiAJfQogCWVsc2UgaWYgKCFIZWFwVHVw bGVJc0hlYXBPbmx5KHR1cGxlKSkKLQkJQXNzZXJ0KCp1cGRhdGVfaW5kZXhlcyA9PSBUVV9BbGwp OworCQlBc3NlcnQodXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzID09IFRVX0FsbCk7CiAJZWxzZQot CQlBc3NlcnQoKCp1cGRhdGVfaW5kZXhlcyA9PSBUVV9TdW1tYXJpemluZykgfHwKLQkJCSAgICgq dXBkYXRlX2luZGV4ZXMgPT0gVFVfTm9uZSkpOworCQlBc3NlcnQoKHVwZGF0ZUN4dC0+dXBkYXRl SW5kZXhlcyA9PSBUVV9TdW1tYXJpemluZykgfHwKKwkJCSAgICh1cGRhdGVDeHQtPnVwZGF0ZUlu ZGV4ZXMgPT0gVFVfTm9uZSkpOwogCiAJaWYgKHNob3VsZEZyZWUpCiAJCXBmcmVlKHR1cGxlKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCmluZGV4IGE1NmM1ZWNlYjE0Li4xZWVlZWJhZGMw OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCkBAIC0zMzYsMTcgKzMzNiwxNiBAQCB2 b2lkCiBzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIg b3RpZCwKIAkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkgIFNuYXBzaG90IHNu YXBzaG90LAotCQkJCQkJICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkJ CSAgVXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0KQogewogCVRNX1Jlc3VsdAlyZXN1bHQ7CiAJVE1f RmFpbHVyZURhdGEgdG1mZDsKLQlMb2NrVHVwbGVNb2RlIGxvY2ttb2RlOwogCiAJcmVzdWx0ID0g dGFibGVfdHVwbGVfdXBkYXRlKHJlbCwgb3RpZCwgc2xvdCwKIAkJCQkJCQkJR2V0Q3VycmVudENv bW1hbmRJZCh0cnVlKSwKIAkJCQkJCQkJc25hcHNob3QsIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJ CQkJdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAotCQkJCQkJCQkmdG1mZCwgJmxvY2ttb2Rl LCB1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCSZ0bWZkLCB1cGRhdGVDeHQpOwogCiAJc3dpdGNo IChyZXN1bHQpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDczOWE5MmJkY2MxLi5iOGM5ZmY4OWIz YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMjcwNyw2ICsyNzA3LDUzIEBAIEJ1aWxkU3BlY3VsYXRp dmVJbmRleEluZm8oUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaWkpCiAJfQogfQogCisvKiAt LS0tLS0tLS0tLS0tLS0tCisgKgkJQnVpbGRFeHByZXNzaW9uSW5kZXhJbmZvCisgKgkJCUFkZCBl eHRyYSBzdGF0ZSB0byBJbmRleEluZm8gcmVjb3JkCisgKgorICogRm9yIGV4cHJlc3Npb24gaW5k ZXhlcyB1cGRhdGVzIG1heSBub3QgY2hhbmdlIHRoZSBpbmRleGVkIHZhbHVlIGFsbG93aW5nCisg KiBmb3IgYSBIT1QgdXBkYXRlLiAgQWRkIGluZm9ybWF0aW9uIHRvIHRoZSBJbmRleEluZm8gdG8g YWxsb3cgZm9yIGNoZWNraW5nCisgKiBpZiB0aGUgaW5kZXhlZCB2YWx1ZSBoYXMgY2hhbmdlZC4K KyAqCisgKiBEbyB0aGlzIHByb2Nlc3NpbmcgaGVyZSByYXRoZXIgdGhhbiBpbiBCdWlsZEluZGV4 SW5mbygpIHRvIG5vdCBpbmN1ciB0aGUKKyAqIG92ZXJoZWFkIGluIHRoZSBjb21tb24gbm9uLWV4 cHJlc3Npb24gY2FzZXMuCisgKiAtLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK0J1aWxkRXhw cmVzc2lvbkluZGV4SW5mbyhSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppaSkKK3sKKwlpbnQJ CQlpOworCWludAkJCWluZG5rZXlhdHRzOworCUZvcm1fcGdfaW5kZXggaW5kZXhTdHJ1Y3QgPSBp bmRleC0+cmRfaW5kZXg7CisKKwlpbmRua2V5YXR0cyA9IEluZGV4UmVsYXRpb25HZXROdW1iZXJP ZktleUF0dHJpYnV0ZXMoaW5kZXgpOworCisJLyoKKwkgKiBDb2xsZWN0IGF0dHJpYnV0ZXMgdXNl ZCBieSB0aGUgaW5kZXgsIHRoZWlyIGxlbiBhbmQgaWYgdGhleSBhcmUgYnkKKwkgKiB2YWx1ZS4K KwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgaW5kbmtleWF0dHM7IGkrKykKKwl7CisJCUNvbXBhY3RB dHRyaWJ1dGUgKmF0dHIgPSBUdXBsZURlc2NDb21wYWN0QXR0cihSZWxhdGlvbkdldERlc2NyKGlu ZGV4KSwgaSk7CisKKwkJaWktPmlpX0luZGV4QXR0cnMgPQorCQkJYm1zX2FkZF9tZW1iZXIoaWkt PmlpX0luZGV4QXR0cnMsCisJCQkJCQkgICBpaS0+aWlfSW5kZXhBdHRyTnVtYmVyc1tpXSAtIEZp cnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCisJCWlpLT5paV9JbmRleEF0dHJM ZW5baV0gPSBhdHRyLT5hdHRsZW47CisJCWlmIChhdHRyLT5hdHRieXZhbCkKKwkJCWlpLT5paV9J bmRleEF0dHJCeVZhbCA9IGJtc19hZGRfbWVtYmVyKGlpLT5paV9JbmRleEF0dHJCeVZhbCwgaSk7 CisJfQorCisJLyogY29sbGVjdCBhdHRyaWJ1dGVzIHVzZWQgaW4gdGhlIGV4cHJlc3Npb24gKi8K KwlpZiAoaWktPmlpX0V4cHJlc3Npb25zKQorCQlwdWxsX3ZhcmF0dG5vcygoTm9kZSAqKSBpaS0+ aWlfRXhwcmVzc2lvbnMsIDEsICZpaS0+aWlfRXhwcmVzc2lvbkF0dHJzKTsKKworCS8qIGNvbGxl Y3QgYXR0cmlidXRlcyB1c2VkIGluIHRoZSBwcmVkaWNhdGUgKi8KKwlpZiAoaWktPmlpX1ByZWRp Y2F0ZSkKKwkJcHVsbF92YXJhdHRub3MoKE5vZGUgKikgaWktPmlpX1ByZWRpY2F0ZSwgMSwgJmlp LT5paV9QcmVkaWNhdGVBdHRycyk7Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlGb3Jt SW5kZXhEYXR1bQogICoJCQlDb25zdHJ1Y3QgdmFsdWVzW10gYW5kIGlzbnVsbFtdIGFycmF5cyBm b3IgYSBuZXcgaW5kZXggdHVwbGUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4aW5nLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4aW5nLmMKaW5kZXggMjVjNGI2YmRj ODcuLjkxYTZiNDU1YjE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4aW5n LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleGluZy5jCkBAIC0zMTMsMTUgKzMxMywx NyBAQCB2b2lkCiBDYXRhbG9nVHVwbGVVcGRhdGUoUmVsYXRpb24gaGVhcFJlbCwgSXRlbVBvaW50 ZXIgb3RpZCwgSGVhcFR1cGxlIHR1cCkKIHsKIAlDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZTsK LQlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZUluZGV4ZXMgPSBUVV9BbGw7CisJVXBkYXRlQ29udGV4 dCB1cGRhdGVDeHQgPSB7MH07CisKKwl1cGRhdGVDeHQudXBkYXRlSW5kZXhlcyA9IFRVX0FsbDsK IAogCUNhdGFsb2dUdXBsZUNoZWNrQ29uc3RyYWludHMoaGVhcFJlbCwgdHVwKTsKIAogCWluZHN0 YXRlID0gQ2F0YWxvZ09wZW5JbmRleGVzKGhlYXBSZWwpOwogCi0Jc2ltcGxlX2hlYXBfdXBkYXRl KGhlYXBSZWwsIG90aWQsIHR1cCwgJnVwZGF0ZUluZGV4ZXMpOworCXNpbXBsZV9oZWFwX3VwZGF0 ZShoZWFwUmVsLCBvdGlkLCB0dXAsICZ1cGRhdGVDeHQpOwogCi0JQ2F0YWxvZ0luZGV4SW5zZXJ0 KGluZHN0YXRlLCB0dXAsIHVwZGF0ZUluZGV4ZXMpOworCUNhdGFsb2dJbmRleEluc2VydChpbmRz dGF0ZSwgdHVwLCB1cGRhdGVDeHQudXBkYXRlSW5kZXhlcyk7CiAJQ2F0YWxvZ0Nsb3NlSW5kZXhl cyhpbmRzdGF0ZSk7CiB9CiAKQEAgLTMzNywxMyArMzM5LDE1IEBAIHZvaWQKIENhdGFsb2dUdXBs ZVVwZGF0ZVdpdGhJbmZvKFJlbGF0aW9uIGhlYXBSZWwsIEl0ZW1Qb2ludGVyIG90aWQsIEhlYXBU dXBsZSB0dXAsCiAJCQkJCQkgICBDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZSkKIHsKLQlUVV9V cGRhdGVJbmRleGVzIHVwZGF0ZUluZGV4ZXMgPSBUVV9BbGw7CisJVXBkYXRlQ29udGV4dCB1cGRh dGVDeHQgPSB7MH07CisKKwl1cGRhdGVDeHQudXBkYXRlSW5kZXhlcyA9IFRVX0FsbDsKIAogCUNh dGFsb2dUdXBsZUNoZWNrQ29uc3RyYWludHMoaGVhcFJlbCwgdHVwKTsKIAotCXNpbXBsZV9oZWFw X3VwZGF0ZShoZWFwUmVsLCBvdGlkLCB0dXAsICZ1cGRhdGVJbmRleGVzKTsKKwlzaW1wbGVfaGVh cF91cGRhdGUoaGVhcFJlbCwgb3RpZCwgdHVwLCAmdXBkYXRlQ3h0KTsKIAotCUNhdGFsb2dJbmRl eEluc2VydChpbmRzdGF0ZSwgdHVwLCB1cGRhdGVJbmRleGVzKTsKKwlDYXRhbG9nSW5kZXhJbnNl cnQoaW5kc3RhdGUsIHR1cCwgdXBkYXRlQ3h0LnVwZGF0ZUluZGV4ZXMpOwogfQogCiAvKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRleCBlM2ZlOWI3OGJiNS4uNDI5ZTA4Zjc1OWMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBAIC0xMTMsMTAgKzExMywxMyBAQAog I2luY2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5o IgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUgIm9wdGltaXplci9vcHRp bWl6ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9tdWx0 aXJhbmdldHlwZXMuaCIKICNpbmNsdWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAi dXRpbHMvc25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCisjaW5jbHVkZSAidXRp bHMvbHN5c2NhY2hlLmgiCiAKIC8qIHdhaXRNb2RlIGFyZ3VtZW50IHRvIGNoZWNrX2V4Y2x1c2lv bl9vcl91bmlxdWVfY29uc3RyYWludCgpICovCiB0eXBlZGVmIGVudW0KQEAgLTIyMSw2ICsyMjQs MTMgQEAgRXhlY09wZW5JbmRpY2VzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sIGJvb2wg c3BlY3VsYXRpdmUpCiAJCWlmIChzcGVjdWxhdGl2ZSAmJiBpaS0+aWlfVW5pcXVlICYmICFpbmRl eERlc2MtPnJkX2luZGV4LT5pbmRpc2V4Y2x1c2lvbikKIAkJCUJ1aWxkU3BlY3VsYXRpdmVJbmRl eEluZm8oaW5kZXhEZXNjLCBpaSk7CiAKKwkJLyoKKwkJICogSWYgdGhlIGluZGV4IHVzZXMgZXhw cmVzc2lvbnMgdGhlbiBsZXQncyBwb3B1bGF0ZSB0aGUgYWRkaXRpb25hbAorCQkgKiBpbmZvcm1h dGlvbiBuZXNzYWFyeSB0byBldmFsdWF0ZSB0aGVtIGZvciBjaGFuZ2VzIGR1cmluZyB1cGRhdGVz LgorCQkgKi8KKwkJaWYgKGlpLT5paV9FeHByZXNzaW9ucyB8fCBpaS0+aWlfUHJlZGljYXRlKQor CQkJQnVpbGRFeHByZXNzaW9uSW5kZXhJbmZvKGluZGV4RGVzYywgaWkpOworCiAJCXJlbGF0aW9u RGVzY3NbaV0gPSBpbmRleERlc2M7CiAJCWluZGV4SW5mb0FycmF5W2ldID0gaWk7CiAJCWkrKzsK QEAgLTM4MywxOSArMzkzLDMzIEBAIEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLAogCQkJRXhwclN0YXRlICAqcHJlZGljYXRlOwogCiAJCQkvKgotCQkJ ICogSWYgcHJlZGljYXRlIHN0YXRlIG5vdCBzZXQgdXAgeWV0LCBjcmVhdGUgaXQgKGluIHRoZSBl c3RhdGUncwotCQkJICogcGVyLXF1ZXJ5IGNvbnRleHQpCisJCQkgKiBJdCBpcyBwb3NzaWJsZSB0 aGF0IHdlJ3ZlIGFscmVhZHkgY2hlY2tlZCB0aGUgcHJlZGljYXRlLCBpZiBzbworCQkJICogdGhl biBhdm9pZCB0aGUgZHVwbGljYXRlIHdvcmsuCiAJCQkgKi8KLQkJCXByZWRpY2F0ZSA9IGluZGV4 SW5mby0+aWlfUHJlZGljYXRlU3RhdGU7Ci0JCQlpZiAocHJlZGljYXRlID09IE5VTEwpCisJCQlp ZiAoaW5kZXhJbmZvLT5paV9DaGVja2VkUHJlZGljYXRlKQogCQkJewotCQkJCXByZWRpY2F0ZSA9 IEV4ZWNQcmVwYXJlUXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0YXRlKTsKLQkJCQlp bmRleEluZm8tPmlpX1ByZWRpY2F0ZVN0YXRlID0gcHJlZGljYXRlOworCQkJCS8qIFNraXAgdGhp cyBpbmRleC11cGRhdGUgaWYgdGhlIHByZWRpY2F0ZSBpc24ndCBzYXRpc2ZpZWQgKi8KKwkJCQlp ZiAoIWluZGV4SW5mby0+aWlfUHJlZGljYXRlU2F0aXNmaWVkKQorCQkJCQljb250aW51ZTsKIAkJ CX0KKwkJCWVsc2UKKwkJCXsKIAotCQkJLyogU2tpcCB0aGlzIGluZGV4LXVwZGF0ZSBpZiB0aGUg cHJlZGljYXRlIGlzbid0IHNhdGlzZmllZCAqLwotCQkJaWYgKCFFeGVjUXVhbChwcmVkaWNhdGUs IGVjb250ZXh0KSkKLQkJCQljb250aW51ZTsKKwkJCQkvKgorCQkJCSAqIElmIHByZWRpY2F0ZSBz dGF0ZSBub3Qgc2V0IHVwIHlldCwgY3JlYXRlIGl0IChpbiB0aGUKKwkJCQkgKiBlc3RhdGUncyBw ZXItcXVlcnkgY29udGV4dCkKKwkJCQkgKi8KKwkJCQlwcmVkaWNhdGUgPSBpbmRleEluZm8tPmlp X1ByZWRpY2F0ZVN0YXRlOworCQkJCWlmIChwcmVkaWNhdGUgPT0gTlVMTCkKKwkJCQl7CisJCQkJ CXByZWRpY2F0ZSA9IEV4ZWNQcmVwYXJlUXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0 YXRlKTsKKwkJCQkJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVTdGF0ZSA9IHByZWRpY2F0ZTsKKwkJ CQl9CisKKwkJCQkvKiBTa2lwIHRoaXMgaW5kZXgtdXBkYXRlIGlmIHRoZSBwcmVkaWNhdGUgaXNu J3Qgc2F0aXNmaWVkICovCisJCQkJaWYgKCFFeGVjUXVhbChwcmVkaWNhdGUsIGVjb250ZXh0KSkK KwkJCQkJY29udGludWU7CisJCQl9CiAJCX0KIAogCQkvKgpAQCAtMTA5Niw2ICsxMTIwLDkgQEAg aW5kZXhfdW5jaGFuZ2VkX2J5X3VwZGF0ZShSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLCBF U3RhdGUgKmVzdGF0ZSwKIAogCWlmIChoYXNleHByZXNzaW9uKQogCXsKKwkJaWYgKGluZGV4SW5m by0+aWlfSW5kZXhVbmNoYW5nZWQpCisJCQlyZXR1cm4gdHJ1ZTsKKwogCQlpbmRleEluZm8tPmlp X0luZGV4VW5jaGFuZ2VkID0gZmFsc2U7CiAJCXJldHVybiBmYWxzZTsKIAl9CkBAIC0xMTczLDMg KzEyMDAsMTUwIEBAIEV4ZWNXaXRob3V0T3ZlcmxhcHNOb3RFbXB0eShSZWxhdGlvbiByZWwsIE5h bWVEYXRhIGF0dG5hbWUsIERhdHVtIGF0dHZhbCwgY2hhciB0CiAJCQkJIGVycm1zZygiZW1wdHkg V0lUSE9VVCBPVkVSTEFQUyB2YWx1ZSBmb3VuZCBpbiBjb2x1bW4gXCIlc1wiIGluIHJlbGF0aW9u IFwiJXNcIiIsCiAJCQkJCQlOYW1lU3RyKGF0dG5hbWUpLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZWwpKSkpOwogfQorCisvKgorICogRGV0ZXJtaW5lIGlmIGluZGV4ZXMgdGhhdCBoYXZlIGV4 cHJlc3Npb25zIG9yIHByZWRpY2F0ZXMgcmVxdWlyZSB1cGRhdGVzCisgKiBmb3IgdGhlIHB1cnBv c2VzIG9mIGFsbG93aW5nIEhPVCB1cGRhdGVzLiAgUmV0dXJucyBmYWxzZSBpZmYgYWxsIGluZGV4 ZWQKKyAqIHZhbHVlcyBhcmUgdW5jaGFuZ2VkLgorICovCitib29sCitFeGVjRXhwcmVzc2lvbklu ZGV4ZXNVcGRhdGVkKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCisJCQkJCQkJIEJpdG1h cHNldCAqbW9kaWZpZWRBdHRycywKKwkJCQkJCQkgRVN0YXRlICplc3RhdGUsCisJCQkJCQkJIFR1 cGxlVGFibGVTbG90ICpvbGRfdHRzLAorCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqbmV3X3R0cykK K3sKKwlib29sCQlyZXN1bHQgPSBmYWxzZTsKKwlJbmRleEluZm8gICppbmRleEluZm87CisJRXhw ckNvbnRleHQgKmVjb250ZXh0ID0gTlVMTDsKKworCWlmIChvbGRfdHRzID09IE5VTEwgfHwgbmV3 X3R0cyA9PSBOVUxMKQorCQlyZXR1cm4gdHJ1ZTsKKworCWVjb250ZXh0ID0gR2V0UGVyVHVwbGVF eHByQ29udGV4dChlc3RhdGUpOworCisJLyoKKwkgKiBFeGFtaW5lIGVhY2ggaW5kZXggb24gdGhp cyByZWxhdGlvbiByZWxhdGl2ZSB0byB0aGUgY2hhbmdlcyBiZXR3ZWVuIG9sZAorCSAqIGFuZCBu ZXcgdHVwbGVzLgorCSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0UmVsSW5mby0+cmlf TnVtSW5kaWNlczsgaSsrKQorCXsKKwkJaW5kZXhJbmZvID0gcmVzdWx0UmVsSW5mby0+cmlfSW5k ZXhSZWxhdGlvbkluZm9baV07CisKKwkJLyoKKwkJICogSWYgdGhpcyBpcyBhIHBhcnRpYWwgaW5k ZXggaXQgaGFzIGEgcHJlZGljYXRlLCBldmFsdWF0ZSB0aGUKKwkJICogZXhwcmVzc2lvbiB0byBk ZXRlcm1pbmUgaWYgd2UgbmVlZCB0byBpbmNsdWRlIGl0IG9yIG5vdC4KKwkJICovCisJCWlmIChi bXNfb3ZlcmxhcChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZUF0dHJzLCBtb2RpZmllZEF0dHJzKSkK KwkJeworCQkJRXhwclN0YXRlICAqcHN0YXRlOworCQkJYm9vbAkJb2xkX3R1cGxlX3F1YWxpZmll cywKKwkJCQkJCW5ld190dXBsZV9xdWFsaWZpZXM7CisKKwkJCXBzdGF0ZSA9IEV4ZWNQcmVwYXJl UXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0YXRlKTsKKworCQkJLyoKKwkJCSAqIEhl cmUgdGhlIHRlcm0gInF1YWxpZmllcyIgbWVhbnMgInNhdGlzZmllcyB0aGUgcHJlZGljYXRlCisJ CQkgKiBjb25kaXRpb24gb2YgdGhlIHBhcnRpYWwgaW5kZXgiLgorCQkJICovCisJCQllY29udGV4 dC0+ZWN4dF9zY2FudHVwbGUgPSBvbGRfdHRzOworCQkJb2xkX3R1cGxlX3F1YWxpZmllcyA9IEV4 ZWNRdWFsKHBzdGF0ZSwgZWNvbnRleHQpOworCisJCQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUg PSBuZXdfdHRzOworCQkJbmV3X3R1cGxlX3F1YWxpZmllcyA9IEV4ZWNRdWFsKHBzdGF0ZSwgZWNv bnRleHQpOworCQkJaW5kZXhJbmZvLT5paV9DaGVja2VkUHJlZGljYXRlID0gdHJ1ZTsKKwkJCWlu ZGV4SW5mby0+aWlfUHJlZGljYXRlU2F0aXNmaWVkID0gbmV3X3R1cGxlX3F1YWxpZmllczsKKwor CQkJLyoKKwkJCSAqIElmIG5laXRoZXIgdGhlIG9sZCBub3IgdGhlIG5ldyB0dXBsZXMgc2F0aXNm eSB0aGUgcHJlZGljYXRlIHdlCisJCQkgKiBjYW4gYmUgc3VyZSB0aGF0IHRoaXMgaW5kZXggZG9l c24ndCBuZWVkIHVwZGF0aW5nLCBjb250aW51ZSB0bworCQkJICogdGhlIG5leHQgaW5kZXguCisJ CQkgKi8KKwkJCWlmICgobmV3X3R1cGxlX3F1YWxpZmllcyA9PSBmYWxzZSkgJiYgKG9sZF90dXBs ZV9xdWFsaWZpZXMgPT0gZmFsc2UpKQorCQkJCWNvbnRpbnVlOworCisJCQkvKgorCQkJICogSWYg dGhlcmUgaXMgYSB0cmFuc2l0aW9uIGJldHdlZW4gaW5kZXhlZCBhbmQgbm90IGluZGV4ZWQsCisJ CQkgKiB0aGF0J3MgZW5vdWdoIHRvIHJlcXVpcmUgdGhhdCB0aGlzIGluZGV4IGlzIHVwZGF0ZWQu IElmIGFueQorCQkJICogc2luZ2xlIG5vbi1zdW1tYXJpemluZyBpbmRleCByZXF1aXJlcyB1cGRh dGVzIHRoZW4gdGhleSBhbGwKKwkJCSAqIHNob3VsZCBiZSB1cGRhdGVkLgorCQkJICovCisJCQlp ZiAobmV3X3R1cGxlX3F1YWxpZmllcyAhPSBvbGRfdHVwbGVfcXVhbGlmaWVzKQorCQkJeworCQkJ CXJlc3VsdCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCS8qCisJCQkgKiBPdGhlcndp c2UgdGhlIG9sZCBhbmQgbmV3IHZhbHVlcyBleGlzdCBpbiB0aGUgaW5kZXgsIGJ1dCBkaWQKKwkJ CSAqIHRoZXkgZ2V0IHVwZGF0ZWQ/ICBXZSBkb24ndCB5ZXQga25vdywgc28gcHJvY2VlZCB3aXRo IHRoZSBuZXh0CisJCQkgKiBzdGF0ZW1lbnQgaW4gdGhlIGxvb3AgdG8gZmluZCBvdXQuCisJCQkg Ki8KKwkJfQorCisJCS8qCisJCSAqIEluZGV4ZXMgd2l0aCBleHByZXNzaW9ucyBtYXkgb3IgbWF5 IG5vdCBoYXZlIGNoYW5nZWQsIGl0IGlzCisJCSAqIGltcG9zc2libGUgdG8ga25vdyB3aXRob3V0 IGV4ZXJjaXNpbmcgdGhlaXIgZXhwcmVzc2lvbiBhbmQKKwkJICogcmV2aWV3aW5nIGluZGV4IHR1 cGxlIHN0YXRlIGZvciBjaGFuZ2VzLiAgVGhpcyBpcyBhIGxvdCBvZiB3b3JrLAorCQkgKiBidXQg YmVjYXVzZSBhbGwgaW5kZXhlcyBvbiBKU09OQiBjb2x1bW5zIGZhbGwgaW50byB0aGlzIGNhdGVn b3J5IGl0CisJCSAqIGNhbiBiZSB3b3J0aCBpdCB0byBhdm9pZCBpbmRleCB1cGRhdGVzIGFuZCBy ZW1haW4gb24gdGhlIEhPVCB1cGRhdGUKKwkJICogcGF0aCB3aGVuIHBvc3NpYmxlLgorCQkgKi8K KwkJaWYgKGJtc19vdmVybGFwKGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbkF0dHJzLCBtb2RpZmll ZEF0dHJzKSkKKwkJeworCQkJVHVwbGVUYWJsZVNsb3QgKnNhdmVfc2NhbnR1cGxlOworCQkJRGF0 dW0JCW9sZF92YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOworCQkJYm9vbAkJb2xkX2lzbnVsbFtJTkRF WF9NQVhfS0VZU107CisJCQlEYXR1bQkJbmV3X3ZhbHVlc1tJTkRFWF9NQVhfS0VZU107CisJCQli b29sCQluZXdfaXNudWxsW0lOREVYX01BWF9LRVlTXTsKKwkJCWJvb2wJCWNoYW5nZWQgPSBmYWxz ZTsKKworCQkJc2F2ZV9zY2FudHVwbGUgPSBlY29udGV4dC0+ZWN4dF9zY2FudHVwbGU7CisJCQll Y29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBvbGRfdHRzOworCQkJRm9ybUluZGV4RGF0dW0oaW5k ZXhJbmZvLAorCQkJCQkJICAgb2xkX3R0cywKKwkJCQkJCSAgIGVzdGF0ZSwKKwkJCQkJCSAgIG9s ZF92YWx1ZXMsCisJCQkJCQkgICBvbGRfaXNudWxsKTsKKwkJCWVjb250ZXh0LT5lY3h0X3NjYW50 dXBsZSA9IG5ld190dHM7CisJCQlGb3JtSW5kZXhEYXR1bShpbmRleEluZm8sCisJCQkJCQkgICBu ZXdfdHRzLAorCQkJCQkJICAgZXN0YXRlLAorCQkJCQkJICAgbmV3X3ZhbHVlcywKKwkJCQkJCSAg IG5ld19pc251bGwpOworCQkJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc2F2ZV9zY2FudHVw bGU7CisKKwkJCWZvciAoaW50IGogPSAwOyBqIDwgaW5kZXhJbmZvLT5paV9OdW1JbmRleEtleUF0 dHJzOyBqKyspCisJCQl7CisJCQkJaWYgKG9sZF9pc251bGxbal0gIT0gbmV3X2lzbnVsbFtqXSkK KwkJCQl7CisJCQkJCWNoYW5nZWQgPSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9CisJCQkJZWxz ZSBpZiAoIW9sZF9pc251bGxbal0pCisJCQkJeworCQkJCQlpbnQxNgkJZWxtbGVuID0gaW5kZXhJ bmZvLT5paV9JbmRleEF0dHJMZW5bal07CisJCQkJCWJvb2wJCWVsbWJ5dmFsID0gYm1zX2lzX21l bWJlcihqLCBpbmRleEluZm8tPmlpX0luZGV4QXR0ckJ5VmFsKTsKKworCQkJCQlpZiAoIWRhdHVt X2ltYWdlX2VxKG9sZF92YWx1ZXNbal0sIG5ld192YWx1ZXNbal0sCisJCQkJCQkJCQkJZWxtYnl2 YWwsIGVsbWxlbikpCisJCQkJCXsKKwkJCQkJCWNoYW5nZWQgPSB0cnVlOworCQkJCQkJYnJlYWs7 CisJCQkJCX0KKwkJCQl9CisJCQl9CisKKwkJCWluZGV4SW5mby0+aWlfQ2hlY2tlZFVuY2hhbmdl ZCA9IHRydWU7CisJCQlpbmRleEluZm8tPmlpX0luZGV4VW5jaGFuZ2VkID0gIWNoYW5nZWQ7CisK KwkJCWlmIChjaGFuZ2VkKQorCQkJeworCQkJCXJlc3VsdCA9IHRydWU7CisJCQkJYnJlYWs7CisJ CQl9CisJCX0KKwl9CisKKwlyZXR1cm4gcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UmVwbGljYXRpb24uYwppbmRleCBlZGU4OWVhM2NmOS4uYzEzZmI2YmVmZDUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCkBAIC02NDcsNyArNjQ3LDcgQEAgRXhlY1NpbXBs ZVJlbGF0aW9uVXBkYXRlKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJaWYgKCFza2lw X3R1cGxlKQogCXsKIAkJTGlzdAkgICAqcmVjaGVja0luZGV4ZXMgPSBOSUw7Ci0JCVRVX1VwZGF0 ZUluZGV4ZXMgdXBkYXRlX2luZGV4ZXM7CisJCVVwZGF0ZUNvbnRleHQgdXBkYXRlQ3h0ID0gezB9 OwogCQlMaXN0CSAgICpjb25mbGljdGluZGV4ZXM7CiAJCWJvb2wJCWNvbmZsaWN0ID0gZmFsc2U7 CiAKQEAgLTY2MywxNyArNjYzLDE5IEBAIEV4ZWNTaW1wbGVSZWxhdGlvblVwZGF0ZShSZXN1bHRS ZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQlpZiAocmVsLT5yZF9yZWwtPnJlbGlzcGFydGl0aW9u KQogCQkJRXhlY1BhcnRpdGlvbkNoZWNrKHJlc3VsdFJlbEluZm8sIHNsb3QsIGVzdGF0ZSwgdHJ1 ZSk7CiAKKwkJdXBkYXRlQ3h0LmVzdGF0ZSA9IGVzdGF0ZTsKKwkJdXBkYXRlQ3h0LnJyaSA9IHJl c3VsdFJlbEluZm87CiAJCXNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUocmVsLCB0aWQsIHNsb3Qs IGVzdGF0ZS0+ZXNfc25hcHNob3QsCi0JCQkJCQkJCSAgJnVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJ CQkJICAmdXBkYXRlQ3h0KTsKIAogCQljb25mbGljdGluZGV4ZXMgPSByZXN1bHRSZWxJbmZvLT5y aV9vbkNvbmZsaWN0QXJiaXRlckluZGV4ZXM7CiAKLQkJaWYgKHJlc3VsdFJlbEluZm8tPnJpX051 bUluZGljZXMgPiAwICYmICh1cGRhdGVfaW5kZXhlcyAhPSBUVV9Ob25lKSkKKwkJaWYgKHJlc3Vs dFJlbEluZm8tPnJpX051bUluZGljZXMgPiAwICYmICh1cGRhdGVDeHQudXBkYXRlSW5kZXhlcyAh PSBUVV9Ob25lKSkKIAkJCXJlY2hlY2tJbmRleGVzID0gRXhlY0luc2VydEluZGV4VHVwbGVzKHJl c3VsdFJlbEluZm8sCiAJCQkJCQkJCQkJCQkgICBzbG90LCBlc3RhdGUsIHRydWUsCiAJCQkJCQkJ CQkJCQkgICBjb25mbGljdGluZGV4ZXMgPyB0cnVlIDogZmFsc2UsCiAJCQkJCQkJCQkJCQkgICAm Y29uZmxpY3QsIGNvbmZsaWN0aW5kZXhlcywKLQkJCQkJCQkJCQkJCSAgICh1cGRhdGVfaW5kZXhl cyA9PSBUVV9TdW1tYXJpemluZykpOworCQkJCQkJCQkJCQkJICAgKHVwZGF0ZUN4dC51cGRhdGVJ bmRleGVzID09IFRVX1N1bW1hcml6aW5nKSk7CiAKIAkJLyoKIAkJICogUmVmZXIgdG8gdGhlIGNv bW1lbnRzIGFib3ZlIHRoZSBjYWxsIHRvIENoZWNrQW5kUmVwb3J0Q29uZmxpY3QoKSBpbgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCA4N2M4MjAyNzZhOC4uODY1MGMy YmUwOTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC0xMTUsMjEg KzExNSw2IEBAIHR5cGVkZWYgc3RydWN0IE1vZGlmeVRhYmxlQ29udGV4dAogCVR1cGxlVGFibGVT bG90ICpjcFVwZGF0ZVJldHVybmluZ1Nsb3Q7CiB9IE1vZGlmeVRhYmxlQ29udGV4dDsKIAotLyoK LSAqIENvbnRleHQgc3RydWN0IGNvbnRhaW5pbmcgb3V0cHV0IGRhdGEgc3BlY2lmaWMgdG8gVVBE QVRFIG9wZXJhdGlvbnMuCi0gKi8KLXR5cGVkZWYgc3RydWN0IFVwZGF0ZUNvbnRleHQKLXsKLQli b29sCQljcm9zc1BhcnRVcGRhdGU7CS8qIHdhcyBpdCBhIGNyb3NzLXBhcnRpdGlvbiB1cGRhdGU/ ICovCi0JVFVfVXBkYXRlSW5kZXhlcyB1cGRhdGVJbmRleGVzOyAvKiBXaGljaCBpbmRleCB1cGRh dGVzIGFyZSByZXF1aXJlZD8gKi8KLQotCS8qCi0JICogTG9jayBtb2RlIHRvIGFjcXVpcmUgb24g dGhlIGxhdGVzdCB0dXBsZSB2ZXJzaW9uIGJlZm9yZSBwZXJmb3JtaW5nCi0JICogRXZhbFBsYW5R dWFsIG9uIGl0Ci0JICovCi0JTG9ja1R1cGxlTW9kZSBsb2NrbW9kZTsKLX0gVXBkYXRlQ29udGV4 dDsKLQogCiBzdGF0aWMgdm9pZCBFeGVjQmF0Y2hJbnNlcnQoTW9kaWZ5VGFibGVTdGF0ZSAqbXRz dGF0ZSwKIAkJCQkJCQlSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLApAQCAtMjI4Miw4ICsy MjY3LDcgQEAgbHJlcGxhY2U6CiAJCQkJCQkJCWVzdGF0ZS0+ZXNfc25hcHNob3QsCiAJCQkJCQkJ CWVzdGF0ZS0+ZXNfY3Jvc3NjaGVja19zbmFwc2hvdCwKIAkJCQkJCQkJdHJ1ZSAvKiB3YWl0IGZv ciBjb21taXQgKi8gLAotCQkJCQkJCQkmY29udGV4dC0+dG1mZCwgJnVwZGF0ZUN4dC0+bG9ja21v ZGUsCi0JCQkJCQkJCSZ1cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMpOworCQkJCQkJCQkmY29udGV4 dC0+dG1mZCwgdXBkYXRlQ3h0KTsKIAogCXJldHVybiByZXN1bHQ7CiB9CkBAIC0yMzAxLDYgKzIy ODUsNyBAQCBFeGVjVXBkYXRlRXBpbG9ndWUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBV cGRhdGVDb250ZXh0ICp1cGRhdGVDeHQsCiB7CiAJTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSA9 IGNvbnRleHQtPm10c3RhdGU7CiAJTGlzdAkgICAqcmVjaGVja0luZGV4ZXMgPSBOSUw7CisJYm9v bAkJb25seVN1bW1hcml6aW5nID0gdXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzID09IFRVX1N1bW1h cml6aW5nOwogCiAJLyogaW5zZXJ0IGluZGV4IGVudHJpZXMgZm9yIHR1cGxlIGlmIG5lY2Vzc2Fy eSAqLwogCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID4gMCAmJiAodXBkYXRlQ3h0 LT51cGRhdGVJbmRleGVzICE9IFRVX05vbmUpKQpAQCAtMjMwOCw3ICsyMjkzLDcgQEAgRXhlY1Vw ZGF0ZUVwaWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgVXBkYXRlQ29udGV4dCAq dXBkYXRlQ3h0LAogCQkJCQkJCQkJCQkgICBzbG90LCBjb250ZXh0LT5lc3RhdGUsCiAJCQkJCQkJ CQkJCSAgIHRydWUsIGZhbHNlLAogCQkJCQkJCQkJCQkgICBOVUxMLCBOSUwsCi0JCQkJCQkJCQkJ CSAgICh1cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMgPT0gVFVfU3VtbWFyaXppbmcpKTsKKwkJCQkJ CQkJCQkJICAgb25seVN1bW1hcml6aW5nKTsKIAogCS8qIEFGVEVSIFJPVyBVUERBVEUgVHJpZ2dl cnMgKi8KIAlFeGVjQVJVcGRhdGVUcmlnZ2Vycyhjb250ZXh0LT5lc3RhdGUsIHJlc3VsdFJlbElu Zm8sCkBAIC0yNDQ0LDYgKzI0MjksOSBAQCBFeGVjVXBkYXRlKE1vZGlmeVRhYmxlQ29udGV4dCAq Y29udGV4dCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAlVcGRhdGVDb250ZXh0IHVw ZGF0ZUN4dCA9IHswfTsKIAlUTV9SZXN1bHQJcmVzdWx0OwogCisJdXBkYXRlQ3h0LmVzdGF0ZSA9 IGVzdGF0ZTsKKwl1cGRhdGVDeHQucnJpID0gcmVzdWx0UmVsSW5mbzsKKwogCS8qCiAJICogYWJv cnQgdGhlIG9wZXJhdGlvbiBpZiBub3QgcnVubmluZyB0cmFuc2FjdGlvbnMKIAkgKi8KQEAgLTMx MzIsNiArMzEyMCw5IEBAIGxtZXJnZV9tYXRjaGVkOgogCQlUTV9SZXN1bHQJcmVzdWx0OwogCQlV cGRhdGVDb250ZXh0IHVwZGF0ZUN4dCA9IHswfTsKIAorCQl1cGRhdGVDeHQucnJpID0gcmVzdWx0 UmVsSW5mbzsKKwkJdXBkYXRlQ3h0LmVzdGF0ZSA9IGVzdGF0ZTsKKwogCQkvKgogCQkgKiBUZXN0 IGNvbmRpdGlvbiwgaWYgYW55LgogCQkgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5k ZXggOWY1NGE5ZTcyYjcuLjI5Y2VmMDQ4YTg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hl LmMKQEAgLTY0LDYgKzY0LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNs dWRlICJjYXRhbG9nL3NjaGVtYXBnLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9zdG9yYWdlLmgiCisj aW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3BvbGljeS5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRz L3RyaWdnZXIuaCIKQEAgLTUyMTEsNiArNTIxMiw3IEBAIFJlbGF0aW9uR2V0SW5kZXhQcmVkaWNh dGUoUmVsYXRpb24gcmVsYXRpb24pCiAgKgkJCQkJCQkJCWluZGV4IChlbXB0eSBpZiBGVUxMKQog ICoJSU5ERVhfQVRUUl9CSVRNQVBfSE9UX0JMT0NLSU5HCUNvbHVtbnMgdGhhdCBibG9jayB1cGRh dGVzIGZyb20gYmVpbmcgSE9UCiAgKglJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVECUNvbHVt bnMgaW5jbHVkZWQgaW4gc3VtbWFyaXppbmcgaW5kZXhlcworICoJSU5ERVhfQVRUUl9CSVRNQVBf RVhQUkVTU0lPTglDb2x1bW5zIGluY2x1ZGVkIGluIGV4cHJlc2lvbiBpbmRleGVzCiAgKgogICog QXR0cmlidXRlIG51bWJlcnMgYXJlIG9mZnNldCBieSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmli dXRlTnVtYmVyIHNvIHRoYXQKICAqIHdlIGNhbiBpbmNsdWRlIHN5c3RlbSBhdHRyaWJ1dGVzIChl LmcuLCBPSUQpIGluIHRoZSBiaXRtYXAgcmVwcmVzZW50YXRpb24uCkBAIC01MjM0LDcgKzUyMzYs MTEgQEAgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24sIEluZGV4 QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQpCiAJQml0bWFwc2V0ICAqcGtpbmRleGF0dHJzOwkvKiBj b2x1bW5zIGluIHRoZSBwcmltYXJ5IGluZGV4ICovCiAJQml0bWFwc2V0ICAqaWRpbmRleGF0dHJz OwkvKiBjb2x1bW5zIGluIHRoZSByZXBsaWNhIGlkZW50aXR5ICovCiAJQml0bWFwc2V0ICAqaG90 YmxvY2tpbmdhdHRyczsJLyogY29sdW1ucyB3aXRoIEhPVCBibG9ja2luZyBpbmRleGVzICovCisJ Qml0bWFwc2V0ICAqaG90YmxvY2tpbmdleHByYXR0cnM7CS8qIGFzIGFib3ZlLCBidXQgb25seSB0 aG9zZSBpbgorCQkJCQkJCQkJCSAqIGV4cHJlc3Npb25zICovCiAJQml0bWFwc2V0ICAqc3VtbWFy aXplZGF0dHJzOwkvKiBjb2x1bW5zIHdpdGggc3VtbWFyaXppbmcgaW5kZXhlcyAqLworCUJpdG1h cHNldCAgKnN1bW1hcml6ZWRleHByYXR0cnM7CS8qIGFzIGFib3ZlLCBidXQgb25seSB0aG9zZSBp bgorCQkJCQkJCQkJCSAqIGV4cHJlc3Npb25zICovCiAJTGlzdAkgICAqaW5kZXhvaWRsaXN0Owog CUxpc3QJICAgKm5ld2luZGV4b2lkbGlzdDsKIAlPaWQJCQlyZWxwa2luZGV4OwpAQCAtNTI1Nyw2 ICs1MjYzLDggQEAgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24s IEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQpCiAJCQkJcmV0dXJuIGJtc19jb3B5KHJlbGF0 aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIpOwogCQkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9TVU1N QVJJWkVEOgogCQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIp OworCQkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9FWFBSRVNTSU9OOgorCQkJCXJldHVybiBibXNf Y29weShyZWxhdGlvbi0+cmRfZXhwcmVzc2lvbmF0dHIpOwogCQkJZGVmYXVsdDoKIAkJCQllbG9n KEVSUk9SLCAidW5rbm93biBhdHRyS2luZCAldSIsIGF0dHJLaW5kKTsKIAkJfQpAQCAtNTMwMCw3 ICs1MzA4LDkgQEAgcmVzdGFydDoKIAlwa2luZGV4YXR0cnMgPSBOVUxMOwogCWlkaW5kZXhhdHRy cyA9IE5VTEw7CiAJaG90YmxvY2tpbmdhdHRycyA9IE5VTEw7CisJaG90YmxvY2tpbmdleHByYXR0 cnMgPSBOVUxMOwogCXN1bW1hcml6ZWRhdHRycyA9IE5VTEw7CisJc3VtbWFyaXplZGV4cHJhdHRy cyA9IE5VTEw7CiAJZm9yZWFjaChsLCBpbmRleG9pZGxpc3QpCiAJewogCQlPaWQJCQlpbmRleE9p ZCA9IGxmaXJzdF9vaWQobCk7CkBAIC01MzE0LDYgKzUzMjQsNyBAQCByZXN0YXJ0OgogCQlib29s CQlpc1BLOwkJLyogcHJpbWFyeSBrZXkgKi8KIAkJYm9vbAkJaXNJREtleTsJLyogcmVwbGljYSBp ZGVudGl0eSBpbmRleCAqLwogCQlCaXRtYXBzZXQgKiphdHRyczsKKwkJQml0bWFwc2V0ICoqZXhw cmF0dHJzOwogCiAJCWluZGV4RGVzYyA9IGluZGV4X29wZW4oaW5kZXhPaWQsIEFjY2Vzc1NoYXJl TG9jayk7CiAKQEAgLTUzNTcsMTQgKzUzNjgsMjAgQEAgcmVzdGFydDoKIAkJICogZGVjaWRlIHdo aWNoIGJpdG1hcCB3ZSdsbCB1cGRhdGUgaW4gdGhlIGZvbGxvd2luZyBsb29wLgogCQkgKi8KIAkJ aWYgKGluZGV4RGVzYy0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcpCisJCXsKIAkJCWF0dHJzID0g JnN1bW1hcml6ZWRhdHRyczsKKwkJCWV4cHJhdHRycyA9ICZzdW1tYXJpemVkZXhwcmF0dHJzOwor CQl9CiAJCWVsc2UKKwkJewogCQkJYXR0cnMgPSAmaG90YmxvY2tpbmdhdHRyczsKKwkJCWV4cHJh dHRycyA9ICZob3RibG9ja2luZ2V4cHJhdHRyczsKKwkJfQogCiAJCS8qIENvbGxlY3Qgc2ltcGxl IGF0dHJpYnV0ZSByZWZlcmVuY2VzICovCiAJCWZvciAoaSA9IDA7IGkgPCBpbmRleERlc2MtPnJk X2luZGV4LT5pbmRuYXR0czsgaSsrKQogCQl7Ci0JCQlpbnQJCQlhdHRybnVtID0gaW5kZXhEZXNj LT5yZF9pbmRleC0+aW5ka2V5LnZhbHVlc1tpXTsKKwkJCWludAkJCWF0dHJpZHggPSBpbmRleERl c2MtPnJkX2luZGV4LT5pbmRrZXkudmFsdWVzW2ldOwogCiAJCQkvKgogCQkJICogU2luY2Ugd2Ug aGF2ZSBjb3ZlcmluZyBpbmRleGVzIHdpdGggbm9uLWtleSBjb2x1bW5zLCB3ZSBtdXN0CkBAIC01 MzgwLDMwICs1Mzk3LDI4IEBAIHJlc3RhcnQ6CiAJCQkgKiBrZXkgb3IgaWRlbnRpdHkga2V5LiBI ZW5jZSB3ZSBkbyBub3QgaW5jbHVkZSB0aGVtIGludG8KIAkJCSAqIHVpbmRleGF0dHJzLCBwa2lu ZGV4YXR0cnMgYW5kIGlkaW5kZXhhdHRycyBiaXRtYXBzLgogCQkJICovCi0JCQlpZiAoYXR0cm51 bSAhPSAwKQorCQkJaWYgKGF0dHJpZHggIT0gMCkKIAkJCXsKLQkJCQkqYXR0cnMgPSBibXNfYWRk X21lbWJlcigqYXR0cnMsCi0JCQkJCQkJCQkJYXR0cm51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBB dHRyaWJ1dGVOdW1iZXIpOworCQkJCUF0dHJOdW1iZXIJYXR0cm51bSA9IGF0dHJpZHggLSBGaXJz dExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOworCisJCQkJKmF0dHJzID0gYm1zX2FkZF9t ZW1iZXIoKmF0dHJzLCBhdHRybnVtKTsKIAogCQkJCWlmIChpc0tleSAmJiBpIDwgaW5kZXhEZXNj LT5yZF9pbmRleC0+aW5kbmtleWF0dHMpCi0JCQkJCXVpbmRleGF0dHJzID0gYm1zX2FkZF9tZW1i ZXIodWluZGV4YXR0cnMsCi0JCQkJCQkJCQkJCQkgYXR0cm51bSAtIEZpcnN0TG93SW52YWxpZEhl YXBBdHRyaWJ1dGVOdW1iZXIpOworCQkJCQl1aW5kZXhhdHRycyA9IGJtc19hZGRfbWVtYmVyKHVp bmRleGF0dHJzLCBhdHRybnVtKTsKIAogCQkJCWlmIChpc1BLICYmIGkgPCBpbmRleERlc2MtPnJk X2luZGV4LT5pbmRua2V5YXR0cykKLQkJCQkJcGtpbmRleGF0dHJzID0gYm1zX2FkZF9tZW1iZXIo cGtpbmRleGF0dHJzLAotCQkJCQkJCQkJCQkJICBhdHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVh cEF0dHJpYnV0ZU51bWJlcik7CisJCQkJCXBraW5kZXhhdHRycyA9IGJtc19hZGRfbWVtYmVyKHBr aW5kZXhhdHRycywgYXR0cm51bSk7CiAKIAkJCQlpZiAoaXNJREtleSAmJiBpIDwgaW5kZXhEZXNj LT5yZF9pbmRleC0+aW5kbmtleWF0dHMpCi0JCQkJCWlkaW5kZXhhdHRycyA9IGJtc19hZGRfbWVt YmVyKGlkaW5kZXhhdHRycywKLQkJCQkJCQkJCQkJCSAgYXR0cm51bSAtIEZpcnN0TG93SW52YWxp ZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCQkJCQlpZGluZGV4YXR0cnMgPSBibXNfYWRkX21lbWJl cihpZGluZGV4YXR0cnMsIGF0dHJudW0pOwogCQkJfQogCQl9CiAKIAkJLyogQ29sbGVjdCBhbGwg YXR0cmlidXRlcyB1c2VkIGluIGV4cHJlc3Npb25zLCB0b28gKi8KLQkJcHVsbF92YXJhdHRub3Mo aW5kZXhFeHByZXNzaW9ucywgMSwgYXR0cnMpOworCQlwdWxsX3ZhcmF0dG5vcyhpbmRleEV4cHJl c3Npb25zLCAxLCBleHByYXR0cnMpOwogCiAJCS8qIENvbGxlY3QgYWxsIGF0dHJpYnV0ZXMgaW4g dGhlIGluZGV4IHByZWRpY2F0ZSwgdG9vICovCi0JCXB1bGxfdmFyYXR0bm9zKGluZGV4UHJlZGlj YXRlLCAxLCBhdHRycyk7CisJCXB1bGxfdmFyYXR0bm9zKGluZGV4UHJlZGljYXRlLCAxLCBleHBy YXR0cnMpOwogCiAJCWluZGV4X2Nsb3NlKGluZGV4RGVzYywgQWNjZXNzU2hhcmVMb2NrKTsKIAl9 CkBAIC01NDMyLDExICs1NDQ3LDM3IEBAIHJlc3RhcnQ6CiAJCWJtc19mcmVlKHBraW5kZXhhdHRy cyk7CiAJCWJtc19mcmVlKGlkaW5kZXhhdHRycyk7CiAJCWJtc19mcmVlKGhvdGJsb2NraW5nYXR0 cnMpOworCQlibXNfZnJlZShob3RibG9ja2luZ2V4cHJhdHRycyk7CiAJCWJtc19mcmVlKHN1bW1h cml6ZWRhdHRycyk7CisJCWJtc19mcmVlKHN1bW1hcml6ZWRleHByYXR0cnMpOwogCiAJCWdvdG8g cmVzdGFydDsKIAl9CiAKKwkvKgorCSAqIEhPVC1ibG9ja2luZyBhdHRyaWJ1dGVzIHNob3VsZCBp bmNsdWRlIGFsbCBjb2x1bW5zIHRoYXQgYXJlIHBhcnQgb2YgdGhlCisJICogaW5kZXggZXhjZXB0 IGF0dHJpYnV0ZXMgb25seSByZWZlcmVuY2VkIGluIGV4cHJlc3Npb25zLCBpbmNsdWRpbmcKKwkg KiBleHByZXNzaW9ucyB1c2VkIHRvIGZvcm0gcGFydGlhbCBpbmRleGVzLiAgU28sIHdlIG5lZWQg dG8gcmVtb3ZlIHRoZQorCSAqIGV4cHJlc3Npb24tb25seSBjb2x1bW5zIGZyb20gdGhlIEhPVC1i bG9ja2luZyBjb2x1bW5zIGJpdG1hcCBhcyB0aG9zZQorCSAqIHdpbGwgYmUgY2hlY2tlZCBzZXBh cmF0ZWx5LiAgVGhpcyBpcyB0cnVlIGZvciBib3RoIHN1bW1hcml6aW5nIGFuZAorCSAqIG5vbi1z dW1tYXJpemluZyBpbmRleGVzIHdoaWNoIHdlJ3ZlIHNlcGFyYXRlZCBhYm92ZSwgc28gd2UgaGF2 ZSB0byBkbworCSAqIHRoaXMgZm9yIGJvdGggYml0bWFwcy4KKwkgKi8KKworCS8qIHtleHByZXNz aW9uLW9ubHkgY29sdW1uc30gPSB7ZXhwcmVzc2lvbiBjb2x1bW5zfSAtIHtkaXJlY3QgY29sdW1u c30gKi8KKwlob3RibG9ja2luZ2V4cHJhdHRycyA9IGJtc19kZWxfbWVtYmVycyhob3RibG9ja2lu Z2V4cHJhdHRycywKKwkJCQkJCQkJCQkgICBob3RibG9ja2luZ2F0dHJzKTsKKwkvKiB7aG90LWJs b2NraW5nIGNvbHVtbnN9ID0ge2RpcmVjdCBjb2x1bW5zfSArIHtleHByZXNzaW9uLW9ubHkgY29s dW1uc30gKi8KKwlob3RibG9ja2luZ2F0dHJzID0gYm1zX2FkZF9tZW1iZXJzKGhvdGJsb2NraW5n YXR0cnMsCisJCQkJCQkJCQkgICBob3RibG9ja2luZ2V4cHJhdHRycyk7CisKKwkvKiB7c3VtbWFy aXplZC1vbmx5IGNvbHVtbnN9ID0ge2FsbCBzdW1tYXJpemVkIGNvbHVtbnN9IC0ge2RpcmVjdCBj b2x1bW5zfSAqLworCXN1bW1hcml6ZWRleHByYXR0cnMgPSBibXNfZGVsX21lbWJlcnMoc3VtbWFy aXplZGV4cHJhdHRycywKKwkJCQkJCQkJCQkgIHN1bW1hcml6ZWRhdHRycyk7CisJLyoge3N1bW1h cml6ZWQgY29sdW1uc30gPSB7YWxsIGRpcmVjdCBjb2x1bW5zfSArIHtzdW1tYXJpemVkLW9ubHkg Y29sdW1uc30gKi8KKwlzdW1tYXJpemVkYXR0cnMgPSBibXNfYWRkX21lbWJlcnMoc3VtbWFyaXpl ZGF0dHJzLAorCQkJCQkJCQkJICBzdW1tYXJpemVkZXhwcmF0dHJzKTsKKwogCS8qIERvbid0IGxl YWsgdGhlIG9sZCB2YWx1ZXMgb2YgdGhlc2UgYml0bWFwcywgaWYgYW55ICovCiAJcmVsYXRpb24t PnJkX2F0dHJzdmFsaWQgPSBmYWxzZTsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfa2V5YXR0cik7 CkBAIC01NDQ5LDYgKzU0OTAsOCBAQCByZXN0YXJ0OgogCXJlbGF0aW9uLT5yZF9ob3RibG9ja2lu Z2F0dHIgPSBOVUxMOwogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0cik7CiAJ cmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyID0gTlVMTDsKKwlibXNfZnJlZShyZWxhdGlvbi0+ cmRfZXhwcmVzc2lvbmF0dHIpOworCXJlbGF0aW9uLT5yZF9leHByZXNzaW9uYXR0ciA9IE5VTEw7 CiAKIAkvKgogCSAqIE5vdyBzYXZlIGNvcGllcyBvZiB0aGUgYml0bWFwcyBpbiB0aGUgcmVsY2Fj aGUgZW50cnkuICBXZSBpbnRlbnRpb25hbGx5CkBAIC01NDYzLDYgKzU1MDYsNyBAQCByZXN0YXJ0 OgogCXJlbGF0aW9uLT5yZF9pZGF0dHIgPSBibXNfY29weShpZGluZGV4YXR0cnMpOwogCXJlbGF0 aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIgPSBibXNfY29weShob3RibG9ja2luZ2F0dHJzKTsKIAly ZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIgPSBibXNfY29weShzdW1tYXJpemVkYXR0cnMpOwor CXJlbGF0aW9uLT5yZF9leHByZXNzaW9uYXR0ciA9IGJtc19jb3B5KGhvdGJsb2NraW5nZXhwcmF0 dHJzKTsKIAlyZWxhdGlvbi0+cmRfYXR0cnN2YWxpZCA9IHRydWU7CiAJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN4dCk7CiAKQEAgLTU0NzksNiArNTUyMyw4IEBAIHJlc3RhcnQ6CiAJCQlyZXR1 cm4gaG90YmxvY2tpbmdhdHRyczsKIAkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVE OgogCQkJcmV0dXJuIHN1bW1hcml6ZWRhdHRyczsKKwkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9F WFBSRVNTSU9OOgorCQkJcmV0dXJuIGhvdGJsb2NraW5nZXhwcmF0dHJzOwogCQlkZWZhdWx0Ogog CQkJZWxvZyhFUlJPUiwgInVua25vd24gYXR0cktpbmQgJXUiLCBhdHRyS2luZCk7CiAJCQlyZXR1 cm4gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCA5ODk1MWFlZjgyYy4uM2Q0ZDUwYTk1 ZTkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTI5OTMsNyArMjk5Myw3IEBAIG1hdGNoX3By ZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQlDT01QTEVURV9XSVRIKCIoIik7CiAJLyog QUxURVIgVEFCTEVTUEFDRSA8Zm9vPiBTRVR8UkVTRVQgKCAqLwogCWVsc2UgaWYgKE1hdGNoZXMo IkFMVEVSIiwgIlRBQkxFU1BBQ0UiLCBNYXRjaEFueSwgIlNFVHxSRVNFVCIsICIoIikpCi0JCUNP TVBMRVRFX1dJVEgoInNlcV9wYWdlX2Nvc3QiLCAicmFuZG9tX3BhZ2VfY29zdCIsCisJCUNPTVBM RVRFX1dJVEgoInNlcV9wYWdlX2Nvc3QiLCAicmFuZG9tX3BhZ2VfY29zdCIsICJleHByZXNzaW9u X2NoZWNrcyIsCiAJCQkJCSAgImVmZmVjdGl2ZV9pb19jb25jdXJyZW5jeSIsICJtYWludGVuYW5j ZV9pb19jb25jdXJyZW5jeSIpOwogCiAJLyogQUxURVIgVEVYVCBTRUFSQ0ggKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaAppbmRleCAxNjQwZDljMzJmNy4uYTdlYjdiZDU0MmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAg LTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJhY2Nlc3Mvc2tleS5oIgogI2luY2x1ZGUgImFjY2Vz cy90YWJsZS5oIgkJLyogZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKi8KICNpbmNsdWRlICJh Y2Nlc3MvdGFibGVhbS5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVk ZSAibm9kZXMvbG9ja29wdGlvbnMuaCIKICNpbmNsdWRlICJub2Rlcy9wcmltbm9kZXMuaCIKICNp bmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCIKQEAgLTMzOCw4ICszMzksNyBAQCBleHRlcm4gdm9p ZCBoZWFwX2Fib3J0X3NwZWN1bGF0aXZlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciB0 aWQpOwogZXh0ZXJuIFRNX1Jlc3VsdCBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRl bVBvaW50ZXIgb3RpZCwKIAkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1cCwKIAkJCQkJCQkgQ29tbWFu ZElkIGNpZCwgU25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LAotCQkJCQkJCSBzdHJ1Y3Qg VE1fRmFpbHVyZURhdGEgKnRtZmQsIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAotCQkJCQkJCSBU VV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJIHN0cnVjdCBUTV9GYWls dXJlRGF0YSAqdG1mZCwgVXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0KTsKIGV4dGVybiBUTV9SZXN1 bHQgaGVhcF9sb2NrX3R1cGxlKFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwbGUsCiAJ CQkJCQkJCSBDb21tYW5kSWQgY2lkLCBMb2NrVHVwbGVNb2RlIG1vZGUsIExvY2tXYWl0UG9saWN5 IHdhaXRfcG9saWN5LAogCQkJCQkJCQkgYm9vbCBmb2xsb3dfdXBkYXRlcywKQEAgLTM3NCw3ICsz NzQsNyBAQCBleHRlcm4gYm9vbCBoZWFwX3R1cGxlX25lZWRzX2V2ZW50dWFsX2ZyZWV6ZShIZWFw VHVwbGVIZWFkZXIgdHVwbGUpOwogZXh0ZXJuIHZvaWQgc2ltcGxlX2hlYXBfaW5zZXJ0KFJlbGF0 aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwKTsKIGV4dGVybiB2b2lkIHNpbXBsZV9oZWFwX2Rl bGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgdGlkKTsKIGV4dGVybiB2b2lkIHNp bXBsZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgb3RpZCwKLQkJ CQkJCQkgICBIZWFwVHVwbGUgdHVwLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcyk7 CisJCQkJCQkJICAgSGVhcFR1cGxlIHR1cCwgVXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0KTsKIAog ZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJlbGF0aW9uIHJl bCwKIAkJCQkJCQkJCQkJICBUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxl YW0uaAppbmRleCBiOGNiMWU3NDRhZC4uMTNhMGJmMWUxMTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApA QCAtMTI1LDYgKzEyNSwyOCBAQCB0eXBlZGVmIGVudW0gVFVfVXBkYXRlSW5kZXhlcwogCVRVX1N1 bW1hcml6aW5nLAogfSBUVV9VcGRhdGVJbmRleGVzOwogCisvKgorICogRGF0YSBzcGVjaWZpYyB0 byBwcm9jZXNzaW5nIFVQREFURSBvcGVyYXRpb25zLgorICoKKyAqIFdoZW4gdGFibGVfdHVwbGVf dXBkYXRlIGlzIGNhbGxlZCBzb21lIHN0b3JhZ2UgbWFuYWdlcnMsIG5vdGFibHkgaGVhcGFtLAor ICogY2FuIGF0IHRpbWVzIGF2b2lkIGluZGV4IHVwZGF0ZXMuICBJbiB0aGUgaGVhcGFtIHRoaXMg aXMga25vd24gYXMgYSBIT1QKKyAqIHVwZGF0ZS4gIFRoaXMgc3RydWN0IGlzIHVzZWQgdG8gcHJv dmlkZSB0aGUgc3RhdGUgcmVxdWlyZWQgdG8gdGVzdCBmb3IKKyAqIEhPVCB1cGRhdGVzIGFuZCB0 byBjb21tdW5pY2F0ZSB0aGF0IGRlY2lzaW9uIG9uIHRvIHRoZSBpbmRleCBBTXMuCisgKi8KK3R5 cGVkZWYgc3RydWN0IFVwZGF0ZUNvbnRleHQKK3sKKwlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZUlu ZGV4ZXM7IC8qIFdoaWNoIGluZGV4IHVwZGF0ZXMgYXJlIHJlcXVpcmVkPyAqLworCXN0cnVjdCBS ZXN1bHRSZWxJbmZvICpycmk7CS8qIFJlc3VsdFJlbEluZm8gZm9yIHRoZSB1cGRhdGVkIHRhYmxl LiAqLworCXN0cnVjdCBFU3RhdGUgKmVzdGF0ZTsJCS8qIEVTdGF0ZSB1c2VkIHdpdGhpbiB0aGUg dXBkYXRlLiAqLworCWJvb2wJCWNyb3NzUGFydFVwZGF0ZTsJLyogV2FzIGl0IGEgY3Jvc3MtcGFy dGl0aW9uIHVwZGF0ZT8gKi8KKworCS8qCisJICogTG9jayBtb2RlIHRvIGFjcXVpcmUgb24gdGhl IGxhdGVzdCB0dXBsZSB2ZXJzaW9uIGJlZm9yZSBwZXJmb3JtaW5nCisJICogRXZhbFBsYW5RdWFs IG9uIGl0CisJICovCisJTG9ja1R1cGxlTW9kZSBsb2NrbW9kZTsKK30gVXBkYXRlQ29udGV4dDsK KwogLyoKICAqIFdoZW4gdGFibGVfdHVwbGVfdXBkYXRlLCB0YWJsZV90dXBsZV9kZWxldGUsIG9y IHRhYmxlX3R1cGxlX2xvY2sgZmFpbAogICogYmVjYXVzZSB0aGUgdGFyZ2V0IHR1cGxlIGlzIGFs cmVhZHkgb3V0ZGF0ZWQsIHRoZXkgZmlsbCBpbiB0aGlzIHN0cnVjdCB0bwpAQCAtNTQ5LDggKzU3 MSw3IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJCQkJCQkJCSBTbmFwc2hvdCBj cm9zc2NoZWNrLAogCQkJCQkJCQkgYm9vbCB3YWl0LAogCQkJCQkJCQkgVE1fRmFpbHVyZURhdGEg KnRtZmQsCi0JCQkJCQkJCSBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCQkJCQkJIFRVX1Vw ZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkJIFVwZGF0ZUNvbnRleHQgKnVw ZGF0ZUN4dCk7CiAKIAkvKiBzZWUgdGFibGVfdHVwbGVfbG9jaygpIGZvciByZWZlcmVuY2UgYWJv dXQgcGFyYW1ldGVycyAqLwogCVRNX1Jlc3VsdAkoKnR1cGxlX2xvY2spIChSZWxhdGlvbiByZWws CkBAIC0xNTA0LDEzICsxNTI1LDExIEBAIHRhYmxlX3R1cGxlX2RlbGV0ZShSZWxhdGlvbiByZWws IEl0ZW1Qb2ludGVyIHRpZCwgQ29tbWFuZElkIGNpZCwKIHN0YXRpYyBpbmxpbmUgVE1fUmVzdWx0 CiB0YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLCBUdXBs ZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkgICBDb21tYW5kSWQgY2lkLCBTbmFwc2hvdCBzbmFwc2hv dCwgU25hcHNob3QgY3Jvc3NjaGVjaywKLQkJCQkgICBib29sIHdhaXQsIFRNX0ZhaWx1cmVEYXRh ICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCQkgICBUVV9VcGRhdGVJbmRleGVz ICp1cGRhdGVfaW5kZXhlcykKKwkJCQkgICBib29sIHdhaXQsIFRNX0ZhaWx1cmVEYXRhICp0bWZk LCBVcGRhdGVDb250ZXh0ICp1cGRhdGVDeHQpCiB7CiAJcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+ dHVwbGVfdXBkYXRlKHJlbCwgb3RpZCwgc2xvdCwKIAkJCQkJCQkJCQkgY2lkLCBzbmFwc2hvdCwg Y3Jvc3NjaGVjaywKLQkJCQkJCQkJCQkgd2FpdCwgdG1mZCwKLQkJCQkJCQkJCQkgbG9ja21vZGUs IHVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkJCQkgd2FpdCwgdG1mZCwgdXBkYXRlQ3h0KTsKIH0K IAogLyoKQEAgLTIwMTEsNyArMjAzMCw3IEBAIGV4dGVybiB2b2lkIHNpbXBsZV90YWJsZV90dXBs ZV9kZWxldGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciB0aWQsCiAJCQkJCQkJCQkgIFNuYXBz aG90IHNuYXBzaG90KTsKIGV4dGVybiB2b2lkIHNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUoUmVs YXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJCQkJICBUdXBsZVRhYmxlU2xvdCAq c2xvdCwgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkJCQkgIFRVX1VwZGF0ZUluZGV4ZXMgKnVw ZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkJCSAgVXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0KTsKIAog CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKaW5kZXggNGRhYThiZWY1ZWUu LmZkYmY0N2Y2MDdiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCkBAIC0xMzIsNiArMTMyLDcgQEAgZXh0ZXJu IGJvb2wgQ29tcGFyZUluZGV4SW5mbyhjb25zdCBJbmRleEluZm8gKmluZm8xLCBjb25zdCBJbmRl eEluZm8gKmluZm8yLAogCQkJCQkJCSBjb25zdCBBdHRyTWFwICphdHRtYXApOwogCiBleHRlcm4g dm9pZCBCdWlsZFNwZWN1bGF0aXZlSW5kZXhJbmZvKFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8g KmlpKTsKK2V4dGVybiB2b2lkIEJ1aWxkRXhwcmVzc2lvbkluZGV4SW5mbyhSZWxhdGlvbiBpbmRl eCwgSW5kZXhJbmZvICppbmRleEluZm8pOwogCiBleHRlcm4gdm9pZCBGb3JtSW5kZXhEYXR1bShJ bmRleEluZm8gKmluZGV4SW5mbywKIAkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICpzbG90LApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggNmExZmVjODg5MjguLjUwN2UxNDJhMTBlIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTc3Myw2ICs3NzMsMTEgQEAgZXh0ZXJuIHZvaWQgY2hlY2tf ZXhjbHVzaW9uX2NvbnN0cmFpbnQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJCQkJ CQkJCQkgICBJdGVtUG9pbnRlciB0dXBsZWlkLAogCQkJCQkJCQkJICAgY29uc3QgRGF0dW0gKnZh bHVlcywgY29uc3QgYm9vbCAqaXNudWxsLAogCQkJCQkJCQkJICAgRVN0YXRlICplc3RhdGUsIGJv b2wgbmV3SW5kZXgpOworZXh0ZXJuIGJvb2wgRXhlY0V4cHJlc3Npb25JbmRleGVzVXBkYXRlZChS ZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJCSBCaXRtYXBzZXQgKm1vZGlm aWVkQXR0cnMsCisJCQkJCQkJCQkJIEVTdGF0ZSAqZXN0YXRlLAorCQkJCQkJCQkJCSBUdXBsZVRh YmxlU2xvdCAqb2xkX3R0cywKKwkJCQkJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKm5ld190dHMpOwog CiAvKgogICogcHJvdG90eXBlcyBmcm9tIGZ1bmN0aW9ucyBpbiBleGVjUmVwbGljYXRpb24uYwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaAppbmRleCBlNDJmOWY5Zjk1Ny4uZjYwYjIwNjcxYjkgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oCkBAIC0xNjAsMTIgKzE2MCwxNSBAQCB0eXBlZGVmIHN0cnVjdCBFeHByU3Rh dGUKICAqCiAgKgkJTnVtSW5kZXhBdHRycwkJdG90YWwgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhp cyBpbmRleAogICoJCU51bUluZGV4S2V5QXR0cnMJbnVtYmVyIG9mIGtleSBjb2x1bW5zIGluIGlu ZGV4CisgKgkJSW5kZXhBdHRycwkJCWJpdG1hcCBvZiBpbmRleCBhdHRyaWJ1dGVzCiAgKgkJSW5k ZXhBdHRyTnVtYmVycwl1bmRlcmx5aW5nLXJlbCBhdHRyaWJ1dGUgbnVtYmVycyB1c2VkIGFzIGtl eXMKICAqCQkJCQkJCSh6ZXJvZXMgaW5kaWNhdGUgZXhwcmVzc2lvbnMpLiBJdCBhbHNvIGNvbnRh aW5zCiAgKiAJCQkJCQkJaW5mbyBhYm91dCBpbmNsdWRlZCBjb2x1bW5zLgogICoJCUV4cHJlc3Np b25zCQkJZXhwciB0cmVlcyBmb3IgZXhwcmVzc2lvbiBlbnRyaWVzLCBvciBOSUwgaWYgbm9uZQor ICoJCUV4cHJlc3Npb25BdHRycwkJYml0bWFwIG9mIGF0dHJpYnV0ZXMgdXNlZCB3aXRoaW4gdGhl IGV4cHJlc3Npb24KICAqCQlFeHByZXNzaW9uc1N0YXRlCWV4ZWMgc3RhdGUgZm9yIGV4cHJlc3Np b25zLCBvciBOSUwgaWYgbm9uZQogICoJCVByZWRpY2F0ZQkJCXBhcnRpYWwtaW5kZXggcHJlZGlj YXRlLCBvciBOSUwgaWYgbm9uZQorICoJCVByZWRpY2F0ZUF0dHJzCQliaXRtYXAgb2YgYXR0cmli dXRlcyB1c2VkIHdpdGhpbiB0aGUgcHJlZGljYXRlCiAgKgkJUHJlZGljYXRlU3RhdGUJCWV4ZWMg c3RhdGUgZm9yIHByZWRpY2F0ZSwgb3IgTklMIGlmIG5vbmUKICAqCQlFeGNsdXNpb25PcHMJCVBl ci1jb2x1bW4gZXhjbHVzaW9uIG9wZXJhdG9ycywgb3IgTlVMTCBpZiBub25lCiAgKgkJRXhjbHVz aW9uUHJvY3MJCVVuZGVybHlpbmcgZnVuY3Rpb24gT0lEcyBmb3IgRXhjbHVzaW9uT3BzCkBAIC0x ODQsNiArMTg3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwclN0YXRlCiAgKgkJUGFyYWxsZWxXb3Jr ZXJzCQkjIG9mIHdvcmtlcnMgcmVxdWVzdGVkIChleGNsdWRlcyBsZWFkZXIpCiAgKgkJQW0JCQkJ CU9pZCBvZiBpbmRleCBBTQogICoJCUFtQ2FjaGUJCQkJcHJpdmF0ZSBjYWNoZSBhcmVhIGZvciBp bmRleCBBTQorICoJCU9wQ2xhc3NEYXRhVHlwZXMJb3BlcmF0b3IgY2xhc3MgZGF0YSB0eXBlcwog ICoJCUNvbnRleHQJCQkJbWVtb3J5IGNvbnRleHQgaG9sZGluZyB0aGlzIEluZGV4SW5mbwogICoK ICAqIGlpX0NvbmN1cnJlbnQsIGlpX0Jyb2tlbkhvdENoYWluLCBhbmQgaWlfUGFyYWxsZWxXb3Jr ZXJzIGFyZSB1c2VkIG9ubHkKQEAgLTE5NSwxMCArMTk5LDE3IEBAIHR5cGVkZWYgc3RydWN0IElu ZGV4SW5mbwogCU5vZGVUYWcJCXR5cGU7CiAJaW50CQkJaWlfTnVtSW5kZXhBdHRyczsJLyogdG90 YWwgbnVtYmVyIG9mIGNvbHVtbnMgaW4gaW5kZXggKi8KIAlpbnQJCQlpaV9OdW1JbmRleEtleUF0 dHJzOwkvKiBudW1iZXIgb2Yga2V5IGNvbHVtbnMgaW4gaW5kZXggKi8KKwlCaXRtYXBzZXQgICpp aV9JbmRleEF0dHJzOwogCUF0dHJOdW1iZXIJaWlfSW5kZXhBdHRyTnVtYmVyc1tJTkRFWF9NQVhf S0VZU107CisJdWludDE2CQlpaV9JbmRleEF0dHJMZW5bSU5ERVhfTUFYX0tFWVNdOworCUJpdG1h cHNldCAgKmlpX0luZGV4QXR0ckJ5VmFsOworCUZtZ3JJbmZvICAgKmlpX0VxdWFsaXR5UHJvY1tJ TkRFWF9NQVhfS0VZU107CisJT2lkCQkJaWlfQ29sbGF0aW9uW0lOREVYX01BWF9LRVlTXTsKIAlM aXN0CSAgICppaV9FeHByZXNzaW9uczsgLyogbGlzdCBvZiBFeHByICovCisJQml0bWFwc2V0ICAq aWlfRXhwcmVzc2lvbkF0dHJzOwogCUxpc3QJICAgKmlpX0V4cHJlc3Npb25zU3RhdGU7CS8qIGxp c3Qgb2YgRXhwclN0YXRlICovCiAJTGlzdAkgICAqaWlfUHJlZGljYXRlOwkvKiBsaXN0IG9mIEV4 cHIgKi8KKwlCaXRtYXBzZXQgICppaV9QcmVkaWNhdGVBdHRyczsKIAlFeHByU3RhdGUgICppaV9Q cmVkaWNhdGVTdGF0ZTsKIAlPaWQJCSAgICppaV9FeGNsdXNpb25PcHM7CS8qIGFycmF5IHdpdGgg b25lIGVudHJ5IHBlciBjb2x1bW4gKi8KIAlPaWQJCSAgICppaV9FeGNsdXNpb25Qcm9jczsJLyog YXJyYXkgd2l0aCBvbmUgZW50cnkgcGVyIGNvbHVtbiAqLwpAQCAtMjExLDYgKzIyMiw4IEBAIHR5 cGVkZWYgc3RydWN0IEluZGV4SW5mbwogCWJvb2wJCWlpX1JlYWR5Rm9ySW5zZXJ0czsKIAlib29s CQlpaV9DaGVja2VkVW5jaGFuZ2VkOwogCWJvb2wJCWlpX0luZGV4VW5jaGFuZ2VkOworCWJvb2wJ CWlpX0NoZWNrZWRQcmVkaWNhdGU7CisJYm9vbAkJaWlfUHJlZGljYXRlU2F0aXNmaWVkOwogCWJv b2wJCWlpX0NvbmN1cnJlbnQ7CiAJYm9vbAkJaWlfQnJva2VuSG90Q2hhaW47CiAJYm9vbAkJaWlf U3VtbWFyaXppbmc7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yZWwuaCBiL3NyYy9p bmNsdWRlL3V0aWxzL3JlbC5oCmluZGV4IGQ5NGZkZGQ3Y2VmLi5lNDRkOTk2Njc3OCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVs LmgKQEAgLTE2NCw2ICsxNjQsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZWxhdGlvbkRhdGEKIAlCaXRt YXBzZXQgICpyZF9pZGF0dHI7CQkvKiBpbmNsdWRlZCBpbiByZXBsaWNhIGlkZW50aXR5IGluZGV4 ICovCiAJQml0bWFwc2V0ICAqcmRfaG90YmxvY2tpbmdhdHRyOyAvKiBjb2xzIGJsb2NraW5nIEhP VCB1cGRhdGUgKi8KIAlCaXRtYXBzZXQgICpyZF9zdW1tYXJpemVkYXR0cjsJLyogY29scyBpbmRl eGVkIGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMgKi8KKwlCaXRtYXBzZXQgICpyZF9leHByZXNzaW9u YXR0cjsJLyogaW5kZXhlZCBjb2xzIHJlZmVyZW5jZWQgYnkgZXhwcmVzc2lvbnMgKi8KIAogCVB1 YmxpY2F0aW9uRGVzYyAqcmRfcHViZGVzYzsJLyogcHVibGljYXRpb24gZGVzY3JpcHRvciwgb3Ig TlVMTCAqLwogCkBAIC0zNDUsNiArMzQ2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3RkUmRPcHRpb25z CiAJU3RkUmRPcHRJbmRleENsZWFudXAgdmFjdXVtX2luZGV4X2NsZWFudXA7CS8qIGNvbnRyb2xz IGluZGV4IHZhY3V1bWluZyAqLwogCWJvb2wJCXZhY3V1bV90cnVuY2F0ZTsJLyogZW5hYmxlcyB2 YWN1dW0gdG8gdHJ1bmNhdGUgYSByZWxhdGlvbiAqLwogCWJvb2wJCXZhY3V1bV90cnVuY2F0ZV9z ZXQ7CS8qIHdoZXRoZXIgdmFjdXVtX3RydW5jYXRlIGlzIHNldCAqLworCWJvb2wJCWV4cHJlc3Np b25fY2hlY2tzOwkvKiB1c2UgZXhwcmVzc2lvbiB0byBjaGVja3MgZm9yIGNoYW5nZXMgKi8KIAog CS8qCiAJICogRnJhY3Rpb24gb2YgcGFnZXMgaW4gYSByZWxhdGlvbiB0aGF0IHZhY3V1bSBjYW4g ZWFnZXJseSBzY2FuIGFuZCBmYWlsCkBAIC00MDYsNiArNDA4LDE0IEBAIHR5cGVkZWYgc3RydWN0 IFN0ZFJkT3B0aW9ucwogCSgocmVsYXRpb24pLT5yZF9vcHRpb25zID8gXAogCSAoKFN0ZFJkT3B0 aW9ucyAqKSAocmVsYXRpb24pLT5yZF9vcHRpb25zKS0+cGFyYWxsZWxfd29ya2VycyA6IChkZWZh dWx0cHcpKQogCisvKgorICogUmVsYXRpb25HZXRFeHByZXNzaW9uQ2hlY2tzCisgKgkJUmV0dXJu cyB0aGUgcmVsYXRpb24ncyBleHByZXNzaW9uX2NoZWNrcyByZWxvcHRpb24gc2V0dGluZy4KKyAq LworI2RlZmluZSBSZWxhdGlvbkdldEV4cHJlc3Npb25DaGVja3MocmVsYXRpb24pIFwKKwkoKHJl bGF0aW9uKS0+cmRfb3B0aW9ucyA/IFwKKwkgKChTdGRSZE9wdGlvbnMgKikgKHJlbGF0aW9uKS0+ cmRfb3B0aW9ucyktPmV4cHJlc3Npb25fY2hlY2tzIDogdHJ1ZSkKKwogLyogVmlld09wdGlvbnMt PmNoZWNrX29wdGlvbiB2YWx1ZXMgKi8KIHR5cGVkZWYgZW51bSBWaWV3T3B0Q2hlY2tPcHRpb24K IHsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmggYi9zcmMvaW5jbHVk ZS91dGlscy9yZWxjYWNoZS5oCmluZGV4IGE3YzU1ZGIzMzllLi4wY2MyOGNiOTdlMiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGls cy9yZWxjYWNoZS5oCkBAIC02Myw2ICs2Myw3IEBAIHR5cGVkZWYgZW51bSBJbmRleEF0dHJCaXRt YXBLaW5kCiAJSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZLAogCUlOREVYX0FUVFJfQklU TUFQX0hPVF9CTE9DS0lORywKIAlJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVELAorCUlOREVY X0FUVFJfQklUTUFQX0VYUFJFU1NJT04sCiB9IEluZGV4QXR0ckJpdG1hcEtpbmQ7CiAKIGV4dGVy biBCaXRtYXBzZXQgKlJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0aW9u LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9oZWFwX2hvdF91cGRhdGVz Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaGVhcF9ob3RfdXBkYXRlcy5vdXQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAyN2M4NzYwZDY5Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9oZWFwX2hvdF91cGRhdGVzLm91 dApAQCAtMCwwICsxLDY2NSBAQAorLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0KKy0tIFRoaXMgdGFibGUg d2lsbCBoYXZlIHR3byBjb2x1bW5zIGFuZCB0d28gaW5kZXhlcywgb25lIG9uIHRoZSBwcmltYXJ5 IGtleQorLS0gaWQgYW5kIG9uZSBvbiB0aGUgZXhwcmVzc2lvbiAoaW5mby0+PiduYW1lJykuICBU aGF0IG1lYW5zIHRoYXQgdGhlIGluZGV4ZWQKKy0tIGF0dHJpYnV0ZXMgYXJlICdpZCcgYW5kICdp bmZvJy4KK2NyZWF0ZSB0YWJsZSBrZXl2YWx1ZShpZCBpbnRlZ2VyIHByaW1hcnkga2V5LCBpbmZv IGpzb25iKTsKK2NyZWF0ZSBpbmRleCBuYW1laW5kZXggb24ga2V5dmFsdWUoKGluZm8tPj4nbmFt ZScpKTsKK2luc2VydCBpbnRvIGtleXZhbHVlIHZhbHVlcyAoMSwgJ3sibmFtZSI6ICJqb2huIiwg ImRhdGEiOiAic29tZSBkYXRhIn0nKTsKKy0tIERpc2FibGUgZXhwcmVzc2lvbiBjaGVja3MuCitB TFRFUiBUQUJMRSBrZXl2YWx1ZSBTRVQgKGV4cHJlc3Npb25fY2hlY2tzID0gZmFsc2UpOworU0VM RUNUIHJlbG9wdGlvbnMgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ2tleXZhbHVlJzsK KyAgICAgICAgcmVsb3B0aW9ucyAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Cisge2V4cHJlc3Npb25fY2hlY2tzPWZhbHNlfQorKDEgcm93KQorCistLSBXaGlsZSB0aGUgaW5k ZXhlZCBhdHRyaWJ1dGUgIm5hbWUiIGlzIHVuY2hhbmdlZCB3ZSd2ZSBkaXNhYmxlZCBleHByZXNz aW9uCistLSBjaGVja3Mgc28gdGhpcyB1cGRhdGUgc2hvdWxkIG5vdCBnbyBIT1QgYXMgdGhlIHN5 c3RlbSBjYW4ndCBkZXRlcm1pbmUgaWYKKy0tIHRoZSBpbmRleGVkIGF0dHJpYnV0ZSBoYXMgY2hh bmdlZCB3aXRob3V0IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb24uCit1cGRhdGUga2V5dmFsdWUg c2V0IGluZm89J3sibmFtZSI6ICJqb2huIiwgImRhdGEiOiAic29tZXRoaW5nIGVsc2UifScgd2hl cmUgaWQ9MTsKK3NlbGVjdCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgna2V5 dmFsdWUnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMCByb3cKKyBwZ19zdGF0X2dldF94YWN0X3R1 cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorKDEgcm93KQorCistLSBSZS1l bmFibGUgZXhwcmVzc2lvbiBjaGVja3MuCitBTFRFUiBUQUJMRSBrZXl2YWx1ZSBTRVQgKGV4cHJl c3Npb25fY2hlY2tzID0gdHJ1ZSk7CitTRUxFQ1QgcmVsb3B0aW9ucyBGUk9NIHBnX2NsYXNzIFdI RVJFIHJlbG5hbWUgPSAna2V5dmFsdWUnOworICAgICAgICByZWxvcHRpb25zICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisge2V4cHJlc3Npb25fY2hlY2tzPXRydWV9CisoMSBy b3cpCisKKy0tIFRoZSBpbmRleGVkIGF0dHJpYnV0ZSAibmFtZSIgd2l0aCB2YWx1ZSAiam9obiIg aXMgdW5jaGFuZ2VkLCBleHBlY3QgYSBIT1QgdXBkYXRlLgordXBkYXRlIGtleXZhbHVlIHNldCBp bmZvPSd7Im5hbWUiOiAiam9obiIsICJkYXRhIjogInNvbWUgb3RoZXIgZGF0YSJ9JyB3aGVyZSBp ZD0xOworc2VsZWN0IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdrZXl2YWx1 ZSc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIHJvdworIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVz X2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIFRoZSBmb2xs b3dpbmcgdXBkYXRlIGNoYW5nZXMgdGhlIGluZGV4ZWQgYXR0cmlidXRlICJuYW1lIiwgdGhpcyBz aG91bGQgbm90IGJlIGEgSE9UIHVwZGF0ZS4KK3VwZGF0ZSBrZXl2YWx1ZSBzZXQgaW5mbz0neyJu YW1lIjogInNtaXRoIiwgImRhdGEiOiAic29tZSBvdGhlciBkYXRhIn0nIHdoZXJlIGlkPTE7Citz ZWxlY3QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2tleXZhbHVlJzo6cmVn Y2xhc3MpOyAtLSBleHBlY3Q6IDEgbm8gbmV3IEhPVCB1cGRhdGVzCisgcGdfc3RhdF9nZXRfeGFj dF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworLS0g Tm93LCB0aGlzIHVwZGF0ZSBkb2VzIG5vdCBjaGFuZ2UgdGhlIGluZGV4ZWQgYXR0cmlidXRlICJu YW1lIiBmcm9tICJzbWl0aCIsIHRoaXMgc2hvdWxkIGJlIEhPVC4KK3VwZGF0ZSBrZXl2YWx1ZSBz ZXQgaW5mbz0neyJuYW1lIjogInNtaXRoIiwgImRhdGEiOiAic29tZSBtb3JlIGRhdGEifScgd2hl cmUgaWQ9MTsKK3NlbGVjdCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgna2V5 dmFsdWUnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMiByb3dzIG5vdworIHBnX3N0YXRfZ2V0X3hh Y3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCisoMSByb3cpCisKK2Ry b3AgdGFibGUga2V5dmFsdWU7CistLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLQorLS0gVGhpcyB0YWJsZSBp cyB0aGUgc2FtZSBhcyB0aGUgcHJldmlvdXMgb25lIGJ1dCBpdCBoYXMgYSB0aGlyZCBpbmRleC4g IFRoZQorLS0gaW5kZXggJ2NvbGluZGV4JyBpc24ndCBhbiBleHByZXNzaW9uIGluZGV4LCBpdCBp bmRleGVzIHRoZSBlbnRpcmUgdmFsdWUKKy0tIGluIHRoZSBpbmZvIGNvbHVtbi4gIFRoZXJlIGFy ZSBzdGlsbCBvbmx5IHR3byBpbmRleGVkIGF0dHJpYnV0ZXMgZm9yIHRoaXMKKy0tIHJlbGF0aW9u LCB0aGUgc2FtZSB0d28gYXMgYmVmb3JlLiAgVGhlIHByZXNlbmNlIG9mIGFuIGluZGV4IG9uIHRo ZSBlbnRpcmUKKy0tIHZhbHVlIG9mIHRoZSBpbmZvIGNvbHVtbiBzaG91bGQgcHJldmVudCBIT1Qg dXBkYXRlcyBmb3IgYW55IHVwZGF0ZXMgdG8gYW55CistLSBwb3J0aW9uIG9mIEpTT05CIGNvbnRl bnQgaW4gdGhhdCBjb2x1bW4uCitjcmVhdGUgdGFibGUga2V5dmFsdWUoaWQgaW50ZWdlciBwcmlt YXJ5IGtleSwgaW5mbyBqc29uYik7CitjcmVhdGUgaW5kZXggbmFtZWluZGV4IG9uIGtleXZhbHVl KChpbmZvLT4+J25hbWUnKSk7CitjcmVhdGUgaW5kZXggY29saW5kZXggb24ga2V5dmFsdWUoaW5m byk7CitpbnNlcnQgaW50byBrZXl2YWx1ZSB2YWx1ZXMgKDEsICd7Im5hbWUiOiAiam9obiIsICJk YXRhIjogInNvbWUgZGF0YSJ9Jyk7CistLSBUaGlzIHVwZGF0ZSBkb2Vzbid0IGNoYW5nZSB0aGUg dmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaW5kZXgsIGJ1dCBpdCBkb2VzCistLSBjaGFuZ2UgdGhl IGNvbnRlbnQgb2YgdGhlIGluZm8gY29sdW1uIGFuZCBzbyBzaG91bGQgbm90IGJlIEhPVCBiZWNh dXNlIHRoZQorLS0gaW5kZXhlZCB2YWx1ZSBjaGFuZ2VkIGFzIGEgcmVzdWx0IG9mIHRoZSB1cGRh dGUuCit1cGRhdGUga2V5dmFsdWUgc2V0IGluZm89J3sibmFtZSI6ICJqb2huIiwgImRhdGEiOiAi c29tZSBvdGhlciBkYXRhIn0nIHdoZXJlIGlkPTE7CitzZWxlY3QgcGdfc3RhdF9nZXRfeGFjdF90 dXBsZXNfaG90X3VwZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDAgcm93 cworIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAwCisoMSByb3cpCisKK2Ryb3AgdGFibGUga2V5dmFsdWU7CistLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LQorLS0gVGhlIHRhYmxlIGhhcyBvbmUgY29sdW1uIGRvY3MgYW5kIHR3byBpbmRleGVzLiAgVGhl eSBhcmUgYm90aCBleHByZXNzaW9uCistLSBpbmRleGVzIHJlZmVyZW5jaW5nIHRoZSBzYW1lIGNv bHVtbiBhdHRyaWJ1dGUgKGRvY3MpIGJ1dCBvbmUgaXMgYSBwYXJ0aWFsCistLSBpbmRleC4KK0NS RUFURSBUQUJMRSBleCAoZG9jcyBKU09OQikgV0lUSCAoZmlsbGZhY3RvciA9IDYwKTsKK0lOU0VS VCBJTlRPIGV4IChkb2NzKSBWQUxVRVMgKCd7ImEiOiAwLCAiYiI6IDB9Jyk7CitJTlNFUlQgSU5U TyBleCAoZG9jcykgU0VMRUNUIGpzb25iX2J1aWxkX29iamVjdCgnYicsIG4pIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEwMCwgMTAwMDApIGFzIG47CitDUkVBVEUgSU5ERVggaWR4X2V4X2EgT04gZXgg KChkb2NzLT4+J2EnKSk7CitDUkVBVEUgSU5ERVggaWR4X2V4X2IgT04gZXggKChkb2NzLT4+J2In KSkgV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID4gOTsKKy0tIFdlJ3JlIHVzaW5nIEJUUkVF IGluZGV4ZXMgYW5kIGZvciB0aGlzIHRlc3Qgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB0aGV5 IHJlbWFpbgorLS0gaW4gc3luYyB3aXRoIGNoYW5nZXMgdG8gb3VyIHJlbGF0aW9uLiAgRm9yY2Ug dGhlIGNob2ljZSBvZiBpbmRleCBzY2FucyBiZWxvdyBzbworLS0gdGhhdCB3ZSBrbm93IHdlJ3Jl IGNoZWNraW5nIHRoZSBpbmRleCdzIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB2YWx1ZXMgc2hvdWxk IGJlCistLSBpbiB0aGUgaW5kZXggb3Igbm90LgorU0VUIFNFU1NJT04gZW5hYmxlX3NlcXNjYW4g PSBPRkY7CitTRVQgU0VTU0lPTiBlbmFibGVfYml0bWFwc2NhbiA9IE9GRjsKKy0tIExlYXZlICdh JyB1bmNoYW5nZWQgYnV0IG1vZGlmeSAnYicgdG8gYSB2YWx1ZSBvdXRzaWRlIG9mIHRoZSBpbmRl eCBwcmVkaWNhdGUuCistLSBUaGlzIHNob3VsZCBiZSBhIEhPVCB1cGRhdGUgYmVjYXVzZSBuZWl0 aGVyIGluZGV4IGlzIGNoYW5nZWQuCitVUERBVEUgZXggU0VUIGRvY3MgPSBqc29uYl9idWlsZF9v YmplY3QoJ2EnLCAwLCAnYicsIDEpIFdIRVJFIChkb2NzLT4+J2EnKTo6bnVtZXJpYyA9IDA7CitT RUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3Mp OyAtLSBleHBlY3Q6IDEgcm93CisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworLS0gTGV0J3MgY2hlY2sgdG8gbWFrZSBz dXJlIHRoYXQgdGhlIGluZGV4IGRvZXMgbm90IGNvbnRhaW4gYSB2YWx1ZSBmb3IgJ2InCitFWFBM QUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZXggV0hFUkUgKGRvY3MtPj4nYicpOjpudW1l cmljID4gOSBBTkQgKGRvY3MtPj4nYicpOjpudW1lcmljIDwgMTAwOworICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg SW5kZXggU2NhbiB1c2luZyBpZHhfZXhfYiBvbiBleAorICAgRmlsdGVyOiAoKChkb2NzIC0+PiAn Yic6OnRleHQpKTo6bnVtZXJpYyA8ICcxMDAnOjpudW1lcmljKQorKDIgcm93cykKKworU0VMRUNU ICogRlJPTSBleCBXSEVSRSAoZG9jcy0+PidiJyk6Om51bWVyaWMgPiA5IEFORCAoZG9jcy0+Pidi Jyk6Om51bWVyaWMgPCAxMDA7CisgZG9jcyAKKy0tLS0tLQorKDAgcm93cykKKworLS0gTGVhdmUg J2EnIHVuY2hhbmdlZCBidXQgbW9kaWZ5ICdiJyB0byBhIHZhbHVlIHdpdGhpbiB0aGUgaW5kZXgg cHJlZGljYXRlLgorLS0gVGhpcyByZXByZXNlbnRzIGEgY2hhbmdlIGZvciBmaWVsZCAnYicgZnJv bSB1bmluZGV4ZWQgdG8gaW5kZXhlZCBhbmQgc28KKy0tIHRoaXMgc2hvdWxkIG5vdCB0YWtlIHRo ZSBIT1QgcGF0aC4KK1VQREFURSBleCBTRVQgZG9jcyA9IGpzb25iX2J1aWxkX29iamVjdCgnYScs IDAsICdiJywgMTApIFdIRVJFIChkb2NzLT4+J2EnKTo6bnVtZXJpYyA9IDA7CitTRUxFQ1QgcGdf c3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBl Y3Q6IDEgbm8gbmV3IEhPVCB1cGRhdGVzCisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3Vw ZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworLS0gTGV0J3MgY2hlY2sgdG8g bWFrZSBzdXJlIHRoYXQgdGhlIGluZGV4IGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgJ2InCitF WFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZXggV0hFUkUgKGRvY3MtPj4nYicpOjpu dW1lcmljID4gOSBBTkQgKGRvY3MtPj4nYicpOjpudW1lcmljIDwgMTAwOworICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgSW5kZXggU2NhbiB1c2luZyBpZHhfZXhfYiBvbiBleAorICAgRmlsdGVyOiAoKChkb2NzIC0+ PiAnYic6OnRleHQpKTo6bnVtZXJpYyA8ICcxMDAnOjpudW1lcmljKQorKDIgcm93cykKKworU0VM RUNUICogRlJPTSBleCBXSEVSRSAoZG9jcy0+PidiJyk6Om51bWVyaWMgPiA5IEFORCAoZG9jcy0+ PidiJyk6Om51bWVyaWMgPCAxMDA7CisgICAgICAgZG9jcyAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tCisgeyJhIjogMCwgImIiOiAxMH0KKygxIHJvdykKKworLS0gVGhpcyB1cGRhdGUgbW9k aWZpZXMgdGhlIHZhbHVlIG9mICdhJywgYW4gaW5kZXhlZCBmaWVsZCwgc28gaXQgYWxzbyBjYW5u b3QKKy0tIGJlIGEgSE9UIHVwZGF0ZS4KK1VQREFURSBleCBTRVQgZG9jcyA9IGpzb25iX2J1aWxk X29iamVjdCgnYScsIDEsICdiJywgMTApIFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA9IDEw OworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6OnJlZ2Ns YXNzKTsgLS0gZXhwZWN0OiAxIG5vIG5ldyBIT1QgdXBkYXRlcworIHBnX3N0YXRfZ2V0X3hhY3Rf dHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIFRo aXMgdXBkYXRlIGNoYW5nZXMgYm90aCAnYScgYW5kICdiJyB0byBuZXcgdmFsdWVzIHRoYXQgcmVx dWlyZSBpbmRleCB1cGRhdGVzLAorLS0gdGhpcyBjYW5ub3QgdXNlIHRoZSBIT1QgcGF0aC4KK1VQ REFURSBleCBTRVQgZG9jcyA9IGpzb25iX2J1aWxkX29iamVjdCgnYScsIDIsICdiJywgMTIpIFdI RVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA9IDEwOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3Rf dHVwbGVzX2hvdF91cGRhdGVkKCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIG5vIG5ldyBI T1QgdXBkYXRlcworIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIExldCdzIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0 IHRoZSBpbmRleCBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9mICdiJworRVhQTEFJTiAoQ09TVFMg T0ZGKSBTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA+IDkgQU5E IChkb2NzLT4+J2InKTo6bnVtZXJpYyA8IDEwMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4g dXNpbmcgaWR4X2V4X2Igb24gZXgKKyAgIEZpbHRlcjogKCgoZG9jcyAtPj4gJ2InOjp0ZXh0KSk6 Om51bWVyaWMgPCAnMTAwJzo6bnVtZXJpYykKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gZXgg V0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID4gOSBBTkQgKGRvY3MtPj4nYicpOjpudW1lcmlj IDwgMTAwOworICAgICAgIGRvY3MgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsiYSI6 IDIsICJiIjogMTJ9CisoMSByb3cpCisKKy0tIFRoaXMgdXBkYXRlIGNoYW5nZXMgJ2InIHRvIGEg dmFsdWUgb3V0c2lkZSBpdHMgcHJlZGljYXRlIHJlcXVpcmluZyB0aGF0CistLSB3ZSByZW1vdmUg aXQgZnJvbSB0aGUgaW5kZXguICBUaGF0J3MgYSB0cmFuc2l0aW9uIHRoYXQgY2FuJ3QgYmUgZG9u ZQorLS0gZHVyaW5nIGEgSE9UIHVwZGF0ZS4KK1VQREFURSBleCBTRVQgZG9jcyA9IGpzb25iX2J1 aWxkX29iamVjdCgnYScsIDIsICdiJywgMSkgV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID0g MTI7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVn Y2xhc3MpOyAtLSBleHBlY3Q6IDEgbm8gbmV3IEhPVCB1cGRhdGVzCisgcGdfc3RhdF9nZXRfeGFj dF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworLS0g TGV0J3MgY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGluZGV4IG5vIGxvbmdlciBjb250YWlu cyB0aGUgdmFsdWUgb2YgJ2InCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZXgg V0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID4gOSBBTkQgKGRvY3MtPj4nYicpOjpudW1lcmlj IDwgMTAwOworICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBpZHhfZXhfYiBvbiBleAor ICAgRmlsdGVyOiAoKChkb2NzIC0+PiAnYic6OnRleHQpKTo6bnVtZXJpYyA8ICcxMDAnOjpudW1l cmljKQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBleCBXSEVSRSAoZG9jcy0+PidiJyk6Om51 bWVyaWMgPiA5IEFORCAoZG9jcy0+PidiJyk6Om51bWVyaWMgPCAxMDA7CisgZG9jcyAKKy0tLS0t LQorKDAgcm93cykKKworLS0gRGlzYWJsZSBleHByZXNzaW9uIGNoZWNrcy4KK0FMVEVSIFRBQkxF IGV4IFNFVCAoZXhwcmVzc2lvbl9jaGVja3MgPSBmYWxzZSk7CitTRUxFQ1QgcmVsb3B0aW9ucyBG Uk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAnZXgnOworICAgICAgICAgICAgICAgcmVsb3B0 aW9ucyAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisge2ZpbGxmYWN0b3I9NjAsZXhwcmVzc2lvbl9jaGVja3M9ZmFsc2V9CisoMSByb3cp CisKKy0tIFRoaXMgdXBkYXRlIGNoYW5nZXMgJ2InIHRvIGEgdmFsdWUgd2l0aGluIGl0cyBwcmVk aWNhdGUganVzdCBsaWtlIGl0CistLSBwcmV2aW91cyB2YWx1ZSwgd2hpY2ggd291bGQgYWxsb3cg Zm9yIGEgSE9UIHVwZGF0ZSBidXQgd2l0aCBleHByZXNzaW9uCistLSBjaGVja3MgZGlzYWJsZWQg d2UgY2FuJ3QgZGV0ZXJtaW5lIHRoYXQgc28gdGhpcyBzaG91bGQgbm90IGJlIGEgSE9UIHVwZGF0 ZS4KK1VQREFURSBleCBTRVQgZG9jcyA9IGpzb25iX2J1aWxkX29iamVjdCgnYScsIDIsICdiJywg MikgV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID0gMTsKK1NFTEVDVCBwZ19zdGF0X2dldF94 YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSBubyBu ZXcgSE9UIHVwZGF0ZXMKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMQorKDEgcm93KQorCistLSBMZXQncyBtYWtlIHN1cmUgd2UncmUgcmVj b3JkaW5nIEhPVCB1cGRhdGVzIGZvciBvdXIgJ2V4JyByZWxhdGlvbiBwcm9wZXJseSBpbiB0aGUg c3lzdGVtCistLSB0YWJsZSBwZ19zdGF0X3VzZXJfdGFibGVzLiAgTm90ZSB0aGF0IHN0YXRpc3Rp Y3MgYXJlIHN0b3JlZCB3aXRoaW4gYSB0cmFuc2FjdGlvbiBjb250ZXh0CistLSBmaXJzdCAoeGFj dCkgYW5kIHRoZW4gbGF0ZXIgaW50byB0aGUgZ2xvYmFsIHN0YXRpc3RpY3MgZm9yIGEgcmVsYXRp b24sIHNvIGZpcnN0IHdlIG5lZWQKKy0tIHRvIGVuc3VyZSBwZW5kaW5nIHN0YXRzIGFyZSBmbHVz aGVkLgorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2Vf bmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NF TEVDVAorICAgIGMucmVsbmFtZSBBUyB0YWJsZV9uYW1lLAorICAgIC0tIFRyYW5zYWN0aW9uIHN0 YXRpc3RpY3MKKyAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKGMub2lkKSBBUyB4 YWN0X3VwZGF0ZXMsCisgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoYy5v aWQpIEFTIHhhY3RfaG90X3VwZGF0ZXMsCisgICAgUk9VTkQoKAorICAgICAgICBwZ19zdGF0X2dl dF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChjLm9pZCk6OmZsb2F0IC8KKyAgICAgICAgTlVMTElG KHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQoYy5vaWQpLCAwKSAqIDEwMAorICAgICk6 Om51bWVyaWMsIDIpIEFTIHhhY3RfaG90X3VwZGF0ZV9wZXJjZW50YWdlLAorICAgIC0tIEN1bXVs YXRpdmUgc3RhdGlzdGljcworICAgIHMubl90dXBfdXBkIEFTIHRvdGFsX3VwZGF0ZXMsCisgICAg cy5uX3R1cF9ob3RfdXBkIEFTIGhvdF91cGRhdGVzLAorICAgIFJPVU5EKCgKKyAgICAgICAgcy5u X3R1cF9ob3RfdXBkOjpmbG9hdCAvCisgICAgICAgIE5VTExJRihzLm5fdHVwX3VwZCwgMCkgKiAx MDAKKyAgICApOjpudW1lcmljLCAyKSBBUyB0b3RhbF9ob3RfdXBkYXRlX3BlcmNlbnRhZ2UKK0ZS T00gcGdfY2xhc3MgYworTEVGVCBKT0lOIHBnX3N0YXRfdXNlcl90YWJsZXMgcyBPTiBjLnJlbG5h bWUgPSBzLnJlbG5hbWUKK1dIRVJFIGMucmVsbmFtZSA9ICdleCcKK0FORCBjLnJlbG5hbWVzcGFj ZSA9ICdwdWJsaWMnOjpyZWduYW1lc3BhY2U7CisgdGFibGVfbmFtZSB8IHhhY3RfdXBkYXRlcyB8 IHhhY3RfaG90X3VwZGF0ZXMgfCB4YWN0X2hvdF91cGRhdGVfcGVyY2VudGFnZSB8IHRvdGFsX3Vw ZGF0ZXMgfCBob3RfdXBkYXRlcyB8IHRvdGFsX2hvdF91cGRhdGVfcGVyY2VudGFnZSAKKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIGV4ICAgICAgICAgfCAgICAgICAgICAgIDAgfCAgICAgICAgICAg ICAgICAwIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICA2IHwgICAg ICAgICAgIDEgfCAgICAgICAgICAgICAgICAgICAgICAgMTYuNjcKKygxIHJvdykKKworLS0gZXhw ZWN0OiA1IHhhY3QgdXBkYXRlcyB3aXRoIDEgeGFjdCBob3QgdXBkYXRlIGFuZCBubyBjdW11bGF0 aXZlIHVwZGF0ZXMgYXMgeWV0CitTRVQgU0VTU0lPTiBlbmFibGVfc2Vxc2NhbiA9IE9OOworU0VU IFNFU1NJT04gZW5hYmxlX2JpdG1hcHNjYW4gPSBPTjsKK0RST1AgVEFCTEUgZXg7CistLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLQorLS0gVGhpcyB0YWJsZSBoYXMgYSBzaW5nbGUgY29sdW1uICdlbWFpbCcg YW5kIGEgdW5pcXVlIGNvbnN0cmFpbnQgb24gaXQgdGhhdAorLS0gc2hvdWxkIHByZWNsdWRlIEhP VCB1cGRhdGVzLgorQ1JFQVRFIFRBQkxFIHVzZXJzICgKKyAgICB1c2VyX2lkIHNlcmlhbCBwcmlt YXJ5IGtleSwKKyAgICBuYW1lIFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwKKyAgICBlbWFpbCBWQVJD SEFSKDI1NSkgTk9UIE5VTEwsCisgICAgRVhDTFVERSBVU0lORyBidHJlZSAobG93ZXIoZW1haWwp IFdJVEggPSkKKyk7CistLSBBZGQgc29tZSBkYXRhIHRvIHRoZSB0YWJsZSBhbmQgdGhlbiB1cGRh dGUgaXQgaW4gd2F5cyB0aGF0IHNob3VsZCBhbmQgc2hvdWxkCistLSBub3QgYmUgSE9UIHVwZGF0 ZXMuCitJTlNFUlQgSU5UTyB1c2VycyAobmFtZSwgZW1haWwpIFZBTFVFUworKCd1c2VyMScsICd1 c2VyMUBleGFtcGxlLmNvbScpLAorKCd1c2VyMicsICd1c2VyMkBleGFtcGxlLmNvbScpLAorKCd0 YWtlbicsICd0YWtlbkBFWEFNUExFLmNvbScpLAorKCd5b3UnLCAneW91QGRvbWFpbi5jb20nKSwK KygndGFrZW4nLCAndGFrZW5AZG9tYWluLmNvbScpOworLS0gU2hvdWxkIGZhaWwgYmVjYXVzZSBv ZiB0aGUgdW5pcXVlIGNvbnN0cmFpbnQgb24gdGhlIGVtYWlsIGNvbHVtbi4KK1VQREFURSB1c2Vy cyBTRVQgZW1haWwgPSAndXNlcjFAZXhhbXBsZS5jb20nIFdIRVJFIGVtYWlsID0gJ3VzZXIyQGV4 YW1wbGUuY29tJzsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1 c2lvbiBjb25zdHJhaW50ICJ1c2Vyc19sb3dlcl9leGNsIgorREVUQUlMOiAgS2V5IChsb3dlcihl bWFpbDo6dGV4dCkpPSh1c2VyMUBleGFtcGxlLmNvbSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcg a2V5IChsb3dlcihlbWFpbDo6dGV4dCkpPSh1c2VyMUBleGFtcGxlLmNvbSkuCitTRUxFQ1QgcGdf c3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ3VzZXJzJzo6cmVnY2xhc3MpOyAtLSBl eHBlY3Q6IDAgbm8gbmV3IEhPVCB1cGRhdGVzCisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90 X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKygxIHJvdykKKworLS0gU2hvdWxkIHN1Y2Nl ZWQgYmVjYXVzZSB0aGUgZW1haWwgY29sdW1uIGlzIG5vdCBiZWluZyB1cGRhdGVkIGFuZCBzaG91 bGQgZ28gSE9ULgorVVBEQVRFIHVzZXJzIFNFVCBuYW1lID0gJ2ZvbycgV0hFUkUgZW1haWwgPSAn dXNlcjFAZXhhbXBsZS5jb20nOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91 cGRhdGVkKCd1c2Vycyc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIGEgc2luZ2xlIG5ldyBIT1Qg dXBkYXRlCisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDEKKygxIHJvdykKKworLS0gQ3JlYXRlIGEgcGFydGlhbCBpbmRleCBvbiB0aGUgZW1h aWwgY29sdW1uLCB1cGRhdGVzCitDUkVBVEUgSU5ERVggaWR4X3VzZXJzX2VtYWlsX25vX2V4YW1w bGUgT04gdXNlcnMgKGxvd2VyKGVtYWlsKSkgV0hFUkUgbG93ZXIoZW1haWwpIExJS0UgJyVAZXhh bXBsZS5jb20lJzsKKy0tIEFuIHVwZGF0ZSB0aGF0IGNoYW5nZXMgdGhlIGVtYWlsIGNvbHVtbiBi dXQgbm90IHRoZSBpbmRleGVkIHBvcnRpb24gb2YgaXQgYW5kIGZhbGxzIG91dHNpZGUgdGhlIGNv bnN0cmFpbnQuCistLSBTaG91bGRuJ3QgYmUgYSBIT1QgdXBkYXRlIGJlY2F1c2Ugb2YgdGhlIGV4 Y2x1c2lvbiBjb25zdHJhaW50LgorVVBEQVRFIHVzZXJzIFNFVCBlbWFpbCA9ICd5b3UrMkBkb21h aW4uY29tJyBXSEVSRSBuYW1lID0gJ3lvdSc7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBs ZXNfaG90X3VwZGF0ZWQoJ3VzZXJzJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgbm8gbmV3IEhP VCB1cGRhdGVzCisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDEKKygxIHJvdykKKworLS0gQW4gdXBkYXRlIHRoYXQgY2hhbmdlcyB0aGUgZW1h aWwgY29sdW1uIGJ1dCBub3QgdGhlIGluZGV4ZWQgcG9ydGlvbiBvZiBpdCBhbmQgZmFsbHMgd2l0 aGluIHRoZSBjb25zdHJhaW50LgorLS0gQWdhaW4sIHNob3VsZCBmYWlsIGNvbnN0cmFpbnQgYW5k IGZhaWwgdG8gYmUgYSBIT1QgdXBkYXRlLgorVVBEQVRFIHVzZXJzIFNFVCBlbWFpbCA9ICd0YWtl bkBkb21haW4uY29tJyBXSEVSRSBuYW1lID0gJ3lvdSc7CitFUlJPUjogIGNvbmZsaWN0aW5nIGtl eSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAidXNlcnNfbG93ZXJfZXhjbCIK K0RFVEFJTDogIEtleSAobG93ZXIoZW1haWw6OnRleHQpKT0odGFrZW5AZG9tYWluLmNvbSkgY29u ZmxpY3RzIHdpdGggZXhpc3Rpbmcga2V5IChsb3dlcihlbWFpbDo6dGV4dCkpPSh0YWtlbkBkb21h aW4uY29tKS4KK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgndXNl cnMnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSBubyBuZXcgSE9UIHVwZGF0ZXMKKyBwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93 KQorCitEUk9QIFRBQkxFIHVzZXJzOworLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0KKy0tIEFub3RoZXIg dGVzdCBvZiBjb25zdHJhaW50cyBzcG9pbGluZyBIT1QgdXBkYXRlcywgdGhpcyB0aW1lIHdpdGgg YSByYW5nZS4KK0NSRUFURSBUQUJMRSBldmVudHMgKAorICAgIGlkIHNlcmlhbCBwcmltYXJ5IGtl eSwKKyAgICBuYW1lIFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwKKyAgICBldmVudF90aW1lIHRzdHpy YW5nZSwKKyAgICBjb25zdHJhaW50IG5vX3NjcmVlbmluZ190aW1lX292ZXJsYXAgZXhjbHVkZSB1 c2luZyBnaXN0ICgKKyAgICAgICAgZXZlbnRfdGltZSBXSVRIICYmCisgICAgKQorKTsKKy0tIEFk ZCB0d28gbm9uLW92ZXJsYXBwaW5nIGV2ZW50cy4KK0lOU0VSVCBJTlRPIGV2ZW50cyAoaWQsIGV2 ZW50X3RpbWUsIG5hbWUpCitWQUxVRVMKKyAgICAoMSwgJ1siMjAyMy0wMS0wMSAxOTowMDowMCIs ICIyMDIzLTAxLTAxIDIwOjQ1OjAwIl0nLCAnZXZlbnQxJyksCisgICAgKDIsICdbIjIwMjMtMDEt MDEgMjE6MDA6MDAiLCAiMjAyMy0wMS0wMSAyMTo0NTowMCJdJywgJ2V2ZW50MicpOworLS0gVXBk YXRlIHRoZSBmaXJzdCBldmVudCB0byBvdmVybGFwIHdpdGggdGhlIHNlY29uZCwgc2hvdWxkIGZh aWwgdGhlIGNvbnN0cmFpbnQgYW5kIG5vdCBiZSBIT1QuCitVUERBVEUgZXZlbnRzIFNFVCBldmVu dF90aW1lID0gJ1siMjAyMy0wMS0wMSAyMDowMDowMCIsICIyMDIzLTAxLTAxIDIxOjQ1OjAwIl0n IFdIRVJFIGlkID0gMTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4 Y2x1c2lvbiBjb25zdHJhaW50ICJub19zY3JlZW5pbmdfdGltZV9vdmVybGFwIgorREVUQUlMOiAg S2V5IChldmVudF90aW1lKT0oWyJTdW4gSmFuIDAxIDIwOjAwOjAwIDIwMjMgUFNUIiwiU3VuIEph biAwMSAyMTo0NTowMCAyMDIzIFBTVCJdKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGV2 ZW50X3RpbWUpPShbIlN1biBKYW4gMDEgMjE6MDA6MDAgMjAyMyBQU1QiLCJTdW4gSmFuIDAxIDIx OjQ1OjAwIDIwMjMgUFNUIl0pLgorU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91 cGRhdGVkKCdldmVudHMnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMCBubyBuZXcgSE9UIHVwZGF0 ZXMKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMAorKDEgcm93KQorCistLSBVcGRhdGUgdGhlIGZpcnN0IGV2ZW50IHRvIG5vdCBvdmVybGFw IHdpdGggdGhlIHNlY29uZCwgYWdhaW4gbm90IEhPVCBkdWUgdG8gdGhlIGNvbnN0cmFpbnQuCitV UERBVEUgZXZlbnRzIFNFVCBldmVudF90aW1lID0gJ1siMjAyMy0wMS0wMSAyMjowMDowMCIsICIy MDIzLTAxLTAxIDIyOjQ1OjAwIl0nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2dldF94 YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXZlbnRzJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDAg bm8gbmV3IEhPVCB1cGRhdGVzCisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDAKKygxIHJvdykKKworLS0gVXBkYXRlIHRoZSBmaXJzdCBldmVu dCB0byBub3Qgb3ZlcmxhcCB3aXRoIHRoZSBzZWNvbmQsIHRoaXMgdGltZSB3ZSdyZSBIT1QgYmVj YXVzZSB3ZSBkb24ndCBvdmVybGFwIHdpdGggdGhlIGNvbnN0cmFpbnQuCitVUERBVEUgZXZlbnRz IFNFVCBuYW1lID0gJ25ldyBuYW1lIGhlcmUnIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXZlbnRzJzo6cmVnY2xhc3MpOyAtLSBleHBl Y3Q6IDEgb25lIG5ldyBIT1QgdXBkYXRlCisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3Vw ZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworRFJPUCBUQUJMRSBldmVudHM7 CistLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLQorLS0gQSB0ZXN0IHRvIGVuc3VyZSB0aGF0IG9ubHkgbW9k aWZpZWQgc3VtbWFyaXppbmcgaW5kZXhlcyBhcmUgdXBkYXRlZCwgbm90CistLSBhbGwgb2YgdGhl bS4KK0NSRUFURSBUQUJMRSBleCAoaWQgU0VSSUFMIHByaW1hcnkga2V5LCBhdHQxIEpTT05CLCBh dHQyIHRleHQsIGF0dDMgdGV4dCwgYXR0NCB0ZXh0KSBXSVRIIChmaWxsZmFjdG9yID0gNjApOwor Q1JFQVRFIElOREVYIGV4X2V4cHIxX2lkeCBPTiBleCBVU0lORyBidHJlZSgoYXR0MS0+J2RhdGEn KSk7CitDUkVBVEUgSU5ERVggZXhfc3VtcjFfaWR4IE9OIGV4IFVTSU5HIEJSSU4oYXR0Mik7CitD UkVBVEUgSU5ERVggZXhfZXhwcjJfaWR4IE9OIGV4IFVTSU5HIGJ0cmVlKChhdHQxLT4nYScpKTsK K0NSRUFURSBJTkRFWCBleF9leHByM19pZHggT04gZXggVVNJTkcgYnRyZWUoKGF0dDEtPidiJykp OworQ1JFQVRFIElOREVYIGV4X2V4cHI0X2lkeCBPTiBleCBVU0lORyBidHJlZSgoYXR0MS0+J2Mn KSk7CitDUkVBVEUgSU5ERVggZXhfc3VtcjJfaWR4IE9OIGV4IFVTSU5HIEJSSU4oYXR0Myk7CitD UkVBVEUgSU5ERVggZXhfc3VtcjNfaWR4IE9OIGV4IFVTSU5HIEJSSU4oYXR0NCk7CitDUkVBVEUg SU5ERVggZXhfZXhwcjVfaWR4IE9OIGV4IFVTSU5HIGJ0cmVlKChhdHQxLT4nZCcpKTsKK0lOU0VS VCBJTlRPIGV4IChhdHQxLCBhdHQyKSBWQUxVRVMgKCd7ImRhdGEiOiBbXX0nOjpqc29uLCAnbm90 aGluZyBzcGVjaWFsJyk7CitTRUxFQ1QgKiBGUk9NIGV4OworIGlkIHwgICAgIGF0dDEgICAgIHwg ICAgICBhdHQyICAgICAgIHwgYXR0MyB8IGF0dDQgCistLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0KKyAgMSB8IHsiZGF0YSI6IFtdfSB8IG5vdGhpbmcg c3BlY2lhbCB8ICAgICAgfCAKKygxIHJvdykKKworLS0gVXBkYXRlIGF0dDIgYW5kIGF0dDQgYm90 aCBhcmUgQlJJTi9zdW1tYXJpemluZyBpbmRleGVzLCB0aGlzIHNob3VsZCBiZSBhIEhPVCB1cGRh dGUgYW5kCistLSBvbmx5IHVwZGF0ZSB0d28gb2YgdGhlIHRocmVlIHN1bW1hcml6aW5nIGluZGV4 ZXMuCitVUERBVEUgZXggU0VUIGF0dDIgPSAnc3BlY2lhbCBpbmRlZWQnLCBhdHQ0ID0gJ3doYXRl dmVyJzsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpy ZWdjbGFzcyk7IC0tIGV4cGVjdDogMSBvbmUgbmV3IEhPVCB1cGRhdGUKKyBwZ19zdGF0X2dldF94 YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCitT RUxFQ1QgKiBGUk9NIGV4OworIGlkIHwgICAgIGF0dDEgICAgIHwgICAgICBhdHQyICAgICAgfCBh dHQzIHwgICBhdHQ0ICAgCistLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tKy0tLS0tLS0tLS0KKyAgMSB8IHsiZGF0YSI6IFtdfSB8IHNwZWNpYWwgaW5kZWVkIHwgICAg ICB8IHdoYXRldmVyCisoMSByb3cpCisKKy0tIFVwZGF0ZSBhdHQxIGFuZCBhdHQyLCBvbmx5IG9u ZSBpcyBCUklOL3N1bW1hcml6aW5nLCB0aGlzIHNob3VsZCBOT1QgYmUgYSBIT1QgdXBkYXRlLgor VVBEQVRFIGV4IFNFVCBhdHQxID0gYXR0MSB8fCAneyJkYXRhIjogImhvd2R5In0nLCBhdHQyID0g J3NwZWNpYWwsIHNvIHNwZWNpYWwnOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hv dF91cGRhdGVkKCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIG5vIG5ldyBIT1QgdXBkYXRl cworIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAxCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gZXg7CisgaWQgfCAgICAgICBhdHQxICAgICAg ICB8ICAgICAgICBhdHQyICAgICAgICAgfCBhdHQzIHwgICBhdHQ0ICAgCistLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tCisgIDEg fCB7ImRhdGEiOiAiaG93ZHkifSB8IHNwZWNpYWwsIHNvIHNwZWNpYWwgfCAgICAgIHwgd2hhdGV2 ZXIKKygxIHJvdykKKworLS0gVXBkYXRlIGF0dDIsIGF0dDMsIGFuZCBhdHQ0IGFsbCBhcmUgQlJJ Ti9zdW1tYXJpemluZyBpbmRleGVzLCB0aGlzIHNob3VsZCBiZSBhIEhPVCB1cGRhdGUKKy0tIGFu ZCB5ZXQgc3RpbGwgdXBkYXRlIGFsbCB0aHJlZSBzdW1tYXJpemluZyBpbmRleGVzLgorVVBEQVRF IGV4IFNFVCBhdHQyID0gJ2EnLCBhdHQzID0gJ2InLCBhdHQ0ID0gJ2MnOworU0VMRUNUIHBnX3N0 YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0 OiAyIHdpdGggb25lIG5ldyBIT1QgdXBkYXRlCisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90 X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBl eDsKKyBpZCB8ICAgICAgIGF0dDEgICAgICAgIHwgYXR0MiB8IGF0dDMgfCBhdHQ0IAorLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0tCisgIDEgfCB7ImRhdGEiOiAi aG93ZHkifSB8IGEgICAgfCBiICAgIHwgYworKDEgcm93KQorCistLSBVcGRhdGUgYXR0MSwgYXR0 MiwgYW5kIGF0dDMgYWxsIG1vZGlmaWVkIHZhbHVlcyBhcmUgQlJJTi9zdW1tYXJpemluZyBpbmRl eGVzLCB0aGlzIHNob3VsZCBiZSBhIEhPVCB1cGRhdGUKKy0tIGFuZCB5ZXQgc3RpbGwgdXBkYXRl IGFsbCB0aHJlZSBzdW1tYXJpemluZyBpbmRleGVzLgorVVBEQVRFIGV4IFNFVCBhdHQxID0gJ3si ZGF0YSI6ICJob3dkeSJ9JywgYXR0MiA9ICdkJywgYXR0MyA9ICdlJzsKK1NFTEVDVCBwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDog MyB3aXRoIG9uZSBuZXcgSE9UIHVwZGF0ZQorIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91 cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAzCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gZXg7 CisgaWQgfCAgICAgICBhdHQxICAgICAgICB8IGF0dDIgfCBhdHQzIHwgYXR0NCAKKy0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tLQorICAxIHwgeyJkYXRhIjogImhv d2R5In0gfCBkICAgIHwgZSAgICB8IGMKKygxIHJvdykKKworRFJPUCBUQUJMRSBleDsKKy0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tCistLSBBIHRlc3QgdG8gZW5zdXJlIHRoYXQgc3VtbWFyaXppbmcgaW5k ZXhlcyBhcmUgbm90IHVwZGF0ZWQgd2hlbiB0aGV5IGRvbid0CistLSBjaGFuZ2UsIGJ1dCBhcmUg dXBkYXRlZCB3aGVuIHRoZXkgZG8gd2hpbGUgbm90IHByZWZlbnQgSE9UIHVwZGF0ZXMuCitDUkVB VEUgVEFCTEUgZXggKGF0dDEgSlNPTkIsIGF0dDIgdGV4dCkgV0lUSCAoZmlsbGZhY3RvciA9IDYw KTsKK0NSRUFURSBJTkRFWCBleF9leHByMV9pZHggT04gZXggVVNJTkcgYnRyZWUoKGF0dDEtPidk YXRhJykpOworQ1JFQVRFIElOREVYIGV4X3N1bXIxX2lkeCBPTiBleCBVU0lORyBCUklOKGF0dDIp OworSU5TRVJUIElOVE8gZXggVkFMVUVTICgneyJkYXRhIjogW119JywgJ25vdGhpbmcgc3BlY2lh bCcpOworLS0gVXBkYXRlIHRoZSB1bmluZGV4ZWQgdmFsdWUgb2YgYXR0MSwgdGhpcyBzaG91bGQg YmUgYSBIT1QgdXBkYXRlIGFuZCBhbmQgc2hvdWxkCistLSB1cGRhdGUgdGhlIHN1bW1hcml6aW5n IGluZGV4LgorVVBEQVRFIGV4IFNFVCBhdHQxID0gYXR0MSB8fCAneyJzdGF0dXMiOiAic3RhbGVt YXRlIn0nOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6 OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIG9uZSBuZXcgSE9UIHVwZGF0ZQorIHBnX3N0YXRfZ2V0 X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisoMSByb3cpCisK Ky0tIFVwZGF0ZSB0aGUgaW5kZXhlZCB2YWx1ZSBvZiBhdHQyLCBhIHN1bW1hcml6ZWQgdmFsdWUs IHRoaXMgaXMgYSBzdW1tYXJpemVkCistLSBvbmx5IHVwZGF0ZSBhbmQgc2hvdWxkIHVzZSB0aGUg SE9UIHBhdGggd2hpbGUgc3RpbGwgdHJpZ2dlcmluZyBhbiB1cGRhdGUgdG8KKy0tIHRoZSBzdW1t YXJpemluZyBCUklOIGluZGV4LgorVVBEQVRFIGV4IFNFVCBhdHQyID0gJ3NwZWNpYWwgaW5kZWVk JzsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpyZWdj bGFzcyk7IC0tIGV4cGVjdDogMiBvbmUgbmV3IEhPVCB1cGRhdGUKKyBwZ19zdGF0X2dldF94YWN0 X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgorKDEgcm93KQorCistLSBV cGRhdGUgdG8gYXR0MSBkb2Vzbid0IGNoYW5nZSB0aGUgaW5kZXhlZCB2YWx1ZSB3aGlsZSB0aGUg dXBkYXRlIHRvIGF0dDIgZG9lcywKKy0tIHRoaXMgYWdhaW4gaXMgYSBzdW1tYXJpemVkIG9ubHkg dXBkYXRlIGFuZCBzaG91bGQgdXNlIHRoZSBIT1QgcGF0aCBhcyB3ZWxsIGFzCistLSB0cmlnZ2Vy IGFuIHVwZGF0ZSB0byB0aGUgQlJJTiBpbmRleC4KK1VQREFURSBleCBTRVQgYXR0MSA9IGF0dDEg fHwgJ3sic3RhdHVzIjogImNoZWNrbWF0ZSJ9JywgYXR0MiA9ICdzcGVjaWFsLCBzbyBzcGVjaWFs JzsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpyZWdj bGFzcyk7IC0tIGV4cGVjdDogMyBvbmUgbmV3IEhPVCB1cGRhdGUKKyBwZ19zdGF0X2dldF94YWN0 X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMworKDEgcm93KQorCistLSBU aGlzIHVwZGF0ZXMgYm90aCBpbmRleGVzLCB0aGUgZXhwcmVzc2lvbiBpbmRleCBvbiBhdHQxIGFu ZCB0aGUgc3VtbWFyaXppbmcKKy0tIGluZGV4IG9uIGF0dDIuICBUaGlzIHNob3VsZCBub3QgYmUg YSBIT1QgdXBkYXRlIGJlY2F1c2UgdGhlcmUgYXJlIG1vZGlmaWVkCistLSBpbmRleGVzIGFuZCBv bmx5IHNvbWUgYXJlIHN1bW1hcml6ZWQsIG5vdCBhbGwuICBUaGlzIHNob3VsZCBmb3JjZSBhbGwK Ky0tIGluZGV4ZXMgdG8gYmUgdXBkYXRlZC4KK1VQREFURSBleCBTRVQgYXR0MSA9IGF0dDEgfHwg J3siZGF0YSI6IFsxLDIsM119JywgYXR0MiA9ICdkbyB5b3Ugd2FudCB0byBwbGF5IGEgZ2FtZT8n OworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6OnJlZ2Ns YXNzKTsgLS0gZXhwZWN0OiA0IGJvdGggaW5kZXhlcyB1cGRhdGVkCisgcGdfc3RhdF9nZXRfeGFj dF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMKKygxIHJvdykKKworRFJP UCBUQUJMRSBleDsKKy0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tCistLSBUaGlzIHRlc3QgaXMgZm9yIGEg dGFibGUgd2l0aCBhIGN1c3RvbSB0eXBlIGFuZCBhIGN1c3RvbSBvcGVyYXRvcnMgb24KKy0tIHRo ZSBCVFJFRSBpbmRleC4gIFRoZSBxdWVzdGlvbiBpcywgd2hlbiBjb21wYXJpbmcgdmFsdWVzIGZv ciBlcXVhbGl0eQorLS0gdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBjaGFuZ2VzIG9uIHRoZSBp bmRleCBvciBub3QuLi4gc2hvdWxkbid0IHdlCistLSBiZSB1c2luZyB0aGUgY3VzdG9tIG9wZXJh dG9ycz8KKy0tIENyZWF0ZSBhIHR5cGUKK0NSRUFURSBUWVBFIG15X2N1c3RvbV90eXBlIEFTICh2 YWwgaW50KTsKKy0tIENvbXBhcmlzb24gZnVuY3Rpb25zIChyZXR1cm5zIGJvb2xlYW4pCitDUkVB VEUgRlVOQ1RJT04gbXlfY3VzdG9tX2x0KGEgbXlfY3VzdG9tX3R5cGUsIGIgbXlfY3VzdG9tX3R5 cGUpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAorQkVHSU4KKyAgICBSRVRVUk4gYS52YWwgPCBiLnZh bDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFIFNUUklDVDsKK0NSRUFURSBG VU5DVElPTiBteV9jdXN0b21fbGUoYSBteV9jdXN0b21fdHlwZSwgYiBteV9jdXN0b21fdHlwZSkg UkVUVVJOUyBib29sZWFuIEFTICQkCitCRUdJTgorICAgIFJFVFVSTiBhLnZhbCA8PSBiLnZhbDsK K0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFIFNUUklDVDsKK0NSRUFURSBGVU5D VElPTiBteV9jdXN0b21fZXEoYSBteV9jdXN0b21fdHlwZSwgYiBteV9jdXN0b21fdHlwZSkgUkVU VVJOUyBib29sZWFuIEFTICQkCitCRUdJTgorICAgIFJFVFVSTiBhLnZhbCA9IGIudmFsOworRU5E OworJCQgTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEUgU1RSSUNUOworQ1JFQVRFIEZVTkNUSU9O IG15X2N1c3RvbV9nZShhIG15X2N1c3RvbV90eXBlLCBiIG15X2N1c3RvbV90eXBlKSBSRVRVUk5T IGJvb2xlYW4gQVMgJCQKK0JFR0lOCisgICAgUkVUVVJOIGEudmFsID49IGIudmFsOworRU5EOwor JCQgTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEUgU1RSSUNUOworQ1JFQVRFIEZVTkNUSU9OIG15 X2N1c3RvbV9ndChhIG15X2N1c3RvbV90eXBlLCBiIG15X2N1c3RvbV90eXBlKSBSRVRVUk5TIGJv b2xlYW4gQVMgJCQKK0JFR0lOCisgICAgUkVUVVJOIGEudmFsID4gYi52YWw7CitFTkQ7CiskJCBM QU5HVUFHRSBwbHBnc3FsIElNTVVUQUJMRSBTVFJJQ1Q7CitDUkVBVEUgRlVOQ1RJT04gbXlfY3Vz dG9tX25lKGEgbXlfY3VzdG9tX3R5cGUsIGIgbXlfY3VzdG9tX3R5cGUpIFJFVFVSTlMgYm9vbGVh biBBUyAkJAorQkVHSU4KKyAgICBSRVRVUk4gYS52YWwgIT0gYi52YWw7CitFTkQ7CiskJCBMQU5H VUFHRSBwbHBnc3FsIElNTVVUQUJMRSBTVFJJQ1Q7CistLSBDb21wYXJpc29uIGZ1bmN0aW9uIChy ZXR1cm5zIC0xLCAwLCAxKQorQ1JFQVRFIEZVTkNUSU9OIG15X2N1c3RvbV9jbXAoYSBteV9jdXN0 b21fdHlwZSwgYiBteV9jdXN0b21fdHlwZSkgUkVUVVJOUyBpbnQgQVMgJCQKK0JFR0lOCisgICAg SUYgYS52YWwgPCBiLnZhbCBUSEVOCisgICAgICAgIFJFVFVSTiAtMTsKKyAgICBFTFNJRiBhLnZh bCA+IGIudmFsIFRIRU4KKyAgICAgICAgUkVUVVJOIDE7CisgICAgRUxTRQorICAgICAgICBSRVRV Uk4gMDsKKyAgICBFTkQgSUY7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJMRSBT VFJJQ1Q7CistLSBDcmVhdGUgdGhlIG9wZXJhdG9ycworQ1JFQVRFIE9QRVJBVE9SIDwgKAorICAg IExFRlRBUkcgPSBteV9jdXN0b21fdHlwZSwKKyAgICBSSUdIVEFSRyA9IG15X2N1c3RvbV90eXBl LAorICAgIFBST0NFRFVSRSA9IG15X2N1c3RvbV9sdCwKKyAgICBDT01NVVRBVE9SID0gPiwKKyAg ICBORUdBVE9SID0gPj0KKyk7CitDUkVBVEUgT1BFUkFUT1IgPD0gKAorICAgIExFRlRBUkcgPSBt eV9jdXN0b21fdHlwZSwKKyAgICBSSUdIVEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAgIFBST0NF RFVSRSA9IG15X2N1c3RvbV9sZSwKKyAgICBDT01NVVRBVE9SID0gPj0sCisgICAgTkVHQVRPUiA9 ID4KKyk7CitDUkVBVEUgT1BFUkFUT1IgPSAoCisgICAgTEVGVEFSRyA9IG15X2N1c3RvbV90eXBl LAorICAgIFJJR0hUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUFJPQ0VEVVJFID0gbXlfY3Vz dG9tX2VxLAorICAgIENPTU1VVEFUT1IgPSA9LAorICAgIE5FR0FUT1IgPSA8PgorKTsKK0NSRUFU RSBPUEVSQVRPUiA+PSAoCisgICAgTEVGVEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAgIFJJR0hU QVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUFJPQ0VEVVJFID0gbXlfY3VzdG9tX2dlLAorICAg IENPTU1VVEFUT1IgPSA8PSwKKyAgICBORUdBVE9SID0gPAorKTsKK0NSRUFURSBPUEVSQVRPUiA+ ICgKKyAgICBMRUZUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUklHSFRBUkcgPSBteV9jdXN0 b21fdHlwZSwKKyAgICBQUk9DRURVUkUgPSBteV9jdXN0b21fZ3QsCisgICAgQ09NTVVUQVRPUiA9 IDwsCisgICAgTkVHQVRPUiA9IDw9CispOworQ1JFQVRFIE9QRVJBVE9SIDw+ICgKKyAgICBMRUZU QVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUklHSFRBUkcgPSBteV9jdXN0b21fdHlwZSwKKyAg ICBQUk9DRURVUkUgPSBteV9jdXN0b21fbmUsCisgICAgQ09NTVVUQVRPUiA9IDw+LAorICAgIE5F R0FUT1IgPSA9CispOworLS0gQ3JlYXRlIHRoZSBvcGVyYXRvciBjbGFzcyAoaW5jbHVkaW5nIHRo ZSBzdXBwb3J0IGZ1bmN0aW9uKQorQ1JFQVRFIE9QRVJBVE9SIENMQVNTIG15X2N1c3RvbV9vcHMK KyAgICBERUZBVUxUIEZPUiBUWVBFIG15X2N1c3RvbV90eXBlIFVTSU5HIGJ0cmVlIEFTCisgICAg T1BFUkFUT1IgMSA8LAorICAgIE9QRVJBVE9SIDIgPD0sCisgICAgT1BFUkFUT1IgMyA9LAorICAg IE9QRVJBVE9SIDQgPj0sCisgICAgT1BFUkFUT1IgNSA+LAorICAgIEZVTkNUSU9OIDEgbXlfY3Vz dG9tX2NtcChteV9jdXN0b21fdHlwZSwgbXlfY3VzdG9tX3R5cGUpOworLS0gQ3JlYXRlIHRoZSB0 YWJsZQorQ1JFQVRFIFRBQkxFIG15X3RhYmxlICgKKyAgICBpZCBpbnQsCisgICAgY3VzdG9tX3Zh bCBteV9jdXN0b21fdHlwZQorKTsKKy0tIEluc2VydCBzb21lIGRhdGEKK0lOU0VSVCBJTlRPIG15 X3RhYmxlIChpZCwgY3VzdG9tX3ZhbCkgVkFMVUVTCisoMSwgUk9XKDMpOjpteV9jdXN0b21fdHlw ZSksCisoMiwgUk9XKDEpOjpteV9jdXN0b21fdHlwZSksCisoMywgUk9XKDQpOjpteV9jdXN0b21f dHlwZSksCisoNCwgUk9XKDIpOjpteV9jdXN0b21fdHlwZSk7CistLSBDcmVhdGUgYSBmdW5jdGlv biB0byB1c2Ugd2hlbiBpbmRleGluZworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWJzX3Zh bCh2YWwgbXlfY3VzdG9tX3R5cGUpIFJFVFVSTlMgaW50IEFTICQkCitCRUdJTgorICBSRVRVUk4g YWJzKHZhbC52YWwpOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEUgU1RSSUNU OworLS0gQ3JlYXRlIHRoZSBpbmRleAorQ1JFQVRFIElOREVYIGlkeF9jdXN0b21fdmFsX2FicyBP TiBteV90YWJsZSAoYWJzX3ZhbChjdXN0b21fdmFsKSk7CistLSBVcGRhdGUgMQorVVBEQVRFIG15 X3RhYmxlIFNFVCBjdXN0b21fdmFsID0gUk9XKDUpOjpteV9jdXN0b21fdHlwZSBXSEVSRSBpZCA9 IDE7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ215X3RhYmxl Jzo6cmVnY2xhc3MpOworIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSAyCitVUERBVEUgbXlfdGFibGUg U0VUIGN1c3RvbV92YWwgPSBST1coMCk6Om15X2N1c3RvbV90eXBlIFdIRVJFIGN1c3RvbV92YWwg PCBST1coMyk6Om15X2N1c3RvbV90eXBlOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVz X2hvdF91cGRhdGVkKCdteV90YWJsZSc6OnJlZ2NsYXNzKTsKKyBwZ19zdGF0X2dldF94YWN0X3R1 cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorKDEgcm93KQorCistLSBVcGRh dGUgMworVVBEQVRFIG15X3RhYmxlIFNFVCBjdXN0b21fdmFsID0gUk9XKDYpOjpteV9jdXN0b21f dHlwZSBXSEVSRSBpZCA9IDM7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3Vw ZGF0ZWQoJ215X3RhYmxlJzo6cmVnY2xhc3MpOworIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hv dF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSA0CitV UERBVEUgbXlfdGFibGUgU0VUIGlkID0gNSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9n ZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ215X3RhYmxlJzo6cmVnY2xhc3MpOworIHBnX3N0 YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisoMSBy b3cpCisKKy0tIFF1ZXJ5IHVzaW5nIHRoZSBpbmRleAorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxF Q1QgKiBGUk9NIG15X3RhYmxlIFdIRVJFIGFic192YWwoY3VzdG9tX3ZhbCkgPSA2OworICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIG15X3RhYmxlCisgICBGaWx0ZXI6IChhYnNfdmFs KGN1c3RvbV92YWwpID0gNikKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gbXlfdGFibGUgV0hF UkUgYWJzX3ZhbChjdXN0b21fdmFsKSA9IDY7CisgaWQgfCBjdXN0b21fdmFsIAorLS0tLSstLS0t LS0tLS0tLS0KKyAgMyB8ICg2KQorKDEgcm93KQorCistLSBDbGVhbiB1cAorRFJPUCBUQUJMRSBt eV90YWJsZSBDQVNDQURFOworRFJPUCBPUEVSQVRPUiBDTEFTUyBteV9jdXN0b21fb3BzIFVTSU5H IGJ0cmVlIENBU0NBREU7CitEUk9QIE9QRVJBVE9SIDwgKG15X2N1c3RvbV90eXBlLCBteV9jdXN0 b21fdHlwZSk7CitEUk9QIE9QRVJBVE9SIDw9IChteV9jdXN0b21fdHlwZSwgbXlfY3VzdG9tX3R5 cGUpOworRFJPUCBPUEVSQVRPUiA9IChteV9jdXN0b21fdHlwZSwgbXlfY3VzdG9tX3R5cGUpOwor RFJPUCBPUEVSQVRPUiA+PSAobXlfY3VzdG9tX3R5cGUsIG15X2N1c3RvbV90eXBlKTsKK0RST1Ag T1BFUkFUT1IgPiAobXlfY3VzdG9tX3R5cGUsIG15X2N1c3RvbV90eXBlKTsKK0RST1AgT1BFUkFU T1IgPD4gKG15X2N1c3RvbV90eXBlLCBteV9jdXN0b21fdHlwZSk7CitEUk9QIEZVTkNUSU9OIG15 X2N1c3RvbV9sdChteV9jdXN0b21fdHlwZSwgbXlfY3VzdG9tX3R5cGUpOworRFJPUCBGVU5DVElP TiBteV9jdXN0b21fbGUobXlfY3VzdG9tX3R5cGUsIG15X2N1c3RvbV90eXBlKTsKK0RST1AgRlVO Q1RJT04gbXlfY3VzdG9tX2VxKG15X2N1c3RvbV90eXBlLCBteV9jdXN0b21fdHlwZSk7CitEUk9Q IEZVTkNUSU9OIG15X2N1c3RvbV9nZShteV9jdXN0b21fdHlwZSwgbXlfY3VzdG9tX3R5cGUpOwor RFJPUCBGVU5DVElPTiBteV9jdXN0b21fZ3QobXlfY3VzdG9tX3R5cGUsIG15X2N1c3RvbV90eXBl KTsKK0RST1AgRlVOQ1RJT04gbXlfY3VzdG9tX25lKG15X2N1c3RvbV90eXBlLCBteV9jdXN0b21f dHlwZSk7CitEUk9QIEZVTkNUSU9OIG15X2N1c3RvbV9jbXAobXlfY3VzdG9tX3R5cGUsIG15X2N1 c3RvbV90eXBlKTsKK0RST1AgRlVOQ1RJT04gYWJzX3ZhbChteV9jdXN0b21fdHlwZSk7CitEUk9Q IFRZUEUgbXlfY3VzdG9tX3R5cGUgQ0FTQ0FERTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl CmluZGV4IDBhMzVmMmY4ZjZhLi5lMmZkNWZiNzRhNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlCkBAIC02OCw2ICs2OCwxMSBAQCB0ZXN0OiBzZWxlY3RfaW50byBzZWxlY3RfZGlzdGlu Y3Qgc2VsZWN0X2Rpc3RpbmN0X29uIHNlbGVjdF9pbXBsaWNpdCBzZWxlY3RfaGF2aQogIyAtLS0t LS0tLS0tCiB0ZXN0OiBicmluIGdpbiBnaXN0IHNwZ2lzdCBwcml2aWxlZ2VzIGluaXRfcHJpdnMg c2VjdXJpdHlfbGFiZWwgY29sbGF0ZSBtYXR2aWV3IGxvY2sgcmVwbGljYV9pZGVudGl0eSByb3dz ZWN1cml0eSBvYmplY3RfYWRkcmVzcyB0YWJsZXNhbXBsZSBncm91cGluZ3NldHMgZHJvcF9vcGVy YXRvciBwYXNzd29yZCBpZGVudGl0eSBnZW5lcmF0ZWRfc3RvcmVkIGpvaW5faGFzaAogCisjIC0t LS0tLS0tLS0KKyMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cworIyAtLS0tLS0tLS0t Cit0ZXN0OiBoZWFwX2hvdF91cGRhdGVzCisKICMgLS0tLS0tLS0tLQogIyBBZGRpdGlvbmFsIEJS SU4gdGVzdHMKICMgLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv aGVhcF9ob3RfdXBkYXRlcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9oZWFwX2hvdF91cGRh dGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTZlYzRmMmY5 NmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9oZWFwX2hvdF91cGRh dGVzLnNxbApAQCAtMCwwICsxLDQ4MSBAQAorLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0KKy0tIFRoaXMg dGFibGUgd2lsbCBoYXZlIHR3byBjb2x1bW5zIGFuZCB0d28gaW5kZXhlcywgb25lIG9uIHRoZSBw cmltYXJ5IGtleQorLS0gaWQgYW5kIG9uZSBvbiB0aGUgZXhwcmVzc2lvbiAoaW5mby0+PiduYW1l JykuICBUaGF0IG1lYW5zIHRoYXQgdGhlIGluZGV4ZWQKKy0tIGF0dHJpYnV0ZXMgYXJlICdpZCcg YW5kICdpbmZvJy4KK2NyZWF0ZSB0YWJsZSBrZXl2YWx1ZShpZCBpbnRlZ2VyIHByaW1hcnkga2V5 LCBpbmZvIGpzb25iKTsKK2NyZWF0ZSBpbmRleCBuYW1laW5kZXggb24ga2V5dmFsdWUoKGluZm8t Pj4nbmFtZScpKTsKK2luc2VydCBpbnRvIGtleXZhbHVlIHZhbHVlcyAoMSwgJ3sibmFtZSI6ICJq b2huIiwgImRhdGEiOiAic29tZSBkYXRhIn0nKTsKKworLS0gRGlzYWJsZSBleHByZXNzaW9uIGNo ZWNrcy4KK0FMVEVSIFRBQkxFIGtleXZhbHVlIFNFVCAoZXhwcmVzc2lvbl9jaGVja3MgPSBmYWxz ZSk7CitTRUxFQ1QgcmVsb3B0aW9ucyBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAna2V5 dmFsdWUnOworCistLSBXaGlsZSB0aGUgaW5kZXhlZCBhdHRyaWJ1dGUgIm5hbWUiIGlzIHVuY2hh bmdlZCB3ZSd2ZSBkaXNhYmxlZCBleHByZXNzaW9uCistLSBjaGVja3Mgc28gdGhpcyB1cGRhdGUg c2hvdWxkIG5vdCBnbyBIT1QgYXMgdGhlIHN5c3RlbSBjYW4ndCBkZXRlcm1pbmUgaWYKKy0tIHRo ZSBpbmRleGVkIGF0dHJpYnV0ZSBoYXMgY2hhbmdlZCB3aXRob3V0IGV2YWx1YXRpbmcgdGhlIGV4 cHJlc3Npb24uCit1cGRhdGUga2V5dmFsdWUgc2V0IGluZm89J3sibmFtZSI6ICJqb2huIiwgImRh dGEiOiAic29tZXRoaW5nIGVsc2UifScgd2hlcmUgaWQ9MTsKK3NlbGVjdCBwZ19zdGF0X2dldF94 YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgna2V5dmFsdWUnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDog MCByb3cKKworLS0gUmUtZW5hYmxlIGV4cHJlc3Npb24gY2hlY2tzLgorQUxURVIgVEFCTEUga2V5 dmFsdWUgU0VUIChleHByZXNzaW9uX2NoZWNrcyA9IHRydWUpOworU0VMRUNUIHJlbG9wdGlvbnMg RlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ2tleXZhbHVlJzsKKworLS0gVGhlIGluZGV4 ZWQgYXR0cmlidXRlICJuYW1lIiB3aXRoIHZhbHVlICJqb2huIiBpcyB1bmNoYW5nZWQsIGV4cGVj dCBhIEhPVCB1cGRhdGUuCit1cGRhdGUga2V5dmFsdWUgc2V0IGluZm89J3sibmFtZSI6ICJqb2hu IiwgImRhdGEiOiAic29tZSBvdGhlciBkYXRhIn0nIHdoZXJlIGlkPTE7CitzZWxlY3QgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xhc3MpOyAtLSBl eHBlY3Q6IDEgcm93CisKKy0tIFRoZSBmb2xsb3dpbmcgdXBkYXRlIGNoYW5nZXMgdGhlIGluZGV4 ZWQgYXR0cmlidXRlICJuYW1lIiwgdGhpcyBzaG91bGQgbm90IGJlIGEgSE9UIHVwZGF0ZS4KK3Vw ZGF0ZSBrZXl2YWx1ZSBzZXQgaW5mbz0neyJuYW1lIjogInNtaXRoIiwgImRhdGEiOiAic29tZSBv dGhlciBkYXRhIn0nIHdoZXJlIGlkPTE7CitzZWxlY3QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNf aG90X3VwZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgbm8gbmV3IEhP VCB1cGRhdGVzCisKKy0tIE5vdywgdGhpcyB1cGRhdGUgZG9lcyBub3QgY2hhbmdlIHRoZSBpbmRl eGVkIGF0dHJpYnV0ZSAibmFtZSIgZnJvbSAic21pdGgiLCB0aGlzIHNob3VsZCBiZSBIT1QuCit1 cGRhdGUga2V5dmFsdWUgc2V0IGluZm89J3sibmFtZSI6ICJzbWl0aCIsICJkYXRhIjogInNvbWUg bW9yZSBkYXRhIn0nIHdoZXJlIGlkPTE7CitzZWxlY3QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNf aG90X3VwZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDIgcm93cyBub3cK K2Ryb3AgdGFibGUga2V5dmFsdWU7CisKKworLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0KKy0tIFRoaXMg dGFibGUgaXMgdGhlIHNhbWUgYXMgdGhlIHByZXZpb3VzIG9uZSBidXQgaXQgaGFzIGEgdGhpcmQg aW5kZXguICBUaGUKKy0tIGluZGV4ICdjb2xpbmRleCcgaXNuJ3QgYW4gZXhwcmVzc2lvbiBpbmRl eCwgaXQgaW5kZXhlcyB0aGUgZW50aXJlIHZhbHVlCistLSBpbiB0aGUgaW5mbyBjb2x1bW4uICBU aGVyZSBhcmUgc3RpbGwgb25seSB0d28gaW5kZXhlZCBhdHRyaWJ1dGVzIGZvciB0aGlzCistLSBy ZWxhdGlvbiwgdGhlIHNhbWUgdHdvIGFzIGJlZm9yZS4gIFRoZSBwcmVzZW5jZSBvZiBhbiBpbmRl eCBvbiB0aGUgZW50aXJlCistLSB2YWx1ZSBvZiB0aGUgaW5mbyBjb2x1bW4gc2hvdWxkIHByZXZl bnQgSE9UIHVwZGF0ZXMgZm9yIGFueSB1cGRhdGVzIHRvIGFueQorLS0gcG9ydGlvbiBvZiBKU09O QiBjb250ZW50IGluIHRoYXQgY29sdW1uLgorY3JlYXRlIHRhYmxlIGtleXZhbHVlKGlkIGludGVn ZXIgcHJpbWFyeSBrZXksIGluZm8ganNvbmIpOworY3JlYXRlIGluZGV4IG5hbWVpbmRleCBvbiBr ZXl2YWx1ZSgoaW5mby0+PiduYW1lJykpOworY3JlYXRlIGluZGV4IGNvbGluZGV4IG9uIGtleXZh bHVlKGluZm8pOworaW5zZXJ0IGludG8ga2V5dmFsdWUgdmFsdWVzICgxLCAneyJuYW1lIjogImpv aG4iLCAiZGF0YSI6ICJzb21lIGRhdGEifScpOworCistLSBUaGlzIHVwZGF0ZSBkb2Vzbid0IGNo YW5nZSB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaW5kZXgsIGJ1dCBpdCBkb2VzCistLSBj aGFuZ2UgdGhlIGNvbnRlbnQgb2YgdGhlIGluZm8gY29sdW1uIGFuZCBzbyBzaG91bGQgbm90IGJl IEhPVCBiZWNhdXNlIHRoZQorLS0gaW5kZXhlZCB2YWx1ZSBjaGFuZ2VkIGFzIGEgcmVzdWx0IG9m IHRoZSB1cGRhdGUuCit1cGRhdGUga2V5dmFsdWUgc2V0IGluZm89J3sibmFtZSI6ICJqb2huIiwg ImRhdGEiOiAic29tZSBvdGhlciBkYXRhIn0nIHdoZXJlIGlkPTE7CitzZWxlY3QgcGdfc3RhdF9n ZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xhc3MpOyAtLSBleHBl Y3Q6IDAgcm93cworZHJvcCB0YWJsZSBrZXl2YWx1ZTsKKworLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0K Ky0tIFRoZSB0YWJsZSBoYXMgb25lIGNvbHVtbiBkb2NzIGFuZCB0d28gaW5kZXhlcy4gIFRoZXkg YXJlIGJvdGggZXhwcmVzc2lvbgorLS0gaW5kZXhlcyByZWZlcmVuY2luZyB0aGUgc2FtZSBjb2x1 bW4gYXR0cmlidXRlIChkb2NzKSBidXQgb25lIGlzIGEgcGFydGlhbAorLS0gaW5kZXguCitDUkVB VEUgVEFCTEUgZXggKGRvY3MgSlNPTkIpIFdJVEggKGZpbGxmYWN0b3IgPSA2MCk7CitJTlNFUlQg SU5UTyBleCAoZG9jcykgVkFMVUVTICgneyJhIjogMCwgImIiOiAwfScpOworSU5TRVJUIElOVE8g ZXggKGRvY3MpIFNFTEVDVCBqc29uYl9idWlsZF9vYmplY3QoJ2InLCBuKSBGUk9NIGdlbmVyYXRl X3NlcmllcygxMDAsIDEwMDAwKSBhcyBuOworQ1JFQVRFIElOREVYIGlkeF9leF9hIE9OIGV4ICgo ZG9jcy0+PidhJykpOworQ1JFQVRFIElOREVYIGlkeF9leF9iIE9OIGV4ICgoZG9jcy0+PidiJykp IFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA+IDk7CisKKy0tIFdlJ3JlIHVzaW5nIEJUUkVF IGluZGV4ZXMgYW5kIGZvciB0aGlzIHRlc3Qgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB0aGV5 IHJlbWFpbgorLS0gaW4gc3luYyB3aXRoIGNoYW5nZXMgdG8gb3VyIHJlbGF0aW9uLiAgRm9yY2Ug dGhlIGNob2ljZSBvZiBpbmRleCBzY2FucyBiZWxvdyBzbworLS0gdGhhdCB3ZSBrbm93IHdlJ3Jl IGNoZWNraW5nIHRoZSBpbmRleCdzIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB2YWx1ZXMgc2hvdWxk IGJlCistLSBpbiB0aGUgaW5kZXggb3Igbm90LgorU0VUIFNFU1NJT04gZW5hYmxlX3NlcXNjYW4g PSBPRkY7CitTRVQgU0VTU0lPTiBlbmFibGVfYml0bWFwc2NhbiA9IE9GRjsKKworLS0gTGVhdmUg J2EnIHVuY2hhbmdlZCBidXQgbW9kaWZ5ICdiJyB0byBhIHZhbHVlIG91dHNpZGUgb2YgdGhlIGlu ZGV4IHByZWRpY2F0ZS4KKy0tIFRoaXMgc2hvdWxkIGJlIGEgSE9UIHVwZGF0ZSBiZWNhdXNlIG5l aXRoZXIgaW5kZXggaXMgY2hhbmdlZC4KK1VQREFURSBleCBTRVQgZG9jcyA9IGpzb25iX2J1aWxk X29iamVjdCgnYScsIDAsICdiJywgMSkgV0hFUkUgKGRvY3MtPj4nYScpOjpudW1lcmljID0gMDsK K1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpyZWdjbGFz cyk7IC0tIGV4cGVjdDogMSByb3cKKy0tIExldCdzIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRo ZSBpbmRleCBkb2VzIG5vdCBjb250YWluIGEgdmFsdWUgZm9yICdiJworRVhQTEFJTiAoQ09TVFMg T0ZGKSBTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA+IDkgQU5E IChkb2NzLT4+J2InKTo6bnVtZXJpYyA8IDEwMDsKK1NFTEVDVCAqIEZST00gZXggV0hFUkUgKGRv Y3MtPj4nYicpOjpudW1lcmljID4gOSBBTkQgKGRvY3MtPj4nYicpOjpudW1lcmljIDwgMTAwOwor CistLSBMZWF2ZSAnYScgdW5jaGFuZ2VkIGJ1dCBtb2RpZnkgJ2InIHRvIGEgdmFsdWUgd2l0aGlu IHRoZSBpbmRleCBwcmVkaWNhdGUuCistLSBUaGlzIHJlcHJlc2VudHMgYSBjaGFuZ2UgZm9yIGZp ZWxkICdiJyBmcm9tIHVuaW5kZXhlZCB0byBpbmRleGVkIGFuZCBzbworLS0gdGhpcyBzaG91bGQg bm90IHRha2UgdGhlIEhPVCBwYXRoLgorVVBEQVRFIGV4IFNFVCBkb2NzID0ganNvbmJfYnVpbGRf b2JqZWN0KCdhJywgMCwgJ2InLCAxMCkgV0hFUkUgKGRvY3MtPj4nYScpOjpudW1lcmljID0gMDsK K1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpyZWdjbGFz cyk7IC0tIGV4cGVjdDogMSBubyBuZXcgSE9UIHVwZGF0ZXMKKy0tIExldCdzIGNoZWNrIHRvIG1h a2Ugc3VyZSB0aGF0IHRoZSBpbmRleCBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9mICdiJworRVhQ TEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChkb2NzLT4+J2InKTo6bnVt ZXJpYyA+IDkgQU5EIChkb2NzLT4+J2InKTo6bnVtZXJpYyA8IDEwMDsKK1NFTEVDVCAqIEZST00g ZXggV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID4gOSBBTkQgKGRvY3MtPj4nYicpOjpudW1l cmljIDwgMTAwOworCistLSBUaGlzIHVwZGF0ZSBtb2RpZmllcyB0aGUgdmFsdWUgb2YgJ2EnLCBh biBpbmRleGVkIGZpZWxkLCBzbyBpdCBhbHNvIGNhbm5vdAorLS0gYmUgYSBIT1QgdXBkYXRlLgor VVBEQVRFIGV4IFNFVCBkb2NzID0ganNvbmJfYnVpbGRfb2JqZWN0KCdhJywgMSwgJ2InLCAxMCkg V0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID0gMTA7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFj dF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgbm8gbmV3 IEhPVCB1cGRhdGVzCisKKy0tIFRoaXMgdXBkYXRlIGNoYW5nZXMgYm90aCAnYScgYW5kICdiJyB0 byBuZXcgdmFsdWVzIHRoYXQgcmVxdWlyZSBpbmRleCB1cGRhdGVzLAorLS0gdGhpcyBjYW5ub3Qg dXNlIHRoZSBIT1QgcGF0aC4KK1VQREFURSBleCBTRVQgZG9jcyA9IGpzb25iX2J1aWxkX29iamVj dCgnYScsIDIsICdiJywgMTIpIFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA9IDEwOworU0VM RUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6OnJlZ2NsYXNzKTsg LS0gZXhwZWN0OiAxIG5vIG5ldyBIT1QgdXBkYXRlcworLS0gTGV0J3MgY2hlY2sgdG8gbWFrZSBz dXJlIHRoYXQgdGhlIGluZGV4IGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgJ2InCitFWFBMQUlO IChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZXggV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmlj ID4gOSBBTkQgKGRvY3MtPj4nYicpOjpudW1lcmljIDwgMTAwOworU0VMRUNUICogRlJPTSBleCBX SEVSRSAoZG9jcy0+PidiJyk6Om51bWVyaWMgPiA5IEFORCAoZG9jcy0+PidiJyk6Om51bWVyaWMg PCAxMDA7CisKKy0tIFRoaXMgdXBkYXRlIGNoYW5nZXMgJ2InIHRvIGEgdmFsdWUgb3V0c2lkZSBp dHMgcHJlZGljYXRlIHJlcXVpcmluZyB0aGF0CistLSB3ZSByZW1vdmUgaXQgZnJvbSB0aGUgaW5k ZXguICBUaGF0J3MgYSB0cmFuc2l0aW9uIHRoYXQgY2FuJ3QgYmUgZG9uZQorLS0gZHVyaW5nIGEg SE9UIHVwZGF0ZS4KK1VQREFURSBleCBTRVQgZG9jcyA9IGpzb25iX2J1aWxkX29iamVjdCgnYScs IDIsICdiJywgMSkgV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID0gMTI7CitTRUxFQ1QgcGdf c3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBl Y3Q6IDEgbm8gbmV3IEhPVCB1cGRhdGVzCistLSBMZXQncyBjaGVjayB0byBtYWtlIHN1cmUgdGhh dCB0aGUgaW5kZXggbm8gbG9uZ2VyIGNvbnRhaW5zIHRoZSB2YWx1ZSBvZiAnYicKK0VYUExBSU4g KENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBleCBXSEVSRSAoZG9jcy0+PidiJyk6Om51bWVyaWMg PiA5IEFORCAoZG9jcy0+PidiJyk6Om51bWVyaWMgPCAxMDA7CitTRUxFQ1QgKiBGUk9NIGV4IFdI RVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChkb2NzLT4+J2InKTo6bnVtZXJpYyA8 IDEwMDsKKworLS0gRGlzYWJsZSBleHByZXNzaW9uIGNoZWNrcy4KK0FMVEVSIFRBQkxFIGV4IFNF VCAoZXhwcmVzc2lvbl9jaGVja3MgPSBmYWxzZSk7CitTRUxFQ1QgcmVsb3B0aW9ucyBGUk9NIHBn X2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAnZXgnOworCistLSBUaGlzIHVwZGF0ZSBjaGFuZ2VzICdi JyB0byBhIHZhbHVlIHdpdGhpbiBpdHMgcHJlZGljYXRlIGp1c3QgbGlrZSBpdAorLS0gcHJldmlv dXMgdmFsdWUsIHdoaWNoIHdvdWxkIGFsbG93IGZvciBhIEhPVCB1cGRhdGUgYnV0IHdpdGggZXhw cmVzc2lvbgorLS0gY2hlY2tzIGRpc2FibGVkIHdlIGNhbid0IGRldGVybWluZSB0aGF0IHNvIHRo aXMgc2hvdWxkIG5vdCBiZSBhIEhPVCB1cGRhdGUuCitVUERBVEUgZXggU0VUIGRvY3MgPSBqc29u Yl9idWlsZF9vYmplY3QoJ2EnLCAyLCAnYicsIDIpIFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJp YyA9IDE7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6 cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgbm8gbmV3IEhPVCB1cGRhdGVzCisKKworLS0gTGV0J3Mg bWFrZSBzdXJlIHdlJ3JlIHJlY29yZGluZyBIT1QgdXBkYXRlcyBmb3Igb3VyICdleCcgcmVsYXRp b24gcHJvcGVybHkgaW4gdGhlIHN5c3RlbQorLS0gdGFibGUgcGdfc3RhdF91c2VyX3RhYmxlcy4g IE5vdGUgdGhhdCBzdGF0aXN0aWNzIGFyZSBzdG9yZWQgd2l0aGluIGEgdHJhbnNhY3Rpb24gY29u dGV4dAorLS0gZmlyc3QgKHhhY3QpIGFuZCB0aGVuIGxhdGVyIGludG8gdGhlIGdsb2JhbCBzdGF0 aXN0aWNzIGZvciBhIHJlbGF0aW9uLCBzbyBmaXJzdCB3ZSBuZWVkCistLSB0byBlbnN1cmUgcGVu ZGluZyBzdGF0cyBhcmUgZmx1c2hlZC4KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KTsKK1NFTEVDVAorICAgIGMucmVsbmFtZSBBUyB0YWJsZV9uYW1lLAorICAgIC0tIFRyYW5zYWN0 aW9uIHN0YXRpc3RpY3MKKyAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKGMub2lk KSBBUyB4YWN0X3VwZGF0ZXMsCisgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0 ZWQoYy5vaWQpIEFTIHhhY3RfaG90X3VwZGF0ZXMsCisgICAgUk9VTkQoKAorICAgICAgICBwZ19z dGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChjLm9pZCk6OmZsb2F0IC8KKyAgICAgICAg TlVMTElGKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQoYy5vaWQpLCAwKSAqIDEwMAor ICAgICk6Om51bWVyaWMsIDIpIEFTIHhhY3RfaG90X3VwZGF0ZV9wZXJjZW50YWdlLAorICAgIC0t IEN1bXVsYXRpdmUgc3RhdGlzdGljcworICAgIHMubl90dXBfdXBkIEFTIHRvdGFsX3VwZGF0ZXMs CisgICAgcy5uX3R1cF9ob3RfdXBkIEFTIGhvdF91cGRhdGVzLAorICAgIFJPVU5EKCgKKyAgICAg ICAgcy5uX3R1cF9ob3RfdXBkOjpmbG9hdCAvCisgICAgICAgIE5VTExJRihzLm5fdHVwX3VwZCwg MCkgKiAxMDAKKyAgICApOjpudW1lcmljLCAyKSBBUyB0b3RhbF9ob3RfdXBkYXRlX3BlcmNlbnRh Z2UKK0ZST00gcGdfY2xhc3MgYworTEVGVCBKT0lOIHBnX3N0YXRfdXNlcl90YWJsZXMgcyBPTiBj LnJlbG5hbWUgPSBzLnJlbG5hbWUKK1dIRVJFIGMucmVsbmFtZSA9ICdleCcKK0FORCBjLnJlbG5h bWVzcGFjZSA9ICdwdWJsaWMnOjpyZWduYW1lc3BhY2U7CistLSBleHBlY3Q6IDUgeGFjdCB1cGRh dGVzIHdpdGggMSB4YWN0IGhvdCB1cGRhdGUgYW5kIG5vIGN1bXVsYXRpdmUgdXBkYXRlcyBhcyB5 ZXQKKworU0VUIFNFU1NJT04gZW5hYmxlX3NlcXNjYW4gPSBPTjsKK1NFVCBTRVNTSU9OIGVuYWJs ZV9iaXRtYXBzY2FuID0gT047CisKK0RST1AgVEFCTEUgZXg7CisKKy0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tCistLSBUaGlzIHRhYmxlIGhhcyBhIHNpbmdsZSBjb2x1bW4gJ2VtYWlsJyBhbmQgYSB1bmlx dWUgY29uc3RyYWludCBvbiBpdCB0aGF0CistLSBzaG91bGQgcHJlY2x1ZGUgSE9UIHVwZGF0ZXMu CitDUkVBVEUgVEFCTEUgdXNlcnMgKAorICAgIHVzZXJfaWQgc2VyaWFsIHByaW1hcnkga2V5LAor ICAgIG5hbWUgVkFSQ0hBUigyNTUpIE5PVCBOVUxMLAorICAgIGVtYWlsIFZBUkNIQVIoMjU1KSBO T1QgTlVMTCwKKyAgICBFWENMVURFIFVTSU5HIGJ0cmVlIChsb3dlcihlbWFpbCkgV0lUSCA9KQor KTsKKworLS0gQWRkIHNvbWUgZGF0YSB0byB0aGUgdGFibGUgYW5kIHRoZW4gdXBkYXRlIGl0IGlu IHdheXMgdGhhdCBzaG91bGQgYW5kIHNob3VsZAorLS0gbm90IGJlIEhPVCB1cGRhdGVzLgorSU5T RVJUIElOVE8gdXNlcnMgKG5hbWUsIGVtYWlsKSBWQUxVRVMKKygndXNlcjEnLCAndXNlcjFAZXhh bXBsZS5jb20nKSwKKygndXNlcjInLCAndXNlcjJAZXhhbXBsZS5jb20nKSwKKygndGFrZW4nLCAn dGFrZW5ARVhBTVBMRS5jb20nKSwKKygneW91JywgJ3lvdUBkb21haW4uY29tJyksCisoJ3Rha2Vu JywgJ3Rha2VuQGRvbWFpbi5jb20nKTsKKworLS0gU2hvdWxkIGZhaWwgYmVjYXVzZSBvZiB0aGUg dW5pcXVlIGNvbnN0cmFpbnQgb24gdGhlIGVtYWlsIGNvbHVtbi4KK1VQREFURSB1c2VycyBTRVQg ZW1haWwgPSAndXNlcjFAZXhhbXBsZS5jb20nIFdIRVJFIGVtYWlsID0gJ3VzZXIyQGV4YW1wbGUu Y29tJzsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgndXNlcnMn OjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMCBubyBuZXcgSE9UIHVwZGF0ZXMKKworLS0gU2hvdWxk IHN1Y2NlZWQgYmVjYXVzZSB0aGUgZW1haWwgY29sdW1uIGlzIG5vdCBiZWluZyB1cGRhdGVkIGFu ZCBzaG91bGQgZ28gSE9ULgorVVBEQVRFIHVzZXJzIFNFVCBuYW1lID0gJ2ZvbycgV0hFUkUgZW1h aWwgPSAndXNlcjFAZXhhbXBsZS5jb20nOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVz X2hvdF91cGRhdGVkKCd1c2Vycyc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIGEgc2luZ2xlIG5l dyBIT1QgdXBkYXRlCisKKy0tIENyZWF0ZSBhIHBhcnRpYWwgaW5kZXggb24gdGhlIGVtYWlsIGNv bHVtbiwgdXBkYXRlcworQ1JFQVRFIElOREVYIGlkeF91c2Vyc19lbWFpbF9ub19leGFtcGxlIE9O IHVzZXJzIChsb3dlcihlbWFpbCkpIFdIRVJFIGxvd2VyKGVtYWlsKSBMSUtFICclQGV4YW1wbGUu Y29tJSc7CisKKy0tIEFuIHVwZGF0ZSB0aGF0IGNoYW5nZXMgdGhlIGVtYWlsIGNvbHVtbiBidXQg bm90IHRoZSBpbmRleGVkIHBvcnRpb24gb2YgaXQgYW5kIGZhbGxzIG91dHNpZGUgdGhlIGNvbnN0 cmFpbnQuCistLSBTaG91bGRuJ3QgYmUgYSBIT1QgdXBkYXRlIGJlY2F1c2Ugb2YgdGhlIGV4Y2x1 c2lvbiBjb25zdHJhaW50LgorVVBEQVRFIHVzZXJzIFNFVCBlbWFpbCA9ICd5b3UrMkBkb21haW4u Y29tJyBXSEVSRSBuYW1lID0gJ3lvdSc7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNf aG90X3VwZGF0ZWQoJ3VzZXJzJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgbm8gbmV3IEhPVCB1 cGRhdGVzCisKKy0tIEFuIHVwZGF0ZSB0aGF0IGNoYW5nZXMgdGhlIGVtYWlsIGNvbHVtbiBidXQg bm90IHRoZSBpbmRleGVkIHBvcnRpb24gb2YgaXQgYW5kIGZhbGxzIHdpdGhpbiB0aGUgY29uc3Ry YWludC4KKy0tIEFnYWluLCBzaG91bGQgZmFpbCBjb25zdHJhaW50IGFuZCBmYWlsIHRvIGJlIGEg SE9UIHVwZGF0ZS4KK1VQREFURSB1c2VycyBTRVQgZW1haWwgPSAndGFrZW5AZG9tYWluLmNvbScg V0hFUkUgbmFtZSA9ICd5b3UnOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91 cGRhdGVkKCd1c2Vycyc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIG5vIG5ldyBIT1QgdXBkYXRl cworCitEUk9QIFRBQkxFIHVzZXJzOworCistLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLQorLS0gQW5vdGhl ciB0ZXN0IG9mIGNvbnN0cmFpbnRzIHNwb2lsaW5nIEhPVCB1cGRhdGVzLCB0aGlzIHRpbWUgd2l0 aCBhIHJhbmdlLgorQ1JFQVRFIFRBQkxFIGV2ZW50cyAoCisgICAgaWQgc2VyaWFsIHByaW1hcnkg a2V5LAorICAgIG5hbWUgVkFSQ0hBUigyNTUpIE5PVCBOVUxMLAorICAgIGV2ZW50X3RpbWUgdHN0 enJhbmdlLAorICAgIGNvbnN0cmFpbnQgbm9fc2NyZWVuaW5nX3RpbWVfb3ZlcmxhcCBleGNsdWRl IHVzaW5nIGdpc3QgKAorICAgICAgICBldmVudF90aW1lIFdJVEggJiYKKyAgICApCispOworCist LSBBZGQgdHdvIG5vbi1vdmVybGFwcGluZyBldmVudHMuCitJTlNFUlQgSU5UTyBldmVudHMgKGlk LCBldmVudF90aW1lLCBuYW1lKQorVkFMVUVTCisgICAgKDEsICdbIjIwMjMtMDEtMDEgMTk6MDA6 MDAiLCAiMjAyMy0wMS0wMSAyMDo0NTowMCJdJywgJ2V2ZW50MScpLAorICAgICgyLCAnWyIyMDIz LTAxLTAxIDIxOjAwOjAwIiwgIjIwMjMtMDEtMDEgMjE6NDU6MDAiXScsICdldmVudDInKTsKKwor LS0gVXBkYXRlIHRoZSBmaXJzdCBldmVudCB0byBvdmVybGFwIHdpdGggdGhlIHNlY29uZCwgc2hv dWxkIGZhaWwgdGhlIGNvbnN0cmFpbnQgYW5kIG5vdCBiZSBIT1QuCitVUERBVEUgZXZlbnRzIFNF VCBldmVudF90aW1lID0gJ1siMjAyMy0wMS0wMSAyMDowMDowMCIsICIyMDIzLTAxLTAxIDIxOjQ1 OjAwIl0nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3Rf dXBkYXRlZCgnZXZlbnRzJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDAgbm8gbmV3IEhPVCB1cGRh dGVzCisKKy0tIFVwZGF0ZSB0aGUgZmlyc3QgZXZlbnQgdG8gbm90IG92ZXJsYXAgd2l0aCB0aGUg c2Vjb25kLCBhZ2FpbiBub3QgSE9UIGR1ZSB0byB0aGUgY29uc3RyYWludC4KK1VQREFURSBldmVu dHMgU0VUIGV2ZW50X3RpbWUgPSAnWyIyMDIzLTAxLTAxIDIyOjAwOjAwIiwgIjIwMjMtMDEtMDEg MjI6NDU6MDAiXScgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVz X2hvdF91cGRhdGVkKCdldmVudHMnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMCBubyBuZXcgSE9U IHVwZGF0ZXMKKworLS0gVXBkYXRlIHRoZSBmaXJzdCBldmVudCB0byBub3Qgb3ZlcmxhcCB3aXRo IHRoZSBzZWNvbmQsIHRoaXMgdGltZSB3ZSdyZSBIT1QgYmVjYXVzZSB3ZSBkb24ndCBvdmVybGFw IHdpdGggdGhlIGNvbnN0cmFpbnQuCitVUERBVEUgZXZlbnRzIFNFVCBuYW1lID0gJ25ldyBuYW1l IGhlcmUnIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3Rf dXBkYXRlZCgnZXZlbnRzJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgb25lIG5ldyBIT1QgdXBk YXRlCisKK0RST1AgVEFCTEUgZXZlbnRzOworCistLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLQorLS0gQSB0 ZXN0IHRvIGVuc3VyZSB0aGF0IG9ubHkgbW9kaWZpZWQgc3VtbWFyaXppbmcgaW5kZXhlcyBhcmUg dXBkYXRlZCwgbm90CistLSBhbGwgb2YgdGhlbS4KK0NSRUFURSBUQUJMRSBleCAoaWQgU0VSSUFM IHByaW1hcnkga2V5LCBhdHQxIEpTT05CLCBhdHQyIHRleHQsIGF0dDMgdGV4dCwgYXR0NCB0ZXh0 KSBXSVRIIChmaWxsZmFjdG9yID0gNjApOworQ1JFQVRFIElOREVYIGV4X2V4cHIxX2lkeCBPTiBl eCBVU0lORyBidHJlZSgoYXR0MS0+J2RhdGEnKSk7CitDUkVBVEUgSU5ERVggZXhfc3VtcjFfaWR4 IE9OIGV4IFVTSU5HIEJSSU4oYXR0Mik7CitDUkVBVEUgSU5ERVggZXhfZXhwcjJfaWR4IE9OIGV4 IFVTSU5HIGJ0cmVlKChhdHQxLT4nYScpKTsKK0NSRUFURSBJTkRFWCBleF9leHByM19pZHggT04g ZXggVVNJTkcgYnRyZWUoKGF0dDEtPidiJykpOworQ1JFQVRFIElOREVYIGV4X2V4cHI0X2lkeCBP TiBleCBVU0lORyBidHJlZSgoYXR0MS0+J2MnKSk7CitDUkVBVEUgSU5ERVggZXhfc3VtcjJfaWR4 IE9OIGV4IFVTSU5HIEJSSU4oYXR0Myk7CitDUkVBVEUgSU5ERVggZXhfc3VtcjNfaWR4IE9OIGV4 IFVTSU5HIEJSSU4oYXR0NCk7CitDUkVBVEUgSU5ERVggZXhfZXhwcjVfaWR4IE9OIGV4IFVTSU5H IGJ0cmVlKChhdHQxLT4nZCcpKTsKK0lOU0VSVCBJTlRPIGV4IChhdHQxLCBhdHQyKSBWQUxVRVMg KCd7ImRhdGEiOiBbXX0nOjpqc29uLCAnbm90aGluZyBzcGVjaWFsJyk7CisKK1NFTEVDVCAqIEZS T00gZXg7CisKKy0tIFVwZGF0ZSBhdHQyIGFuZCBhdHQ0IGJvdGggYXJlIEJSSU4vc3VtbWFyaXpp bmcgaW5kZXhlcywgdGhpcyBzaG91bGQgYmUgYSBIT1QgdXBkYXRlIGFuZAorLS0gb25seSB1cGRh dGUgdHdvIG9mIHRoZSB0aHJlZSBzdW1tYXJpemluZyBpbmRleGVzLgorVVBEQVRFIGV4IFNFVCBh dHQyID0gJ3NwZWNpYWwgaW5kZWVkJywgYXR0NCA9ICd3aGF0ZXZlcic7CitTRUxFQ1QgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6 IDEgb25lIG5ldyBIT1QgdXBkYXRlCitTRUxFQ1QgKiBGUk9NIGV4OworCistLSBVcGRhdGUgYXR0 MSBhbmQgYXR0Miwgb25seSBvbmUgaXMgQlJJTi9zdW1tYXJpemluZywgdGhpcyBzaG91bGQgTk9U IGJlIGEgSE9UIHVwZGF0ZS4KK1VQREFURSBleCBTRVQgYXR0MSA9IGF0dDEgfHwgJ3siZGF0YSI6 ICJob3dkeSJ9JywgYXR0MiA9ICdzcGVjaWFsLCBzbyBzcGVjaWFsJzsKK1NFTEVDVCBwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDog MSBubyBuZXcgSE9UIHVwZGF0ZXMKK1NFTEVDVCAqIEZST00gZXg7CisKKy0tIFVwZGF0ZSBhdHQy LCBhdHQzLCBhbmQgYXR0NCBhbGwgYXJlIEJSSU4vc3VtbWFyaXppbmcgaW5kZXhlcywgdGhpcyBz aG91bGQgYmUgYSBIT1QgdXBkYXRlCistLSBhbmQgeWV0IHN0aWxsIHVwZGF0ZSBhbGwgdGhyZWUg c3VtbWFyaXppbmcgaW5kZXhlcy4KK1VQREFURSBleCBTRVQgYXR0MiA9ICdhJywgYXR0MyA9ICdi JywgYXR0NCA9ICdjJzsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRl ZCgnZXgnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMiB3aXRoIG9uZSBuZXcgSE9UIHVwZGF0ZQor U0VMRUNUICogRlJPTSBleDsKKworLS0gVXBkYXRlIGF0dDEsIGF0dDIsIGFuZCBhdHQzIGFsbCBt b2RpZmllZCB2YWx1ZXMgYXJlIEJSSU4vc3VtbWFyaXppbmcgaW5kZXhlcywgdGhpcyBzaG91bGQg YmUgYSBIT1QgdXBkYXRlCistLSBhbmQgeWV0IHN0aWxsIHVwZGF0ZSBhbGwgdGhyZWUgc3VtbWFy aXppbmcgaW5kZXhlcy4KK1VQREFURSBleCBTRVQgYXR0MSA9ICd7ImRhdGEiOiAiaG93ZHkifScs IGF0dDIgPSAnZCcsIGF0dDMgPSAnZSc7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNf aG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDMgd2l0aCBvbmUgbmV3IEhP VCB1cGRhdGUKK1NFTEVDVCAqIEZST00gZXg7CisKK0RST1AgVEFCTEUgZXg7CisKKy0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tCistLSBBIHRlc3QgdG8gZW5zdXJlIHRoYXQgc3VtbWFyaXppbmcgaW5kZXhl cyBhcmUgbm90IHVwZGF0ZWQgd2hlbiB0aGV5IGRvbid0CistLSBjaGFuZ2UsIGJ1dCBhcmUgdXBk YXRlZCB3aGVuIHRoZXkgZG8gd2hpbGUgbm90IHByZWZlbnQgSE9UIHVwZGF0ZXMuCitDUkVBVEUg VEFCTEUgZXggKGF0dDEgSlNPTkIsIGF0dDIgdGV4dCkgV0lUSCAoZmlsbGZhY3RvciA9IDYwKTsK K0NSRUFURSBJTkRFWCBleF9leHByMV9pZHggT04gZXggVVNJTkcgYnRyZWUoKGF0dDEtPidkYXRh JykpOworQ1JFQVRFIElOREVYIGV4X3N1bXIxX2lkeCBPTiBleCBVU0lORyBCUklOKGF0dDIpOwor SU5TRVJUIElOVE8gZXggVkFMVUVTICgneyJkYXRhIjogW119JywgJ25vdGhpbmcgc3BlY2lhbCcp OworCistLSBVcGRhdGUgdGhlIHVuaW5kZXhlZCB2YWx1ZSBvZiBhdHQxLCB0aGlzIHNob3VsZCBi ZSBhIEhPVCB1cGRhdGUgYW5kIGFuZCBzaG91bGQKKy0tIHVwZGF0ZSB0aGUgc3VtbWFyaXppbmcg aW5kZXguCitVUERBVEUgZXggU0VUIGF0dDEgPSBhdHQxIHx8ICd7InN0YXR1cyI6ICJzdGFsZW1h dGUifSc7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6 cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgb25lIG5ldyBIT1QgdXBkYXRlCisKKy0tIFVwZGF0ZSB0 aGUgaW5kZXhlZCB2YWx1ZSBvZiBhdHQyLCBhIHN1bW1hcml6ZWQgdmFsdWUsIHRoaXMgaXMgYSBz dW1tYXJpemVkCistLSBvbmx5IHVwZGF0ZSBhbmQgc2hvdWxkIHVzZSB0aGUgSE9UIHBhdGggd2hp bGUgc3RpbGwgdHJpZ2dlcmluZyBhbiB1cGRhdGUgdG8KKy0tIHRoZSBzdW1tYXJpemluZyBCUklO IGluZGV4LgorVVBEQVRFIGV4IFNFVCBhdHQyID0gJ3NwZWNpYWwgaW5kZWVkJzsKK1NFTEVDVCBw Z19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpyZWdjbGFzcyk7IC0tIGV4 cGVjdDogMiBvbmUgbmV3IEhPVCB1cGRhdGUKKworLS0gVXBkYXRlIHRvIGF0dDEgZG9lc24ndCBj aGFuZ2UgdGhlIGluZGV4ZWQgdmFsdWUgd2hpbGUgdGhlIHVwZGF0ZSB0byBhdHQyIGRvZXMsCist LSB0aGlzIGFnYWluIGlzIGEgc3VtbWFyaXplZCBvbmx5IHVwZGF0ZSBhbmQgc2hvdWxkIHVzZSB0 aGUgSE9UIHBhdGggYXMgd2VsbCBhcworLS0gdHJpZ2dlciBhbiB1cGRhdGUgdG8gdGhlIEJSSU4g aW5kZXguCitVUERBVEUgZXggU0VUIGF0dDEgPSBhdHQxIHx8ICd7InN0YXR1cyI6ICJjaGVja21h dGUifScsIGF0dDIgPSAnc3BlY2lhbCwgc28gc3BlY2lhbCc7CitTRUxFQ1QgcGdfc3RhdF9nZXRf eGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDMgb25l IG5ldyBIT1QgdXBkYXRlCisKKy0tIFRoaXMgdXBkYXRlcyBib3RoIGluZGV4ZXMsIHRoZSBleHBy ZXNzaW9uIGluZGV4IG9uIGF0dDEgYW5kIHRoZSBzdW1tYXJpemluZworLS0gaW5kZXggb24gYXR0 Mi4gIFRoaXMgc2hvdWxkIG5vdCBiZSBhIEhPVCB1cGRhdGUgYmVjYXVzZSB0aGVyZSBhcmUgbW9k aWZpZWQKKy0tIGluZGV4ZXMgYW5kIG9ubHkgc29tZSBhcmUgc3VtbWFyaXplZCwgbm90IGFsbC4g IFRoaXMgc2hvdWxkIGZvcmNlIGFsbAorLS0gaW5kZXhlcyB0byBiZSB1cGRhdGVkLgorVVBEQVRF IGV4IFNFVCBhdHQxID0gYXR0MSB8fCAneyJkYXRhIjogWzEsMiwzXX0nLCBhdHQyID0gJ2RvIHlv dSB3YW50IHRvIHBsYXkgYSBnYW1lPyc7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNf aG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDQgYm90aCBpbmRleGVzIHVw ZGF0ZWQKKworRFJPUCBUQUJMRSBleDsKKworLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0KKy0tIFRoaXMg dGVzdCBpcyBmb3IgYSB0YWJsZSB3aXRoIGEgY3VzdG9tIHR5cGUgYW5kIGEgY3VzdG9tIG9wZXJh dG9ycyBvbgorLS0gdGhlIEJUUkVFIGluZGV4LiAgVGhlIHF1ZXN0aW9uIGlzLCB3aGVuIGNvbXBh cmluZyB2YWx1ZXMgZm9yIGVxdWFsaXR5CistLSB0byBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGNo YW5nZXMgb24gdGhlIGluZGV4IG9yIG5vdC4uLiBzaG91bGRuJ3Qgd2UKKy0tIGJlIHVzaW5nIHRo ZSBjdXN0b20gb3BlcmF0b3JzPworCistLSBDcmVhdGUgYSB0eXBlCitDUkVBVEUgVFlQRSBteV9j dXN0b21fdHlwZSBBUyAodmFsIGludCk7CisKKy0tIENvbXBhcmlzb24gZnVuY3Rpb25zIChyZXR1 cm5zIGJvb2xlYW4pCitDUkVBVEUgRlVOQ1RJT04gbXlfY3VzdG9tX2x0KGEgbXlfY3VzdG9tX3R5 cGUsIGIgbXlfY3VzdG9tX3R5cGUpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAorQkVHSU4KKyAgICBS RVRVUk4gYS52YWwgPCBiLnZhbDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxF IFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIG15X2N1c3RvbV9sZShhIG15X2N1c3RvbV90eXBl LCBiIG15X2N1c3RvbV90eXBlKSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0JFR0lOCisgICAgUkVU VVJOIGEudmFsIDw9IGIudmFsOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEUg U1RSSUNUOworCitDUkVBVEUgRlVOQ1RJT04gbXlfY3VzdG9tX2VxKGEgbXlfY3VzdG9tX3R5cGUs IGIgbXlfY3VzdG9tX3R5cGUpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAorQkVHSU4KKyAgICBSRVRV Uk4gYS52YWwgPSBiLnZhbDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFIFNU UklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIG15X2N1c3RvbV9nZShhIG15X2N1c3RvbV90eXBlLCBi IG15X2N1c3RvbV90eXBlKSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0JFR0lOCisgICAgUkVUVVJO IGEudmFsID49IGIudmFsOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEUgU1RS SUNUOworCitDUkVBVEUgRlVOQ1RJT04gbXlfY3VzdG9tX2d0KGEgbXlfY3VzdG9tX3R5cGUsIGIg bXlfY3VzdG9tX3R5cGUpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAorQkVHSU4KKyAgICBSRVRVUk4g YS52YWwgPiBiLnZhbDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFIFNUUklD VDsKKworQ1JFQVRFIEZVTkNUSU9OIG15X2N1c3RvbV9uZShhIG15X2N1c3RvbV90eXBlLCBiIG15 X2N1c3RvbV90eXBlKSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0JFR0lOCisgICAgUkVUVVJOIGEu dmFsICE9IGIudmFsOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEUgU1RSSUNU OworCistLSBDb21wYXJpc29uIGZ1bmN0aW9uIChyZXR1cm5zIC0xLCAwLCAxKQorQ1JFQVRFIEZV TkNUSU9OIG15X2N1c3RvbV9jbXAoYSBteV9jdXN0b21fdHlwZSwgYiBteV9jdXN0b21fdHlwZSkg UkVUVVJOUyBpbnQgQVMgJCQKK0JFR0lOCisgICAgSUYgYS52YWwgPCBiLnZhbCBUSEVOCisgICAg ICAgIFJFVFVSTiAtMTsKKyAgICBFTFNJRiBhLnZhbCA+IGIudmFsIFRIRU4KKyAgICAgICAgUkVU VVJOIDE7CisgICAgRUxTRQorICAgICAgICBSRVRVUk4gMDsKKyAgICBFTkQgSUY7CitFTkQ7Cisk JCBMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJMRSBTVFJJQ1Q7CisKKy0tIENyZWF0ZSB0aGUgb3Bl cmF0b3JzCitDUkVBVEUgT1BFUkFUT1IgPCAoCisgICAgTEVGVEFSRyA9IG15X2N1c3RvbV90eXBl LAorICAgIFJJR0hUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUFJPQ0VEVVJFID0gbXlfY3Vz dG9tX2x0LAorICAgIENPTU1VVEFUT1IgPSA+LAorICAgIE5FR0FUT1IgPSA+PQorKTsKKworQ1JF QVRFIE9QRVJBVE9SIDw9ICgKKyAgICBMRUZUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUklH SFRBUkcgPSBteV9jdXN0b21fdHlwZSwKKyAgICBQUk9DRURVUkUgPSBteV9jdXN0b21fbGUsCisg ICAgQ09NTVVUQVRPUiA9ID49LAorICAgIE5FR0FUT1IgPSA+CispOworCitDUkVBVEUgT1BFUkFU T1IgPSAoCisgICAgTEVGVEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAgIFJJR0hUQVJHID0gbXlf Y3VzdG9tX3R5cGUsCisgICAgUFJPQ0VEVVJFID0gbXlfY3VzdG9tX2VxLAorICAgIENPTU1VVEFU T1IgPSA9LAorICAgIE5FR0FUT1IgPSA8PgorKTsKKworQ1JFQVRFIE9QRVJBVE9SID49ICgKKyAg ICBMRUZUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUklHSFRBUkcgPSBteV9jdXN0b21fdHlw ZSwKKyAgICBQUk9DRURVUkUgPSBteV9jdXN0b21fZ2UsCisgICAgQ09NTVVUQVRPUiA9IDw9LAor ICAgIE5FR0FUT1IgPSA8CispOworCitDUkVBVEUgT1BFUkFUT1IgPiAoCisgICAgTEVGVEFSRyA9 IG15X2N1c3RvbV90eXBlLAorICAgIFJJR0hUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUFJP Q0VEVVJFID0gbXlfY3VzdG9tX2d0LAorICAgIENPTU1VVEFUT1IgPSA8LAorICAgIE5FR0FUT1Ig PSA8PQorKTsKKworQ1JFQVRFIE9QRVJBVE9SIDw+ICgKKyAgICBMRUZUQVJHID0gbXlfY3VzdG9t X3R5cGUsCisgICAgUklHSFRBUkcgPSBteV9jdXN0b21fdHlwZSwKKyAgICBQUk9DRURVUkUgPSBt eV9jdXN0b21fbmUsCisgICAgQ09NTVVUQVRPUiA9IDw+LAorICAgIE5FR0FUT1IgPSA9CispOwor CistLSBDcmVhdGUgdGhlIG9wZXJhdG9yIGNsYXNzIChpbmNsdWRpbmcgdGhlIHN1cHBvcnQgZnVu Y3Rpb24pCitDUkVBVEUgT1BFUkFUT1IgQ0xBU1MgbXlfY3VzdG9tX29wcworICAgIERFRkFVTFQg Rk9SIFRZUEUgbXlfY3VzdG9tX3R5cGUgVVNJTkcgYnRyZWUgQVMKKyAgICBPUEVSQVRPUiAxIDws CisgICAgT1BFUkFUT1IgMiA8PSwKKyAgICBPUEVSQVRPUiAzID0sCisgICAgT1BFUkFUT1IgNCA+ PSwKKyAgICBPUEVSQVRPUiA1ID4sCisgICAgRlVOQ1RJT04gMSBteV9jdXN0b21fY21wKG15X2N1 c3RvbV90eXBlLCBteV9jdXN0b21fdHlwZSk7CisKKy0tIENyZWF0ZSB0aGUgdGFibGUKK0NSRUFU RSBUQUJMRSBteV90YWJsZSAoCisgICAgaWQgaW50LAorICAgIGN1c3RvbV92YWwgbXlfY3VzdG9t X3R5cGUKKyk7CisKKy0tIEluc2VydCBzb21lIGRhdGEKK0lOU0VSVCBJTlRPIG15X3RhYmxlIChp ZCwgY3VzdG9tX3ZhbCkgVkFMVUVTCisoMSwgUk9XKDMpOjpteV9jdXN0b21fdHlwZSksCisoMiwg Uk9XKDEpOjpteV9jdXN0b21fdHlwZSksCisoMywgUk9XKDQpOjpteV9jdXN0b21fdHlwZSksCiso NCwgUk9XKDIpOjpteV9jdXN0b21fdHlwZSk7CisKKy0tIENyZWF0ZSBhIGZ1bmN0aW9uIHRvIHVz ZSB3aGVuIGluZGV4aW5nCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBhYnNfdmFsKHZhbCBt eV9jdXN0b21fdHlwZSkgUkVUVVJOUyBpbnQgQVMgJCQKK0JFR0lOCisgIFJFVFVSTiBhYnModmFs LnZhbCk7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJMRSBTVFJJQ1Q7CisKKy0t IENyZWF0ZSB0aGUgaW5kZXgKK0NSRUFURSBJTkRFWCBpZHhfY3VzdG9tX3ZhbF9hYnMgT04gbXlf dGFibGUgKGFic192YWwoY3VzdG9tX3ZhbCkpOworCistLSBVcGRhdGUgMQorVVBEQVRFIG15X3Rh YmxlIFNFVCBjdXN0b21fdmFsID0gUk9XKDUpOjpteV9jdXN0b21fdHlwZSBXSEVSRSBpZCA9IDE7 CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ215X3RhYmxlJzo6 cmVnY2xhc3MpOworCistLSBVcGRhdGUgMgorVVBEQVRFIG15X3RhYmxlIFNFVCBjdXN0b21fdmFs ID0gUk9XKDApOjpteV9jdXN0b21fdHlwZSBXSEVSRSBjdXN0b21fdmFsIDwgUk9XKDMpOjpteV9j dXN0b21fdHlwZTsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgn bXlfdGFibGUnOjpyZWdjbGFzcyk7CisKKy0tIFVwZGF0ZSAzCitVUERBVEUgbXlfdGFibGUgU0VU IGN1c3RvbV92YWwgPSBST1coNik6Om15X2N1c3RvbV90eXBlIFdIRVJFIGlkID0gMzsKK1NFTEVD VCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnbXlfdGFibGUnOjpyZWdjbGFz cyk7CisKKy0tIFVwZGF0ZSA0CitVUERBVEUgbXlfdGFibGUgU0VUIGlkID0gNSBXSEVSRSBpZCA9 IDE7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ215X3RhYmxl Jzo6cmVnY2xhc3MpOworCistLSBRdWVyeSB1c2luZyB0aGUgaW5kZXgKK0VYUExBSU4gKENPU1RT IE9GRikgU0VMRUNUICogRlJPTSBteV90YWJsZSBXSEVSRSBhYnNfdmFsKGN1c3RvbV92YWwpID0g NjsKK1NFTEVDVCAqIEZST00gbXlfdGFibGUgV0hFUkUgYWJzX3ZhbChjdXN0b21fdmFsKSA9IDY7 CisKKy0tIENsZWFuIHVwCitEUk9QIFRBQkxFIG15X3RhYmxlIENBU0NBREU7CitEUk9QIE9QRVJB VE9SIENMQVNTIG15X2N1c3RvbV9vcHMgVVNJTkcgYnRyZWUgQ0FTQ0FERTsKK0RST1AgT1BFUkFU T1IgPCAobXlfY3VzdG9tX3R5cGUsIG15X2N1c3RvbV90eXBlKTsKK0RST1AgT1BFUkFUT1IgPD0g KG15X2N1c3RvbV90eXBlLCBteV9jdXN0b21fdHlwZSk7CitEUk9QIE9QRVJBVE9SID0gKG15X2N1 c3RvbV90eXBlLCBteV9jdXN0b21fdHlwZSk7CitEUk9QIE9QRVJBVE9SID49IChteV9jdXN0b21f dHlwZSwgbXlfY3VzdG9tX3R5cGUpOworRFJPUCBPUEVSQVRPUiA+IChteV9jdXN0b21fdHlwZSwg bXlfY3VzdG9tX3R5cGUpOworRFJPUCBPUEVSQVRPUiA8PiAobXlfY3VzdG9tX3R5cGUsIG15X2N1 c3RvbV90eXBlKTsKK0RST1AgRlVOQ1RJT04gbXlfY3VzdG9tX2x0KG15X2N1c3RvbV90eXBlLCBt eV9jdXN0b21fdHlwZSk7CitEUk9QIEZVTkNUSU9OIG15X2N1c3RvbV9sZShteV9jdXN0b21fdHlw ZSwgbXlfY3VzdG9tX3R5cGUpOworRFJPUCBGVU5DVElPTiBteV9jdXN0b21fZXEobXlfY3VzdG9t X3R5cGUsIG15X2N1c3RvbV90eXBlKTsKK0RST1AgRlVOQ1RJT04gbXlfY3VzdG9tX2dlKG15X2N1 c3RvbV90eXBlLCBteV9jdXN0b21fdHlwZSk7CitEUk9QIEZVTkNUSU9OIG15X2N1c3RvbV9ndCht eV9jdXN0b21fdHlwZSwgbXlfY3VzdG9tX3R5cGUpOworRFJPUCBGVU5DVElPTiBteV9jdXN0b21f bmUobXlfY3VzdG9tX3R5cGUsIG15X2N1c3RvbV90eXBlKTsKK0RST1AgRlVOQ1RJT04gbXlfY3Vz dG9tX2NtcChteV9jdXN0b21fdHlwZSwgbXlfY3VzdG9tX3R5cGUpOworRFJPUCBGVU5DVElPTiBh YnNfdmFsKG15X2N1c3RvbV90eXBlKTsKK0RST1AgVFlQRSBteV9jdXN0b21fdHlwZSBDQVNDQURF OwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCAzZmJmNWE0YzIxMi4uMGI2NTg3ZGJkNTYg MTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yOTM0LDYgKzI5MzQsNyBAQCBUU1ZlY3Rv clN0YXQKIFRTdGF0ZQogVFN0YXR1cwogVFN0b3JlU3RhdGUKK1VwZGF0ZUNvbnRleHQKIFRVX1Vw ZGF0ZUluZGV4ZXMKIFRYTkVudHJ5RmlsZQogVFlQQ0FURUdPUlkKQEAgLTMxMTgsNyArMzExOSw2 IEBAIFVuaXF1ZVN0YXRlCiBVbmxpc3RlblN0bXQKIFVucmVzb2x2ZWRUdXAKIFVucmVzb2x2ZWRU dXBEYXRhCi1VcGRhdGVDb250ZXh0CiBVcGRhdGVTdG10CiBVcGdyYWRlVGFzawogVXBncmFkZVRh c2tQcm9jZXNzQ0IKLS0gCjIuNDIuMAoK --_002_52AFF05507B2495E9312A5395E5282E6amazoncom_--