From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: "Stotland, Inga" To: "andri@yngvason.is" , "linux-bluetooth@vger.kernel.org" Subject: Re: [PATCH BlueZ] Mesh: Add basic sensor model Date: Fri, 10 Aug 2018 01:50:34 +0000 Message-ID: <1533865832.11928.28.camel@intel.com> References: <20180808212610.21144-1-andri@yngvason.is> In-Reply-To: <20180808212610.21144-1-andri@yngvason.is> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-bluetooth-owner@vger.kernel.org List-ID: SGkgQW5kcmksDQoNCk9uIFdlZCwgMjAxOC0wOC0wOCBhdCAyMToyNiArMDAwMCwgQW5kcmkgWW5n dmFzb24gd3JvdGU6DQo+IFRoaXMgaXMgYW4gaW5jb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0 aGUgc2Vuc29yIG1vZGVsLiBPbmx5ICJnZXQiIGFuZA0KPiAic3RhdHVzIiBhcmUgc3VwcG9ydGVk Lg0KPiAtLS0NCj4gIE1ha2VmaWxlLnRvb2xzICAgICAgICAgICAgfCAgIDMgKy0NCj4gIHRvb2xz L21lc2gvc2Vuc29yLW1vZGVsLmMgfCAyNTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysNCj4gIHRvb2xzL21lc2gvc2Vuc29yLW1vZGVsLmggfCAgMzcgKysrKysrDQo+ICB0 b29scy9tZXNoY3RsLmMgICAgICAgICAgIHwgICA0ICsNCj4gIDQgZmlsZXMgY2hhbmdlZCwgMjk1 IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29s cy9tZXNoL3NlbnNvci1tb2RlbC5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvbWVzaC9z ZW5zb3ItbW9kZWwuaA0KPiANCj4gZGlmZiAtLWdpdCBhL01ha2VmaWxlLnRvb2xzIGIvTWFrZWZp bGUudG9vbHMNCj4gaW5kZXggZjgxZmQwYTRjLi43NmUzN2ZjMGQgMTAwNjQ0DQo+IC0tLSBhL01h a2VmaWxlLnRvb2xzDQo+ICsrKyBiL01ha2VmaWxlLnRvb2xzDQo+IEBAIC0zMDgsNyArMzA4LDgg QEAgdG9vbHNfbWVzaGN0bF9TT1VSQ0VTID0gdG9vbHMvbWVzaGN0bC5jIFwNCj4gIAkJCQl0b29s cy9tZXNoL3Byb3YtZGIuaCB0b29scy9tZXNoL3Byb3YtZGIuYyBcDQo+ICAJCQkJdG9vbHMvbWVz aC9jb25maWctbW9kZWwuaCB0b29scy9tZXNoL2NvbmZpZy1jbGllbnQuYyBcDQo+ICAJCQkJdG9v bHMvbWVzaC9jb25maWctc2VydmVyLmMgXA0KPiAtCQkJCXRvb2xzL21lc2gvb25vZmYtbW9kZWwu aCB0b29scy9tZXNoL29ub2ZmLW1vZGVsLmMNCj4gKwkJCQl0b29scy9tZXNoL29ub2ZmLW1vZGVs LmggdG9vbHMvbWVzaC9vbm9mZi1tb2RlbC5jIFwNCj4gKwkJCQl0b29scy9tZXNoL3NlbnNvci1t b2RlbC5oIHRvb2xzL21lc2gvc2Vuc29yLW1vZGVsLmMNCj4gIHRvb2xzX21lc2hjdGxfTERBREQg PSBnZGJ1cy9saWJnZGJ1cy1pbnRlcm5hbC5sYSBzcmMvbGlic2hhcmVkLWdsaWIubGEgXA0KPiAg CQkJCWxpYi9saWJibHVldG9vdGgtaW50ZXJuYWwubGEgXA0KPiAgCQkJCUBHTElCX0xJQlNAIEBE QlVTX0xJQlNAIC1sanNvbi1jIC1scmVhZGxpbmUNCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL21lc2gv c2Vuc29yLW1vZGVsLmMgYi90b29scy9tZXNoL3NlbnNvci1tb2RlbC5jDQo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMC4uY2JjNmM3ODA2DQo+IC0tLSAvZGV2L251bGwN Cj4gKysrIGIvdG9vbHMvbWVzaC9zZW5zb3ItbW9kZWwuYw0KPiBAQCAtMCwwICsxLDI1MiBAQA0K PiArLyoNCj4gKyAqDQo+ICsgKiAgQmx1ZVogLSBCbHVldG9vdGggcHJvdG9jb2wgc3RhY2sgZm9y IExpbnV4DQo+ICsgKg0KPiArICogIENvcHlyaWdodCAoQykgMjAxNyAgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgKiAgQ29weXJpZ2h0IChDKSAyMDE4ICBBbmRy aSBZbmd2YXNvbiA8YW5kcmlAeW5ndmFzb24uaXM+DQo+ICsgKg0KPiArICoNCj4gKyAqICBUaGlz IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y DQo+ICsgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYw0KPiArICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlcg0KPiArICogIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNl LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KPiArICoNCj4gKyAqICBU aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwNCj4gKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZg0KPiArICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VDQo+ICsgKiAgTGVzc2VyIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCj4gKyAqDQo+ICsgKiAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp Yw0KPiArICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUNCj4gKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp biBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQ0KPiArICoNCj4g KyAqLw0KPiArDQo+ICsjaW5jbHVkZSA8c3RkaW8uaD4NCj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4N Cj4gKyNpbmNsdWRlIDxzdGRib29sLmg+DQo+ICsjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ICsjaW5j bHVkZSA8aW50dHlwZXMuaD4NCj4gKyNpbmNsdWRlIDxnbGliLmg+DQo+ICsNCj4gKyNpbmNsdWRl ICJzcmMvc2hhcmVkL3NoZWxsLmgiDQo+ICsjaW5jbHVkZSAic3JjL3NoYXJlZC91dGlsLmgiDQo+ ICsjaW5jbHVkZSAidG9vbHMvbWVzaC9tZXNoLW5ldC5oIg0KPiArI2luY2x1ZGUgInRvb2xzL21l c2gvbm9kZS5oIg0KPiArI2luY2x1ZGUgInRvb2xzL21lc2gvbmV0LmgiDQo+ICsjaW5jbHVkZSAi dG9vbHMvbWVzaC91dGlsLmgiDQo+ICsjaW5jbHVkZSAidG9vbHMvbWVzaC9zZW5zb3ItbW9kZWwu aCINCj4gKw0KPiArc3RhdGljIHVpbnQxNl90IHNlbnNvcl9hcHBfaWR4ID0gQVBQX0lEWF9JTlZB TElEOw0KPiArDQo+ICtzdGF0aWMgaW50IGNsaWVudF9iaW5kKHVpbnQxNl90IGFwcF9pZHgsIGlu dCBhY3Rpb24pDQo+ICt7DQo+ICsJaWYgKGFjdGlvbiA9PSBBQ1RJT05fQUREKSB7DQo+ICsJCWlm IChzZW5zb3JfYXBwX2lkeCAhPSBBUFBfSURYX0lOVkFMSUQpDQo+ICsJCQlyZXR1cm4gTUVTSF9T VEFUVVNfSU5TVUZGX1JFU09VUkNFUzsNCj4gKw0KPiArCQlzZW5zb3JfYXBwX2lkeCA9IGFwcF9p ZHg7DQo+ICsJCWJ0X3NoZWxsX3ByaW50ZigiU2Vuc29yIGNsaWVudCBtb2RlbDogbmV3IGJpbmRp bmcgJTQuNHhcbiIsDQo+ICsJCQkJYXBwX2lkeCk7DQo+ICsJfSBlbHNlIHsNCj4gKwkJaWYgKHNl bnNvcl9hcHBfaWR4ID09IGFwcF9pZHgpDQo+ICsJCQlzZW5zb3JfYXBwX2lkeCA9IEFQUF9JRFhf SU5WQUxJRDsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gTUVTSF9TVEFUVVNfU1VDQ0VTUzsNCj4g K30NCj4gKw0KPiArc3RhdGljIHNzaXplX3QgZGVjb2RlX3Rsdl9oZWFkKHVpbnQxNl90ICpwcm9w ZXJ0eV9pZCwgc2l6ZV90ICp2YWx1ZV9pbmRleCwNCj4gKwkJCSAgICAgICBjb25zdCB2b2lkICpk YXRhLCBzaXplX3QgbWF4X3NpemUpDQoNCndoaXRlc3BhY2VzLT50YWJzDQoNCj4gK3sNCj4gKwlz c2l6ZV90IGxlbjsNCj4gKw0KPiArCWlmIChtYXhfc2l6ZSA9PSAwKQ0KPiArCQlyZXR1cm4gLTE7 DQo+ICsNCj4gKwljb25zdCB1aW50OF90ICpiID0gZGF0YTsNCg0KUGxlYXNlIG1vdmUgdGhpcyB0 byB0aGUgYmVnaW5ubmcgb2YgdGhlIGZ1Y3Rpb24sIGluIHRvIHRoZSBkZWNsYXJhdGlvbnMNCnNw YWNlLiANCmdjYyAodiA3LjMuMSkgZ2l2ZXMgdGhpcyBlcnJvcjogIklTTyBDOTAgZm9yYmlkcyBt aXhlZCBkZWNsYXJhdGlvbnMgYW5kDQpjb2RlIg0KUGxlYXNlIG1ha2Ugc3VyZSB5b3UgY29tcGls ZSB3aXRoIHJlbGF0aXZlbHkgcmVjZW50IGNvbXBpbGVyIHRvIGdldCByaWQNCm9mIGVycm9ycyBh bmQgd2FybmluZ3MuDQoNCj4gKw0KPiArCWlmIChiWzBdICYgMSkgew0KDQpQbGVhc2UgaW5zZXJ0 IGEgbGluZSBicmVhaw0KDQo+ICsJCWlmIChtYXhfc2l6ZSA8IDMpDQo+ICsJCQlyZXR1cm4gLTE7 DQo+ICsNCj4gKwkJbGVuID0gYlswXSA+PiAxOw0KPiArCQkqcHJvcGVydHlfaWQgPSBiWzFdIHwg YlsyXSA8PCA4Ow0KPiArCQkqdmFsdWVfaW5kZXggPSAzOw0KPiArDQo+ICsJfSBlbHNlIHsNCg0K cGxlYXNlIGluc2VydCBhbiBlbXB0eSBsaW5lDQoNCj4gKwkJaWYgKG1heF9zaXplIDwgMikNCj4g KwkJCXJldHVybiAtMTsNCj4gKw0KPiArCQlsZW4gPSAoYlswXSA+PiAxKSAmIDc7DQo+ICsJCSpw cm9wZXJ0eV9pZCA9IGJbMF0gPj4gNCB8IGJbMV07DQo+ICsJCSp2YWx1ZV9pbmRleCA9IDI7DQo+ ICsJfQ0KPiArDQo+ICsJcmV0dXJuIGxlbjsNCj4gK30NCj4gKw0KPiArLyogVE9ETzogVGhlIHNl bnNvciB2YWx1ZSBzaXplLCBzaWduZWRuZXNzIGFuZCBtdWx0aXBsaWVyIHNob3VsZCBiZSBiYXNl ZCBvbiB0aGUNCg0KRnJvbSBibHVlei9kb2MvY29kaW5nLXN0eWxlLnR4dDogIklmIHlvdXIgY29t bWVudCBoYXMgbW9yZSB0aGFuIG9uZQ0KbGluZSwgcGxlYXNlIHN0YXJ0IGl0IGZyb20gdGhlIHNl Y29uZCBsaW5lLiINCg0KPiArICogcHJvcGVyeSBpZC4NCg0KcHJvcGVyeS0+cHJvcGVydHkNCg0K PiArICovDQo+ICtzdGF0aWMgaW50MzJfdCBjb252ZXJ0X3NlbnNvcl92YWx1ZShjb25zdCB2b2lk ICpkYXRhLCBzaXplX3QgbGVuKQ0KPiArew0KPiArCWNvbnN0IHVpbnQ4X3QgKmIgPSBkYXRhOw0K PiArDQo+ICsJc3dpdGNoIChsZW4pIHsNCj4gKwljYXNlIDE6IHJldHVybiAoaW50OF90KWJbMF07 DQo+ICsJY2FzZSAyOiByZXR1cm4gKGludDE2X3QpKGJbMF0gfCBiWzFdIDw8IDgpOw0KPiArCWNh c2UgNDogcmV0dXJuIChpbnQzMl90KShiWzBdIHwgYlsxXSA8PCA4IHwgYlsyXSA8PCAxNiB8IGJb M10gPDwgMjQpOw0KDQpUaGlzIHR5cGVjYXN0aW5nIGxvb2tzIHVubmVjZXNzYXJ5DQoNCj4gKwl9 DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgaW50ZXJwcmV0 X3NlbnNvcl9zdGF0dXMoY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpDQo+ICt7DQo+ICsJ c3NpemVfdCBsZW47DQo+ICsJc2l6ZV90IGk7DQo+ICsJc2l6ZV90IHZhbHVlX2luZGV4ID0gMDsN Cj4gKw0KDQpQbGVhc2UgcmVtb3ZlIGFuIGV4dHJhIGVtcHR5IGxpbmUNCg0KPiArCWNvbnN0IHVp bnQ4X3QgKmIgPSBkYXRhOw0KPiArDQo+ICsJZm9yIChpID0gMDsgaSA8IHNpemU7IGkgKz0gbGVu ICsgdmFsdWVfaW5kZXgpIHsNCj4gKwkJdWludDE2X3QgcHJvcGVydHlfaWQgPSAwOw0KPiArDQo+ ICsJCWxlbiA9IGRlY29kZV90bHZfaGVhZCgmcHJvcGVydHlfaWQsICZ2YWx1ZV9pbmRleCwgJmJb aV0sDQo+ICsJCQkJICAgICAgc2l6ZSAtIGkpOw0KPiArCQlpZiAobGVuIDwgMCkNCj4gKwkJCXJl dHVybjsNCj4gKw0KDQpZb3UnZCBhbHNvIHdhbnQgdG8gY2hlY2sgaWYgdGhlIGRhdGEgYnVmZmVy IGlzIGxvbmcgZW5vdWdoIHRvDQphY2NvbW9kYXRlICJsZW4iIGJ5dGVzDQoNCj4gKwkJY29uc3Qg Y2hhciAqcHJvcGVydHlfbmFtZSA9IGJ0X3V1aWQxNl90b19zdHIocHJvcGVydHlfaWQpOw0KPiAr CQlpbnQzMl90IHZhbHVlID0gY29udmVydF9zZW5zb3JfdmFsdWUoJmJbaSArIHZhbHVlX2luZGV4 XSwgbGVuKTsNCg0KUGxlYXNlIG1vdmUgZGVjbGFyYXRpb25zIHRvIHRoZSBzdGFydCBvZiAiZm9y IiBsb29wLiBJbml0aWFsaXNlIGxhdGVyLg0KDQo+ICsNCj4gKwkJaWYgKHByb3BlcnR5X25hbWUp DQo+ICsJCQlidF9zaGVsbF9wcmludGYoIiVzOiAlIiBQUklpMzIgIlxuIiwgcHJvcGVydHlfbmFt ZSwNCj4gKwkJCQkJdmFsdWUpOw0KPiArCQllbHNlDQo+ICsJCQlidF9zaGVsbF9wcmludGYoIiV4 OiAlIiBQUklpMzIgIlxuIiwgcHJvcGVydHlfaWQsDQo+ICsJCQkJCXZhbHVlKTsNCj4gKwl9DQo+ ICt9DQo+ICsNCj4gK3N0YXRpYyBib29sIGNsaWVudF9tc2dfcmVjZWl2ZWQodWludDE2X3Qgc3Jj LCB1aW50OF90ICpkYXRhLCB1aW50MTZfdCBsZW4sDQo+ICsJCQkJdm9pZCAqdXNlcmRhdGEpDQo+ ICt7DQo+ICsJdWludDMyX3Qgb3Bjb2RlOw0KPiArCWludCBuOw0KPiArDQo+ICsJaWYgKCFtZXNo X29wY29kZV9nZXQoZGF0YSwgbGVuLCAmb3Bjb2RlLCAmbikpDQo+ICsJCXJldHVybiBmYWxzZTsN Cj4gKw0KPiArCWxlbiAtPSBuOw0KPiArCWRhdGEgKz0gbjsNCj4gKw0KPiArCWJ0X3NoZWxsX3By aW50ZigiU2Vuc29yIE1vZGVsIE1lc3NhZ2UgcmVjZWl2ZWQgKCVkKSBvcGNvZGUgJXhcbiIsDQo+ ICsJCQlsZW4sIG9wY29kZSk7DQo+ICsNCj4gKwlwcmludF9ieXRlX2FycmF5KCJcdCIsIGRhdGEs IGxlbik7DQo+ICsNCj4gKwlzd2l0Y2ggKG9wY29kZSAmIH5PUF9VTlJFTElBQkxFKSB7DQo+ICsJ ZGVmYXVsdDoNCj4gKwkJcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsJY2FzZSBPUF9TRU5TT1JfU1RB VFVTOg0KPiArCQlidF9zaGVsbF9wcmludGYoIk5vZGUgJTQuNHg6XG4iLCBzcmMpOw0KPiArCQlp bnRlcnByZXRfc2Vuc29yX3N0YXR1cyhkYXRhLCBsZW4pOw0KPiArCQlicmVhazsNCj4gKwl9DQo+ ICsNCj4gKwlyZXR1cm4gdHJ1ZTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHVpbnQzMl90IHRhcmdl dDsNCj4gKw0KPiArc3RhdGljIGJvb2wgc2VuZF9jbWQodWludDhfdCAqYnVmLCB1aW50MTZfdCBs ZW4pDQo+ICt7DQo+ICsJc3RydWN0IG1lc2hfbm9kZSAqbm9kZSA9IG5vZGVfZ2V0X2xvY2FsX25v ZGUoKTsNCj4gKwl1aW50OF90IHR0bDsNCj4gKw0KPiArCWlmICghbm9kZSkNCj4gKwkJcmV0dXJu IGZhbHNlOw0KPiArDQo+ICsJdHRsID0gbm9kZV9nZXRfZGVmYXVsdF90dGwobm9kZSk7DQo+ICsN Cj4gKwlyZXR1cm4gbmV0X2FjY2Vzc19sYXllcl9zZW5kKHR0bCwgbm9kZV9nZXRfcHJpbWFyeShu b2RlKSwNCj4gKwkJCQkgICAgIHRhcmdldCwgc2Vuc29yX2FwcF9pZHgsIGJ1ZiwgbGVuKTsNCg0K d2hpdGVzcGFjZXMtPnRhYnMNCg0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBjbWRfc2V0X25v ZGUoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCj4gK3sNCj4gKwl1aW50MzJfdCBkc3Q7DQo+ICsJ Y2hhciAqZW5kOw0KPiArDQo+ICsJZHN0ID0gc3RydG9sKGFyZ3ZbMV0sICZlbmQsIDE2KTsNCg0K SW5zZXJ0IGVtcHR5IGxpbmUNCg0KPiArCWlmIChlbmQgIT0gKGFyZ3ZbMV0gKyA0KSkgew0KPiAr CQlidF9zaGVsbF9wcmludGYoIkJhZCB1bmljYXN0IGFkZHJlc3MgJXM6IGV4cGVjdGVkIGZvcm1h dCA0IGRpZ2l0IGhleFxuIiwNCg0KTGluZSBvdmVyIDgwIGNoYXJhY3RlcnMNCg0KPiArCQkJCWFy Z3ZbMV0pOw0KPiArCQl0YXJnZXQgPSBVTkFTU0lHTkVEX0FERFJFU1M7DQo+ICsJCXJldHVybiBi dF9zaGVsbF9ub25pbnRlcmFjdGl2ZV9xdWl0KEVYSVRfRkFJTFVSRSk7DQo+ICsJfSBlbHNlIHsN Cg0KRWxzZSBpcyBub3QgbmVlZGVkIGFmdGVyIHJldHVybiBpbiAiaWYiIGNsYXVzZSBhYm92ZQ0K DQo+ICsJCWJ0X3NoZWxsX3ByaW50ZigiQ29udHJvbGxpbmcgc2Vuc29yIGZvciBub2RlICU0LjR4 XG4iLCBkc3QpOw0KPiArCQl0YXJnZXQgPSBkc3Q7DQo+ICsJCXNldF9tZW51X3Byb21wdCgic2Vu c29yIiwgYXJndlsxXSk7DQo+ICsJCXJldHVybiBidF9zaGVsbF9ub25pbnRlcmFjdGl2ZV9xdWl0 KEVYSVRfU1VDQ0VTUyk7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICsvKiBUT0RPOiBSZXF1ZXN0aW5n IGEgc3BlY2lmaWMgcHJvZmlsZSBpZCBpcyBub3Qgc3VwcG9ydGVkLg0KPiArICovDQoNClBsZWFz ZSBtYWtlIHRoaXMgYSBvbmUtbGluZSBjb21tZW50DQoNCj4gK3N0YXRpYyB2b2lkIGNtZF9nZXQo aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCj4gK3sNCj4gKwl1aW50MTZfdCBuOw0KPiArCXVpbnQ4 X3QgbXNnWzMyXTsNCj4gKwlzdHJ1Y3QgbWVzaF9ub2RlICpub2RlOw0KPiArDQo+ICsJaWYgKElT X1VOQVNTSUdORUQodGFyZ2V0KSkgew0KPiArCQlidF9zaGVsbF9wcmludGYoIkRlc3RpbmF0aW9u IG5vdCBzZXRcbiIpOw0KPiArCQlyZXR1cm4gYnRfc2hlbGxfbm9uaW50ZXJhY3RpdmVfcXVpdChF WElUX0ZBSUxVUkUpOw0KPiArCX0NCj4gKw0KPiArCW5vZGUgPSBub2RlX2ZpbmRfYnlfYWRkcih0 YXJnZXQpOw0KPiArDQo+ICsJaWYgKCFub2RlKQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwluID0g bWVzaF9vcGNvZGVfc2V0KE9QX1NFTlNPUl9HRVQsIG1zZyk7DQo+ICsNCj4gKwlpZiAoIXNlbmRf Y21kKG1zZywgbikpIHsNCj4gKwkJYnRfc2hlbGxfcHJpbnRmKCJGYWlsZWQgdG8gc2VuZCBcIlNF TlNPUiBHRVRcIlxuIik7DQo+ICsJCXJldHVybiBidF9zaGVsbF9ub25pbnRlcmFjdGl2ZV9xdWl0 KEVYSVRfRkFJTFVSRSk7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIGJ0X3NoZWxsX25vbmludGVy YWN0aXZlX3F1aXQoRVhJVF9TVUNDRVNTKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBidF9zaGVsbF9tZW51IHNlbnNvcl9tZW51ID0gew0KPiArCS5uYW1lID0gInNlbnNvciIs DQo+ICsJLmRlc2MgPSAiU2Vuc29yIE1vZGVsIFN1Ym1lbnUiLA0KPiArCS5lbnRyaWVzID0gew0K PiArCQl7ICJ0YXJnZXQiLCAiPHVuaWNhc3Q+IiwgY21kX3NldF9ub2RlLCAiU2V0IG5vZGUgdG8g Y29uZmlndXJlIiB9LA0KDQpMaW5lIG92ZXIgODAgY2hhcmFjdGVycw0KDQo+ICsJCXsgImdldCIs IE5VTEwsIGNtZF9nZXQsICJHZXQgc2Vuc29yIHN0YXR1cyIgfSwNCj4gKwkJeyB9DQo+ICsJfSwN Cj4gK307DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgbWVzaF9tb2RlbF9vcHMgY2xpZW50X2NicyA9 IHsNCj4gKwljbGllbnRfbXNnX3JlY2VpdmVkLA0KPiArCWNsaWVudF9iaW5kLA0KPiArCU5VTEws DQo+ICsJTlVMTCwNCj4gK307DQo+ICsNCj4gK2Jvb2wgc2Vuc29yX2NsaWVudF9pbml0KHVpbnQ4 X3QgZWxlbWVudCkNCj4gK3sNCj4gKwlpZiAoIW5vZGVfbG9jYWxfbW9kZWxfcmVnaXN0ZXIoZWxl bWVudCwgU0VOU09SX0NMSUVOVF9NT0RFTF9JRCwNCj4gKwkJCQkgICAgICAgJmNsaWVudF9jYnMs IE5VTEwpKQ0KPiArCQlyZXR1cm4gZmFsc2U7DQo+ICsNCj4gKwlidF9zaGVsbF9hZGRfc3VibWVu dSgmc2Vuc29yX21lbnUpOw0KPiArDQo+ICsJcmV0dXJuIHRydWU7DQo+ICt9DQo+IGRpZmYgLS1n aXQgYS90b29scy9tZXNoL3NlbnNvci1tb2RlbC5oIGIvdG9vbHMvbWVzaC9zZW5zb3ItbW9kZWwu aA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAuLjk4NGRjZGM0Mw0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3Rvb2xzL21lc2gvc2Vuc29yLW1vZGVsLmgNCj4gQEAg LTAsMCArMSwzNyBAQA0KPiArLyoNCj4gKyAqDQo+ICsgKiAgQmx1ZVogLSBCbHVldG9vdGggcHJv dG9jb2wgc3RhY2sgZm9yIExpbnV4DQo+ICsgKg0KPiArICogIENvcHlyaWdodCAoQykgMjAxOCAg QW5kcmkgWW5ndmFzb24gPGFuZHJpQHluZ3Zhc29uLmlzPg0KPiArICoNCj4gKyAqDQo+ICsgKiAg VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vcg0KPiArICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMNCj4gKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCj4gKyAqICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGlj ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCj4gKyAqDQo+ICsg KiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsDQo+ICsgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YNCj4gKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KPiArICogIExlc3NlciBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQo+ICsgKg0KPiArICogIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMNCj4gKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQo+ICsgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh bmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0ENCj4gKyAq DQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBTRU5TT1JfU0VSVkVSX01PREVMX0lEIDB4MTEwMA0K PiArI2RlZmluZSBTRU5TT1JfQ0xJRU5UX01PREVMX0lEIDB4MTEwMg0KPiArDQo+ICsjZGVmaW5l IE9QX1NFTlNPUl9ERVNDUklQVE9SX0dFVCAweDgyMzANCj4gKyNkZWZpbmUgT1BfU0VOU09SX0RF U0NSSVBUT1JfU1RBVFVTIDB4NTENCj4gKyNkZWZpbmUgT1BfU0VOU09SX0dFVCAweDgyMzENCj4g KyNkZWZpbmUgT1BfU0VOU09SX1NUQVRVUyAweDUyDQo+ICsjZGVmaW5lIE9QX1NFTlNPUl9DT0xV TU5fR0VUIDB4ODIzMg0KPiArI2RlZmluZSBPUF9TRU5TT1JfQ09MVU1OX1NUQVRVUyAweDUzDQo+ ICsjZGVmaW5lIE9QX1NFTlNPUl9TRVJJRVNfR0VUIDB4ODIzMw0KPiArI2RlZmluZSBPUF9TRU5T T1JfU0VSSUVTX1NUQVRVUyAweDU0DQo+ICsNCj4gK3ZvaWQgc2Vuc29yX3NldF9ub2RlKGNvbnN0 IGNoYXIgKmFyZ3MpOw0KPiArYm9vbCBzZW5zb3JfY2xpZW50X2luaXQodWludDhfdCBlbGVtZW50 KTsNCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL21lc2hjdGwuYyBiL3Rvb2xzL21lc2hjdGwuYw0KPiBp bmRleCAzZTE0ODRmNjEuLjA4YmJhOWExMyAxMDA2NDQNCj4gLS0tIGEvdG9vbHMvbWVzaGN0bC5j DQo+ICsrKyBiL3Rvb2xzL21lc2hjdGwuYw0KPiBAQCAtNTgsNiArNTgsNyBAQA0KPiAgI2luY2x1 ZGUgIm1lc2gvcHJvdi1kYi5oIg0KPiAgI2luY2x1ZGUgIm1lc2gvY29uZmlnLW1vZGVsLmgiDQo+ ICAjaW5jbHVkZSAibWVzaC9vbm9mZi1tb2RlbC5oIg0KPiArI2luY2x1ZGUgIm1lc2gvc2Vuc29y LW1vZGVsLmgiDQo+ICANCj4gIC8qIFN0cmluZyBkaXNwbGF5IGNvbnN0YW50cyAqLw0KPiAgI2Rl ZmluZSBDT0xPUkVEX05FVwlDT0xPUl9HUkVFTiAiTkVXIiBDT0xPUl9PRkYNCj4gQEAgLTE5OTAs NiArMTk5MSw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQo+ICAJaWYgKCFv bm9mZl9jbGllbnRfaW5pdChQUklNQVJZX0VMRU1FTlRfSURYKSkNCj4gIAkJZ19wcmludGVycigi RmFpbGVkIHRvIGluaXRpYWxpemUgbWVzaCBnZW5lcmljIE9uL09mZiBjbGllbnRcbiIpOw0KPiAg DQo+ICsJaWYgKCFzZW5zb3JfY2xpZW50X2luaXQoUFJJTUFSWV9FTEVNRU5UX0lEWCkpDQo+ICsJ CWdfcHJpbnRlcnIoIkZhaWxlZCB0byBpbml0aWFsaXplIG1lc2ggc2Vuc29yIGNsaWVudFxuIik7 DQo+ICsNCj4gIAlzdGF0dXMgPSBidF9zaGVsbF9ydW4oKTsNCj4gIA0KPiAgCWdfZGJ1c19jbGll bnRfdW5yZWYoY2xpZW50KTsNCg0KQWxzbywgY291bGQgeW91IHBsZWFzZSBjaGFuZ2UgIk1lc2gi IHRvICJ0b29scy9tZXNoIiBpbiB0aGUgY29tbWl0DQptZXNzYWdlLg0KDQpSZWdhcmRzLA0KDQpJ bmdh