From mboxrd@z Thu Jan 1 00:00:00 1970 From: Simon Glass Subject: [PATCH v2 07/29] libfdt: Bring in proposed pylibfdt changes Date: Fri, 6 Jul 2018 10:27:20 -0600 Message-ID: <20180706162742.186950-8-sjg@chromium.org> References: <20180706162742.186950-1-sjg@chromium.org> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180706162742.186950-1-sjg@chromium.org> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Content-Type: text/plain; charset="us-ascii" To: U-Boot Mailing List Cc: Tom Rini , Devicetree Compiler VGhpcyBwcm92aWRlcyB2YXJpb3VzIHBhdGNoZXMgc2VudCB0byB0aGUgZGV2aWNldHJlZS1jb21w aWxlciBtYWlsaW5nIGxpc3QKdG8gZW5oYW5jZSB0aGUgUHl0aG9uIGJpbmRpbmdzLiBBIGZpbmFs IHZlcnNpb24gb2YgdGhpcyBwYXRjaCBtYXkgYmUKY3JlYXRlZCBvbmNlIHVwc3RyZWFtaW5nIGlz IGNvbXBsZXRlLCBidXQgaWYgaXQgdGFrZXMgdG9vIGxvbmcsIHRoaXMgY2FuCmFjdCBhcyBhIHBs YWNlaG9sZGVyLgoKTmV3IHB5bGliZmR0IGZlYXR1cmVzOgotIFN1cHBvcnQgZm9yIG1vc3QgcmVt YWluaW5nLCByZWxldmFudCBsaWJmZHQgZnVuY3Rpb25zCi0gU3VwcG9ydCBmb3Igc2VxdWVudGlh bC13cml0ZSBmdW5jdGlvbnMKCkNoYW5nZXMgYXJlIGFwcGxpZWQgdG8gZXhpc3RpbmcgVS1Cb290 IHRvb2xzIGFzIG5lZWRlZC4KClNpZ25lZC1vZmYtYnk6IFNpbW9uIEdsYXNzIDxzamdAY2hyb21p dW0ub3JnPgotLS0KCkNoYW5nZXMgaW4gdjI6IE5vbmUKCiBzY3JpcHRzL2R0Yy9saWJmZHQvbGli ZmR0LmggICAgICAgICAgIHwgICAzICsKIHNjcmlwdHMvZHRjL3B5bGliZmR0L2xpYmZkdC5pX3No aXBwZWQgfCA3MDUgKysrKysrKysrKysrKysrKysrKysrKystLS0KIHRvb2xzL2R0b2MvZHRvYy5w eSAgICAgICAgICAgICAgICAgICAgfCAgMjAgKy0KIHRvb2xzL2R0b2MvZmR0LnB5ICAgICAgICAg ICAgICAgICAgICAgfCAgIDMgKy0KIHRvb2xzL2R0b2MvdGVzdF9kdG9jLnB5ICAgICAgICAgICAg ICAgfCAgIDMgKy0KIDUgZmlsZXMgY2hhbmdlZCwgNjYzIGluc2VydGlvbnMoKyksIDcxIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NjcmlwdHMvZHRjL2xpYmZkdC9saWJmZHQuaCBiL3Njcmlw dHMvZHRjL2xpYmZkdC9saWJmZHQuaAppbmRleCAxZTI3NzgwZTExLi5mZDczNjg4ZjllIDEwMDY0 NAotLS0gYS9zY3JpcHRzL2R0Yy9saWJmZHQvbGliZmR0LmgKKysrIGIvc2NyaXB0cy9kdGMvbGli ZmR0L2xpYmZkdC5oCkBAIC0xMzEzLDEwICsxMzEzLDEzIEBAIHN0YXRpYyBpbmxpbmUgaW50IGZk dF9wcm9wZXJ0eV91NjQodm9pZCAqZmR0LCBjb25zdCBjaGFyICpuYW1lLCB1aW50NjRfdCB2YWwp CiAJZmR0NjRfdCB0bXAgPSBjcHVfdG9fZmR0NjQodmFsKTsKIAlyZXR1cm4gZmR0X3Byb3BlcnR5 KGZkdCwgbmFtZSwgJnRtcCwgc2l6ZW9mKHRtcCkpOwogfQorCisjaWZuZGVmIFNXSUcgLyogTm90 IGF2YWlsYWJsZSBpbiBQeXRob24gKi8KIHN0YXRpYyBpbmxpbmUgaW50IGZkdF9wcm9wZXJ0eV9j ZWxsKHZvaWQgKmZkdCwgY29uc3QgY2hhciAqbmFtZSwgdWludDMyX3QgdmFsKQogewogCXJldHVy biBmZHRfcHJvcGVydHlfdTMyKGZkdCwgbmFtZSwgdmFsKTsKIH0KKyNlbmRpZgogCiAvKioKICAq IGZkdF9wcm9wZXJ0eV9wbGFjZWhvbGRlciAtIGFkZCBhIG5ldyBwcm9wZXJ0eSBhbmQgcmV0dXJu IGEgcHRyIHRvIGl0cyB2YWx1ZQpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9kdGMvcHlsaWJmZHQvbGli ZmR0Lmlfc2hpcHBlZCBiL3NjcmlwdHMvZHRjL3B5bGliZmR0L2xpYmZkdC5pX3NoaXBwZWQKaW5k ZXggMmMxYzk4N2MxZC4uNjc3NGI5M2IyYyAxMDA2NDQKLS0tIGEvc2NyaXB0cy9kdGMvcHlsaWJm ZHQvbGliZmR0Lmlfc2hpcHBlZAorKysgYi9zY3JpcHRzL2R0Yy9weWxpYmZkdC9saWJmZHQuaV9z aGlwcGVkCkBAIC0xMiw2ICsxMiwxNyBAQAogJXsKICNkZWZpbmUgU1dJR19GSUxFX1dJVEhfSU5J VAogI2luY2x1ZGUgImxpYmZkdC5oIgorCisvKgorICogV2UgcmVuYW1lIHRoaXMgZnVuY3Rpb24g aGVyZSB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIHN3aWcsIHNpbmNlIHdlIGFsc28gaGF2ZQorICog YSBzdHJ1Y3QgY2FsbGVkIGZkdF9wcm9wZXJ0eS4gVGhhdCBzdHJ1Y3QgY2F1c2VzIHN3aWcgdG8g Y3JlYXRlIGEgY2xhc3MgaW4KKyAqIGxpYmZkdC5weSBjYWxsZWQgZmR0X3Byb3BlcnR5KCksIHdo aWNoIGNvbmZ1c2VzIHRoaW5ncy4KKyAqLworc3RhdGljIGludCBfZmR0X3Byb3BlcnR5KHZvaWQg KmZkdCwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsLCBpbnQgbGVuKQoreworICAg IHJldHVybiBmZHRfcHJvcGVydHkoZmR0LCBuYW1lLCB2YWwsIGxlbik7Cit9CisKICV9CiAKICVw eXRob25jb2RlICV7CkBAIC0xMDgsNiArMTE5LDcgQEAgZGVmIGNoZWNrX2Vycl9udWxsKHZhbCwg cXVpZXQ9KCkpOgogICAgICAgICAgICAgcmFpc2UgRmR0RXhjZXB0aW9uKHZhbCkKICAgICByZXR1 cm4gdmFsCiAKKwogY2xhc3MgRmR0OgogICAgICIiIkRldmljZSB0cmVlIGNsYXNzLCBzdXBwb3J0 aW5nIGFsbCBvcGVyYXRpb25zCiAKQEAgLTEyOSw2ICsxNDEsMTYzIEBAIGNsYXNzIEZkdDoKICAg ICAgICAgc2VsZi5fZmR0ID0gYnl0ZWFycmF5KGRhdGEpCiAgICAgICAgIGNoZWNrX2VycihmZHRf Y2hlY2tfaGVhZGVyKHNlbGYuX2ZkdCkpOwogCisgICAgZGVmIGFzX2J5dGVhcnJheShzZWxmKToK KyAgICAgICAgIiIiR2V0IHRoZSBkZXZpY2UgdHJlZSBjb250ZW50cyBhcyBhIGJ5dGVhcnJheQor CisgICAgICAgIFRoaXMgY2FuIGJlIHBhc3NlZCBkaXJlY3RseSB0byBsaWJmZHQgZnVuY3Rpb25z IHRoYXQgYWNjZXNzIGEKKyAgICAgICAgY29uc3Qgdm9pZCAqIGZvciB0aGUgZGV2aWNlIHRyZWUu CisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIGJ5dGVhcnJheSBjb250YWluaW5nIHRo ZSBkZXZpY2UgdHJlZQorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGJ5dGVhcnJheShzZWxm Ll9mZHQpCisKKyAgICBkZWYgbmV4dF9ub2RlKHNlbGYsIG5vZGVvZmZzZXQsIGRlcHRoLCBxdWll dD0oKSk6CisgICAgICAgICIiIkZpbmQgdGhlIG5leHQgc3Vibm9kZQorCisgICAgICAgIEFyZ3M6 CisgICAgICAgICAgICBub2Rlb2Zmc2V0OiBOb2RlIG9mZnNldCBvZiBwcmV2aW91cyBub2RlCisg ICAgICAgICAgICBkZXB0aDogT24gaW5wdXQsIHRoZSBkZXB0aCBvZiB0aGUgbm9kZSBhdCBub2Rl b2Zmc2V0LiBPbiBvdXRwdXQsIHRoZQorICAgICAgICAgICAgICAgZGVwdGggb2YgdGhlIHJldHVy bmVkIG5vZGUKKyAgICAgICAgICAgIHF1aWV0OiBFcnJvcnMgdG8gaWdub3JlIChlbXB0eSB0byBy YWlzZSBvbiBhbGwgZXJyb3JzKQorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBUaGUg b2Zmc2V0IG9mIHRoZSBuZXh0IG5vZGUsIGlmIGFueQorCisgICAgICAgIFJhaXNlczoKKyAgICAg ICAgICAgIEZkdEV4Y2VwdGlvbiBpZiBubyBtb3JlIG5vZGVzIGZvdW5kIG9yIG90aGVyIGVycm9y IG9jY3VycworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRfbmV4dF9u b2RlKHNlbGYuX2ZkdCwgbm9kZW9mZnNldCwgZGVwdGgpLCBxdWlldCkKKworICAgIGRlZiBmaXJz dF9zdWJub2RlKHNlbGYsIG5vZGVvZmZzZXQsIHF1aWV0PSgpKToKKyAgICAgICAgIiIiRmluZCB0 aGUgZmlyc3Qgc3Vibm9kZSBvZiBhIHBhcmVudCBub2RlCisKKyAgICAgICAgQXJnczoKKyAgICAg ICAgICAgIG5vZGVvZmZzZXQ6IE5vZGUgb2Zmc2V0IG9mIHBhcmVudCBub2RlCisgICAgICAgICAg ICBxdWlldDogRXJyb3JzIHRvIGlnbm9yZSAoZW1wdHkgdG8gcmFpc2Ugb24gYWxsIGVycm9ycykK KworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgVGhlIG9mZnNldCBvZiB0aGUgZmlyc3Qg c3Vibm9kZSwgaWYgYW55CisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgRmR0RXhjZXB0 aW9uIGlmIG5vIHN1Ym5vZGVzIGZvdW5kIG9yIG90aGVyIGVycm9yIG9jY3VycworICAgICAgICAi IiIKKyAgICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRfZmlyc3Rfc3Vibm9kZShzZWxmLl9mZHQs IG5vZGVvZmZzZXQpLCBxdWlldCkKKworICAgIGRlZiBuZXh0X3N1Ym5vZGUoc2VsZiwgbm9kZW9m ZnNldCwgcXVpZXQ9KCkpOgorICAgICAgICAiIiJGaW5kIHRoZSBuZXh0IHN1Ym5vZGUKKworICAg ICAgICBBcmdzOgorICAgICAgICAgICAgbm9kZW9mZnNldDogTm9kZSBvZmZzZXQgb2YgcHJldmlv dXMgc3Vibm9kZQorICAgICAgICAgICAgcXVpZXQ6IEVycm9ycyB0byBpZ25vcmUgKGVtcHR5IHRv IHJhaXNlIG9uIGFsbCBlcnJvcnMpCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFRo ZSBvZmZzZXQgb2YgdGhlIG5leHQgc3Vibm9kZSwgaWYgYW55CisKKyAgICAgICAgUmFpc2VzOgor ICAgICAgICAgICAgRmR0RXhjZXB0aW9uIGlmIG5vIG1vcmUgc3Vibm9kZXMgZm91bmQgb3Igb3Ro ZXIgZXJyb3Igb2NjdXJzCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gY2hlY2tfZXJyKGZk dF9uZXh0X3N1Ym5vZGUoc2VsZi5fZmR0LCBub2Rlb2Zmc2V0KSwgcXVpZXQpCisKKyAgICBkZWYg bWFnaWMoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgbWFnaWMgd29yZCBmcm9tIHRoZSBo ZWFkZXIKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgTWFnaWMgd29yZAorICAgICAg ICAiIiIKKyAgICAgICAgcmV0dXJuIGZkdF9tYWdpYyhzZWxmLl9mZHQpICYgMHhmZmZmZmZmZgor CisgICAgZGVmIHRvdGFsc2l6ZShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSB0b3RhbCBz aXplIG9mIHRoZSBkZXZpY2UgdHJlZQorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBU b3RhbCB0cmVlIHNpemUgaW4gYnl0ZXMKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBjaGVj a19lcnIoZmR0X3RvdGFsc2l6ZShzZWxmLl9mZHQpKQorCisgICAgZGVmIG9mZl9kdF9zdHJ1Y3Qo c2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgc3RhcnQgb2YgdGhlIGRldmljZS10cmVlIHN0 cnVjdCBhcmVhCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFN0YXJ0IG9mZnNldCBv ZiBzdHJ1Y3QgYXJlYQorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRf b2ZmX2R0X3N0cnVjdChzZWxmLl9mZHQpKQorCisgICAgZGVmIG9mZl9kdF9zdHJpbmdzKHNlbGYp OgorICAgICAgICAiIiJSZXR1cm4gdGhlIHN0YXJ0IG9mIHRoZSBkZXZpY2UtdHJlZSBzdHJpbmcg YXJlYQorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBTdGFydCBvZmZzZXQgb2Ygc3Ry aW5nIGFyZWEKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBjaGVja19lcnIoZmR0X29mZl9k dF9zdHJpbmdzKHNlbGYuX2ZkdCkpCisKKyAgICBkZWYgb2ZmX21lbV9yc3ZtYXAoc2VsZik6Cisg ICAgICAgICIiIlJldHVybiB0aGUgc3RhcnQgb2YgdGhlIG1lbW9yeSByZXNlcnZlIG1hcAorCisg ICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBTdGFydCBvZmZzZXQgb2YgbWVtb3J5IHJlc2Vy dmUgbWFwCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gY2hlY2tfZXJyKGZkdF9vZmZfbWVt X3Jzdm1hcChzZWxmLl9mZHQpKQorCisgICAgZGVmIHZlcnNpb24oc2VsZik6CisgICAgICAgICIi IlJldHVybiB0aGUgdmVyc2lvbiBvZiB0aGUgZGV2aWNlIHRyZWUKKworICAgICAgICBSZXR1cm5z OgorICAgICAgICAgICAgVmVyc2lvbiBudW1iZXIgb2YgdGhlIGRldmljZSB0cmVlCisgICAgICAg ICIiIgorICAgICAgICByZXR1cm4gY2hlY2tfZXJyKGZkdF92ZXJzaW9uKHNlbGYuX2ZkdCkpCisK KyAgICBkZWYgbGFzdF9jb21wX3ZlcnNpb24oc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUg bGFzdCBjb21wYXRpYmxlIHZlcnNpb24gb2YgdGhlIGRldmljZSB0cmVlCisKKyAgICAgICAgUmV0 dXJuczoKKyAgICAgICAgICAgIExhc3QgY29tcGF0aWJsZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUg ZGV2aWNlIHRyZWUKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBjaGVja19lcnIoZmR0X2xh c3RfY29tcF92ZXJzaW9uKHNlbGYuX2ZkdCkpCisKKyAgICBkZWYgYm9vdF9jcHVpZF9waHlzKHNl bGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHBoeXNpY2FsIGJvb3QgQ1BVIElECisKKyAgICAg ICAgUmV0dXJuczoKKyAgICAgICAgICAgIFBoeXNpY2FsIGJvb3QgQ1BVIElECisgICAgICAgICIi IgorICAgICAgICByZXR1cm4gY2hlY2tfZXJyKGZkdF9ib290X2NwdWlkX3BoeXMoc2VsZi5fZmR0 KSkKKworICAgIGRlZiBzaXplX2R0X3N0cmluZ3Moc2VsZik6CisgICAgICAgICIiIlJldHVybiB0 aGUgc3RhcnQgb2YgdGhlIGRldmljZS10cmVlIHN0cmluZyBhcmVhCisKKyAgICAgICAgUmV0dXJu czoKKyAgICAgICAgICAgIFN0YXJ0IG9mZnNldCBvZiBzdHJpbmcgYXJlYQorICAgICAgICAiIiIK KyAgICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRfc2l6ZV9kdF9zdHJpbmdzKHNlbGYuX2ZkdCkp CisKKyAgICBkZWYgc2l6ZV9kdF9zdHJ1Y3Qoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUg c3RhcnQgb2YgdGhlIGRldmljZS10cmVlIHN0cnVjdCBhcmVhCisKKyAgICAgICAgUmV0dXJuczoK KyAgICAgICAgICAgIFN0YXJ0IG9mZnNldCBvZiBzdHJ1Y3QgYXJlYQorICAgICAgICAiIiIKKyAg ICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRfc2l6ZV9kdF9zdHJ1Y3Qoc2VsZi5fZmR0KSkKKwor ICAgIGRlZiBudW1fbWVtX3JzdihzZWxmLCBxdWlldD0oKSk6CisgICAgICAgICIiIlJldHVybiB0 aGUgbnVtYmVyIG9mIG1lbW9yeSByZXNlcnZlLW1hcCByZWNvcmRzCisKKyAgICAgICAgUmV0dXJu czoKKyAgICAgICAgICAgIE51bWJlciBvZiBtZW1vcnkgcmVzZXJ2ZS1tYXAgcmVjb3JkcworICAg ICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRfbnVtX21lbV9yc3Yoc2VsZi5f ZmR0KSwgcXVpZXQpCisKKyAgICBkZWYgZ2V0X21lbV9yc3Yoc2VsZiwgaW5kZXgsIHF1aWV0PSgp KToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBpbmRleGVkIG1lbW9yeSByZXNlcnZlLW1hcCByZWNv cmQKKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgaW5kZXg6IFJlY29yZCB0byByZXR1cm4g KDA9Zmlyc3QpCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIE51bWJlciBvZiBtZW1v cnkgcmVzZXJ2ZS1tYXAgcmVjb3JkcworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGNoZWNr X2VycihmZHRfZ2V0X21lbV9yc3Yoc2VsZi5fZmR0LCBpbmRleCksIHF1aWV0KQorCiAgICAgZGVm IHN1Ym5vZGVfb2Zmc2V0KHNlbGYsIHBhcmVudG9mZnNldCwgbmFtZSwgcXVpZXQ9KCkpOgogICAg ICAgICAiIiJHZXQgdGhlIG9mZnNldCBvZiBhIG5hbWVkIHN1Ym5vZGUKIApAQCAtMTYxLDYgKzMz MCwyMCBAQCBjbGFzcyBGZHQ6CiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gY2hlY2tfZXJy KGZkdF9wYXRoX29mZnNldChzZWxmLl9mZHQsIHBhdGgpLCBxdWlldCkKIAorICAgIGRlZiBnZXRf bmFtZShzZWxmLCBub2Rlb2Zmc2V0KToKKyAgICAgICAgIiIiR2V0IHRoZSBuYW1lIG9mIGEgbm9k ZQorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBub2Rlb2Zmc2V0OiBPZmZzZXQgb2Ygbm9k ZSB0byBjaGVjaworCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBOb2RlIG5hbWUKKwor ICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBGZHRFeGNlcHRpb24gb24gZXJyb3IgKGUuZy4g bm9kZW9mZnNldCBpcyBpbnZhbGlkKQorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGNoZWNr X2Vycl9udWxsKGZkdF9nZXRfbmFtZShzZWxmLl9mZHQsIG5vZGVvZmZzZXQpKVswXQorCiAgICAg ZGVmIGZpcnN0X3Byb3BlcnR5X29mZnNldChzZWxmLCBub2Rlb2Zmc2V0LCBxdWlldD0oKSk6CiAg ICAgICAgICIiIkdldCB0aGUgb2Zmc2V0IG9mIHRoZSBmaXJzdCBwcm9wZXJ0eSBpbiBhIG5vZGUg b2Zmc2V0CiAKQEAgLTE5NSwyMCArMzc4LDYgQEAgY2xhc3MgRmR0OgogICAgICAgICByZXR1cm4g Y2hlY2tfZXJyKGZkdF9uZXh0X3Byb3BlcnR5X29mZnNldChzZWxmLl9mZHQsIHByb3Bfb2Zmc2V0 KSwKICAgICAgICAgICAgICAgICAgICAgICAgICBxdWlldCkKIAotICAgIGRlZiBnZXRfbmFtZShz ZWxmLCBub2Rlb2Zmc2V0KToKLSAgICAgICAgIiIiR2V0IHRoZSBuYW1lIG9mIGEgbm9kZQotCi0g ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBub2Rlb2Zmc2V0OiBPZmZzZXQgb2Ygbm9kZSB0byBj aGVjawotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgICBOb2RlIG5hbWUKLQotICAgICAg ICBSYWlzZXM6Ci0gICAgICAgICAgICBGZHRFeGNlcHRpb24gb24gZXJyb3IgKGUuZy4gbm9kZW9m ZnNldCBpcyBpbnZhbGlkKQotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIGNoZWNrX2Vycl9u dWxsKGZkdF9nZXRfbmFtZShzZWxmLl9mZHQsIG5vZGVvZmZzZXQpKVswXQotCiAgICAgZGVmIGdl dF9wcm9wZXJ0eV9ieV9vZmZzZXQoc2VsZiwgcHJvcF9vZmZzZXQsIHF1aWV0PSgpKToKICAgICAg ICAgIiIiT2J0YWlucyBhIHByb3BlcnR5IHRoYXQgY2FuIGJlIGV4YW1pbmVkCiAKQEAgLTIyOSw1 MSArMzk4LDM4IEBAIGNsYXNzIEZkdDoKICAgICAgICAgICAgIHJldHVybiBwZGF0YQogICAgICAg ICByZXR1cm4gUHJvcGVydHkocGRhdGFbMF0sIHBkYXRhWzFdKQogCi0gICAgZGVmIGZpcnN0X3N1 Ym5vZGUoc2VsZiwgbm9kZW9mZnNldCwgcXVpZXQ9KCkpOgotICAgICAgICAiIiJGaW5kIHRoZSBm aXJzdCBzdWJub2RlIG9mIGEgcGFyZW50IG5vZGUKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVm IGNyZWF0ZV9lbXB0eV90cmVlKHNpemUsIHF1aWV0PSgpKToKKyAgICAgICAgIiIiQ3JlYXRlIGFu IGVtcHR5IGRldmljZSB0cmVlIHJlYWR5IGZvciB1c2UKIAogICAgICAgICBBcmdzOgotICAgICAg ICAgICAgbm9kZW9mZnNldDogTm9kZSBvZmZzZXQgb2YgcGFyZW50IG5vZGUKLSAgICAgICAgICAg IHF1aWV0OiBFcnJvcnMgdG8gaWdub3JlIChlbXB0eSB0byByYWlzZSBvbiBhbGwgZXJyb3JzKQor ICAgICAgICAgICAgc2l6ZTogU2l6ZSBvZiBkZXZpY2UgdHJlZSBpbiBieXRlcwogCiAgICAgICAg IFJldHVybnM6Ci0gICAgICAgICAgICBUaGUgb2Zmc2V0IG9mIHRoZSBmaXJzdCBzdWJub2RlLCBp ZiBhbnkKLQotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBGZHRFeGNlcHRpb24gaWYgbm8g c3Vibm9kZSBmb3VuZCBvciBvdGhlciBlcnJvciBvY2N1cnMKKyAgICAgICAgICAgIEZkdCBvYmpl Y3QgY29udGFpbmluZyB0aGUgZGV2aWNlIHRyZWUKICAgICAgICAgIiIiCi0gICAgICAgIHJldHVy biBjaGVja19lcnIoZmR0X2ZpcnN0X3N1Ym5vZGUoc2VsZi5fZmR0LCBub2Rlb2Zmc2V0KSwgcXVp ZXQpCi0KLSAgICBkZWYgbmV4dF9zdWJub2RlKHNlbGYsIG5vZGVvZmZzZXQsIHF1aWV0PSgpKToK LSAgICAgICAgIiIiRmluZCB0aGUgbmV4dCBzdWJub2RlCisgICAgICAgIGRhdGEgPSBieXRlYXJy YXkoc2l6ZSkKKyAgICAgICAgZXJyID0gY2hlY2tfZXJyKGZkdF9jcmVhdGVfZW1wdHlfdHJlZShk YXRhLCBzaXplKSwgcXVpZXQpCisgICAgICAgIGlmIGVycjoKKyAgICAgICAgICAgIHJldHVybiBl cnIKKyAgICAgICAgcmV0dXJuIEZkdChkYXRhKQogCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAg ICBub2Rlb2Zmc2V0OiBOb2RlIG9mZnNldCBvZiBwcmV2aW91cyBzdWJub2RlCi0gICAgICAgICAg ICBxdWlldDogRXJyb3JzIHRvIGlnbm9yZSAoZW1wdHkgdG8gcmFpc2Ugb24gYWxsIGVycm9ycykK KyAgICBkZWYgb3Blbl9pbnRvKHNlbGYsIHNpemUsIHF1aWV0PSgpKToKKyAgICAgICAgIiIiTW92 ZSB0aGUgZGV2aWNlIHRyZWUgaW50byBhIGxhcmdlciBvciBzbWFsbGVyIHNwYWNlCiAKLSAgICAg ICAgUmV0dXJuczoKLSAgICAgICAgICAgIFRoZSBvZmZzZXQgb2YgdGhlIG5leHQgc3Vibm9kZSwg aWYgYW55CisgICAgICAgIFRoaXMgY3JlYXRlcyBhIG5ldyBkZXZpY2UgdHJlZSBvZiBzaXplIEBz aXplIGFuZCBtb3ZlcyB0aGUgZXhpc3RpbmcKKyAgICAgICAgZGV2aWNlIHRyZWUgY29udGVudHMg b3ZlciB0byB0aGF0LiBJdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgbW9yZSBzcGFjZQorICAgICAg ICBpbiBhIGRldmljZSB0cmVlLgogCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEZkdEV4 Y2VwdGlvbiBpZiBubyBtb3JlIHN1Ym5vZGUgZm91bmQgb3Igb3RoZXIgZXJyb3Igb2NjdXJzCi0g ICAgICAgICIiIgotICAgICAgICByZXR1cm4gY2hlY2tfZXJyKGZkdF9uZXh0X3N1Ym5vZGUoc2Vs Zi5fZmR0LCBub2Rlb2Zmc2V0KSwgcXVpZXQpCi0KLSAgICBkZWYgdG90YWxzaXplKHNlbGYpOgot ICAgICAgICAiIiJSZXR1cm4gdGhlIHRvdGFsIHNpemUgb2YgdGhlIGRldmljZSB0cmVlCi0KLSAg ICAgICAgUmV0dXJuczoKLSAgICAgICAgICAgIFRvdGFsIHRyZWUgc2l6ZSBpbiBieXRlcwotICAg ICAgICAiIiIKLSAgICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRfdG90YWxzaXplKHNlbGYuX2Zk dCkpCi0KLSAgICBkZWYgb2ZmX2R0X3N0cnVjdChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRo ZSBzdGFydCBvZiB0aGUgZGV2aWNlIHRyZWUgc3RydWN0IGFyZWEKLQotICAgICAgICBSZXR1cm5z OgotICAgICAgICAgICAgU3RhcnQgb2Zmc2V0IG9mIHN0cnVjdCBhcmVhCisgICAgICAgIEFyZ3M6 CisgICAgICAgICAgICBzaXplOiBSZXF1aXJlZCBuZXcgc2l6ZSBvZiBkZXZpY2UgdHJlZSBpbiBi eXRlcwogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRfb2ZmX2R0X3N0 cnVjdChzZWxmLl9mZHQpKQorICAgICAgICBmZHQgPSBieXRlYXJyYXkoc2l6ZSkKKyAgICAgICAg ZmR0WzpsZW4oc2VsZi5fZmR0KV0gPSBzZWxmLl9mZHQKKyAgICAgICAgZXJyID0gY2hlY2tfZXJy KGZkdF9vcGVuX2ludG8oc2VsZi5fZmR0LCBmZHQsIHNpemUpLCBxdWlldCkKKyAgICAgICAgaWYg ZXJyOgorICAgICAgICAgICAgcmV0dXJuIGVycgorICAgICAgICBzZWxmLl9mZHQgPSBmZHQKIAog ICAgIGRlZiBwYWNrKHNlbGYsIHF1aWV0PSgpKToKICAgICAgICAgIiIiUGFjayB0aGUgZGV2aWNl IHRyZWUgdG8gcmVtb3ZlIHVudXNlZCBzcGFjZQpAQCAtMjg4LDIwICs0NDQsMjggQEAgY2xhc3Mg RmR0OgogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRfcGFjayhzZWxm Ll9mZHQpLCBxdWlldCkKIAotICAgIGRlZiBkZWxwcm9wKHNlbGYsIG5vZGVvZmZzZXQsIHByb3Bf bmFtZSk6Ci0gICAgICAgICIiIkRlbGV0ZSBhIHByb3BlcnR5IGZyb20gYSBub2RlCisgICAgZGVm IGdldHByb3Aoc2VsZiwgbm9kZW9mZnNldCwgcHJvcF9uYW1lLCBxdWlldD0oKSk6CisgICAgICAg ICIiIkdldCBhIHByb3BlcnR5IGZyb20gYSBub2RlCiAKICAgICAgICAgQXJnczoKLSAgICAgICAg ICAgIG5vZGVvZmZzZXQ6IE5vZGUgb2Zmc2V0IGNvbnRhaW5pbmcgcHJvcGVydHkgdG8gZGVsZXRl Ci0gICAgICAgICAgICBwcm9wX25hbWU6IE5hbWUgb2YgcHJvcGVydHkgdG8gZGVsZXRlCisgICAg ICAgICAgICBub2Rlb2Zmc2V0OiBOb2RlIG9mZnNldCBjb250YWluaW5nIHByb3BlcnR5IHRvIGdl dAorICAgICAgICAgICAgcHJvcF9uYW1lOiBOYW1lIG9mIHByb3BlcnR5IHRvIGdldAorICAgICAg ICAgICAgcXVpZXQ6IEVycm9ycyB0byBpZ25vcmUgKGVtcHR5IHRvIHJhaXNlIG9uIGFsbCBlcnJv cnMpCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFZhbHVlIG9mIHByb3BlcnR5IGFz IGEgc3RyaW5nLCBvciAtdmUgZXJyb3IgbnVtYmVyCiAKICAgICAgICAgUmFpc2VzOgotICAgICAg ICAgICAgRmR0RXJyb3IgaWYgdGhlIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0LCBvciBhbm90aGVy IGVycm9yIG9jY3VycworICAgICAgICAgICAgRmR0RXJyb3IgaWYgYW55IGVycm9yIG9jY3VycyAo ZS5nLiB0aGUgcHJvcGVydHkgaXMgbm90IGZvdW5kKQogICAgICAgICAiIiIKLSAgICAgICAgcmV0 dXJuIGNoZWNrX2VycihmZHRfZGVscHJvcChzZWxmLl9mZHQsIG5vZGVvZmZzZXQsIHByb3BfbmFt ZSkpCisgICAgICAgIHBkYXRhID0gY2hlY2tfZXJyX251bGwoZmR0X2dldHByb3Aoc2VsZi5fZmR0 LCBub2Rlb2Zmc2V0LCBwcm9wX25hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHF1aWV0KQorICAgICAgICBpZiBpc2luc3RhbmNlKHBkYXRhLCAoaW50KSk6CisgICAgICAgICAg ICByZXR1cm4gcGRhdGEKKyAgICAgICAgcmV0dXJuIHN0cihwZGF0YVswXSkKIAotICAgIGRlZiBn ZXRwcm9wKHNlbGYsIG5vZGVvZmZzZXQsIHByb3BfbmFtZSwgcXVpZXQ9KCkpOgotICAgICAgICAi IiJHZXQgYSBwcm9wZXJ0eSBmcm9tIGEgbm9kZQorICAgIGRlZiBnZXRwcm9wX29iaihzZWxmLCBu b2Rlb2Zmc2V0LCBwcm9wX25hbWUsIHF1aWV0PSgpKToKKyAgICAgICAgIiIiR2V0IGEgcHJvcGVy dHkgZnJvbSBhIG5vZGUgYXMgYSBQcm9wZXJ0eSBvYmplY3QKIAogICAgICAgICBBcmdzOgogICAg ICAgICAgICAgbm9kZW9mZnNldDogTm9kZSBvZmZzZXQgY29udGFpbmluZyBwcm9wZXJ0eSB0byBn ZXQKQEAgLTMwOSw3ICs0NzMsNyBAQCBjbGFzcyBGZHQ6CiAgICAgICAgICAgICBxdWlldDogRXJy b3JzIHRvIGlnbm9yZSAoZW1wdHkgdG8gcmFpc2Ugb24gYWxsIGVycm9ycykKIAogICAgICAgICBS ZXR1cm5zOgotICAgICAgICAgICAgVmFsdWUgb2YgcHJvcGVydHkgYXMgYSBieXRlYXJyYXksIG9y IC12ZSBlcnJvciBudW1iZXIKKyAgICAgICAgICAgIFByb3BlcnR5IG9iamVjdCwgb3IgTm9uZSBp ZiBub3QgZm91bmQKIAogICAgICAgICBSYWlzZXM6CiAgICAgICAgICAgICBGZHRFcnJvciBpZiBh bnkgZXJyb3Igb2NjdXJzIChlLmcuIHRoZSBwcm9wZXJ0eSBpcyBub3QgZm91bmQpCkBAIC0zMTcs OCArNDgxLDggQEAgY2xhc3MgRmR0OgogICAgICAgICBwZGF0YSA9IGNoZWNrX2Vycl9udWxsKGZk dF9nZXRwcm9wKHNlbGYuX2ZkdCwgbm9kZW9mZnNldCwgcHJvcF9uYW1lKSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBxdWlldCkKICAgICAgICAgaWYgaXNpbnN0YW5jZShwZGF0YSwg KGludCkpOgotICAgICAgICAgICAgcmV0dXJuIHBkYXRhCi0gICAgICAgIHJldHVybiBieXRlYXJy YXkocGRhdGFbMF0pCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gUHJv cGVydHkocHJvcF9uYW1lLCBieXRlYXJyYXkocGRhdGFbMF0pKQogCiAgICAgZGVmIGdldF9waGFu ZGxlKHNlbGYsIG5vZGVvZmZzZXQpOgogICAgICAgICAiIiJHZXQgdGhlIHBoYW5kbGUgb2YgYSBu b2RlCkBAIC0zNDcsNiArNTExLDEwOCBAQCBjbGFzcyBGZHQ6CiAgICAgICAgICIiIgogICAgICAg ICByZXR1cm4gY2hlY2tfZXJyKGZkdF9wYXJlbnRfb2Zmc2V0KHNlbGYuX2ZkdCwgbm9kZW9mZnNl dCksIHF1aWV0KQogCisgICAgZGVmIHNldF9uYW1lKHNlbGYsIG5vZGVvZmZzZXQsIG5hbWUsIHF1 aWV0PSgpKToKKyAgICAgICAgIiIiU2V0IHRoZSBuYW1lIG9mIGEgbm9kZQorCisgICAgICAgIEFy Z3M6CisgICAgICAgICAgICBub2Rlb2Zmc2V0OiBOb2RlIG9mZnNldCBvZiBub2RlIHRvIHVwZGF0 ZQorICAgICAgICAgICAgbmFtZTogTmV3IG5vZGUgbmFtZQorCisgICAgICAgIFJldHVybnM6Cisg ICAgICAgICAgICBFcnJvciBjb2RlLCBvciAwIGlmIE9LCisKKyAgICAgICAgUmFpc2VzOgorICAg ICAgICAgICAgRmR0RXhjZXB0aW9uIGlmIG5vIHBhcmVudCBmb3VuZCBvciBvdGhlciBlcnJvciBv Y2N1cnMKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBjaGVja19lcnIoZmR0X3NldF9uYW1l KHNlbGYuX2ZkdCwgbm9kZW9mZnNldCwgbmFtZSksIHF1aWV0KQorCisgICAgZGVmIHNldHByb3Ao c2VsZiwgbm9kZW9mZnNldCwgcHJvcF9uYW1lLCB2YWwsIHF1aWV0PSgpKToKKyAgICAgICAgIiIi U2V0IHRoZSB2YWx1ZSBvZiBhIHByb3BlcnR5CisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAg IG5vZGVvZmZzZXQ6IE5vZGUgb2Zmc2V0IGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5IHRvIGNyZWF0 ZS91cGRhdGUKKyAgICAgICAgICAgIHByb3BfbmFtZTogTmFtZSBvZiBwcm9wZXJ0eQorICAgICAg ICAgICAgdmFsOiBWYWx1ZSB0byB3cml0ZSAoc3RyaW5nIG9yIGJ5dGVhcnJheSkKKyAgICAgICAg ICAgIHF1aWV0OiBFcnJvcnMgdG8gaWdub3JlIChlbXB0eSB0byByYWlzZSBvbiBhbGwgZXJyb3Jz KQorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBFcnJvciBjb2RlLCBvciAwIGlmIE9L CisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgRmR0RXhjZXB0aW9uIGlmIG5vIHBhcmVu dCBmb3VuZCBvciBvdGhlciBlcnJvciBvY2N1cnMKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVy biBjaGVja19lcnIoZmR0X3NldHByb3Aoc2VsZi5fZmR0LCBub2Rlb2Zmc2V0LCBwcm9wX25hbWUs IHZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4odmFsKSksIHF1 aWV0KQorCisgICAgZGVmIHNldHByb3BfdTMyKHNlbGYsIG5vZGVvZmZzZXQsIHByb3BfbmFtZSwg dmFsLCBxdWlldD0oKSk6CisgICAgICAgICIiIlNldCB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eQor CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBub2Rlb2Zmc2V0OiBOb2RlIG9mZnNldCBjb250 YWluaW5nIHRoZSBwcm9wZXJ0eSB0byBjcmVhdGUvdXBkYXRlCisgICAgICAgICAgICBwcm9wX25h bWU6IE5hbWUgb2YgcHJvcGVydHkKKyAgICAgICAgICAgIHZhbDogVmFsdWUgdG8gd3JpdGUgKGlu dGVnZXIpCisgICAgICAgICAgICBxdWlldDogRXJyb3JzIHRvIGlnbm9yZSAoZW1wdHkgdG8gcmFp c2Ugb24gYWxsIGVycm9ycykKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgRXJyb3Ig Y29kZSwgb3IgMCBpZiBPSworCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEZkdEV4Y2Vw dGlvbiBpZiBubyBwYXJlbnQgZm91bmQgb3Igb3RoZXIgZXJyb3Igb2NjdXJzCisgICAgICAgICIi IgorICAgICAgICByZXR1cm4gY2hlY2tfZXJyKGZkdF9zZXRwcm9wX3UzMihzZWxmLl9mZHQsIG5v ZGVvZmZzZXQsIHByb3BfbmFtZSwgdmFsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBxdWll dCkKKworICAgIGRlZiBzZXRwcm9wX3U2NChzZWxmLCBub2Rlb2Zmc2V0LCBwcm9wX25hbWUsIHZh bCwgcXVpZXQ9KCkpOgorICAgICAgICAiIiJTZXQgdGhlIHZhbHVlIG9mIGEgcHJvcGVydHkKKwor ICAgICAgICBBcmdzOgorICAgICAgICAgICAgbm9kZW9mZnNldDogTm9kZSBvZmZzZXQgY29udGFp bmluZyB0aGUgcHJvcGVydHkgdG8gY3JlYXRlL3VwZGF0ZQorICAgICAgICAgICAgcHJvcF9uYW1l OiBOYW1lIG9mIHByb3BlcnR5CisgICAgICAgICAgICB2YWw6IFZhbHVlIHRvIHdyaXRlIChpbnRl Z2VyKQorICAgICAgICAgICAgcXVpZXQ6IEVycm9ycyB0byBpZ25vcmUgKGVtcHR5IHRvIHJhaXNl IG9uIGFsbCBlcnJvcnMpCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEVycm9yIGNv ZGUsIG9yIDAgaWYgT0sKKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBGZHRFeGNlcHRp b24gaWYgbm8gcGFyZW50IGZvdW5kIG9yIG90aGVyIGVycm9yIG9jY3VycworICAgICAgICAiIiIK KyAgICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRfc2V0cHJvcF91NjQoc2VsZi5fZmR0LCBub2Rl b2Zmc2V0LCBwcm9wX25hbWUsIHZhbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgcXVpZXQp CisKKyAgICBkZWYgc2V0cHJvcF9zdHIoc2VsZiwgbm9kZW9mZnNldCwgcHJvcF9uYW1lLCB2YWws IHF1aWV0PSgpKToKKyAgICAgICAgIiIiU2V0IHRoZSBzdHJpbmcgdmFsdWUgb2YgYSBwcm9wZXJ0 eQorCisgICAgICAgIFRoZSBwcm9wZXJ0eSBpcyBzZXQgdG8gdGhlIHN0cmluZywgd2l0aCBhIG51 bCB0ZXJtaW5hdG9yIGFkZGVkCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG5vZGVvZmZz ZXQ6IE5vZGUgb2Zmc2V0IGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5IHRvIGNyZWF0ZS91cGRhdGUK KyAgICAgICAgICAgIHByb3BfbmFtZTogTmFtZSBvZiBwcm9wZXJ0eQorICAgICAgICAgICAgdmFs OiBWYWx1ZSB0byB3cml0ZSAoc3RyaW5nIHdpdGhvdXQgbnVsIHRlcm1pbmF0b3IpCisgICAgICAg ICAgICBxdWlldDogRXJyb3JzIHRvIGlnbm9yZSAoZW1wdHkgdG8gcmFpc2Ugb24gYWxsIGVycm9y cykKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgRXJyb3IgY29kZSwgb3IgMCBpZiBP SworCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEZkdEV4Y2VwdGlvbiBpZiBubyBwYXJl bnQgZm91bmQgb3Igb3RoZXIgZXJyb3Igb2NjdXJzCisgICAgICAgICIiIgorICAgICAgICB2YWwg Kz0gJ1wwJworICAgICAgICByZXR1cm4gY2hlY2tfZXJyKGZkdF9zZXRwcm9wKHNlbGYuX2ZkdCwg bm9kZW9mZnNldCwgcHJvcF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZhbCwgbGVuKHZhbCkpLCBxdWlldCkKKworICAgIGRlZiBkZWxwcm9wKHNlbGYsIG5vZGVv ZmZzZXQsIHByb3BfbmFtZSk6CisgICAgICAgICIiIkRlbGV0ZSBhIHByb3BlcnR5IGZyb20gYSBu b2RlCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG5vZGVvZmZzZXQ6IE5vZGUgb2Zmc2V0 IGNvbnRhaW5pbmcgcHJvcGVydHkgdG8gZGVsZXRlCisgICAgICAgICAgICBwcm9wX25hbWU6IE5h bWUgb2YgcHJvcGVydHkgdG8gZGVsZXRlCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAg RmR0RXJyb3IgaWYgdGhlIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0LCBvciBhbm90aGVyIGVycm9y IG9jY3VycworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRfZGVscHJv cChzZWxmLl9mZHQsIG5vZGVvZmZzZXQsIHByb3BfbmFtZSkpCisKICAgICBkZWYgbm9kZV9vZmZz ZXRfYnlfcGhhbmRsZShzZWxmLCBwaGFuZGxlLCBxdWlldD0oKSk6CiAgICAgICAgICIiIkdldCB0 aGUgb2Zmc2V0IG9mIGEgbm9kZSB3aXRoIHRoZSBnaXZlbiBwaGFuZGxlCiAKQEAgLTM2Miw3ICs2 MjgsOCBAQCBjbGFzcyBGZHQ6CiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gY2hlY2tfZXJy KGZkdF9ub2RlX29mZnNldF9ieV9waGFuZGxlKHNlbGYuX2ZkdCwgcGhhbmRsZSksIHF1aWV0KQog Ci1jbGFzcyBQcm9wZXJ0eToKKworY2xhc3MgUHJvcGVydHkoYnl0ZWFycmF5KToKICAgICAiIiJI b2xkcyBhIGRldmljZSB0cmVlIHByb3BlcnR5IG5hbWUgYW5kIHZhbHVlLgogCiAgICAgVGhpcyBo b2xkcyBhIGNvcHkgb2YgYSBwcm9wZXJ0eSB0YWtlbiBmcm9tIHRoZSBkZXZpY2UgdHJlZS4gSXQg ZG9lcyBub3QKQEAgLTM3MSwxMSArNjM4LDI3NCBAQCBjbGFzcyBQcm9wZXJ0eToKIAogICAgIFBy b3BlcnRpZXM6CiAgICAgICAgIG5hbWU6IFByb3BlcnR5IG5hbWUKLSAgICAgICAgdmFsdWU6IFBy b3BlciB2YWx1ZSBhcyBhIGJ5dGVhcnJheQorICAgICAgICB2YWx1ZTogUHJvcGVydHkgdmFsdWUg YXMgYSBieXRlYXJyYXkKICAgICAiIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgdmFs dWUpOgorICAgICAgICBieXRlYXJyYXkuX19pbml0X18oc2VsZiwgdmFsdWUpCiAgICAgICAgIHNl bGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCisKKyAgICBkZWYgYXNf Y2VsbChzZWxmLCBmbXQpOgorICAgICAgICByZXR1cm4gc3RydWN0LnVucGFjaygnPicgKyBmbXQs IHNlbGYpWzBdCisKKyAgICBkZWYgYXNfdWludDMyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2Vs Zi5hc19jZWxsKCdMJykKKworICAgIGRlZiBhc19pbnQzMihzZWxmKToKKyAgICAgICAgcmV0dXJu IHNlbGYuYXNfY2VsbCgnbCcpCisKKyAgICBkZWYgYXNfdWludDY0KHNlbGYpOgorICAgICAgICBy ZXR1cm4gc2VsZi5hc19jZWxsKCdRJykKKworICAgIGRlZiBhc19pbnQ2NChzZWxmKToKKyAgICAg ICAgcmV0dXJuIHNlbGYuYXNfY2VsbCgncScpCisKKyAgICBkZWYgYXNfc3RyKHNlbGYpOgorICAg ICAgICByZXR1cm4gc2VsZls6LTFdCisKKworY2xhc3MgRmR0U3cob2JqZWN0KToKKyAgICAiIiJT b2Z0d2FyZSBpbnRlcmZhY2UgdG8gY3JlYXRlIGEgZGV2aWNlIHRyZWUgZnJvbSBzY3JhdGNoCisK KyAgICBUaGUgbWV0aG9kcyBpbiB0aGlzIGNsYXNzIHdvcmsgYnkgYWRkaW5nIHRvIGFuIGV4aXN0 aW5nICdwYXJ0aWFsJyBkZXZpY2UKKyAgICB0cmVlIGJ1ZmZlciBvZiBhIGZpeGVkIHNpemUgY3Jl YXRlZCBieSBpbnN0YW50aWF0aW5nIHRoaXMgY2xhc3MuIFdoZW4gdGhlCisgICAgdHJlZSBpcyBj b21wbGV0ZSwgY2FsbCBmaW5pc2goKSB0byBjb21wbGV0ZSB0aGUgZGV2aWNlIHRyZWUgc28gdGhh dCBpdCBjYW4KKyAgICBiZSB1c2VkLgorCisgICAgU2ltaWxhcmx5IHdpdGggbm9kZXMsIGEgbmV3 IG5vZGUgaXMgc3RhcnRlZCB3aXRoIGJlZ2luX25vZGUoKSBhbmQgZmluaXNoZWQKKyAgICB3aXRo IGVuZF9ub2RlKCkuCisKKyAgICBUaGUgY29udGV4dCBtYW5hZ2VyIGZ1bmN0aW9ucyBjYW4gYmUg dXNlZCB0byBtYWtlIHRoaXMgYSBiaXQgZWFzaWVyOgorCisgICAgIyBGaXJzdCBjcmVhdGUgdGhl IGRldmljZSB0cmVlIHdpdGggYSBub2RlIGFuZCBwcm9wZXJ0eToKKyAgICB3aXRoIEZkdFN3KHNt YWxsX3NpemUpIGFzIHN3OgorICAgICAgICB3aXRoIHN3LkFkZE5vZGUoJ25vZGUnKToKKyAgICAg ICAgICAgIHN3LnByb3BlcnR5X3UzMigncmVnJywgMikKKyAgICBmZHQgPSBzdy5Bc0ZkdCgpCisK KyAgICAjIE5vdyB3ZSBjYW4gdXNlIGl0IGFzIGEgcmVhbCBkZXZpY2UgdHJlZQorICAgIGZkdC5z ZXRwcm9wX3UzMigwLCAncmVnJywgMykKKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwg c2l6ZSwgcXVpZXQ9KCkpOgorICAgICAgICBmZHRydyA9IGJ5dGVhcnJheShzaXplKQorICAgICAg ICBlcnIgPSBjaGVja19lcnIoZmR0X2NyZWF0ZShmZHRydywgc2l6ZSkpCisgICAgICAgIGlmIGVy cjoKKyAgICAgICAgICAgIHJldHVybiBlcnIKKyAgICAgICAgc2VsZi5fZmR0cncgPSBmZHRydwor CisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgIiIiQ29udGFjdCBtYW5hZ2VyIHRv IHVzZSB0byBjcmVhdGUgYSBkZXZpY2UgdHJlZSB2aWEgc29mdHdhcmUiIiIKKyAgICAgICAgcmV0 dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdHJhY2ViYWNr KToKKyAgICAgICAgY2hlY2tfZXJyKGZkdF9maW5pc2goc2VsZi5fZmR0cncpKQorCisgICAgZGVm IEFzRmR0KHNlbGYpOgorICAgICAgICAiIiJDb252ZXJ0IGEgRmR0U3cgaW50byBhbiBGZHQgc28g aXQgY2FuIGJlIGFjY2Vzc2VkIGFzIG5vcm1hbAorCisgICAgICAgIE5vdGUgdGhhdCBmaW5pc2go KSBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgdGhpcyBmdW5jdGlvbiB3aWxsIHdvcmsuIElmCisgICAg ICAgIHlvdSBhcmUgdXNpbmcgdGhlIGNvbnRleHQgbWFuYWdlciAoc2VlICd3aXRoJyBjb2RlIGlu IHRoZSBGZHRTdyBjbGFzcworICAgICAgICBjb21tZW50KSB0aGVuIHRoaXMgd2lsbCBoYXBwZW4g YXV0b21hdGljYWxseS4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgRmR0IG9iamVj dCBhbGxvd2luZyBhY2Nlc3MgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgZGV2aWNlIHRyZWUKKyAgICAg ICAgIiIiCisgICAgICAgIHJldHVybiBGZHQoc2VsZi5fZmR0cncpCisKKyAgICBkZWYgcmVzaXpl KHNlbGYsIHNpemUsIHF1aWV0PSgpKToKKyAgICAgICAgIiIiUmVzaXplIHRoZSBidWZmZXIgdG8g YWNjb21tb2RhdGUgYSBsYXJnZXIgdHJlZQorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBz aXplOiBOZXcgc2l6ZSBvZiB0cmVlCisgICAgICAgICAgICBxdWlldDogRXJyb3JzIHRvIGlnbm9y ZSAoZW1wdHkgdG8gcmFpc2Ugb24gYWxsIGVycm9ycykKKworICAgICAgICBSYWlzZXM6CisgICAg ICAgICAgICBGZHRFeGNlcHRpb24gaWYgbm8gbm9kZSBmb3VuZCBvciBvdGhlciBlcnJvciBvY2N1 cnMKKyAgICAgICAgIiIiCisgICAgICAgIGZkdCA9IGJ5dGVhcnJheShzaXplKQorICAgICAgICBm ZHRbOmxlbihzZWxmLl9mZHRydyldID0gc2VsZi5fZmR0cncKKyAgICAgICAgZXJyID0gY2hlY2tf ZXJyKGZkdF9yZXNpemUoc2VsZi5fZmR0cncsIGZkdCwgc2l6ZSksIHF1aWV0KQorICAgICAgICBp ZiBlcnI6CisgICAgICAgICAgICByZXR1cm4gZXJyCisgICAgICAgIHNlbGYuX2ZkdHJ3ID0gZmR0 CisKKyAgICBkZWYgYWRkX3Jlc2VydmVtYXBfZW50cnkoc2VsZiwgYWRkciwgc2l6ZSwgcXVpZXQ9 KCkpOgorICAgICAgICAiIiJBZGQgYSBuZXcgbWVtb3J5IHJlc2VydmUgbWFwIGVudHJ5CisKKyAg ICAgICAgT25jZSBmaW5pc2hlZCBhZGRpbmcsIHlvdSBtdXN0IGNhbGwgZmluaXNoX3Jlc2VydmVt YXAoKS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgYWRkcjogNjQtYml0IHN0YXJ0IGFk ZHJlc3MKKyAgICAgICAgICAgIHNpemU6IDY0LWJpdCBzaXplCisgICAgICAgICAgICBxdWlldDog RXJyb3JzIHRvIGlnbm9yZSAoZW1wdHkgdG8gcmFpc2Ugb24gYWxsIGVycm9ycykKKworICAgICAg ICBSYWlzZXM6CisgICAgICAgICAgICBGZHRFeGNlcHRpb24gaWYgbm8gbm9kZSBmb3VuZCBvciBv dGhlciBlcnJvciBvY2N1cnMKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBjaGVja19lcnIo ZmR0X2FkZF9yZXNlcnZlbWFwX2VudHJ5KHNlbGYuX2ZkdHJ3LCBhZGRyLCBzaXplKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICBxdWlldCkKKworICAgIGRlZiBmaW5pc2hfcmVzZXJ2ZW1hcChz ZWxmLCBxdWlldD0oKSk6CisgICAgICAgICIiIkluZGljYXRlIHRoYXQgdGhlcmUgYXJlIG5vIG1v cmUgcmVzZXJ2ZSBtYXAgZW50cmllcyB0byBhZGQKKworICAgICAgICBBcmdzOgorICAgICAgICAg ICAgcXVpZXQ6IEVycm9ycyB0byBpZ25vcmUgKGVtcHR5IHRvIHJhaXNlIG9uIGFsbCBlcnJvcnMp CisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgRmR0RXhjZXB0aW9uIGlmIG5vIG5vZGUg Zm91bmQgb3Igb3RoZXIgZXJyb3Igb2NjdXJzCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4g Y2hlY2tfZXJyKGZkdF9maW5pc2hfcmVzZXJ2ZW1hcChzZWxmLl9mZHRydyksIHF1aWV0KQorCisg ICAgZGVmIGJlZ2luX25vZGUoc2VsZiwgbmFtZSwgcXVpZXQ9KCkpOgorICAgICAgICAiIiJCZWdp biBhIG5ldyBub2RlCisKKyAgICAgICAgVXNlIHRoaXMgYmVmb3JlIGFkZGluZyBwcm9wZXJ0aWVz IHRvIHRoZSBub2RlLiBUaGVuIGNhbGwgZW5kX25vZGUoKSB0bworICAgICAgICBmaW5pc2ggaXQu IFlvdSBjYW4gYWxzbyB1c2UgdGhlIGNvbnRleHQgbWFuYWdlciBhcyBzaG93biBpbiB0aGUgRmR0 U3cKKyAgICAgICAgY2xhc3MgY29tbWVudC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAg bmFtZTogTmFtZSBvZiBub2RlIHRvIGJlZ2luCisgICAgICAgICAgICBxdWlldDogRXJyb3JzIHRv IGlnbm9yZSAoZW1wdHkgdG8gcmFpc2Ugb24gYWxsIGVycm9ycykKKworICAgICAgICBSYWlzZXM6 CisgICAgICAgICAgICBGZHRFeGNlcHRpb24gaWYgbm8gbm9kZSBmb3VuZCBvciBvdGhlciBlcnJv ciBvY2N1cnMKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBjaGVja19lcnIoZmR0X2JlZ2lu X25vZGUoc2VsZi5fZmR0cncsIG5hbWUpLCBxdWlldCkKKworICAgIGRlZiBwcm9wZXJ0eV9zdHJp bmcoc2VsZiwgbmFtZSwgc3RyaW5nLCBxdWlldD0oKSk6CisgICAgICAgICIiIkFkZCBhIHByb3Bl cnR5IHdpdGggYSBzdHJpbmcgdmFsdWUKKworICAgICAgICBUaGUgc3RyaW5nIHdpbGwgYmUgbnVs LXRlcm1pbmF0ZWQgd2hlbiB3cml0dGVuIHRvIHRoZSBkZXZpY2UgdHJlZQorCisgICAgICAgIEFy Z3M6CisgICAgICAgICAgICBuYW1lOiBOYW1lIG9mIHByb3BlcnR5IHRvIGFkZAorICAgICAgICAg ICAgc3RyaW5nOiBTdHJpbmcgdmFsdWUgb2YgcHJvcGVydHkKKyAgICAgICAgICAgIHF1aWV0OiBF cnJvcnMgdG8gaWdub3JlIChlbXB0eSB0byByYWlzZSBvbiBhbGwgZXJyb3JzKQorCisgICAgICAg IFJhaXNlczoKKyAgICAgICAgICAgIEZkdEV4Y2VwdGlvbiBpZiBubyBub2RlIGZvdW5kIG9yIG90 aGVyIGVycm9yIG9jY3VycworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGNoZWNrX2Vycihm ZHRfcHJvcGVydHlfc3RyaW5nKHNlbGYuX2ZkdHJ3LCBuYW1lLCBzdHJpbmcpLCBxdWlldCkKKwor ICAgIGRlZiBwcm9wZXJ0eV91MzIoc2VsZiwgbmFtZSwgdmFsLCBxdWlldD0oKSk6CisgICAgICAg ICIiIkFkZCBhIHByb3BlcnR5IHdpdGggYSAzMi1iaXQgdmFsdWUKKworICAgICAgICBXcml0ZSBh IHNpbmdsZS1jZWxsIHZhbHVlIHRvIHRoZSBkZXZpY2UgdHJlZQorCisgICAgICAgIEFyZ3M6Cisg ICAgICAgICAgICBuYW1lOiBOYW1lIG9mIHByb3BlcnR5IHRvIGFkZAorICAgICAgICAgICAgdmFs OiBWYWx1ZSBvZiBwcm9wZXJ0eQorICAgICAgICAgICAgcXVpZXQ6IEVycm9ycyB0byBpZ25vcmUg KGVtcHR5IHRvIHJhaXNlIG9uIGFsbCBlcnJvcnMpCisKKyAgICAgICAgUmFpc2VzOgorICAgICAg ICAgICAgRmR0RXhjZXB0aW9uIGlmIG5vIG5vZGUgZm91bmQgb3Igb3RoZXIgZXJyb3Igb2NjdXJz CisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gY2hlY2tfZXJyKGZkdF9wcm9wZXJ0eV91MzIo c2VsZi5fZmR0cncsIG5hbWUsIHZhbCksIHF1aWV0KQorCisgICAgZGVmIHByb3BlcnR5X3U2NChz ZWxmLCBuYW1lLCB2YWwsIHF1aWV0PSgpKToKKyAgICAgICAgIiIiQWRkIGEgcHJvcGVydHkgd2l0 aCBhIDY0LWJpdCB2YWx1ZQorCisgICAgICAgIFdyaXRlIGEgZG91YmxlLWNlbGwgdmFsdWUgdG8g dGhlIGRldmljZSB0cmVlIGluIGJpZy1lbmRpYW4gZm9ybWF0CisKKyAgICAgICAgQXJnczoKKyAg ICAgICAgICAgIG5hbWU6IE5hbWUgb2YgcHJvcGVydHkgdG8gYWRkCisgICAgICAgICAgICB2YWw6 IFZhbHVlIG9mIHByb3BlcnR5CisgICAgICAgICAgICBxdWlldDogRXJyb3JzIHRvIGlnbm9yZSAo ZW1wdHkgdG8gcmFpc2Ugb24gYWxsIGVycm9ycykKKworICAgICAgICBSYWlzZXM6CisgICAgICAg ICAgICBGZHRFeGNlcHRpb24gaWYgbm8gbm9kZSBmb3VuZCBvciBvdGhlciBlcnJvciBvY2N1cnMK KyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBjaGVja19lcnIoZmR0X3Byb3BlcnR5X3U2NChz ZWxmLl9mZHRydywgbmFtZSwgdmFsKSwgcXVpZXQpCisKKyAgICBkZWYgcHJvcGVydHlfY2VsbChz ZWxmLCBuYW1lLCB2YWwsIHF1aWV0PSgpKToKKyAgICAgICAgIiIiQWRkIGEgcHJvcGVydHkgd2l0 aCBhIHNpbmdsZS1jZWxsIHZhbHVlCisKKyAgICAgICAgV3JpdGUgYSBzaW5nbGUtY2VsbCB2YWx1 ZSB0byB0aGUgZGV2aWNlIHRyZWUKKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgbmFtZTog TmFtZSBvZiBwcm9wZXJ0eSB0byBhZGQKKyAgICAgICAgICAgIHZhbDogVmFsdWUgb2YgcHJvcGVy dHkKKyAgICAgICAgICAgIHF1aWV0OiBFcnJvcnMgdG8gaWdub3JlIChlbXB0eSB0byByYWlzZSBv biBhbGwgZXJyb3JzKQorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEZkdEV4Y2VwdGlv biBpZiBubyBub2RlIGZvdW5kIG9yIG90aGVyIGVycm9yIG9jY3VycworICAgICAgICAiIiIKKyAg ICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRfcHJvcGVydHlfY2VsbChzZWxmLl9mZHRydywgbmFt ZSwgdmFsKSwgcXVpZXQpCisKKyAgICBkZWYgcHJvcGVydHkoc2VsZiwgbmFtZSwgdmFsLCBxdWll dD0oKSk6CisgICAgICAgICIiIkFkZCBhIHByb3BlcnR5CisKKyAgICAgICAgV3JpdGUgYSBuZXcg cHJvcGVydHkgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUgdG8gdGhlIGRldmljZSB0cmVlLiBUaGUgdmFs dWUKKyAgICAgICAgaXMgdGFrZW4gYXMgaXMgYW5kIGlzIG5vdCBudWwtdGVybWluYXRlZAorCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBuYW1lOiBOYW1lIG9mIHByb3BlcnR5IHRvIGFkZAor ICAgICAgICAgICAgdmFsOiBWYWx1ZSBvZiBwcm9wZXJ0eQorICAgICAgICAgICAgcXVpZXQ6IEVy cm9ycyB0byBpZ25vcmUgKGVtcHR5IHRvIHJhaXNlIG9uIGFsbCBlcnJvcnMpCisKKyAgICAgICAg UmFpc2VzOgorICAgICAgICAgICAgRmR0RXhjZXB0aW9uIGlmIG5vIG5vZGUgZm91bmQgb3Igb3Ro ZXIgZXJyb3Igb2NjdXJzCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gY2hlY2tfZXJyKF9m ZHRfcHJvcGVydHkoc2VsZi5fZmR0cncsIG5hbWUsIHZhbCwgbGVuKHZhbCkpLCBxdWlldCkKKwor ICAgIGRlZiBlbmRfbm9kZShzZWxmLCBxdWlldD0oKSk6CisgICAgICAgICIiIkVuZCBhIG5vZGUK KworICAgICAgICBVc2UgdGhpcyBhZnRlciBhZGRpbmcgcHJvcGVydGllcyB0byBhIG5vZGUgdG8g Y2xvc2UgaXQgb2ZmLiBZb3UgY2FuIGFsc28KKyAgICAgICAgdXNlIHRoZSBjb250ZXh0IG1hbmFn ZXIgYXMgc2hvd24gaW4gdGhlIEZkdFN3IGNsYXNzIGNvbW1lbnQuCisKKyAgICAgICAgQXJnczoK KyAgICAgICAgICAgIHF1aWV0OiBFcnJvcnMgdG8gaWdub3JlIChlbXB0eSB0byByYWlzZSBvbiBh bGwgZXJyb3JzKQorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEZkdEV4Y2VwdGlvbiBp ZiBubyBub2RlIGZvdW5kIG9yIG90aGVyIGVycm9yIG9jY3VycworICAgICAgICAiIiIKKyAgICAg ICAgcmV0dXJuIGNoZWNrX2VycihmZHRfZW5kX25vZGUoc2VsZi5fZmR0cncpLCBxdWlldCkKKwor ICAgIGRlZiBmaW5pc2goc2VsZiwgcXVpZXQ9KCkpOgorICAgICAgICAiIiJGaW5pc2ggd3JpdGlu ZyB0aGUgZGV2aWNlIHRyZWUKKworICAgICAgICBUaGlzIGNsb3NlcyBvZmYgdGhlIGRldmljZSB0 cmVlIHJlYWR5IGZvciB1c2UKKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcXVpZXQ6IEVy cm9ycyB0byBpZ25vcmUgKGVtcHR5IHRvIHJhaXNlIG9uIGFsbCBlcnJvcnMpCisKKyAgICAgICAg UmFpc2VzOgorICAgICAgICAgICAgRmR0RXhjZXB0aW9uIGlmIG5vIG5vZGUgZm91bmQgb3Igb3Ro ZXIgZXJyb3Igb2NjdXJzCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gY2hlY2tfZXJyKGZk dF9maW5pc2goc2VsZi5fZmR0cncpLCBxdWlldCkKKworICAgIGRlZiBBZGROb2RlKHNlbGYsIG5h bWUpOgorICAgICAgICAiIiJDcmVhdGUgYSBuZXcgY29udGV4dCBmb3IgYWRkaW5nIGEgbm9kZQor CisgICAgICAgIFdoZW4gdXNlZCBpbiBhICd3aXRoJyBjbGF1c2UgdGhpcyBzdGFydHMgYSBuZXcg bm9kZSBhbmQgZmluaXNoZXMgaXQKKyAgICAgICAgYWZ0ZXJ3YXJkLgorCisgICAgICAgIEFyZ3M6 CisgICAgICAgICAgICBuYW1lOiBOYW1lIG9mIG5vZGUgdG8gYWRkCisgICAgICAgICIiIgorICAg ICAgICByZXR1cm4gTm9kZUFkZGVyKHNlbGYuX2ZkdHJ3LCBuYW1lKQorCisKK2NsYXNzIE5vZGVB ZGRlcigpOgorICAgICIiIkNsYXNzIHRvIHByb3ZpZGUgYSBub2RlIGNvbnRleHQKKworICAgIFRo aXMgYWxsb3dzIHlvdSB0byBhZGQgbm9kZXMgaW4gYSBtb3JlIG5hdHVyYWwgd2F5OgorCisgICAg ICAgIHdpdGggZmR0c3cuQWRkTm9kZSgnbmFtZScpOgorICAgICAgICAgICAgZmR0c3cucHJvcGVy dHlfc3RyaW5nKCd0ZXN0JywgJ3ZhbHVlJykKKworICAgIFRoZSBub2RlIGlzIGF1dG9tYXRpY2Fs bHkgY29tcGxldGVkIHdpdGggYSBjYWxsIHRvIGVuZF9ub2RlKCkgd2hlbiB0aGUKKyAgICBjb250 ZXh0IGV4aXRzLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmZHQsIG5hbWUpOgor ICAgICAgICBzZWxmLl9mZHQgPSBmZHQKKyAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKKworICAg IGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIGNoZWNrX2VycihmZHRfYmVnaW5fbm9kZShz ZWxmLl9mZHQsIHNlbGYuX25hbWUpKQorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZh bHVlLCB0cmFjZWJhY2spOgorICAgICAgICBjaGVja19lcnIoZmR0X2VuZF9ub2RlKHNlbGYuX2Zk dCkpCiAlfQogCiAlcmVuYW1lKGZkdF9wcm9wZXJ0eSkgZmR0X3Byb3BlcnR5X2Z1bmM7CkBAIC00 MDgsNiArOTM4LDcgQEAgdHlwZWRlZiBpbnQgZmR0MzJfdDsKICAgICAgICAgZmR0ID0gZmR0OyAv KiBhdm9pZCB1bnVzZWQgdmFyaWFibGUgd2FybmluZyAqLwogfQogCisvKiB0eXBlbWFwIHVzZWQg Zm9yIGZkdF9nZXRfcHJvcGVydHlfYnlfb2Zmc2V0KCkgKi8KICV0eXBlbWFwKG91dCkgKHN0cnVj dCBmZHRfcHJvcGVydHkgKikgewogCVB5T2JqZWN0ICpidWZmOwogCkBAIC00MzAsNiArOTYxLDQ0 IEBAIHR5cGVkZWYgaW50IGZkdDMyX3Q7CiAJCSRyZXN1bHQgPSBQeV9CdWlsZFZhbHVlKCJzIyIs ICQxLCAqYXJnNCk7CiB9CiAKKy8qIHR5cGVtYXAgdXNlZCBmb3IgZmR0X3NldHByb3AoKSAqLwor JXR5cGVtYXAoaW4pIChjb25zdCB2b2lkICp2YWwpIHsKKyAgICAkMSA9IFB5U3RyaW5nX0FzU3Ry aW5nKCRpbnB1dCk7ICAgLyogY2hhciAqc3RyICovCit9CisKKy8qIHR5cGVtYXAgdXNlZCBmb3Ig ZmR0X2FkZF9yZXNlcnZlbWFwX2VudHJ5KCkgKi8KKyV0eXBlbWFwKGluKSB1aW50NjRfdCB7Cisg ICAkMSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZygkaW5wdXQpOworfQorCisvKiB0eXBlbWFwcyB1 c2VkIGZvciBmZHRfbmV4dF9ub2RlKCkgKi8KKyV0eXBlbWFwKGluLCBudW1pbnB1dHM9MSkgaW50 ICpkZXB0aCAoaW50IGRlcHRoKSB7CisgICBkZXB0aCA9IChpbnQpIFB5SW50X0FzTG9uZygkaW5w dXQpOworICAgJDEgPSAmZGVwdGg7Cit9CisKKyV0eXBlbWFwKGFyZ291dCkgaW50ICpkZXB0aCB7 CisgICAgICAgIFB5T2JqZWN0ICp2YWwgPSBQeV9CdWlsZFZhbHVlKCJpIiwgKmFyZyRhcmdudW0p OworICAgICAgICByZXN1bHRvYmogPSBTV0lHX1B5dGhvbl9BcHBlbmRPdXRwdXQocmVzdWx0b2Jq LCB2YWwpOworfQorCislYXBwbHkgaW50ICpkZXB0aCB7IGludCAqZGVwdGggfTsKKworLyogdHlw ZW1hcHMgZm9yIGZkdF9nZXRfbWVtX3JzdiAqLworJXR5cGVtYXAoaW4sIG51bWlucHV0cz0wKSB1 aW50NjRfdCAqICh1aW50NjRfdCB0ZW1wKSB7CisgICAkMSA9ICZ0ZW1wOworfQorCisldHlwZW1h cChhcmdvdXQpIHVpbnQ2NF90ICogeworICAgICAgICBQeU9iamVjdCAqdmFsID0gUHlMb25nX0Zy b21VbnNpZ25lZExvbmcoKmFyZyRhcmdudW0pOworICAgICAgICBpZiAoIXJlc3VsdCkgeworICAg ICAgICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShyZXN1bHRvYmopID09IDApCisgICAgICAgICAg ICAgIHJlc3VsdG9iaiA9IHZhbDsKKyAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICByZXN1 bHRvYmogPSBTV0lHX1B5dGhvbl9BcHBlbmRPdXRwdXQocmVzdWx0b2JqLCB2YWwpOworICAgICAg ICB9Cit9CisKIC8qIFdlIGhhdmUgYm90aCBzdHJ1Y3QgZmR0X3Byb3BlcnR5IGFuZCBhIGZ1bmN0 aW9uIGZkdF9wcm9wZXJ0eSgpICovCiAld2FybmZpbHRlcigzMDIpIGZkdF9wcm9wZXJ0eTsKIApA QCAtNDQ0LDUgKzEwMTMsMTMgQEAgaW50IGZkdF9sYXN0X2NvbXBfdmVyc2lvbihjb25zdCB2b2lk ICpmZHQpOwogaW50IGZkdF9ib290X2NwdWlkX3BoeXMoY29uc3Qgdm9pZCAqZmR0KTsKIGludCBm ZHRfc2l6ZV9kdF9zdHJpbmdzKGNvbnN0IHZvaWQgKmZkdCk7CiBpbnQgZmR0X3NpemVfZHRfc3Ry dWN0KGNvbnN0IHZvaWQgKmZkdCk7CitpbnQgZmR0X3Byb3BlcnR5X3N0cmluZyh2b2lkICpmZHQs IGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbCk7CitpbnQgZmR0X3Byb3BlcnR5X2Nl bGwodm9pZCAqZmR0LCBjb25zdCBjaGFyICpuYW1lLCB1aW50MzJfdCB2YWwpOworCisvKgorICog VGhpcyBmdW5jdGlvbiBoYXMgYSBzdHViIHNpbmNlIHRoZSBuYW1lIGZkdF9wcm9wZXJ0eSBpcyB1 c2VkIGZvciBib3RoIGEKKyAgKiBmdW5jdGlvbiBhbmQgYSBzdHJ1Y3QsIHdoaWNoIGNvbmZ1c2Vz IFNXSUcuCisgKi8KK2ludCBfZmR0X3Byb3BlcnR5KHZvaWQgKmZkdCwgY29uc3QgY2hhciAqbmFt ZSwgY29uc3QgY2hhciAqdmFsLCBpbnQgbGVuKTsKIAogJWluY2x1ZGUgPC4uL2xpYmZkdC9saWJm ZHQuaD4KZGlmZiAtLWdpdCBhL3Rvb2xzL2R0b2MvZHRvYy5weSBiL3Rvb2xzL2R0b2MvZHRvYy5w eQppbmRleCAwMDhjMGY0ZDY5Li5jODkxYjA2MzgwIDEwMDc1NQotLS0gYS90b29scy9kdG9jL2R0 b2MucHkKKysrIGIvdG9vbHMvZHRvYy9kdG9jLnB5CkBAIC0zNiwxNCArMzYsMjYgQEAgc3lzLnBh dGguYXBwZW5kKG9zLnBhdGguam9pbihvdXJfcGF0aCwgJy4uL3BhdG1hbicpKQogCiBpbXBvcnQg ZHRiX3BsYXRkYXRhCiAKLWRlZiBydW5fdGVzdHMoKToKLSAgICAiIiJSdW4gYWxsIHRoZSB0ZXN0 IHdlIGhhdmUgZm9yIGR0b2MiIiIKK2RlZiBydW5fdGVzdHMoYXJncyk6CisgICAgIiIiUnVuIGFs bCB0aGUgdGVzdCB3ZSBoYXZlIGZvciBkdG9jCisKKyAgICBBcmdzOgorICAgICAgICBhcmdzOiBM aXN0IG9mIHBvc2l0aW9uYWwgYXJncyBwcm92aWRlZCB0byBiaW5tYW4uIFRoaXMgY2FuIGhvbGQg YSB0ZXN0CisgICAgICAgICAgICBuYW1lIHRvIGV4ZWN1dGUgKGFzIGluICdiaW5tYW4gLXQgdGVz dFNlY3Rpb25zJywgZm9yIGV4YW1wbGUpCisgICAgIiIiCiAgICAgaW1wb3J0IHRlc3RfZHRvYwog CiAgICAgcmVzdWx0ID0gdW5pdHRlc3QuVGVzdFJlc3VsdCgpCiAgICAgc3lzLmFyZ3YgPSBbc3lz LmFyZ3ZbMF1dCisgICAgdGVzdF9uYW1lID0gYXJncyBhbmQgYXJnc1swXSBvciBOb25lCiAgICAg Zm9yIG1vZHVsZSBpbiAodGVzdF9kdG9jLlRlc3REdG9jLCk6Ci0gICAgICAgIHN1aXRlID0gdW5p dHRlc3QuVGVzdExvYWRlcigpLmxvYWRUZXN0c0Zyb21UZXN0Q2FzZShtb2R1bGUpCisgICAgICAg IGlmIHRlc3RfbmFtZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzdWl0ZSA9 IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKS5sb2FkVGVzdHNGcm9tTmFtZSh0ZXN0X25hbWUsIG1vZHVs ZSkKKyAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICBj b250aW51ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3VpdGUgPSB1bml0dGVzdC5UZXN0 TG9hZGVyKCkubG9hZFRlc3RzRnJvbVRlc3RDYXNlKG1vZHVsZSkKICAgICAgICAgc3VpdGUucnVu KHJlc3VsdCkKIAogICAgIHByaW50IHJlc3VsdApAQCAtNjgsNyArODAsNyBAQCBwYXJzZXIuYWRk X29wdGlvbignLXQnLCAnLS10ZXN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0ndGVzdCcs CiAKICMgUnVuIG91ciBtZWFncmUgdGVzdHMKIGlmIG9wdGlvbnMudGVzdDoKLSAgICBydW5fdGVz dHMoKQorICAgIHJ1bl90ZXN0cyhhcmdzKQogCiBlbHNlOgogICAgIGR0Yl9wbGF0ZGF0YS5ydW5f c3RlcHMoYXJncywgb3B0aW9ucy5kdGJfZmlsZSwgb3B0aW9ucy5pbmNsdWRlX2Rpc2FibGVkLApk aWZmIC0tZ2l0IGEvdG9vbHMvZHRvYy9mZHQucHkgYi90b29scy9kdG9jL2ZkdC5weQppbmRleCA3 ZmFiMGNkOGU5Li5kMDhiMGI1M2U2IDEwMDY0NAotLS0gYS90b29scy9kdG9jL2ZkdC5weQorKysg Yi90b29scy9kdG9jL2ZkdC5weQpAQCAtMjM0LDcgKzIzNCw2IEBAIGNsYXNzIE5vZGU6CiAgICAg ICAgIGJlIHVwZGF0ZWQuCiAgICAgICAgICIiIgogICAgICAgICBpZiBzZWxmLl9vZmZzZXQgIT0g bXlfb2Zmc2V0OgotICAgICAgICAgICAgI3ByaW50ICclczogJWQgLT4gJWRcbicgJSAoc2VsZi5w YXRoLCBzZWxmLl9vZmZzZXQsIG15X29mZnNldCkKICAgICAgICAgICAgIHNlbGYuX29mZnNldCA9 IG15X29mZnNldAogICAgICAgICBvZmZzZXQgPSBsaWJmZHQuZmR0X2ZpcnN0X3N1Ym5vZGUoc2Vs Zi5fZmR0LkdldEZkdCgpLCBzZWxmLl9vZmZzZXQpCiAgICAgICAgIGZvciBzdWJub2RlIGluIHNl bGYuc3Vibm9kZXM6CkBAIC0zNTksNyArMzU4LDcgQEAgY2xhc3MgRmR0OgogICAgICAgICBwb2Zm c2V0ID0gbGliZmR0LmZkdF9maXJzdF9wcm9wZXJ0eV9vZmZzZXQoc2VsZi5fZmR0LCBub2RlLl9v ZmZzZXQpCiAgICAgICAgIHdoaWxlIHBvZmZzZXQgPj0gMDoKICAgICAgICAgICAgIHAgPSBzZWxm Ll9mZHRfb2JqLmdldF9wcm9wZXJ0eV9ieV9vZmZzZXQocG9mZnNldCkKLSAgICAgICAgICAgIHBy b3AgPSBQcm9wKG5vZGUsIHBvZmZzZXQsIHAubmFtZSwgcC52YWx1ZSkKKyAgICAgICAgICAgIHBy b3AgPSBQcm9wKG5vZGUsIHBvZmZzZXQsIHAubmFtZSwgcCkKICAgICAgICAgICAgIHByb3BzX2Rp Y3RbcHJvcC5uYW1lXSA9IHByb3AKIAogICAgICAgICAgICAgcG9mZnNldCA9IGxpYmZkdC5mZHRf bmV4dF9wcm9wZXJ0eV9vZmZzZXQoc2VsZi5fZmR0LCBwb2Zmc2V0KQpkaWZmIC0tZ2l0IGEvdG9v bHMvZHRvYy90ZXN0X2R0b2MucHkgYi90b29scy9kdG9jL3Rlc3RfZHRvYy5weQppbmRleCA5OWY0 ZTFhMTNhLi5lNDc1YTdlYjE0IDEwMDY0NAotLS0gYS90b29scy9kdG9jL3Rlc3RfZHRvYy5weQor KysgYi90b29scy9kdG9jL3Rlc3RfZHRvYy5weQpAQCAtNCw3ICs0LDggQEAKIAogIiIiVGVzdHMg Zm9yIHRoZSBkdGJfcGxhdGRhdGEgbW9kdWxlCiAKLVRoaXMgaW5jbHVkZXMgdW5pdCB0ZXN0cyBm b3Igc29tZSBmdW5jdGlvbnMgYW5kIGZ1bmN0aW9uYWwgdGVzdHMgZm9yCitUaGlzIGluY2x1ZGVz IHVuaXQgdGVzdHMgZm9yIHNvbWUgZnVuY3Rpb25zIGFuZCBmdW5jdGlvbmFsIHRlc3RzIGZvciB0 aGUgZHRvYwordG9vbC4KICIiIgogCiBpbXBvcnQgY29sbGVjdGlvbnMKLS0gCjIuMTguMC4yMDMu Z2ZhYzY3NmRmYjktZ29vZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KVS1Cb290IG1haWxpbmcgbGlzdApVLUJvb3RAbGlzdHMuZGVueC5kZQpodHRwczov L2xpc3RzLmRlbnguZGUvbGlzdGluZm8vdS1ib290Cg==