From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= Subject: Re: [PATCH v2] hotplug/Linux: add iscsi block hotplug script Date: Thu, 2 May 2013 13:30:40 +0200 Message-ID: <51824E60.10403@citrix.com> References: <1366983018-54388-1-git-send-email-roger.pau@citrix.com> <1366989449.3142.144.camel@zakaz.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1366989449.3142.144.camel@zakaz.uk.xensource.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Ian Campbell Cc: Ian Jackson , "xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org T24gMjYvMDQvMTMgMTc6MTcsIElhbiBDYW1wYmVsbCB3cm90ZToKPiBPbiBGcmksIDIwMTMtMDQt MjYgYXQgMTQ6MzAgKzAxMDAsIFJvZ2VyIFBhdSBNb25uZSB3cm90ZToKPj4gVGhpcyBob3RwbHVn IHNjcmlwdCBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCBJRVQgYW5kIE5ldEJTRCBpU0NTSSB0YXJnZXRz LAo+PiB3aXRob3V0IGF1dGhlbnRpY2F0aW9uLgo+Pgo+PiBUaGlzIGhvdHBsdWcgc2NyaXB0IHdp bGwgb25seSB3b3JrIHdpdGggUFYgZ3Vlc3RzIG5vdCB1c2luZyBweWdydWIuCj4+Cj4+IFNpZ25l ZC1vZmYtYnk6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgo+PiBDYzog SWFuIENhbXBiZWxsIDxpYW4uY2FtcGJlbGxAY2l0cml4LmNvbT4KPj4gQ2M6IElhbiBKYWNrc29u IDxpYW4uamFja3NvbkBjaXRyaXguY29tPgo+PiAtLS0KPj4gQ2hhbmdlcyBzaW5jZSB2MToKPj4g ICogQWRkZWQgYW4gZXhhbXBsZSBpbiB0aGUgc2NyaXB0IGhlYWRlciB0byBzaG93IHRoZSB1c2Fn ZS4KPj4gICogQ2hhbmdlZCBzaGViYW5nIHRvIHVzZSBiYXNoLgo+PiAgKiBSZXBsYWNlIHR5cGUg d2l0aCBjb21tYW5kLCBmb3IgcG9ydGFiaWxpdHkgcmVhc29ucy4KPj4gICogUmVwbGFjZSBlY2hv IHdpdGggZmF0YWwvbG9nIGZ1bmN0aW9ucy4KPj4gICogSW5jbHVkZSBibG9jay1jb21tb24uc2gu Cj4+ICAqIFByZXZlbnQgaW5maW5pdGUgbG9vcCB3aGVuIHdhaXRpZ24gZm9yIGRldmljZSB0byBz ZXR0bGUuCj4+ICAqIE9ubHkgcmVkaXJlY3Qgc3Rkb3V0IHRvIC9kZXYvbnVsbC4KPj4gQ2hhbmdl cyBkdWUgdG8gNC4zIHJlbGVhc2UgZnJlZXplOgo+PiAgKiBXZSBjYW4gbm8gbG9uZ2VyIHByb3Zp ZGUgYSB1c2VyL3Bhc3N3b3JkLCBiZWNhdXNlIHRoZXkgd2lsbCBiZQo+PiAgICBzdG9yZWQgaW4g eGVuc3RvcmUgInBhcmFtcyIgYmFja2VuZCBub2RlLCB3aGljaCBjYW4gYmUgcmVhZCBieSB0aGUK Pj4gICAgZ3Vlc3QuCj4+ICAqIE9ubHkgd29ya3Mgd2l0aCBQViBkb21haW5zIGJlY2F1c2Ugd2Ug ZG9uJ3QgaGF2ZSBhIGhvb2sgaW4gbGlieGwgdG8KPj4gICAgcGFzcyB0aGUgYmxvY2sgZGV2aWNl IGNyZWF0ZWQgYnkgdGhlIHNjcmlwdCB0byBRZW11Lgo+PiAgKiBEb2Vzbid0IHdvcmsgd2l0aCBw eWdydWIgYmVjYXVzZSB3ZSBkb24ndCBjYWxsIHRoZSBzY3JpcHQgdW50aWwKPj4gICAgcHlncnVi IGhhcyBhbHJlYWR5IGJlZW4gZXhlY3V0ZWQsIGFuZCBldmVuIGlmIHdlIGNhbGxlZCBpdCBlYXJs aWVyCj4+ICAgIHdlIHN0aWxsIG5lZWQgYSBob29rIGluIG9yZGVyIHRvIHByb3ZpZGUgdGhlIHJp Z2h0IGJsb2NrIGRldmljZSB0bwo+PiAgICBweWdydWIuCj4+IENoYW5nZXMgc2luY2UgdjE6Cj4+ ICAqIEFkZCAtZSB0byBzY3JpcHQgc2hlYmFuZywgYW5kIHVzZSAnc2V0ICtlJyBpZiB3ZSBrbm93 IGhvdHBsdWcKPj4gICAgZXhlY3V0aW9uIG1pZ2h0IGZhaWwuCj4+IC0tLQo+PiAgdG9vbHMvaG90 cGx1Zy9MaW51eC9NYWtlZmlsZSAgICB8ICAgIDEgKwo+PiAgdG9vbHMvaG90cGx1Zy9MaW51eC9i bG9jay1pc2NzaSB8ICAyMDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Cj4+ICAyIGZpbGVzIGNoYW5nZWQsIDIxMCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQo+ PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2hvdHBsdWcvTGludXgvYmxvY2staXNjc2kKPj4K Pj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2hvdHBsdWcvTGludXgvTWFrZWZpbGUgYi90b29scy9ob3Rw bHVnL0xpbnV4L01ha2VmaWxlCj4+IGluZGV4IDA2MDU1NTkuLjk4Yzc3MzggMTAwNjQ0Cj4+IC0t LSBhL3Rvb2xzL2hvdHBsdWcvTGludXgvTWFrZWZpbGUKPj4gKysrIGIvdG9vbHMvaG90cGx1Zy9M aW51eC9NYWtlZmlsZQo+PiBAQCAtMjEsNiArMjEsNyBAQCBYRU5fU0NSSVBUUyArPSBibGt0YXAK Pj4gIFhFTl9TQ1JJUFRTICs9IHhlbi1ob3RwbHVnLWNsZWFudXAKPj4gIFhFTl9TQ1JJUFRTICs9 IGV4dGVybmFsLWRldmljZS1taWdyYXRlCj4+ICBYRU5fU0NSSVBUUyArPSB2c2NzaQo+PiArWEVO X1NDUklQVFMgKz0gYmxvY2staXNjc2kKPj4gIFhFTl9TQ1JJUFRfREFUQSA9IHhlbi1zY3JpcHQt Y29tbW9uLnNoIGxvY2tpbmcuc2ggbG9nZ2luZy5zaAo+PiAgWEVOX1NDUklQVF9EQVRBICs9IHhl bi1ob3RwbHVnLWNvbW1vbi5zaCB4ZW4tbmV0d29yay1jb21tb24uc2ggdmlmLWNvbW1vbi5zaAo+ PiAgWEVOX1NDUklQVF9EQVRBICs9IGJsb2NrLWNvbW1vbi5zaAo+PiBkaWZmIC0tZ2l0IGEvdG9v bHMvaG90cGx1Zy9MaW51eC9ibG9jay1pc2NzaSBiL3Rvb2xzL2hvdHBsdWcvTGludXgvYmxvY2st aXNjc2kKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMC4uOWY3NGMyMAo+ PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL3Rvb2xzL2hvdHBsdWcvTGludXgvYmxvY2staXNjc2kK Pj4gQEAgLTAsMCArMSwyMDkgQEAKPj4gKyMhL2Jpbi9iYXNoIC1lCj4+ICsjCj4+ICsjIE9wZW4t aVNDU0kgWGVuIGJsb2NrIGRldmljZSBob3RwbHVnIHNjcmlwdAo+PiArIwo+PiArIyBBdXRob3Ig Um9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+Cj4+ICsjCj4+ICsjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Cj4+ICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAo+PiArIyBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyB2ZXJzaW9uIDIuMSBvbmx5LiB3aXRoIHRoZSBzcGVjaWFsCj4+ICsjIGV4Y2Vw dGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIExJQ0VOU0UuCj4+ICsjCj4+ICsjIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAo+PiArIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgo+PiArIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4+ICsjIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+PiArIwo+PiArIyBVc2FnZToKPj4gKyMKPj4g KyMgVGFyZ2V0IHNob3VsZCBiZSBzcGVjaWZpZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBzeW50YXg6 Cj4+ICsjCj4+ICsjIHNjcmlwdD1ibG9jay1pc2NzaSx2ZGV2PXh2ZGEsdGFyZ2V0PWlxbj08aXFu Pixwb3J0YWw9PHBvcnRhbCBJUD4KPj4gKyMKPj4gKyMgUG9ydGFsIGFkZHJlc3MgbXVzdCBiZSBp biBJUCBmb3JtYXQuCj4+ICsjCj4+ICsKPj4gK2Rpcj0kKGRpcm5hbWUgIiQwIikKPj4gKy4gIiRk aXIvYmxvY2stY29tbW9uLnNoIgo+PiArCj4+ICtyZW1vdmVfbGFiZWwoKQo+PiArewo+PiArICAg IGVjaG8gJDEgfCBzZWQgInMvXlwoIiQyIlwpLy8iCj4+ICt9Cj4+ICsKPj4gK2NoZWNrX3Rvb2xz KCkKPj4gK3sKPj4gKyAgICBpZiAhIGNvbW1hbmQgLXYgaXNjc2lhZG0gPiAvZGV2L251bGwgMj4m MTsgdGhlbgo+PiArICAgICAgICBmYXRhbCAiVW5hYmxlIHRvIGZpbmQgaXNjc2lhZG0gdG9vbCIK Pj4gKyAgICAgICAgcmV0dXJuIDEKPj4gKyAgICBmaQo+PiArICAgIGlmIFsgIiRtdWx0aXBhdGgi ID0gInkiIF0gJiYgISBjb21tYW5kIC12IG11bHRpcGF0aCA+IC9kZXYvbnVsbCAyPiYxOyB0aGVu Cj4+ICsgICAgICAgIGZhdGFsICJVbmFibGUgdG8gZmluZCBtdWx0aXBhdGgiCj4gCj4gdGhpcyBp c24ndCBjcml0aWNhbCB1bmxlc3MgdGhlIHVzZXIgYXNrZWQgZm9yIG11bHRpcGF0aCBJIHRoaW5r PwoKVGhhdCdzIHdoeSB3ZSBjaGVjayBmb3IgJG11bHRpcGF0aCA9ICJ5IiwgaWYgdGhlIHVzZXIg cmVxdWVzdGVkCm11bHRpcGF0aCBhbmQgdGhlIGhvdHBsdWcgc2NyaXB0IGNhbm5vdCBmaW5kIGl0 LCBjcmFzaC4KCj4gCj4+ICsgICAgICAgIHJldHVybiAxCj4+ICsgICAgZmkKPj4gK30KPj4gKwo+ PiArIyBTZXRzIHRoZSBmb2xsb3dpbmcgZ2xvYmFsIHZhcmlhYmxlcyBiYXNlZCBvbiB0aGUgcGFy YW1zIGZpZWxkIHBhc3NlZCBpbiBhcwo+PiArIyBhIHBhcmFtZXRlcjogaXFuLCBwb3J0YWwsIGF1 dGhfbWV0aG9kLCB1c2VyLCBtdWx0aXBhdGgsIHBhc3N3b3JkCj4+ICtwYXJzZV90YXJnZXQoKQo+ PiArewo+PiArICAgICMgc2V0IG11bHRpcGF0aCBkZWZhdWx0IHZhbHVlCj4+ICsgICAgbXVsdGlw YXRoPSJuIgo+PiArICAgIGZvciBwYXJhbSBpbiAkKGVjaG8gIiQxIiB8IHRyICIsIiAiXG4iKQo+ PiArICAgIGRvCj4+ICsgICAgICAgIGNhc2UgJHBhcmFtIGluCj4+ICsgICAgICAgIGlxbj0qKQo+ PiArICAgICAgICAgICAgaXFuPSQocmVtb3ZlX2xhYmVsICRwYXJhbSAiaXFuPSIpCj4+ICsgICAg ICAgICAgICA7Owo+PiArICAgICAgICBwb3J0YWw9KikKPj4gKyAgICAgICAgICAgIHBvcnRhbD0k KHJlbW92ZV9sYWJlbCAkcGFyYW0gInBvcnRhbD0iKQo+PiArICAgICAgICAgICAgOzsKPj4gKyAg ICAgICAgbXVsdGlwYXRoPSopCj4+ICsgICAgICAgICAgICBtdWx0aXBhdGg9JChyZW1vdmVfbGFi ZWwgJHBhcmFtICJtdWx0aXBhdGg9IikKPj4gKyAgICAgICAgICAgIDs7Cj4+ICsgICAgICAgIGVz YWMKPj4gKyAgICBkb25lCj4+ICsgICAgaWYgWyAteiAiJGlxbiIgXSB8fCBbIC16ICIkcG9ydGFs IiBdOyB0aGVuCj4+ICsgICAgICAgIGZhdGFsICJpcW49IGFuZCBwb3J0YWw9IGFyZSByZXF1aXJl ZCBwYXJhbWV0ZXJzIgo+PiArICAgICAgICByZXR1cm4gMQo+PiArICAgIGZpCj4+ICsgICAgaWYg WyAiJG11bHRpcGF0aCIgIT0gInkiIF0gJiYgWyAiJG11bHRpcGF0aCIgIT0gIm4iIF07IHRoZW4K Pj4gKyAgICAgICAgZmF0YWwgIm11bHRpcGF0aCB2YWxpZCB2YWx1ZXMgYXJlIHkgYW5kIG4sICRt dWx0aXBhdGggbm90IGEgdmFsaWQgdmFsdWUiCj4+ICsgICAgICAgIHJldHVybiAxCj4gCj4gZmF0 YWwgYWxyZWFkeSBleGl0cy4KCkFjaywgd2lsbCBjaGFuZ2UgYWxsIG9jY3VycmVuY2VzLgoKPiAK Pj4gKyAgICBmaQo+PiArICAgIHJldHVybiAwCj4+ICt9Cj4+ICsKPj4gKyMgU2V0cyAkZGV2IHRv IHBvaW50IHRvIHRoZSBkZXZpY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSB2YWx1ZSBpbiBpcW4KPj4g K2ZpbmRfZGV2aWNlKCkKPj4gK3sKPj4gKyAgICBjb3VudD0wCj4+ICsgICAgd2hpbGUgWyAhIC1l IC9kZXYvZGlzay9ieS1wYXRoLyoiJGlxbiItbHVuLTAgXTsgZG8KPj4gKyAgICAgICAgc2xlZXAg MC4xCj4+ICsgICAgICAgIGNvdW50PWBleHByICRjb3VudCArIDFgCj4+ICsgICAgICAgIGlmIFsg Y291bnQgPSAxMDAgXTsgdGhlbgo+PiArICAgICAgICAgICAgIyAxMHMgdGltZW91dCB3aGlsZSB3 YWl0aW5nIGZvciBpU0NTSSBkaXNrIHRvIHNldHRsZQo+PiArICAgICAgICAgICAgZmF0YWwgInRp bWVvdXQgd2FpdGluZyBmb3IgaVNDU0kgZGlzayB0byBzZXR0bGUiCj4+ICsgICAgICAgICAgICBy ZXR1cm4gMQo+PiArICAgICAgICBmaQo+PiArICAgIGRvbmUKPj4gKyAgICBzZGRldj0kKHJlYWRs aW5rIC1mIC9kZXYvZGlzay9ieS1wYXRoLyoiJGlxbiItbHVuLTAgfHwgdHJ1ZSkKPj4gKyAgICBp ZiBbICEgLWIgIiRzZGRldiIgXTsgdGhlbgo+PiArICAgICAgICBmYXRhbCAiVW5hYmxlIHRvIGZp bmQgYXR0YWNoZWQgZGV2aWNlIHBhdGgiCj4+ICsgICAgICAgIHJldHVybiAxCj4+ICsgICAgZmkK Pj4gKyAgICBpZiBbICIkbXVsdGlwYXRoIiA9ICJ5IiBdOyB0aGVuCj4+ICsgICAgICAgIG1kZXY9 JChtdWx0aXBhdGggLWxsICIkc2RkZXYiIHwgaGVhZCAtMSB8IGF3ayAneyBwcmludCAkMX0nKQo+ PiArICAgICAgICBpZiBbICEgLWIgL2Rldi9tYXBwZXIvIiRtZGV2IiBdOyB0aGVuCj4+ICsgICAg ICAgICAgICBmYXRhbCAiVW5hYmxlIHRvIGZpbmQgYXR0YWNoZWQgZGV2aWNlIG11bHRpcGF0aCIK Pj4gKyAgICAgICAgICAgIHJldHVybiAxCj4+ICsgICAgICAgIGZpCj4+ICsgICAgICAgIGRldj0i L2Rldi9tYXBwZXIvJG1kZXYiCj4+ICsgICAgZWxzZQo+PiArICAgICAgICBkZXY9IiRzZGRldiIK Pj4gKyAgICBmaQo+PiArICAgIHJldHVybiAwCj4+ICt9Cj4+ICsKPj4gKyMgQXR0YWNoZXMgdGhl IHRhcmdldCAkaXFuIGluICRwb3J0YWwgYW5kIHNldHMgJGRldiB0byBwb2ludCB0byB0aGUKPj4g KyMgbXVsdGlwYXRoIGRldmljZQo+PiArYXR0YWNoKCkKPj4gK3sKPj4gKyAgICBzZXQgK2UKPj4g KyAgICBpc2NzaWFkbSAtbSBub2RlIC0tdGFyZ2V0bmFtZSAiJGlxbiIgLXAgIiRwb3J0YWwiIC0t bG9naW4gPiAvZGV2L251bGwKPj4gKyAgICByYz0kPwo+PiArICAgIHNldCAtZQo+PiArICAgIGlm IFsgJHJjIC1uZSAwIF07IHRoZW4KPj4gKyAgICAgICAgZmF0YWwgIlVuYWJsZSB0byBjb25uZWN0 IHRvIHRhcmdldCIKPj4gKyAgICAgICAgcmV0dXJuIDEKPj4gKyAgICBmaQo+IAo+IFRoaXMgaXMg cm91Z2hseSB0aGUgc2FtZSBhcyBkb19vcl9kaWUgaXNjc2lhZG0gLW0gbm9kZSBldGMgLCBhcGFy dCBmcm9tCj4gdGhlIHNwZWNpZmljcyBvZiB0aGUgbG9nIG1lc3NhZ2UuCj4gCj4gSWYgeW91IHdh bnQgdG8ga2VlcCB0aGUgbWVzc2FnZSBhcyBpcyB0aGVuIGlzIGl0IHRoZSBzYW1lIGFzIAo+IAlp c2NzaWFkbSAtbSBub2RlIC4uLiB8fCBmYXRhbCAiVW5hYmxlLC4uLiIKCkkndmUgc3dpdGNoZWQg dG8gZG9fb3JfZGllLCBhdCB0aGUgZW5kIHRoZSBtZXNzYWdlIGRpZG4ndCBwcm92aWRlIG11Y2gK bW9yZSBpbmZvLCBhbmQgaXQncyBwcm9iYWJseSBiZXR0ZXIgdG8gcHJpbnQgdGhlIGNvbW1hbmQg dGhhdCBmYWlsZWQuCgo+PiArICAgIGZpbmRfZGV2aWNlCj4gCj4gc2V0IC1lIGlzIGJhY2sgaW4g Zm9yY2UgaGVyZSwgc28gd29uJ3QgdGhpcyBiYXJmIGJlZm9yZSB5b3UgaGF2ZSBhCj4gY2hhbmNl IHRvIGNoZWNrICQ/IAo+IAo+IEluIGZhY3Qgbm93IEkgbG9vayBhdCBpdCBmaW5kIGRldmljZSBl aXRoZXIgY2FsbHMgZmF0YWwgKGFuZCBleGl0cykgb3IKPiByZXR1cm5zIDAuLi4KClllcywgc2lu Y2UgdGhlIHNjcmlwdCBjYWxscyBmYXRhbCBJJ3ZlIHJlbW92ZWQgYWxsIHRoZSBjaGVja3MgZm9y IHRoZQpyZXR1cm4gdmFsdWVzIG9mIGludGVybmFsIGZ1bmN0aW9ucy4KCj4gCj4+ICsgICAgaWYg WyAkPyAtbmUgMCBdOyB0aGVuCj4+ICsgICAgICAgIGZhdGFsICJVbmFibGUgdG8gZmluZCBpU0NT SSBkZXZpY2UiCj4+ICsgICAgICAgIHJldHVybiAxCj4+ICsgICAgZmkKPj4gKyAgICByZXR1cm4g MAo+PiArfQo+PiArCj4+ICsjIERpc2NvdmVycyB0YXJnZXRzIGluICRwb3J0YWwgYW5kIGNoZWNr cyB0aGF0ICRpcW4gaXMgb25lIG9mIHRob3NlIHRhcmdldHMKPj4gKyMgQWxzbyBzZXRzIHRoZSBh dXRoIHBhcmFtZXRlcnMgdG8gYXR0YWNoIHRoZSBkZXZpY2UKPj4gK3ByZXBhcmUoKQo+PiArewo+ PiArICAgICMgQ2hlY2sgaWYgdGFyZ2V0IGlzIGFscmVhZHkgb3BlbmVkCj4+ICsgICAgc2V0ICtl Cj4+ICsgICAgaXNjc2lhZG0gLW0gc2Vzc2lvbiAyPiYxIHwgZ3JlcCAtcSAiJGlxbiIKPiAKPiBE b2VzIHRoZSB1c2Ugb2YgYSBwaXBlIGhlcmUgbWFrZSB0aGlzIGluY29tcGF0aWJsZSB3aXRoIGRv X29yX2RpZT8gb3IKPiB0aGUgdXNlIG9mIHx8IGZhdGFsICJtbW0iPwoKSW4gdGhpcyBzcGVjaWZp YyBjYXNlIEkgc2hvdWxkIHVzZSAmJiwgYmVjYXVzZSB3ZSBleHBlY3QgdGhlIGNvbW1hbmQgdG8K ZmFpbC4KCj4gCj4+ICsgICAgcmM9JD8KPj4gKyAgICBzZXQgLWUKPj4gKyAgICBpZiBbICRyYyAt ZXEgMCBdOyB0aGVuCj4+ICsgICAgICAgIGZhdGFsICJEZXZpY2UgYWxyZWFkeSBvcGVuZWQiCj4+ ICsgICAgICAgIHJldHVybiAxCj4+ICsgICAgZmkKPj4gKyAgICAjIERpc2NvdmVyIHBvcnRhbCB0 YXJnZXRzCj4+ICsgICAgc2V0ICtlCj4+ICsgICAgaXNjc2lhZG0gLW0gZGlzY292ZXJ5IC10IHN0 IC1wICRwb3J0YWwgMj4mMSB8IGdyZXAgLXEgIiRpcW4iCgpIZXJlIGEgfHwgaXMgYXBwcm9wcmlh dGUuCgo+PiArICAgIHJjPSQ/Cj4+ICsgICAgc2V0IC1lCj4+ICsgICAgaWYgWyAkcmMgLW5lIDAg XTsgdGhlbgo+PiArICAgICAgICBmYXRhbCAiTm8gbWF0Y2hpbmcgdGFyZ2V0IGlxbiBmb3VuZCIK Pj4gKyAgICAgICAgcmV0dXJuIDEKPj4gKyAgICBmaQo+PiArICAgIHJldHVybiAwCj4+ICt9Cj4+ ICsKPj4gKyMgQXR0YWNoZXMgdGhlIGRldmljZSBhbmQgd3JpdGVzIHhlbnN0b3JlIGJhY2tlbmQg ZW50cmllcyB0byBjb25uZWN0Cj4+ICsjIHRoZSBkZXZpY2UKPj4gK2FkZCgpCj4+ICt7Cj4+ICsg ICAgYXR0YWNoCj4+ICsgICAgaWYgWyAkPyAtbmUgMCBdOyB0aGVuCj4+ICsgICAgICAgIGZhdGFs ICJGYWlsZWQgdG8gYXR0YWNoIGRldmljZSIKPj4gKyAgICAgICAgcmV0dXJuIDEKPj4gKyAgICBm aQo+IAo+IGF0dGFjaCBlaXRoZXIgc3VjY2VlZHMgb3IgZXhpdHMuCgpEb25lLgoKPiAKPj4gKyAg ICB3cml0ZV9kZXYgJGRldgo+PiArICAgIHJldHVybiAwCj4+ICt9Cj4+ICsKPj4gKyMgRGlzY29u bmVjdHMgdGhlIGRldmljZQo+PiArcmVtb3ZlKCkKPj4gK3sKPj4gKyAgICBmaW5kX2RldmljZQo+ PiArICAgIGlmIFsgJD8gLW5lIDAgXTsgdGhlbgo+PiArICAgICAgICBmYXRhbCAiVW5hYmxlIHRv IGZpbmQgZGV2aWNlIgo+PiArICAgICAgICByZXR1cm4gMQo+PiArICAgIGZpCj4+ICsgICAgc2V0 ICtlCj4+ICsgICAgaXNjc2lhZG0gLW0gbm9kZSAtLXRhcmdldG5hbWUgIiRpcW4iIC1wICIkcG9y dGFsIiAtLWxvZ291dCA+IC9kZXYvbnVsbAo+PiArICAgIHJjPSQ/Cj4+ICsgICAgc2V0IC1lCj4+ ICsgICAgaWYgWyAkcmMgLW5lIDAgXTsgdGhlbgo+PiArICAgICAgICBmYXRhbCAiVW5hYmxlIHRv IGRpc2Nvbm5lY3QgdGFyZ2V0Igo+PiArICAgICAgICByZXR1cm4gMQo+PiArICAgIGZpCj4+ICsg ICAgcmV0dXJuIDAKPj4gK30KPj4gKwo+PiArY29tbWFuZD0kMQo+PiArdGFyZ2V0PSQoeGVuc3Rv cmUtcmVhZCAkWEVOQlVTX1BBVEgvcGFyYW1zIHx8IHRydWUpCj4+ICtpZiBbIC16ICIkdGFyZ2V0 IiBdOyB0aGVuCj4+ICsgICAgZmF0YWwgIk5vIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0YXJnZXQi Cj4+ICsgICAgZXhpdCAxCj4+ICtmaQo+PiArCj4+ICtwYXJzZV90YXJnZXQgIiR0YXJnZXQiCj4+ ICsKPj4gK2NoZWNrX3Rvb2xzIHx8IGV4aXQgMQo+PiArCj4+ICtjYXNlICRjb21tYW5kIGluCj4+ ICthZGQpCj4+ICsgICAgcHJlcGFyZQo+PiArICAgIGFkZAo+PiArICAgIGV4aXQgJD8KPj4gKyAg ICA7Owo+PiArcmVtb3ZlKQo+PiArICAgIHJlbW92ZQo+PiArICAgIGV4aXQgJD8KPj4gKyAgICA7 Owo+PiArKikKPj4gKyAgICBleGl0IDEKPj4gKyAgICA7Owo+PiArZXNhYwoKSSdtIGdvaW5nIHRv IHNlbmQgdjMgQVNBUCB3aXRoIGFsbCB0aGUgY29tbWVudHMgYWRkcmVzc2VkLgoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRl dmVsCg==