Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C3C61C43381 for ; Wed, 20 Mar 2019 06:48:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 74F152184D for ; Wed, 20 Mar 2019 06:48:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726362AbfCTGsh (ORCPT ); Wed, 20 Mar 2019 02:48:37 -0400 Received: from mga09.intel.com ([134.134.136.24]:60117 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726169AbfCTGsh (ORCPT ); Wed, 20 Mar 2019 02:48:37 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Mar 2019 23:48:32 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,248,1549958400"; d="scan'208";a="308712578" Received: from orsmsx106.amr.corp.intel.com ([10.22.225.133]) by orsmga005.jf.intel.com with ESMTP; 19 Mar 2019 23:48:32 -0700 Received: from orsmsx158.amr.corp.intel.com (10.22.240.20) by ORSMSX106.amr.corp.intel.com (10.22.225.133) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 19 Mar 2019 23:48:31 -0700 Received: from orsmsx103.amr.corp.intel.com ([169.254.5.129]) by ORSMSX158.amr.corp.intel.com ([169.254.10.91]) with mapi id 14.03.0415.000; Tue, 19 Mar 2019 23:48:31 -0700 From: "Stotland, Inga" To: "linux-bluetooth@vger.kernel.org" , "Gix, Brian" CC: "luiz.dentz@gmail.com" , "marcel@holtmann.org" , "johan.hedberg@gmail.com" Subject: Re: [PATCH BlueZ v3 1/1] mesh: Add APIs for Provisioner and Config Client Thread-Topic: [PATCH BlueZ v3 1/1] mesh: Add APIs for Provisioner and Config Client Thread-Index: AQHU3pbhBMXeoicfxkqF7G1f3YsBBaYUigMA Date: Wed, 20 Mar 2019 06:48:30 +0000 Message-ID: <4562230ce67aade420b7c9c173a3771f71ce4868.camel@intel.com> References: <20190319210029.24734-1-brian.gix@intel.com> <20190319210029.24734-2-brian.gix@intel.com> In-Reply-To: <20190319210029.24734-2-brian.gix@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.251.137.87] Content-Type: text/plain; charset="utf-8" Content-ID: <29C3D92D72EB5841A1CCABF0A48000CA@intel.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-bluetooth-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org SGkgQnJpYW4sDQoNCk9uIFR1ZSwgMjAxOS0wMy0xOSBhdCAxNDowMCAtMDcwMCwgQnJpYW4gR2l4 IHdyb3RlOg0KPiBUaGUgYWRkZWQgRC1CdXMgQVBJcyBlbmFibGUgQXBwbGljYXRpb25zIHRvIGZ1 bmN0aW9uIGluIGEgUHJvdmlzaW9uZXINCj4gSW5pdGlhdG9yIHJvbGUsIGFuZCBhcyBhIENvbmZp Z3VyYXRpb24gQ2xpZW50Lg0KPiAtLS0NCj4gIGRvYy9tZXNoLWFwaS50eHQgfCAzNjMNCj4gKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQ0KPiAg MSBmaWxlIGNoYW5nZWQsIDM0OCBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkNCj4gDQo+ IGRpZmYgLS1naXQgYS9kb2MvbWVzaC1hcGkudHh0IGIvZG9jL21lc2gtYXBpLnR4dA0KPiBpbmRl eCAwYjM0MWEwZjkuLjg1ZDFmODNkMiAxMDA2NDQNCj4gLS0tIGEvZG9jL21lc2gtYXBpLnR4dA0K PiArKysgYi9kb2MvbWVzaC1hcGkudHh0DQo+IEBAIC0zMCw2ICszMCw3IEBAIE1ldGhvZHM6DQo+ ICAJCQlvcmcuYmx1ZXoubWVzaC5FcnJvci5JbnZhbGlkQXJndW1lbnRzDQo+ICANCj4gIAl2b2lk IENhbmNlbCh2b2lkKQ0KPiArDQo+ICAJCUNhbmNlbHMgYW4gb3V0c3RhbmRpbmcgcHJvdmlzaW9u aW5nIHJlcXVlc3QgaW5pdGlhdGVkDQo+IGJ5IEpvaW4oKQ0KPiAgCQltZXRob2QuDQo+ICANCj4g QEAgLTEwOSw2ICsxMTAsMzcgQEAgTWV0aG9kczoNCj4gIAkJUG9zc2libGVFcnJvcnM6DQo+ICAJ CQlvcmcuYmx1ZXoubWVzaC5FcnJvci5Ob3RGb3VuZA0KPiAgDQo+ICsJdWludDY0IHRva2VuIENy ZWF0ZU5ldHdvcmsob2JqZWN0IGFwcF9yb290LCBhcnJheXtieXRlfVsxNl0NCj4gdXVpZCkNCj4g Kw0KPiArCQlUaGlzIGlzIHRoZSBmaXJzdCBtZXRob2QgdGhhdCBhbiBhcHBsaWNhdGlvbiBjYWxs cyB0bw0KPiBiZWNvbWUNCj4gKwkJYSBQcm92aXNpb25lciBub2RlLCBhbmQgYSBDb25maWd1cmF0 aW9uIENsaWVudCBvbiBhDQo+IG5ld2x5DQo+ICsJCWNyZWF0ZWQgTWVzaCBOZXR3b3JrLg0KPiAr DQo+ICsJCVRoZSBhcHBfcm9vdCBwYXJhbWV0ZXIgaXMgYSBELUJ1cyBvYmplY3Qgcm9vdCBwYXRo IG9mDQo+IHRoZQ0KPiArCQlhcHBsaWNhdGlvbiB0aGF0IGltcGxlbWVudHMgb3JnLmJsdWV6Lm1l c2guQXBwbGljYXRpb24xDQo+ICsJCWludGVyZmFjZSwgYW5kIGEgb3JnLmJsdWV6Lm1lc2guUHJv dmlzaW9uZXIxIGludGVyZmFjZS4NCj4gVGhlDQo+ICsJCWFwcGxpY2F0aW9uIHJlcHJlc2VudHMg YSBub2RlIHdoZXJlIGNoaWxkIG1lc2ggZWxlbWVudHMNCj4gaGF2ZQ0KPiArCQl0aGVpciBvd24g b2JqZWN0cyB0aGF0IGltcGxlbWVudA0KPiBvcmcuYmx1ZXoubWVzaC5FbGVtZW50MQ0KPiArCQlp bnRlcmZhY2UuIFRoZSBhcHBsaWNhdGlvbiBoaWVyYXJjaHkgYWxzbyBjb250YWlucyBhDQo+IHBy b3Zpc2lvbg0KPiArCQlhZ2VudCBvYmplY3QgdGhhdCBpbXBsZW1lbnRzDQo+IG9yZy5ibHVlei5t ZXNoLlByb3Zpc2lvbkFnZW50MQ0KPiArCQlpbnRlcmZhY2UuIFRoZSBzdGFuZGFyZCBEQnVzLk9i amVjdE1hbmFnZXIgaW50ZXJmYWNlDQo+IG11c3QgYmUNCj4gKwkJYXZhaWxhYmxlIG9uIHRoZSBh cHBfcm9vdCBwYXRoLg0KPiArDQo+ICsJCVRoZSB1dWlkIHBhcmFtZXRlciBpcyBhIDE2LWJ5dGUg YXJyYXkgdGhhdCBjb250YWlucw0KPiBEZXZpY2UgVVVJRC4NCj4gKw0KPiArCQlUaGUgcmV0dXJu ZWQgdG9rZW4gbXVzdCBiZSBwcmVzZXJ2ZWQgYnkgdGhlIGFwcGxpY2F0aW9uDQo+IGluDQo+ICsJ CW9yZGVyIHRvIGF1dGhlbnRpY2F0ZSBpdHNlbGYgdG8gdGhlIG1lc2ggZGFlbW9uIGFuZA0KPiBh dHRhY2ggdG8NCj4gKwkJdGhlIG5ldHdvcmsgYXMgYSBtZXNoIG5vZGUgYnkgY2FsbGluZyBBdHRh Y2goKSBtZXRob2QNCj4gb3INCj4gKwkJcGVybWFuZW50bHkgcmVtb3ZlIHRoZSBpZGVudGl0eSBv ZiB0aGUgbWVzaCBub2RlIGJ5DQo+IGNhbGxpbmcNCj4gKwkJTGVhdmUoKSBtZXRob2QuDQo+ICsN Cj4gKwkJVGhlIG90aGVyIGluZm9ybWF0aW9uIHRoZSBibHVldG9vdGgtbWVzaGQgZGFlbW9uIHdp bGwNCj4gcHJlc2VydmUNCj4gKwkJYWJvdXQgdGhlIGluaXRpYWwgbm9kZSwgaXMgdG8gZ2l2ZSBp dCB0aGUgaW5pdGlhbA0KPiBwcmltYXJ5DQo+ICsJCXVuaWNhc3QgYWRkcmVzcyAoMHgwMDAxKSwg YW5kIGNyZWF0ZSBhbmQgYXNzaWduIGENCj4gbmV0X2tleSBhcyB0aGUNCj4gKwkJcHJpbWFyeSBu ZXR3b3JrIG5ldF9pbmRleCAoMHgwMDApLg0KPiArDQo+ICsJCVBvc3NpYmxlRXJyb3JzOg0KPiAr CQkJb3JnLmJsdWV6Lm1lc2guRXJyb3IuSW52YWxpZEFyZ3VtZW50cw0KPiAgDQo+ICBNZXNoIE5v ZGUgSGllcmFyY2h5DQo+ICA9PT09PT09PT09PT09PT09PT09DQo+IEBAIC0xNDYsNiArMTc4LDMw IEBAIE1ldGhvZHM6DQo+ICAJCQlvcmcuYmx1ZXoubWVzaC5FcnJvci5JbnZhbGlkQXJndW1lbnRz DQo+ICAJCQlvcmcuYmx1ZXoubWVzaC5FcnJvci5Ob3RGb3VuZA0KPiAgDQo+ICsJdm9pZCBTZW5k V2l0aERldmljZUtleShvYmplY3QgZWxlbWVudF9wYXRoLCB1aW50MTYgZGVzdGluYXRpb24sDQo+ ICsJCQkJCXVpbnQxNiBuZXRfaW5kZXgsIGFycmF5e2J5dGV9DQo+IGRhdGEpDQo+ICsNCj4gKwkJ VGhpcyBtZXRob2QgaXMgdXNlZCB0byBzZW5kIGEgbWVzc2FnZSBvcmlnaW5hdGVkIGJ5IGENCj4g bG9jYWwNCj4gKwkJbW9kZWwgZW5jb2RlZCB3aXRoIHRoZSBkZXZpY2Uga2V5IG9mIHRoZSByZW1v dGUgbm9kZS4NCj4gKw0KPiArCQlUaGUgZWxlbWVudF9wYXRoIHBhcmFtZXRlciBpcyB0aGUgb2Jq ZWN0IHBhdGggb2YgYW4NCj4gZWxlbWVudCBmcm9tDQo+ICsJCWEgY29sbGVjdGlvbiBvZiB0aGUg YXBwbGljYXRpb24gZWxlbWVudHMgKHNlZSBNZXNoDQo+IEFwcGxpY2F0aW9uDQo+ICsJCUhpZXJh cmNoeSBzZWN0aW9uKS4NCj4gKw0KPiArCQlUaGUgZGVzdGluYXRpb24gcGFyYW1ldGVyIGNvbnRh aW5zIHRoZSBkZXN0aW5hdGlvbg0KPiBhZGRyZXNzLiBUaGlzDQo+ICsJCWRlc3RpbmF0aW9uIG11 c3QgYmUgYSB1aW50MTYgdG8gYSB1bmljYXN0IGFkZHJlc3MsIG9yIGENCj4gd2VsbA0KPiArCQlr bm93biBncm91cCBhZGRyZXNzLg0KPiArDQo+ICsJCVRoZSBuZXRfaW5kZXggcGFyYW1ldGVyIGlz IHRoZSBzdWJuZXQgaW5kZXggb2YgdGhlDQo+IG5ldHdvcmsgb24NCj4gKwkJd2hpY2ggdGhlIG1l c3NhZ2UgaXMgdG8gYmUgc2VudC4NCj4gKw0KPiArCQlUaGUgZGF0YSBwYXJhbWV0ZXIgaXMgYW4g b3V0Z29pbmcgbWVzc2FnZSB0byBiZQ0KPiBlbmN5cHRlZCBieSB0aGUNCj4gKwkJbWVzaGQgZGFl bW9uIGFuZCBzZW50IG9uLg0KPiArDQo+ICsJCVBvc3NpYmxlIGVycm9yczoNCj4gKwkJCW9yZy5i bHVlei5tZXNoLkVycm9yLkludmFsaWRBcmd1bWVudHMNCj4gKwkJCW9yZy5ibHVlei5tZXNoLkVy cm9yLk5vdEZvdW5kDQo+ICsNCj4gIAl2b2lkIFB1Ymxpc2gob2JqZWN0IGVsZW1lbnRfcGF0aCwg dWludDE2IG1vZGVsLCBhcnJheXtieXRlfQ0KPiBkYXRhKQ0KPiAgDQo+ICAJCVRoaXMgbWV0aG9k IGlzIHVzZWQgdG8gc2VuZCBhIHB1YmxpY2F0aW9uIG9yaWdpbmF0ZWQgYnkNCj4gYSBsb2NhbA0K PiBAQCAtMjI0LDEyICsyODAsMjExIEBAIFByb3BlcnRpZXM6DQo+ICAJCVRoaXMgcHJvcGVydHkg aW5kaWNhdGVzIHdoZXRoZXIgdGhlIHBlcmlvZGljIGJlYWNvbmluZw0KPiBpcw0KPiAgCQllbmFi bGVkICh0cnVlKSBvciBkaXNhYmxlZCAoZmFsc2UpLg0KPiAgDQo+ICsJdWludDggQmVhY29uRmxh Z3MgW3JlYWQtb25seV0NCj4gKw0KPiArCQlUaGlzIHByb3BlcnR5IG1heSBiZSByZWFkIGF0IGFu eSB0aW1lIHRvIGRldGVybWluZSB0aGUNCj4gZmxhZw0KPiArCQlmaWVsZCBzZXR0aW5nIG9uIHNl bnQgYW5kIHJlY2VpdmVkIGJlYWNvbnMgb2YgdGhlDQo+IHByaW1hcnkNCj4gKwkJbmV0d29yayBr ZXkuDQo+ICsNCj4gKwl1aW50MzIgSXZJbmRleCBbcmVhZC1vbmx5XQ0KPiArDQo+ICsJCVRoaXMg cHJvcGVydHkgbWF5IGJlIHJlYWQgYXQgYW55IHRpbWUgdG8gZGV0ZXJtaW5lIHRoZQ0KPiBJVl9J bmRleA0KPiArCQl0aGF0IHRoZSBjdXJyZW50IG5ldHdvcmsgaXMgb24uIFRoaXMgaW5mb3JtYXRp b24gaXMNCj4gb25seSB1c2VmdWwNCj4gKwkJZm9yIHByb3Zpc2lvbmluZy4NCj4gKw0KPiAgCXVp bnQzMiBTZWNvbmRzU2luY2VMYXN0SGVhcmQgW3JlYWQtb25seV0NCj4gIA0KPiAgCQlUaGlzIHBy b3BlcnR5IG1heSBiZSByZWFkIGF0IGFueSB0aW1lIHRvIGRldGVybWluZSB0aGUNCj4gbnVtYmVy IG9mDQo+ICAJCXNlY29uZHMgc2luY2UgbWVzaCBuZXR3b3JrIGxheWVyIHRyYWZmaWMgd2FzIGxh c3QNCj4gZGV0ZWN0ZWQgb24NCj4gIAkJdGhpcyBub2RlJ3MgbmV0d29yay4NCj4gIA0KPiArTWVz aCBQcm92aXNpb25pbmcgSGllcmFyY2h5DQo+ICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQo+ICtTZXJ2aWNlCQlvcmcuYmx1ZXoubWVzaA0KPiArSW50ZXJmYWNlCW9yZy5ibHVlei5tZXNo LlByb3Zpc2lvbmluZzENCg0KV2UgbWF5IHdhbnQgdG8gY2FsbCB0aGlzIGludGVyZmFjZSAib3Jn LmJsdWV6Lm1lc2guTWFuYWdlcjEiLCBiZWNhdXNlDQppdCBjb250YWlucyBtZXRob2RzIHN1cnBh c3NpbmcgDQpwcm92aXNpb25pbmcgcHJvY2VkdXJlDQoNCj4gK09iamVjdCBwYXRoCS9vcmcvYmx1 ZXovbWVzaC9ub2RlPHh4eHg+DQo+ICsJCXdoZXJlIHh4eHggaXMgYSA0LWRpZ2l0IGhleGFkZWNp bWFsIG51bWJlciBnZW5lcmF0ZWQgYnkNCj4gZGFlbW9uDQo+ICsNCj4gK01ldGhvZHM6DQo+ICsJ dm9pZCBVbnByb3Zpc2lvbmVkU2Nhbih1aW50MTYgc2Vjb25kcykNCj4gKw0KPiArCQlUaGlzIG1l dGhvZCBpcyB1c2VkIGJ5IHRoZSBhcHBsaWNhdGlvbiB0aGF0IHN1cHBvcnRzDQo+ICsJCW9yZy5i bHVlei5tZXNoLlByb3Zpc2lvbmVyMSBpbnRlcmZhY2UgdG8gc3RhcnQNCj4gbGlzdGVuaW5nDQo+ ICsJCShzY2FubmluZykgZm9yIHVucHJvdmlzaW9uZWQgZGV2aWNlcyBpbiB0aGUgYXJlYS4NCj4g U2Nhbm5pbmcNCj4gKwkJd2lsbCBjb250aW51ZSBmb3IgdGhlIHNwZWNpZmllZCBudW1iZXIgb2Yg c2Vjb25kcywgb3IsDQo+IGlmIDAgaXMNCj4gKwkJc3BlY2lmaWVkLCB0aGVuIGNvbnRpbnVvdXNs eSB1bnRpbA0KPiBVbnByb3Zpc2lvbmVkU2NhbkNhbmNlbCgpIGlzDQo+ICsJCWNhbGxlZCBvciBp ZiBBZGROb2RlKCkgbWV0aG9kIGlzIGNhbGxlZC4NCj4gKw0KPiArCQlFYWNoIHRpbWUgYSB1bmlx dWUgdW5wcm92aXNpb25lZCBiZWFjb24gaXMgaGVhcmQsIHRoZQ0KPiArCQlTY2FuUmVzdWx0KCkg bWV0aG9kIG9uIHRoZSBhcHAgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUNCj4gcmVzdWx0Lg0KPiAr DQo+ICsJCVBvc3NpYmxlRXJyb3JzOg0KPiArCQkJb3JnLmJsdWV6Lm1lc2guRXJyb3IuTm90QXV0 aG9yaXplZA0KPiArDQo+ICsJdm9pZCBVbnByb3Zpc2lvbmVkU2NhbkNhbmNlbCh2b2lkKQ0KPiAr DQo+ICsJCVRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgdGhlIGFwcGxpY2F0aW9uIHRoYXQgc3VwcG9y dHMNCj4gKwkJb3JnLmJsdWV6Lm1lc2guUHJvdmlzaW9uZXIxIGludGVyZmFjZSB0byBzdG9wIGxp c3RlbmluZw0KPiArCQkoc2Nhbm5pbmcpIGZvciB1bnByb3Zpc2lvbmVkIGRldmljZXMgaW4gdGhl IGFyZWEuDQo+ICsNCj4gKwkJUG9zc2libGVFcnJvcnM6DQo+ICsJCQlvcmcuYmx1ZXoubWVzaC5F cnJvci5Ob3RBdXRob3JpemVkDQo+ICsNCj4gKwl2b2lkIEFkZE5vZGUoYXJyYXl7Ynl0ZX1bMTZd IHV1aWQpDQo+ICsNCj4gKwkJVGhpcyBtZXRob2QgaXMgdXNlZCBieSB0aGUgYXBwbGljYXRpb24g dGhhdCBzdXBwb3J0cw0KPiArCQlvcmcuYmx1ZXoubWVzaC5Qcm92aXNpb25lcjEgaW50ZXJmYWNl IHRvIGFkZCB0aGUNCj4gKwkJdW5wcm92aXNpb25lZCBkZXZpY2Ugc3BlY2lmaWVkIGJ5IHV1aWQs IHRvIHRoZSBOZXR3b3JrLg0KPiArDQo+ICsJCVRoZSB1dWlkIHBhcmFtZXRlciBpcyBhIDE2LWJ5 dGUgYXJyYXkgdGhhdCBjb250YWlucw0KPiBEZXZpY2UgVVVJRA0KPiArCQlvZiB0aGUgdW5wcm92 aXNpb25lZCBkZXZpY2UgdG8gYmUgYWRkZWQgdG8gdGhlIG5ldHdvcmsuDQo+ICsNCj4gKwkJUG9z c2libGVFcnJvcnM6DQo+ICsJCQlvcmcuYmx1ZXoubWVzaC5FcnJvci5JbnZhbGlkQXJndW1lbnRz DQo+ICsJCQlvcmcuYmx1ZXoubWVzaC5FcnJvci5Ob3RBdXRob3JpemVkDQo+ICsNCj4gKwl2b2lk IEFkZE5ldEtleSh1aW50MTYgbmV0X2luZGV4KQ0KDQoNCkkgc3VnZ2VzdCB3ZSBjaGFuZ2UgdGhp cyBtZXRob2QgdG8NCiBBZGROZXRLZXkodWludDE2IGRlc3QsIHVpbnQxNiBuZXRfaW5kZXgpDQoN ClNpbmNlIGluIHRoZSBjdXJyZW50IHByb3Bvc2VkIGFwcHJvYWNoIHRoZSBkYWVtb24gaXMgdGhl IG9ubHkgZW50aXR5IGluDQpwb3NzZXNzaW9uIG9mIGtleSB2YXVlcywgdGhlIGNvbmZpZ3VyYXRp b24gbWVzc2FnZXMgdGhhdCBjb250YWluIHRoZQ0Ka2V5IHZhbHVlcyBpbiB0aGVpciBwYXlsb2Fk IHdpbGwgbmVlZCB0byBiZSBnZW5lcmF0ZWQgYnkgdGhlIGRhZW1vbi4NClRoZSBtb2RpZmllZCBt ZXRob2Qgd2lsbCBhbGxvdyB0byBzZW5kIHRoZSBuZXR3b3JrIGtleShzKSB0byBhbnkgbm9kZS4N CklmIGEgbmV0d29yayBrZXkgc3BlY2lmaWVkIGJ5IHRoZSBuZXRfaW5kZXgsIGRvZXMgbm90IGV4 aXN0LCBpdCB3aWxsIGJlDQpnZW5lcmF0ZWQgYW5kIHJlY29yZGVkLCBlZmZlY3RpdmVseSBjcmVh dGluZyBhIG5ldyBzdWJuZXQuDQpBbHRlcm5hdGl2ZWx5LCB0aGlzIGZ1bmN0aW9uYWxpdHkgY2Fu IGJlIGNvdmVyZWQgYnkgdHdvIG1ldGhvZHM6DQpDcmVhdGVTdWJuZXQodWludDE2IG5ldF9pbmRl eCkgdG8gZ2VuZXJhdGUgYSBrZXkgdmFsdWUgYW5kDQpBZGROZXRLZXkodWludDE2IGRlc3QsIHVp bnQxNiBuZXRfaW5kZXgpIHRvIHNlbmQgdGhlIGtleXMgdG8gYSByZW1vdGUNCm9yIGxvY2FsIG5v ZGUNCg0KPiArDQo+ICsJCVRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgdGhlIGFwcGxpY2F0aW9uIHRo YXQgc3VwcG9ydHMNCj4gKwkJb3JnLmJsdWV6Lm1lc2guUHJvdmlzaW9uZXIxIGludGVyZmFjZSB0 byBnZW5lcmF0ZSBhbmQNCj4gYWRkIGEgbmV3DQo+ICsJCW5ldHdvcmsgc3VibmV0IGtleS4NCj4g Kw0KPiArCQlUaGUgbmV0X2luZGV4IHBhcmFtZXRlciBpcyBhIDEyLWJpdCB2YWx1ZSAoMHgwMDEt MHhGRkYpDQo+ICsJCXNwZWNpZnlpbmcgd2hpY2ggbmV0IGtleSB0byBhZGQuDQo+ICsNCj4gKwkJ VGhpcyBjYWxsIGFmZmVjdHMgdGhlIGxvY2FsIGJsdWV0b290aC1kYWVtb24ga2V5DQo+IGRhdGFi YXNlIG9ubHkuDQo+ICsNCj4gKwkJUG9zc2libGVFcnJvcnM6DQo+ICsJCQlvcmcuYmx1ZXoubWVz aC5FcnJvci5JbnZhbGlkQXJndW1lbnRzDQo+ICsJCQlvcmcuYmx1ZXoubWVzaC5FcnJvci5Ob3RB dXRob3JpemVkDQo+ICsJCQlvcmcuYmx1ZXoubWVzaC5FcnJvci5BbHJlYWR5RXhpc3RzDQo+ICsN Cj4gKwl2b2lkIFVwZGF0ZU5ldEtleSh1aW50MTYgbmV0X2luZGV4KQ0KDQpJIHN1Z2dlc3Qgd2Ug Y2hhbmdlIHRoaXMgbWV0aG9kIHRvIFVwZGF0ZU5ldEtleSh1aW50MTYgZGVzdCwgdWludDE2DQpu ZXRfaW5kZXgpDQpUaGlzIHdpbGwgYWxsb3cgdG8gc2VuZCBhbiB1cGRhdGVkIHZhbHVlIG9mIHRo ZSBuZXR3b3JrIGtleSB0byBhbnkNCm5vZGUuIElmIHRoZSB1cGRhdGVkIG5ldHdvcmsga2V5IHZh bHVlIHNwZWNpZmllZCBieSB0aGUgbmV0X2luZGV4LCBkb2VzDQpub3QgZXhpc3QsIGl0IHdpbGwg YmUgZ2VuZXJhdGVkIGFuZCByZWNvcmRlZC4NCg0KDQo+ICsNCj4gKwkJVGhpcyBtZXRob2QgaXMg dXNlZCBieSB0aGUgYXBwbGljYXRpb24gdGhhdCBzdXBwb3J0cw0KPiArCQlvcmcuYmx1ZXoubWVz aC5Qcm92aXNpb25lcjEgaW50ZXJmYWNlIHRvIGdlbmVyYXRlIGEgbmV3DQo+IG5ldHdvcmsNCj4g KwkJc3VibmV0IGtleSwgYW5kIHNldCBpdCdzIGtleSByZWZyZXNoIHN0YXRlIHRvIFBoYXNlIDEu DQo+ICsNCj4gKwkJVGhlIG5ldF9pbmRleCBwYXJhbWV0ZXIgaXMgYSAxMi1iaXQgdmFsdWUgKDB4 MDAwLTB4RkZGKQ0KPiArCQlzcGVjaWZ5aW5nIHdoaWNoIG5ldCBrZXkgdG8gdXBkYXRlLiBOb3Rl IHRoYXQgdGhlDQo+IHN1Ym5ldCBtdXN0DQo+ICsJCWV4aXN0IHByaW9yIHRvIHVwZGF0aW5nLg0K PiArDQo+ICsJCVRoaXMgY2FsbCBhZmZlY3RzIHRoZSBsb2NhbCBibHVldG9vdGgtZGFlbW9uIGtl eQ0KPiBkYXRhYmFzZSBvbmx5Lg0KPiArDQo+ICsJCVBvc3NpYmxlRXJyb3JzOg0KPiArCQkJb3Jn LmJsdWV6Lm1lc2guRXJyb3IuSW52YWxpZEFyZ3VtZW50cw0KPiArCQkJb3JnLmJsdWV6Lm1lc2gu RXJyb3IuTm90QXV0aG9yaXplZA0KPiArCQkJb3JnLmJsdWV6Lm1lc2guRXJyb3IuRG9lc05vdEV4 aXN0DQo+ICsNCj4gKwl2b2lkIERlbGV0ZU5ldEtleSh1aW50MTYgbmV0X2luZGV4KQ0KPiArDQo+ ICsJCVRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgdGhlIGFwcGxpY2F0aW9uIHRoYXQgc3VwcG9ydHMN Cj4gKwkJb3JnLmJsdWV6Lm1lc2guUHJvdmlzaW9uZXIxIGludGVyZmFjZSB0byBkZWxldGUgYQ0K PiBzdWJuZXQuDQo+ICsNCj4gKwkJVGhlIG5ldF9pbmRleCBwYXJhbWV0ZXIgaXMgYSAxMi1iaXQg dmFsdWUgKDB4MDAxLTB4RkZGKQ0KPiArCQlzcGVjaWZ5aW5nIHdoaWNoIG5ldCBrZXkgdG8gZGVs ZXRlLiBUaGUgcHJpbWFyeSBuZXQga2V5DQo+ICgweDAwMCkNCj4gKwkJbWF5IG5vdCBiZSBkZWxl dGVkLg0KPiArDQo+ICsJCVRoaXMgY2FsbCBhZmZlY3RzIHRoZSBsb2NhbCBibHVldG9vdGgtZGFl bW9uIGtleQ0KPiBkYXRhYmFzZSBvbmx5Lg0KPiArDQo+ICsJCVBvc3NpYmxlRXJyb3JzOg0KPiAr CQkJb3JnLmJsdWV6Lm1lc2guRXJyb3IuSW52YWxpZEFyZ3VtZW50cw0KPiArCQkJb3JnLmJsdWV6 Lm1lc2guRXJyb3IuTm90QXV0aG9yaXplZA0KPiArCQkJb3JnLmJsdWV6Lm1lc2guRXJyb3IuRG9l c05vdEV4aXN0DQo+ICsNCj4gKwl2b2lkIFNldEtleVBoYXNlKHVpbnQxNiBuZXRfaW5kZXgsIHVp bnQ4IHBoYXNlKQ0KPiArCQlUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIHNldCB0aGUgbWFzdGVyIGtl eSB1cGRhdGUgcGhhc2UNCj4gb2YgdGhlDQo+ICsJCWdpdmVuIHN1Ym5ldC4NCj4gKw0KPiArCQlU aGUgbmV0X2luZGV4IHBhcmFtZXRlciBpcyBhIDEyLWJpdCB2YWx1ZSAoMHgwMDAtMHhGRkYpDQo+ ICsJCXNwZWNpZnlpbmcgd2hpY2ggc3VibmV0IHBoYXNlIHRvIHNldC4NCj4gKw0KPiArCQlUaGUg cGhhc2UgcGFyYW1ldGVyIGlzIHVzZWQgdG8gY3ljbGUgdGhlIGxvY2FsIGtleQ0KPiBkYXRhYmFz ZQ0KPiArCQl0aHJvdWdoIHRoZSBwaGFzZXMgYXMgZGVmaW5lZCBieSB0aGUgTWVzaCBQcm9maWxl DQo+IFNwZWNpZmljYXRpb24uDQo+ICsJCUFsbG93ZWQgdmFsdWVzOg0KPiArCQkJMCAtIENhbmNl bCBLZXkgUmVmcmVzaCAoTWF5IG9ubHkgYmUgY2FsbGVkIGZyb20NCj4gUGhhc2UgMSwNCj4gKwkJ CQlhbmQgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBvbmNlIHRoZSBuZXcNCj4ga2V5IGhhcw0KPiAr CQkJCXN0YXJ0ZWQgcHJvcGFnYXRpbmcpDQo+ICsJCQkxIC0gSW52YWxpZCBBcmd1bWVudCAoc2Vl IE5ldEtleVVwZGF0ZSBtZXRob2QpDQo+ICsJCQkyIC0gR28gdG8gUGhhc2UgMiAoTWF5IG9ubHkg YmUgY2FsbGVkIGZyb20NCj4gUGhhc2UgMSkNCj4gKwkJCTMgLSBDb21wbGV0ZSBLZXkgUmVmcmVz aCBwcm9jZWR1cmUgKE1heSBvbmx5IGJlDQo+IGNhbGxlZA0KPiArCQkJCWZyb20gUGhhc2UgMikN Cj4gKw0KPiArCQlUaGlzIGNhbGwgYWZmZWN0cyB0aGUgbG9jYWwgYmx1ZXRvb3RoLWRhZW1vbiBr ZXkNCj4gZGF0YWJhc2Ugb25seS4NCj4gKw0KPiArCQlQb3NzaWJsZUVycm9yczoNCj4gKwkJCW9y Zy5ibHVlei5tZXNoLkVycm9yLkludmFsaWRBcmd1bWVudHMNCj4gKwkJCW9yZy5ibHVlei5tZXNo LkVycm9yLk5vdEF1dGhvcml6ZWQNCj4gKwkJCW9yZy5ibHVlei5tZXNoLkVycm9yLkRvZXNOb3RF eGlzdA0KPiArDQo+ICsJdm9pZCBBZGRBcHBLZXkodWludDE2IG5ldF9pbmRleCwgdWludDE2IGFw cF9pbmRleCkNCg0KU2ltaWxhciB0byB0aGUgbmV0d29yayBrZXkgbWV0aG9kcywgbmVlZHMgdG8g aW5jbHVkZSBkZXN0IHBhcmFtZXRlciANCg0KPiArDQo+ICsJCVRoaXMgbWV0aG9kIGlzIHVzZWQg YnkgdGhlIGFwcGxpY2F0aW9uIHRoYXQgc3VwcG9ydHMNCj4gKwkJb3JnLmJsdWV6Lm1lc2guUHJv dmlzaW9uZXIxIGludGVyZmFjZSB0byBnZW5lcmF0ZSBhbmQNCj4gYWRkIGEgbmV3DQo+ICsJCWFw cGxpY2F0aW9uIGtleS4NCj4gKw0KPiArCQlUaGUgbmV0X2luZGV4IHBhcmFtZXRlciBpcyBhIDEy LWJpdCB2YWx1ZSAoMHgwMDAtMHhGRkYpDQo+ICsJCXNwZWNpZnlpbmcgd2hpY2ggbmV0IGtleSB0 byBiaW5kIHRoZSBhcHBsaWNhdGlvbiBrZXkNCj4gdG8uDQo+ICsNCj4gKwkJVGhlIGFwcF9pbmRl eCBwYXJhbWV0ZXIgaXMgYSAxMi1iaXQgdmFsdWUgKDB4MDAwLTB4RkZGKQ0KPiArCQlzcGVjaWZ5 aW5nIHdoaWNoIGFwcCBrZXkgdG8gYWRkLg0KPiArDQo+ICsJCVRoaXMgY2FsbCBhZmZlY3RzIHRo ZSBsb2NhbCBibHVldG9vdGgtZGFlbW9uIGtleQ0KPiBkYXRhYmFzZSBvbmx5Lg0KPiArDQo+ICsJ CVBvc3NpYmxlRXJyb3JzOg0KPiArCQkJb3JnLmJsdWV6Lm1lc2guRXJyb3IuSW52YWxpZEFyZ3Vt ZW50cw0KPiArCQkJb3JnLmJsdWV6Lm1lc2guRXJyb3IuTm90QXV0aG9yaXplZA0KPiArCQkJb3Jn LmJsdWV6Lm1lc2guRXJyb3IuQWxyZWFkeUV4aXN0cw0KPiArDQo+ICsJdm9pZCBVcGRhdGVBcHBL ZXkodWludDE2IGFwcF9pbmRleCkNCj4gKw0KPiArCQlUaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IHRo ZSBhcHBsaWNhdGlvbiB0aGF0IHN1cHBvcnRzDQo+ICsJCW9yZy5ibHVlei5tZXNoLlByb3Zpc2lv bmVyMSBpbnRlcmZhY2UgdG8gZ2VuZXJhdGUgYSBuZXcNCj4gKwkJYXBwbGljYXRpb24ga2V5Lg0K PiArDQo+ICsJCVRoZSBhcHBfaW5kZXggcGFyYW1ldGVyIGlzIGEgMTItYml0IHZhbHVlICgweDAw MC0weEZGRikNCj4gKwkJc3BlY2lmeWluZyB3aGljaCBhcHAga2V5IHRvIHVwZGF0ZS4gTm90ZSB0 aGF0IHRoZQ0KPiBzdWJuZXQgdGhhdA0KPiArCQl0aGUga2V5IGlzIGJvdW5kIHRvIG11c3QgZXhp c3QgYW5kIGJlIGluIFBoYXNlIDEuDQo+ICsNCj4gKwkJVGhpcyBjYWxsIGFmZmVjdHMgdGhlIGxv Y2FsIGJsdWV0b290aC1kYWVtb24ga2V5DQo+IGRhdGFiYXNlIG9ubHkuDQo+ICsNCj4gKwkJUG9z c2libGVFcnJvcnM6DQo+ICsJCQlvcmcuYmx1ZXoubWVzaC5FcnJvci5JbnZhbGlkQXJndW1lbnRz DQo+ICsJCQlvcmcuYmx1ZXoubWVzaC5FcnJvci5Ob3RBdXRob3JpemVkDQo+ICsJCQlvcmcuYmx1 ZXoubWVzaC5FcnJvci5Eb2VzTm90RXhpc3QNCj4gKw0KPiArCXZvaWQgRGVsZXRlQXBwS2V5KHVp bnQxNiBhcHBfaW5kZXgpDQo+ICsNCj4gKwkJVGhpcyBtZXRob2QgaXMgdXNlZCBieSB0aGUgYXBw bGljYXRpb24gdGhhdCBzdXBwb3J0cw0KPiArCQlvcmcuYmx1ZXoubWVzaC5Qcm92aXNpb25lcjEg aW50ZXJmYWNlIHRvIGRlbGV0ZSBhbg0KPiBhcHBsaWNhdGlvbg0KPiArCQlrZXkuDQo+ICsNCj4g KwkJVGhlIGFwcF9pbmRleCBwYXJhbWV0ZXIgaXMgYSAxMi1iaXQgdmFsdWUgKDB4MDAwLTB4RkZG KQ0KPiArCQlzcGVjaWZ5aW5nIHdoaWNoIGFwcCBrZXkgdG8gZGVsZXRlLg0KPiArDQo+ICsJCVRo aXMgY2FsbCBhZmZlY3RzIHRoZSBsb2NhbCBibHVldG9vdGgtZGFlbW9uIGtleQ0KPiBkYXRhYmFz ZSBvbmx5Lg0KPiArDQo+ICsJCVBvc3NpYmxlRXJyb3JzOg0KPiArCQkJb3JnLmJsdWV6Lm1lc2gu RXJyb3IuSW52YWxpZEFyZ3VtZW50cw0KPiArCQkJb3JnLmJsdWV6Lm1lc2guRXJyb3IuTm90QXV0 aG9yaXplZA0KPiArCQkJb3JnLmJsdWV6Lm1lc2guRXJyb3IuRG9lc05vdEV4aXN0DQo+ICsNCj4g Kwl2b2lkIERlbGV0ZVJlbW90ZU5vZGUodWludDE2IHByaW1hcnksIHVpbnQ4IGNudCkNCg0KTGV0 J3MgY2FsbCB0aGlzIG1ldGhvZCBEZWxldGVOb2RlKCkNCkRvIHdlIG5lZWQgdG8gc3BlY2lmeSB0 aGUgZWxlbWVudCBjb3VudD8gDQoNCj4gKw0KPiArCQlUaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IHRo ZSBhcHBsaWNhdGlvbiB0aGF0IHN1cHBvcnRzDQo+ICsJCW9yZy5ibHVlei5tZXNoLlByb3Zpc2lv bmVyMSBpbnRlcmZhY2UgdG8gZGVsZXRlIGENCj4gcmVtb3RlIG5vZGUNCj4gKwkJZnJvbSB0aGUg bG9jYWwgZGV2aWNlIGtleSBkYXRhYmFzZS4NCj4gKw0KPiArCQlUaGUgcHJpbWFyeSBwYXJhbWV0 ZXIgc3BlY2lmaWVzIHRoZSB1bmljYXN0IGFkZHJlc3Mgb2YNCj4gdGhlDQo+ICsJCXRoZSBub2Rl IGJlaW5nIGRlbGV0ZWQsIGFuZCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQNCj4gd2VyZQ0K PiArCQlhc3NpZ25lZCB0byBpdC4NCj4gKw0KPiArCQlUaGlzIGNhbGwgYWZmZWN0cyB0aGUgbG9j YWwgYmx1ZXRvb3RoLWRhZW1vbiBrZXkNCj4gZGF0YWJhc2Ugb25seS4NCj4gKw0KPiArCQlQb3Nz aWJsZUVycm9yczoNCj4gKwkJCW9yZy5ibHVlei5tZXNoLkVycm9yLkludmFsaWRBcmd1bWVudHMN Cj4gKwkJCW9yZy5ibHVlei5tZXNoLkVycm9yLk5vdEF1dGhvcml6ZWQNCj4gKwkJCW9yZy5ibHVl ei5tZXNoLkVycm9yLkRvZXNOb3RFeGlzdA0KPiAgDQo+ICBNZXNoIEFwcGxpY2F0aW9uIEhpZXJh cmNoeQ0KPiAgPT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gQEAgLTI0Nyw2ICs1MDIsNyBA QCBBbiBleGFtcGxlIG1lc2ggYXBwbGljYXRpb24gaGllcmFyY2h5IG1heSBsb29rDQo+IGxpa2Ug dGhpczoNCj4gIAkJCXwgICAtIG9yZy5mcmVlZGVza3RvcC5EQnVzLk9iamVjdE1hbmFnZXINCj4g IAkJCXwgICAtIG9yZy5ibHVlei5tZXNoLkFwcGxpY2F0aW9uMQ0KPiAgCQkJfCAgIC0gb3JnLmJs dWV6Lm1lc2guQXR0ZW50aW9uMSAob3B0aW9uYWwpDQo+ICsJCQl8ICAgLSBvcmcuYmx1ZXoubWVz aC5Qcm92aXNpb25lcjENCj4gKG9wdGlvbmFsLFByb3Zpc2lvbmVyKQ0KPiAgCQkJfA0KPiAgCQkJ LT4gL2NvbS9leGFtcGxlL2FnZW50DQo+ICAJCQl8IHwgICAtIG9yZy5ibHVlei5tZXNoLlByb3Zp c2lvbkFnZW50MQ0KPiBAQCAtMzI1LDYgKzU4MSwyMiBAQCBNZXRob2RzOg0KPiAgDQo+ICAJCVRo ZSBkYXRhIHBhcmFtZXRlciBpcyB0aGUgaW5jb21pbmcgbWVzc2FnZS4NCj4gIA0KPiArCXZvaWQg RGV2S2V5TWVzc2FnZVJlY2VpdmVkKHVpbnQxNiBzb3VyY2UsIHVpbnQxNiBuZXRfaW5kZXgsDQo+ ICsJCQkJCQkJYXJyYXl7Ynl0ZX0NCj4gZGF0YSkNCj4gKw0KPiArCQlUaGlzIG1ldGhvZCBpcyBj YWxsZWQgYnkgbWVzaGQgZGFlbW9uIHdoZW4gYSBtZXNzYWdlDQo+IGFycml2ZXMNCj4gKwkJYWRk cmVzc2VkIHRvIHRoZSBhcHBsaWNhdGlvbiwgd2hpY2ggd2FzIHNlbnQgd2l0aCB0aGUNCj4gcmVt b3RlDQo+ICsJCW5vZGUncyBkZXZpY2Uga2V5Lg0KPiArDQo+ICsJCVRoZSBzb3VyY2UgcGFyYW1l dGVyIGlzIHVuaWNhc3QgYWRkcmVzcyBvZiB0aGUgcmVtb3RlDQo+ICsJCW5vZGUtZWxlbWVudCB0 aGF0IHNlbnQgdGhlIG1lc3NhZ2UuDQo+ICsNCj4gKwkJVGhlIG5ldF9pbmRleCBwYXJhbWV0ZXIg aW5kaWNhdGVzIHdoYXQgc3VibmV0IHRoZQ0KPiBtZXNzYWdlIHdhcw0KPiArCQlyZWNlaXZlZCBv biwgYW5kIGlmIGEgcmVzcG9uc2UgaXMgcmVxdWlyZWQsIHRoZSBzYW1lDQo+IHN1Ym5ldA0KPiAr CQltdXN0IGJlIHVzZWQgdG8gc2VuZCB0aGUgcmVzcG9uc2UuDQo+ICsNCj4gKwkJVGhlIGRhdGEg cGFyYW1ldGVyIGlzIHRoZSBpbmNvbWluZyBtZXNzYWdlLg0KPiArDQo+ICAJdm9pZCBVcGRhdGVN b2RlbENvbmZpZ3VyYXRpb24odWludDE2IG1vZGVsX2lkLCBkaWN0IGNvbmZpZykNCj4gIA0KPiAg CQlUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgYmx1ZXRvb3RoLW1lc2hkIGRhZW1vbiB3aGVuIGEN Cj4gbW9kZWwncw0KPiBAQCAtMzgzLDcgKzY1NSw3IEBAIE9iamVjdCBwYXRoCWZyZWVseSBkZWZp bmFibGUNCj4gIFRoaXMgaXMgYW4gb3B0aW9uYWwgaW50ZXJmYWNlIHRoYXQgaW1wbGVtZW50cyBo ZWFsdGggYXR0ZW50aW9uDQo+IHRpbWVyLg0KPiAgDQo+ICBNZXRob2RzOg0KPiAtCXZvaWQgU2V0 VGltZXIodWludDggZWxlbWVudF9pbmRleCwgIHVpbnQxNiB0aW1lKQ0KPiArCXZvaWQgU2V0VGlt ZXIodWludDggZWxlbWVudF9pbmRleCwgdWludDE2IHRpbWUpDQo+ICANCj4gIAkJVGhlIGVsZW1l bnRfaW5kZXggcGFyYW1ldGVyIGlzIHRoZSBlbGVtZW50J3MgaW5kZXgNCj4gd2l0aGluIHRoZQ0K PiAgCQlub2RlIHdoZXJlIHRoZSBoZWFsdGggc2VydmVyIG1vZGVsIGlzIGhvc3RlZC4NCj4gQEAg LTQwNiw2ICs2NzgsNzYgQEAgTWV0aG9kczoNCj4gIAkJCW9yZy5ibHVlei5tZXNoLkVycm9yLk5v dFN1cHBvcnRlZA0KPiAgDQo+ICANCj4gK01lc2ggUHJvdmlzaW9uZXIgSGllcmFyY2h5DQo+ICs9 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ICtTZXJ2aWNlCQl1bmlxdWUgbmFtZQ0KPiAr SW50ZXJmYWNlCW9yZy5ibHVlei5tZXNoLlByb3Zpc2lvbmVyMQ0KPiArT2JqZWN0IHBhdGgJZnJl ZWx5IGRlZmluYWJsZQ0KPiArDQo+ICsJU2NhblJlc3VsdChpbnQ4IHJzc2ksIGFycmF5e2J5dGV9 IGRhdGEpDQo+ICsNCj4gKwkJVGhlIG1ldGhvZCBpcyBjYWxsZWQgZnJvbSB0aGUgYmx1ZXRvb3Ro LW1lc2hkIGRhZW1vbg0KPiB3aGVuIGENCj4gKwkJdW5pcXVlIFVVSUQgaGFzIGJlZW4gc2VlbiBk dXJpbmcgVW5wcm92aXNpb25lZFNjYW4oKQ0KPiBmb3INCj4gKwkJdW5wcm92c2lvbmVkIGRldmlj ZXMuDQo+ICsNCj4gKwkJVGhlIHJzc2kgcGFyYW1ldGVyIGlzIGEgc2lnbmVkLCBub3JtYWxpemVk IG1lYXN1cmVtZW50DQo+IG9mIHRoZQ0KPiArCQlzaWduYWwgc3RyZW5ndGggb2YgdGhlIHJlY2ll dmVkIHVucHJvdmlzaW9uZWQgYmVhY29uLg0KPiArDQo+ICsJCVRoZSBkYXRhIHBhcmFtZXRlciBp cyBhIHZhcmlhYmxlIGxlbmd0aCBieXRlIGFycmF5LA0KPiB0aGF0IG1heQ0KPiArCQloYXZlIDEs IDIgb3IgMyBkaXN0aW5jdCBmaWVsZHMgY29udGFpbmVkIGluIGl0DQo+IGluY2x1ZGluZyB0aGUg MTYNCj4gKwkJYnl0ZSByZW1vdGUgZGV2aWNlIFVVSUQgKGFsd2F5cyksIGEgMzIgYml0IG1hc2sg b2YgT09CDQo+ICsJCWF1dGhlbnRpY2F0aW9uIGZsYWdzIChvcHRpb25hbCksIGFuZCBhIDMyIGJp dCBVUkkgaGFzaA0KPiAoaWYgVVJJDQo+ICsJCWJpdCBzZXQgaW4gT09CIG1hc2spLiBXaGV0aGVy IHRoZXNlIGZpZWxkcyBleGlzdCBvciBub3QNCj4gaXMgYQ0KPiArCQlkZWNpc2lvbiBvZiB0aGUg cmVtb3RlIGRldmljZS4NCj4gKw0KPiArCQlJZiBhIGJlYWNvbiB3aXRoIGEgVVVJRCB0aGF0IGhh cyBhbHJlYWR5IGJlZW4gcmVwb3J0ZWQNCj4gaXMNCj4gKwkJcmVjaWV2ZWQgYnkgdGhlIGRhZW1v biwgaXQgd2lsbCBiZSBzaWxlbnRseSBkaXNjYXJkZWQNCj4gdW5sZXNzIGl0DQo+ICsJCXdhcyBy ZWNpZXZlZCBhdCBhIGhpZ2hlciByc3NpIHBvd2VyIGxldmVsLg0KPiArDQo+ICsNCj4gKwl1aW50 MTYgbmV0X2luZGV4LCB1aW50OCBmbGFncywgdWludDMyIGl2X2luZGV4LCB1aW50MTYgdW5pY2Fz dA0KPiArCQkJCQkJCVJlcXVlc3RQcm92RGF0YQ0KPiAoKQ0KPiArDQo+ICsJCVRoaXMgbWV0aG9k IGlzIGltcGxlbWVudGVkIGJ5IGEgUHJvdmlzaW9uZXIgY2FwYWJsZQ0KPiBhcHBsaWNhdGlvbg0K PiArCQlhbmQgaXMgY2FsbGVkIHdoZW4gdGhlIHJlbW90ZSBkZXZpY2UgaGFzIGJlZW4gZnVsbHkN Cj4gKwkJYXV0aGVudGljYXRlZCBhbmQgY29uZmlybWVkLg0KPiArDQo+ICsJCVJldHVybiBQYXJh bWV0ZXJzIGFyZSBmcm9tIHRoZSBNZXNoIFByb2ZpbGUgU3BlYzoNCj4gKwkJbmV0X2luZGV4IC0g U3VibmV0IGluZGV4IG9mIHRoZSBuZXRfa2V5DQo+ICsJCWZsYWdzIC0gRmxhZ3MgZm9yIElWX1Vw ZGF0ZSBhbmQgS2V5IFJlZnJlc2gNCj4gKwkJaXZfaW5kZXggLSBDdXJyZW50IEl2SW5kZXggYmVp bmcgdXNlZCBvbiB0aGUgbmV0d29yaw0KPiArCQl1bmljYXN0IC0gUHJpbWFyeSBVbmljYXN0IGFk ZHJlc3Mgb2YgdGhlIG5ldyBub2RlDQo+ICsNCj4gKwkJUG9zc2libGVFcnJvcnM6DQo+ICsJCQlv cmcuYmx1ZXoubWVzaC5FcnJvci5BYm9ydA0KPiArDQo+ICsJdm9pZCBBZGROb2RlQ29tcGxldGUo YXJyYXl7Ynl0ZX1bMTZdIHV1aWQsIHVpbnQxNiB1bmljYXN0LA0KPiB1aW50OCBjb3VudCkNCj4g Kw0KPiArCQlUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgbm9kZSBwcm92aXNpb25pbmcN Cj4gaW5pdGlhdGVkDQo+ICsJCWJ5IGFuIEFkZE5vZGUoKSBtZXRob2QgY2FsbCBzdWNjZXNzZnVs bHkgY29tcGxldGVkLg0KPiArDQo+ICsJCVRoZSB1bmljYXN0IHBhcmFtZXRlciBpcyB0aGUgcHJp bWFyeSBhZGRyZXNzIHRoYXQgaGFzDQo+IGJlZW4NCj4gKwkJYXNzaWduZWQgdG8gdGhlIG5ldyBu b2RlLCBhbmQgdGhlIGFkZHJlc3Mgb2YgaXQncw0KPiBjb25maWcgc2VydmVyLg0KPiArDQo+ICsJ CVRoZSBjb3VudCBwYXJhbWV0ZXIgaXMgdGhlIG51bWJlciBvZiB1bmljYXN0IGFkZHJlc3Nlcw0K PiBhc3NpZ25lZA0KPiArCQl0byB0aGUgbmV3IG5vZGUuDQo+ICsNCj4gKwkJVGhlIG5ldyBub2Rl IG1heSBub3cgYmUgc2VudCBtZXNzYWdlcyB1c2luZyB0aGUNCj4gY3JlZGVudGlhbHMNCj4gKwkJ c3VwcGxpZWQgYnkgdGhlIFJlcXVlc3RQcm92RGF0YSBtZXRob2QuDQo+ICsNCj4gKwl2b2lkIEFk ZE5vZGVGYWlsZWQoYXJyYXl7Ynl0ZX1bMTZdIHV1aWQsIHN0cmluZyByZWFzb24pDQo+ICsNCj4g KwkJVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gdGhlIG5vZGUgcHJvdmlzaW9uaW5nDQo+IGlu aXRpYXRlZCBieQ0KPiArCQlBZGROb2RlKCkgaGFzIGZhaWxlZC4gRGVwZW5kaW5nIG9uIGhvdyBm YXIgUHJvdmlzaW9uaW5nDQo+ICsJCXByb2NlZWRlZCBiZWZvcmUgZmFpbGluZywgc29tZSBjbGVh bnVwIG9mIGNhY2hlZCBkYXRhDQo+IG1heSBiZQ0KPiArCQlyZXF1aXJlZC4NCj4gKw0KPiArCQlU aGUgcmVhc29uIHBhcmFtZXRlciBpZGVudGlmaWVzIHRoZSByZWFzb24gZm9yDQo+IHByb3Zpc2lv bmluZw0KPiArCQlmYWlsdXJlLiBUaGUgZGVmaW5lZCB2YWx1ZXMgYXJlOiAiYWJvcnRlZCIsICJ0 aW1lb3V0IiwNCj4gKwkJImJhZC1wZHUiLCAiY29uZmlybWF0aW9uLWZhaWxlZCIsICJvdXQtb2Yt cmVzb3VyY2VzIiwNCj4gKwkJImRlY3J5cHRpb24tZXJyb3IiLCAidW5leHBlY3RlZC1lcnJvciIs DQo+ICsJCSJjYW5ub3QtYXNzaWduLWFkZHJlc3NlcyIuDQo+ICsNCj4gIFByb3Zpc2lvbmluZyBB Z2VudCBIaWVyYXJjaHkNCj4gID09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gIFNlcnZp Y2UJCXVuaXF1ZSBuYW1lDQo+IEBAIC00NDEsNiArNzgzLDcgQEAgTWV0aG9kczoNCj4gIAkJdGhl IGxvY2FsIHJvbGUgaXMgUHJvdmlzaW9uZXIuDQo+ICANCj4gIAl2b2lkIERpc3BsYXlTdHJpbmco c3RyaW5nIHZhbHVlKQ0KPiArDQo+ICAJCVRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBE YWVtb24gaGFzIHNvbWV0aGluZw0KPiBpbXBvcnRhbnQNCj4gIAkJZm9yIHRoZSBBZ2VudCB0byBE aXNwbGF5LCBidXQgZG9lcyBub3QgcmVxdWlyZSBhbnkNCj4gYWRkaXRpb25hbA0KPiAgCQlpbnB1 dCBsb2NhbGx5LiBGb3IgaW5zdGFuY2U6ICJFbnRlciAiQUJDREUiIG9uIHJlbW90ZQ0KPiBkZXZp Y2UiLg0KPiBAQCAtNDUxLDkgKzc5NCw4IEBAIE1ldGhvZHM6DQo+ICAJCWZvciB0aGUgQWdlbnQg dG8gRGlzcGxheSwgYnV0IGRvZXMgbm90IHJlcXVpcmUgYW55DQo+IGFkZGl0aW9uYWwNCj4gIAkJ aW5wdXQgbG9jYWxseS4gRm9yIGluc3RhbmNlOiAiRW50ZXIgMTQ5MzkyNjQgb24gcmVtb3RlDQo+ IGRldmljZSIuDQo+ICANCj4gLQkJVGhlIHR5cGUgcGFyYW1ldGVyIGluZGljYXRlcyB0aGUgZGlz cGxheQ0KPiBtZXRob2QuICBBbGxvd2VkIHZhbHVlcw0KPiArCQlUaGUgdHlwZSBwYXJhbWV0ZXIg aW5kaWNhdGVzIHRoZSBkaXNwbGF5IG1ldGhvZC4NCj4gQWxsb3dlZCB2YWx1ZXMNCj4gIAkJYXJl Og0KPiAtDQo+ICAJCQkiYmxpbmsiIC0gTG9jYWxseSBibGluayBMRUQNCj4gIAkJCSJiZWVwIiAt IExvY2FsbHkgbWFrZSBhIG5vaXNlDQo+ICAJCQkidmlicmF0ZSIgLSBMb2NhbGx5IHZpYnJhdGUN Cj4gQEAgLTQ2NiwxMiArODA4LDExIEBAIE1ldGhvZHM6DQo+ICANCj4gIAl1aW50MzIgUHJvbXB0 TnVtZXJpYyhzdHJpbmcgdHlwZSkNCj4gIA0KPiAtCQlUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hl biB0aGUgRGFlbW9uIGhhcyByZXF1aXJlcyB0aGUNCj4gdXNlciB0bw0KPiAtCQllbnRlciBhIDEt OTk5OTk5OTkgZGlnaXQgZGVjaW1hbCB2YWx1ZS4NCj4gKwkJVGhpcyBtZXRob2QgaXMgY2FsbGVk IHdoZW4gdGhlIERhZW1vbiByZXF1ZXN0cyB0aGUgdXNlcg0KPiB0bw0KPiArCQllbnRlciBhIGRl Y2ltYWwgdmFsdWUgYmV0d2VlbiAxLTk5OTk5OTk5Lg0KPiAgDQo+ICAJCVRoZSB0eXBlIHBhcmFt ZXRlciBpbmRpY2F0ZXMgdGhlIGlucHV0IG1ldGhvZC4gQWxsb3dlZA0KPiB2YWx1ZXMNCj4gIAkJ YXJlOg0KPiAtDQo+ICAJCQkiYmxpbmsiIC0gRW50ZXIgdGltZXMgcmVtb3RlIExFRCBibGlua2Vk DQo+ICAJCQkiYmVlcCIgLSBFbnRlciB0aW1lcyByZW1vdGUgZGV2aWNlIGJlZXBlZA0KPiAgCQkJ InZpYnJhdGUiIC0gRW50ZXIgdGltZXMgcmVtb3RlIGRldmljZSB2aWJyYXRlZA0KPiBAQCAtNDgz LDE0ICs4MjQsMTMgQEAgTWV0aG9kczoNCj4gIAkJVGhpcyBhZ2VudCBzaG91bGQgcHJvbXB0IHRo ZSB1c2VyIGZvciBzcGVjaWZpYyBpbnB1dC4NCj4gRm9yDQo+ICAJCWluc3RhbmNlOiAiRW50ZXIg dmFsdWUgYmVpbmcgZGlzcGxheWVkIGJ5IHJlbW90ZQ0KPiBkZXZpY2UiLg0KPiAgDQo+IC0JYXJy YXl7Ynl0ZX0gUHJvbXB0U3RhdGljKHN0cmluZyB0eXBlKQ0KPiArCWFycmF5e2J5dGV9WzE2XSBQ cm9tcHRTdGF0aWMoc3RyaW5nIHR5cGUpDQo+ICANCj4gIAkJVGhpcyBtZXRob2QgaXMgY2FsbGVk IHdoZW4gdGhlIERhZW1vbiByZXF1aXJlcyBhIDE2DQo+IG9jdGV0IGJ5dGUNCj4gIAkJYXJyYXks IGFzIGFuIE91dC1vZi1CYW5kIGF1dGhlbnRpY2F0aW9uLg0KPiAgDQo+ICAJCVRoZSB0eXBlIHBh cmFtZXRlciBpbmRpY2F0ZXMgdGhlIGlucHV0IG1ldGhvZC4gQWxsb3dlZA0KPiB2YWx1ZXMNCj4g IAkJYXJlOg0KPiAtDQo+ICAJCQkic3RhdGljLW9vYiIgLSByZXR1cm4gMTYgb2N0ZXQgYXJyYXkN Cj4gIAkJCSJpbi1hbHBoYSIgLSByZXR1cm4gMTYgb2N0ZXQgYWxwaGEgYXJyYXkNCj4gIA0KPiBA QCAtNTExLDcgKzg1MSw2IEBAIFByb3BlcnRpZXM6DQo+ICAJYXJyYXl7c3RyaW5nfSBDYXBhYmls aXRpZXMgW3JlYWQtb25seV0NCj4gIA0KPiAgCQlBbiBhcnJheSBvZiBzdHJpbmdzIHdpdGggdGhl IGZvbGxvd2luZyBhbGxvd2VkIHZhbHVlczoNCj4gLQ0KPiAgCQkJImJsaW5rIg0KPiAgCQkJImJl ZXAiDQo+ICAJCQkidmlicmF0ZSINCj4gQEAgLTUyOCw3ICs4NjcsNiBAQCBQcm9wZXJ0aWVzOg0K PiAgDQo+ICAJCUluZGljYXRlcyBhdmFpbGFiaWxpdHkgb2YgT09CIGRhdGEuIEFuIGFycmF5IG9m IHN0cmluZ3MNCj4gd2l0aCB0aGUNCj4gIAkJZm9sbG93aW5nIGFsbG93ZWQgdmFsdWVzOg0KPiAt DQo+ICAJCQkib3RoZXIiDQo+ICAJCQkidXJpIg0KPiAgCQkJIm1hY2hpbmUtY29kZS0yZCINCj4g QEAgLTU0Niw4ICs4ODQsMyBAQCBQcm9wZXJ0aWVzOg0KPiAgDQo+ICAJCVVuaWZvcm0gUmVzb3Vy Y2UgSWRlbnRpZmllciBwb2ludHMgdG8gb3V0LW9mLWJhbmQgKE9PQikNCj4gIAkJaW5mb3JtYXRp b24gKGUuZy4sIGEgcHVibGljIGtleSkNCj4gLQ0KPiAtDQo+IC1NZXNoIFByb3Zpc2lvbmVyIEhp ZXJhcmNoeQ0KPiAtPT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gLTxUQkQ+DQo+IA0KPiAN Cg0KDQpJbmdhDQo=