From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from zg8tmty3ljk5ljewns4xndka.icoremail.net (zg8tmty3ljk5ljewns4xndka.icoremail.net [167.99.105.149]) by sourceware.org (Postfix) with ESMTP id 68D713858D20 for ; Tue, 30 May 2023 07:44:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 68D713858D20 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=eswincomputing.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=eswincomputing.com Received: from E0001797DT (unknown [113.200.72.66]) by app2 (Coremail) with SMTP id EggMCgB3vZNwqXVkEBkfAA--.16467S2; Tue, 30 May 2023 15:44:49 +0800 (CST) Date: Tue, 30 May 2023 15:44:48 +0800 From: "Fei Gao" To: Sinan Cc: "Kito Cheng" , jiawei , lidie , "Liao Shihua" , gcc-patches Subject: Re: Re: [PATCH 1/1] [V2] [RISC-V] support cm.push cm.pop cm.popret in zcmp References: <20230516093354.1521-1-gaofei@eswincomputing.com>, <20230516093354.1521-2-gaofei@eswincomputing.com>, <61369dce-6def-4c11-a216-b3743034a165.sinan.lin@linux.alibaba.com> X-Priority: 3 X-GUID: 54FA166C-CA96-4950-9E28-E4630C9B5374 X-Has-Attach: no X-Mailer: Foxmail 7.2.15.80[cn] Mime-Version: 1.0 Message-ID: <20230530154448355314256@eswincomputing.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-CM-TRANSID:EggMCgB3vZNwqXVkEBkfAA--.16467S2 X-Coremail-Antispam: 1UD129KBjvAXoWDuF4fWr1DJw1ktr18tFW3Awb_yoWfCr4xZo W0qanav3WfJryDC395uayfJ348Jr4vqw48GFsYqr1Yva1rJr9Fqrn2ka1fuwnxJF1UXF48 ZF4xWr48Aa4rtr4fn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73VFW2AGmfu7bjvjm3 AaLaJ3UjIYCTnIWjp_UUU507CY07I20VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM28lY4IE w2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_tr0E3s1l84 ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Gr1j6F4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0D M28EF7xvwVC2z280aVCY1x0267AKxVW0oVCq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc 02F40EFcxC0VAKzVAqx4xG6I80ewAv7VCjz48v1sIEY20_Gr1UJr1UMcvjeVCFs4IE7xkE bVWUJVW8JwACjI8F5VA0II8E6IAqYI8I648v4I1lc2xSY4AK67AK6r4xMxAIw28IcVCjz4 8v1sIEY20_Gr1UJr1UMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_ Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUAVWUtwCI42IY6xIIjx v20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x0267AKxVWUJVW8JwCI42IY6xAIw20E Y4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI0_Jr0_Gr1lIxAIcVC2z280aVCY1x0267 AKxVW8JVW8JrUvcSsGvfC2KfnxnUUI43ZEXa7VU06BT5UUUUU== X-CM-SenderInfo: xjdrwv3l6h245lqf0zpsxwx03jof0z/ X-Spam-Status: No, score=-11.0 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_ASCII_DIVIDERS,KAM_DMARC_STATUS,KAM_SHORT,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,URIBL_BLACK autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: T24gMjAyMy0wNS0zMMKgMTM6MjYgwqBTaW5hbiA8c2luYW4ubGluQGxpbnV4LmFsaWJhYmEuY29t PiB3cm90ZToKPgo+Pj4gKy8qIFJldHVybiBUUlVFIGlmIFpjbXAgcHVzaCBhbmQgcG9wIGluc25z IHNob3VsZCBiZQo+Pj4gKyBhdm9pZGVkLiBGQUxTRSBvdGhlcndpc2UuCj4+PiArIE9ubHkgdXNl IG11bHRpIHB1c2ggJiBwb3AgaWYgYWxsIEdQUnMgbWFza2VkIGNhbiBiZSBjb3ZlcmVkLAo+Pj4g KyBhbmQgc3RhY2sgYWNjZXNzIGlzIFNQIGJhc2VkLAo+Pj4gKyBhbmQgR1BScyBhcmUgYXQgdG9w IG9mIHRoZSBzdGFjayBmcmFtZSwKPj4+ICsgYW5kIG5vIGNvbmZsaWN0cyBpbiBzdGFjayBhbGxv Y2F0aW9uIHdpdGggb3RoZXIgZmVhdHVyZXMgKi8KPj4+ICtzdGF0aWMgYm9vbAo+Pj4gK3Jpc2N2 X2F2b2lkX211bHRpX3B1c2goY29uc3Qgc3RydWN0IHJpc2N2X2ZyYW1lX2luZm8gKmZyYW1lKQo+ Pj4gK3sKPj4+ICsgaWYgKCFUQVJHRVRfWkNNUAo+Pj4gKyB8fCBjcnRsLT5jYWxsc19laF9yZXR1 cm4KPj4+ICsgfHwgZnJhbWVfcG9pbnRlcl9uZWVkZWQKPj4+ICsgfHwgY2Z1bi0+bWFjaGluZS0+ aW50ZXJydXB0X2hhbmRsZXJfcAo+Pj4gKyB8fCBjZnVuLT5tYWNoaW5lLT52YXJhcmdzX3NpemUg IT0gMAo+Pj4gKyB8fCBjcnRsLT5hcmdzLnByZXRlbmRfYXJnc19zaXplICE9IDAKPj4+ICsgfHwg KGZyYW1lLT5tYXNrICYgfiBNVUxUSV9QVVNIX0dQUl9NQVNLKSkKPj4+ICsgcmV0dXJuIHRydWU7 Cj4+PiArCj4+PiArIHJldHVybiBmYWxzZTsKPj4+ICt9Cj5BbnkgcmVhc29uIHRvIHNraXAgZ2Vu ZXJhdGluZyBwdXNoL3BvcCBpbiB0aGUgY2FzZXMgd2hlcmUgYSBmcmFtZSBwb2ludGVyIGlzIG5l ZWRlZD8KPklJUkMsIG9ubHkgY29kZSBjb21waWxlZCB3aXRoIE8xIGFuZCBhYm92ZSB3aWxsIG9t aXQgZnJhbWUgcG9pbnRlciwgaWYgc28gdGhlbiBjb2RlIHdpdGgKPk8wIHdpbGwgbmV2ZXIgZ2Vu ZXJhdGUgY20ucHVzaC9wb3AuIAp3aXRob3V0wqAtZm9taXQtZnJhbWUtcG9pbnRlciBpbiBPMCwg dGhlIHN0YWNrIGFjY2VzcyBpcyBzMCBiYXNlZCwgd2hpbGXCoGNtLnB1c2gvcG9wIGlzIHNwIGJh c2VkIGFjY2Vzcy4KU2/CoGNtLnB1c2gvcG9wIHdpbGwgbm90IGJlIGdlbmVyYXRlZC4gU2FtZSBs b2dpYyBhcyB0YWtlbiBieSBzYXZlLXJlc3RvcmUuCgo+U2FtZSBxdWVzdGlvbiBmb3IgaW50ZXJy dXB0X2hhbmRsZXJfcC4gSSB0aGluayBjbS5wdXNoL3BvcCBjYW4gaGFuZGxlIHRoaXMgY2FzZS4g ZS5nLgo+dGhlIHRlc3QgY2FzZSB6Yy16Y21wLXB1c2gtcG9wLTYuYyBmcm9tIEppYXdlaSdzIHBh dGNoLiAKU2FtZSBsb2dpYyBhcyB0YWtlbiBieSBzYXZlLXJlc3RvcmUuIEkgZG9uJ3Qga25vdyB0 aGUgZXhhY3QgcmVhc29uIHdoecKgc2F2ZS1yZXN0b3JlIGNhbm5vdCBiZSB1c2VkIGluIGludGVy cnVwdC7CoApJbiByaXNjdl9jb21wdXRlX2ZyYW1lX2luZm8swqByaXNjdl9zdGFja19hbGlnbiAo bnVtX3NhdmVfcmVzdG9yZSAqIFVOSVRTX1BFUl9XT1JEKSA9PSB4X3NhdmVfc2l6ZSBmYWlscyBp biBtb3N0IGNhc2VzIGZvciBpbnRlcnJ1cHQuCsKgIMKgIMKgIMKgIMKgIGlmIChyaXNjdl9zdGFj a19hbGlnbiAobnVtX3NhdmVfcmVzdG9yZSAqIFVOSVRTX1BFUl9XT1JEKSA9PSB4X3NhdmVfc2l6 ZQrCoCDCoCDCoCDCoCDCoCDCoCDCoCAmJiAhcmlzY3ZfYXZvaWRfc2F2ZV9saWJjYWxsICgpKQrC oCDCoCDCoCDCoCDCoCDCoCB7CsKgIMKgIMKgIMKgIMKgIMKgIMKgIC4uLgrCoCDCoCDCoCDCoCDC oCDCoCDCoCBmcmFtZS0+c2F2ZV9saWJjYWxsX2FkanVzdG1lbnQgPSB4X3NhdmVfc2l6ZTsKwqAg wqAgwqAgwqAgwqAgwqAgfQpJbiBteSB1bmRlcnN0YW5kaW5nLCB1c2Ugc2F2ZS1yZXN0b3JlIGlm IGFsbCByZWdzIHRvIGJlIHNhdmVkIGNhbiBiZSBjb3ZlcmVkLiBUaGF0J3Mgd2h5IGkgYWRkZWQg KGZyYW1lLT5tYXNrICYgfiBNVUxUSV9QVVNIX0dQUl9NQVNLKQppbsKgcmlzY3ZfYXZvaWRfbXVs dGlfcHVzaC4KCkJSLMKgCkZlaQoKPkJSLAo+U2luYW4gCgo+LS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj5TZW5kZXI6RmVp IEdhbyA8Z2FvZmVpQGVzd2luY29tcHV0aW5nLmNvbT4KPlNlbnQgQXQ6MjAyMyBNYXkgMTYgKFR1 ZS4pIDE3OjM0Cj5SZWNpcGllbnQ6c2luYW4ubGluIDxzaW5hbi5saW5AbGludXguYWxpYmFiYS5j b20+OyBqaWF3ZWkgPGppYXdlaUBpc2Nhcy5hYy5jbj47IHNoaWh1YSA8c2hpaHVhQGlzY2FzLmFj LmNuPjsgbGlkaWUgPGxpZGllQGVzd2luY29tcHV0aW5nLmNvbT4KPkNjOkZlaSBHYW8gPGdhb2Zl aUBlc3dpbmNvbXB1dGluZy5jb20+Cj5TdWJqZWN0OltQQVRDSCAxLzFdIFtWMl0gW1JJU0MtVl0g c3VwcG9ydCBjbS5wdXNoIGNtLnBvcCBjbS5wb3ByZXQgaW4gemNtcAo+WmNtcCBjYW4gc2hhcmUg dGhlIHNhbWUgbG9naWMgYXMgc2F2ZS1yZXN0b3JlIGluIHN0YWNrIGFsbG9jYXRpb246IHByZS1h bGxvY2F0aW9uCj5ieSBjbS5wdXNoLCBzdGVwIDEgYW5kIHN0ZXAgMi4KPnBsZWFzZSBiZSBub3Rl ZCBjbS5wdXNoIHB1c2hlcyByYSwgczAtczExIGluIHJldmVyc2Ugb3JkZXIgdGhhbiB3aGF0IHNh dmUtcmVzdG9yZSBkb2VzLgo+U28gYWRhcHRpb24gaGFzIGJlZW4gZG9uZSBpbiAuY2ZpIGRpcmVj dGl2ZXMgaW4gbXkgcGF0Y2guCj5nY2MvQ2hhbmdlTG9nOgo+ICogY29uZmlnL3Jpc2N2L3ByZWRp Y2F0ZXMubWQgKHNsb3RfMF9vZmZzZXRfb3BlcmFuZCk6IHByZWRpY2F0ZXMgZm9yIHNsb3QgMCBv ZmZzZXQuCj4gKHNsb3RfMV9vZmZzZXRfb3BlcmFuZCk6IGxpa2V3aXNlCj4gKHNsb3RfMl9vZmZz ZXRfb3BlcmFuZCk6IGxpa2V3aXNlCj4gKHNsb3RfM19vZmZzZXRfb3BlcmFuZCk6IGxpa2V3aXNl Cj4gKHNsb3RfNF9vZmZzZXRfb3BlcmFuZCk6IGxpa2V3aXNlCj4gKHNsb3RfNV9vZmZzZXRfb3Bl cmFuZCk6IGxpa2V3aXNlCj4gKHNsb3RfNl9vZmZzZXRfb3BlcmFuZCk6IGxpa2V3aXNlCj4gKHNs b3RfN19vZmZzZXRfb3BlcmFuZCk6IGxpa2V3aXNlCj4gKHNsb3RfOF9vZmZzZXRfb3BlcmFuZCk6 IGxpa2V3aXNlCj4gKHNsb3RfOV9vZmZzZXRfb3BlcmFuZCk6IGxpa2V3aXNlCj4gKHNsb3RfMTBf b2Zmc2V0X29wZXJhbmQpOiBsaWtld2lzZQo+IChzbG90XzExX29mZnNldF9vcGVyYW5kKTogbGlr ZXdpc2UKPiAoc2xvdF8xMl9vZmZzZXRfb3BlcmFuZCk6IGxpa2V3aXNlCj4gKHN0YWNrX3B1c2hf dXBfdG9fcmFfb3BlcmFuZCk6IHByZWRpY2F0ZXMgZm9yIHN0YWNrIGFkanVzdCBvZiBwdXNoaW5n IHJhCj4gKHN0YWNrX3B1c2hfdXBfdG9fczBfb3BlcmFuZCk6IHByZWRpY2F0ZXMgZm9yIHN0YWNr IGFkanVzdCBvZiBwdXNoaW5nIHJhLCBzMAo+IChzdGFja19wdXNoX3VwX3RvX3MxX29wZXJhbmQp OiBsaWtld2lzZQo+IChzdGFja19wdXNoX3VwX3RvX3MyX29wZXJhbmQpOiBsaWtld2lzZQo+IChz dGFja19wdXNoX3VwX3RvX3MzX29wZXJhbmQpOiBsaWtld2lzZQo+IChzdGFja19wdXNoX3VwX3Rv X3M0X29wZXJhbmQpOiBsaWtld2lzZQo+IChzdGFja19wdXNoX3VwX3RvX3M1X29wZXJhbmQpOiBs aWtld2lzZQo+IChzdGFja19wdXNoX3VwX3RvX3M2X29wZXJhbmQpOiBsaWtld2lzZQo+IChzdGFj a19wdXNoX3VwX3RvX3M3X29wZXJhbmQpOiBsaWtld2lzZQo+IChzdGFja19wdXNoX3VwX3RvX3M4 X29wZXJhbmQpOiBsaWtld2lzZQo+IChzdGFja19wdXNoX3VwX3RvX3M5X29wZXJhbmQpOiBsaWtl d2lzZQo+IChzdGFja19wdXNoX3VwX3RvX3MxMV9vcGVyYW5kKTogbGlrZXdpc2UKPiAoc3RhY2tf cG9wX3VwX3RvX3JhX29wZXJhbmQpOiBwcmVkaWNhdGVzIGZvciBzdGFjayBhZGp1c3Qgb2YgcG9w aW5nIHJhCj4gKHN0YWNrX3BvcF91cF90b19zMF9vcGVyYW5kKTogcHJlZGljYXRlcyBmb3Igc3Rh Y2sgYWRqdXN0IG9mIHBvcGluZyByYSwgczAKPiAoc3RhY2tfcG9wX3VwX3RvX3MxX29wZXJhbmQp OiBsaWtld2lzZQo+IChzdGFja19wb3BfdXBfdG9fczJfb3BlcmFuZCk6IGxpa2V3aXNlCj4gKHN0 YWNrX3BvcF91cF90b19zM19vcGVyYW5kKTogbGlrZXdpc2UKPiAoc3RhY2tfcG9wX3VwX3RvX3M0 X29wZXJhbmQpOiBsaWtld2lzZQo+IChzdGFja19wb3BfdXBfdG9fczVfb3BlcmFuZCk6IGxpa2V3 aXNlCj4gKHN0YWNrX3BvcF91cF90b19zNl9vcGVyYW5kKTogbGlrZXdpc2UKPiAoc3RhY2tfcG9w X3VwX3RvX3M3X29wZXJhbmQpOiBsaWtld2lzZQo+IChzdGFja19wb3BfdXBfdG9fczhfb3BlcmFu ZCk6IGxpa2V3aXNlCj4gKHN0YWNrX3BvcF91cF90b19zOV9vcGVyYW5kKTogbGlrZXdpc2UKPiAo c3RhY2tfcG9wX3VwX3RvX3MxMV9vcGVyYW5kKTogbGlrZXdpc2UKPiAqIGNvbmZpZy9yaXNjdi9y aXNjdi1wcm90b3MuaCAocmlzY3ZfemNtcF92YWxpZF9zbG90X29mZnNldF9wKTogZGVjbGFyYXRp b24KPiAocmlzY3ZfemNtcF92YWxpZF9zdGFja19hZGpfYnl0ZXNfcCk6IGRlY2xhcmF0aW9uCj4g KiBjb25maWcvcmlzY3YvcmlzY3YuY2MgKHN0cnVjdCByaXNjdl9mcmFtZV9pbmZvKTogY29tbWVu dCBjaGFuZ2UKPiAocmlzY3ZfYXZvaWRfbXVsdGlfcHVzaCk6IGhlbHBlciBmdW5jdGlvbiBvZiBy aXNjdl91c2VfbXVsdGlfcHVzaAo+IChyaXNjdl91c2VfbXVsdGlfcHVzaCk6IHRydWUgaWYgbXVs dGkgcHVzaCBpcyB1c2VkCj4gKHJpc2N2X211bHRpX3B1c2hfc3JlZ3NfY291bnQpOiBudW0gb2Yg c3JlZ3MgaW4gbXVsdGktcHVzaAo+IChyaXNjdl9tdWx0aV9wdXNoX3JlZ3NfY291bnQpOiBudW0g b2YgcmVncyBpbiBtdWx0aS1wdXNoCj4gKHJpc2N2XzE2Ynl0ZXNfYWxpZ24pOiBhbGlnbiB0byAx NiBieXRlcwo+IChyaXNjdl9zdGFja19hbGlnbik6IG1vdmVkIHRvIGEgYmV0dGVyIHBsYWNlCj4g KHJpc2N2X3NhdmVfbGliY2FsbF9jb3VudCk6IG5vIGZ1bmN0aW9uYWwgY2hhbmdlCj4gKHJpc2N2 X2NvbXB1dGVfZnJhbWVfaW5mbyk6IGFkZCB6Y21wIGZyYW1lIGluZm8KPiAocmlzY3ZfYWRqdXN0 X211bHRpX3B1c2hfY2ZpX3Byb2xvZ3VlKTogYWRqdXN0IGNmaSBmb3IgY20ucHVzaAo+IChnZXRf c2xvdF9vZmZzZXRfcnR4KTogZ2V0IHRoZSBydHggb2Ygc2xvdCB0byBwdXNoIG9yIHBvcAo+IChy aXNjdl9nZW5fbXVsdGlfcHVzaF9wb3BfaW5zbik6IGdlbiBmdW5jdGlvbiBmb3IgbXVsdGkgcHVz aCBhbmQgcG9wCj4gKHJpc2N2X2V4cGFuZF9wcm9sb2d1ZSk6IGFsbG9jYXRlIHN0YWNrIGJ5IGNt LnB1c2gKPiAocmlzY3ZfYWRqdXN0X211bHRpX3BvcF9jZmlfZXBpbG9ndWUpOiBhZGp1c3QgY2Zp IGZvciBjbS5wb3BbcmV0XQo+IChyaXNjdl9leHBhbmRfZXBpbG9ndWUpOiBhbGxvY2F0ZSBzdGFj ayBieSBjbS5wb3BbcmV0XQo+ICh6Y21wX2Jhc2VfYWRqKTogY2FsY3VsYXRlIHN0YWNrIGFkanVz dG1lbnQgYmFzZSBzaXplCj4gKHpjbXBfYWRkaXRpb25hbF9hZGopOiBjYWxjdWxhdGUgc3RhY2sg YWRqdXN0bWVudCBhZGRpdGlvbmFsIHNpemUKPiAocmlzY3ZfemNtcF92YWxpZF9zbG90X29mZnNl dF9wKTogY2hlY2sgaWYgb2Zmc2V0IGlzIHZhbGlkIGZvciBhIHNsb3QKPiAocmlzY3ZfemNtcF92 YWxpZF9zdGFja19hZGpfYnl0ZXNfcCk6IGNoZWNrIGlmIHN0YWNrIGFkanVzdG1lbnQgc2l6ZSBp cyB2YWxpZAo+ICogY29uZmlnL3Jpc2N2L3Jpc2N2LmggKFJFVFVSTl9BRERSX01BU0spOiBtYXNr IG9mIHJhCj4gKFMwX01BU0spOiBsaWtld2lzZQo+IChTMV9NQVNLKTogbGlrZXdpc2UKPiAoUzJf TUFTSyk6IGxpa2V3aXNlCj4gKFMzX01BU0spOiBsaWtld2lzZQo+IChTNF9NQVNLKTogbGlrZXdp c2UKPiAoUzVfTUFTSyk6IGxpa2V3aXNlCj4gKFM2X01BU0spOiBsaWtld2lzZQo+IChTN19NQVNL KTogbGlrZXdpc2UKPiAoUzhfTUFTSyk6IGxpa2V3aXNlCj4gKFM5X01BU0spOiBsaWtld2lzZQo+ IChTMTBfTUFTSyk6IGxpa2V3aXNlCj4gKFMxMV9NQVNLKTogbGlrZXdpc2UKPiAoTVVMVElfUFVT SF9HUFJfTUFTSyk6IEdQUl9NQVNLIHRoYXQgY20ucHVzaCBjYW4gY292ZXIgYXQgbW9zdAo+ICha Q01QX01BWF9TUElNTSk6IG1heCBzcGltbSB2YWx1ZQo+IChaQ01QX1NQX0lOQ19TVEVQKTogemNt cCBzcCBpbmNyZW1lbnQgc3RlcAo+IChaQ01QX0lOVkFMSURfUzBTMTBfU1JFR1NfQ09VTlRTKTog bnVtIG9mIHMwLXMxMAo+IChaQ01QX1MwUzExX1NSRUdTX0NPVU5UUyk6IG51bSBvZiBzMC1zMTEK PiAoWkNNUF9NQVhfR1JQX1NMT1RTKTogbWF4IHNsb3RzIG9mIHB1c2hpbmcgYW5kIHBvcGluZyBp biB6Y21wCj4gKiBjb25maWcvcmlzY3YvcmlzY3YubWQ6IGluY2x1ZGUgemMubWQKPiAqIGNvbmZp Zy9yaXNjdi96Yy5tZDogTmV3IGZpbGUuIG1hY2hpbmUgZGVzY3JpcHRpb24gZm9yIHpjbXAKPmdj Yy90ZXN0c3VpdGUvQ2hhbmdlTG9nOgo+ICogZ2NjLnRhcmdldC9yaXNjdi9ydjMyZV96Y21wLmM6 IE5ldyB0ZXN0Lgo+ICogZ2NjLnRhcmdldC9yaXNjdi9ydjMyaV96Y21wLmM6IE5ldyB0ZXN0Lgo+ ICogZ2NjLnRhcmdldC9yaXNjdi96Y21wX3N0YWNrX2FsaWdubWVudC5jOiBOZXcgdGVzdC4KPi0t LQo+IGdjYy9jb25maWcvcmlzY3YvcHJlZGljYXRlcy5tZCB8IDE0OCArKysKPiBnY2MvY29uZmln L3Jpc2N2L3Jpc2N2LXByb3Rvcy5oIHwgMiArCj4gZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jYyB8 IDQ3NyArKysrKysrLQo+IGdjYy9jb25maWcvcmlzY3YvcmlzY3YuaCB8IDIzICsKPiBnY2MvY29u ZmlnL3Jpc2N2L3Jpc2N2Lm1kIHwgMiArCj4gZ2NjL2NvbmZpZy9yaXNjdi96Yy5tZCB8IDEwNDIg KysrKysrKysrKysrKysrKysKPiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnYzMmVf emNtcC5jIHwgMjM5ICsrKysKPiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnYzMmlf emNtcC5jIHwgMjM5ICsrKysKPiAuLi4vZ2NjLnRhcmdldC9yaXNjdi96Y21wX3N0YWNrX2FsaWdu bWVudC5jIHwgMjMgKwo+IDkgZmlsZXMgY2hhbmdlZCwgMjE1NSBpbnNlcnRpb25zKCspLCA0MCBk ZWxldGlvbnMoLSkKPiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL2NvbmZpZy9yaXNjdi96Yy5tZAo+ IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnYzMmVf emNtcC5jCj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydjMyaV96Y21wLmMKPiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L3pjbXBfc3RhY2tfYWxpZ25tZW50LmMKPmRpZmYgLS1naXQgYS9nY2MvY29uZmln L3Jpc2N2L3ByZWRpY2F0ZXMubWQgYi9nY2MvY29uZmlnL3Jpc2N2L3ByZWRpY2F0ZXMubWQKPmlu ZGV4IGU1YWRmMDZmYTI1Li5kM2QzMGRjNjdmNyAxMDA2NDQKPi0tLSBhL2djYy9jb25maWcvcmlz Y3YvcHJlZGljYXRlcy5tZAo+KysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9wcmVkaWNhdGVzLm1kCj5A QCAtNTksNiArNTksMTU0IEBACj4gKGlvciAobWF0Y2hfb3BlcmFuZCAwICJjb25zdF8wX29wZXJh bmQiKQo+IChtYXRjaF9vcGVyYW5kIDAgInJlZ2lzdGVyX29wZXJhbmQiKSkpCj4rKGRlZmluZV9w cmVkaWNhdGUgInNsb3RfMF9vZmZzZXRfb3BlcmFuZCIKPisgKGFuZCAobWF0Y2hfY29kZSAiY29u c3RfaW50IikKPisgKG1hdGNoX3Rlc3QgInJpc2N2X3pjbXBfdmFsaWRfc2xvdF9vZmZzZXRfcCAo SU5UVkFMIChvcCksIDApIikpKQo+Kwo+KyhkZWZpbmVfcHJlZGljYXRlICJzbG90XzFfb2Zmc2V0 X29wZXJhbmQiCj4rIChhbmQgKG1hdGNoX2NvZGUgImNvbnN0X2ludCIpCj4rIChtYXRjaF90ZXN0 ICJyaXNjdl96Y21wX3ZhbGlkX3Nsb3Rfb2Zmc2V0X3AgKElOVFZBTCAob3ApLCAxKSIpKSkKPisK PisoZGVmaW5lX3ByZWRpY2F0ZSAic2xvdF8yX29mZnNldF9vcGVyYW5kIgo+KyAoYW5kIChtYXRj aF9jb2RlICJjb25zdF9pbnQiKQo+KyAobWF0Y2hfdGVzdCAicmlzY3ZfemNtcF92YWxpZF9zbG90 X29mZnNldF9wIChJTlRWQUwgKG9wKSwgMikiKSkpCj4rCj4rKGRlZmluZV9wcmVkaWNhdGUgInNs b3RfM19vZmZzZXRfb3BlcmFuZCIKPisgKGFuZCAobWF0Y2hfY29kZSAiY29uc3RfaW50IikKPisg KG1hdGNoX3Rlc3QgInJpc2N2X3pjbXBfdmFsaWRfc2xvdF9vZmZzZXRfcCAoSU5UVkFMIChvcCks IDMpIikpKQo+Kwo+KyhkZWZpbmVfcHJlZGljYXRlICJzbG90XzRfb2Zmc2V0X29wZXJhbmQiCj4r IChhbmQgKG1hdGNoX2NvZGUgImNvbnN0X2ludCIpCj4rIChtYXRjaF90ZXN0ICJyaXNjdl96Y21w X3ZhbGlkX3Nsb3Rfb2Zmc2V0X3AgKElOVFZBTCAob3ApLCA0KSIpKSkKPisKPisoZGVmaW5lX3By ZWRpY2F0ZSAic2xvdF81X29mZnNldF9vcGVyYW5kIgo+KyAoYW5kIChtYXRjaF9jb2RlICJjb25z dF9pbnQiKQo+KyAobWF0Y2hfdGVzdCAicmlzY3ZfemNtcF92YWxpZF9zbG90X29mZnNldF9wIChJ TlRWQUwgKG9wKSwgNSkiKSkpCj4rCj4rKGRlZmluZV9wcmVkaWNhdGUgInNsb3RfNl9vZmZzZXRf b3BlcmFuZCIKPisgKGFuZCAobWF0Y2hfY29kZSAiY29uc3RfaW50IikKPisgKG1hdGNoX3Rlc3Qg InJpc2N2X3pjbXBfdmFsaWRfc2xvdF9vZmZzZXRfcCAoSU5UVkFMIChvcCksIDYpIikpKQo+Kwo+ KyhkZWZpbmVfcHJlZGljYXRlICJzbG90Xzdfb2Zmc2V0X29wZXJhbmQiCj4rIChhbmQgKG1hdGNo X2NvZGUgImNvbnN0X2ludCIpCj4rIChtYXRjaF90ZXN0ICJyaXNjdl96Y21wX3ZhbGlkX3Nsb3Rf b2Zmc2V0X3AgKElOVFZBTCAob3ApLCA3KSIpKSkKPisKPisoZGVmaW5lX3ByZWRpY2F0ZSAic2xv dF84X29mZnNldF9vcGVyYW5kIgo+KyAoYW5kIChtYXRjaF9jb2RlICJjb25zdF9pbnQiKQo+KyAo bWF0Y2hfdGVzdCAicmlzY3ZfemNtcF92YWxpZF9zbG90X29mZnNldF9wIChJTlRWQUwgKG9wKSwg OCkiKSkpCj4rCj4rKGRlZmluZV9wcmVkaWNhdGUgInNsb3RfOV9vZmZzZXRfb3BlcmFuZCIKPisg KGFuZCAobWF0Y2hfY29kZSAiY29uc3RfaW50IikKPisgKG1hdGNoX3Rlc3QgInJpc2N2X3pjbXBf dmFsaWRfc2xvdF9vZmZzZXRfcCAoSU5UVkFMIChvcCksIDkpIikpKQo+Kwo+KyhkZWZpbmVfcHJl ZGljYXRlICJzbG90XzEwX29mZnNldF9vcGVyYW5kIgo+KyAoYW5kIChtYXRjaF9jb2RlICJjb25z dF9pbnQiKQo+KyAobWF0Y2hfdGVzdCAicmlzY3ZfemNtcF92YWxpZF9zbG90X29mZnNldF9wIChJ TlRWQUwgKG9wKSwgMTApIikpKQo+Kwo+KyhkZWZpbmVfcHJlZGljYXRlICJzbG90XzExX29mZnNl dF9vcGVyYW5kIgo+KyAoYW5kIChtYXRjaF9jb2RlICJjb25zdF9pbnQiKQo+KyAobWF0Y2hfdGVz dCAicmlzY3ZfemNtcF92YWxpZF9zbG90X29mZnNldF9wIChJTlRWQUwgKG9wKSwgMTEpIikpKQo+ Kwo+KyhkZWZpbmVfcHJlZGljYXRlICJzbG90XzEyX29mZnNldF9vcGVyYW5kIgo+KyAoYW5kICht YXRjaF9jb2RlICJjb25zdF9pbnQiKQo+KyAobWF0Y2hfdGVzdCAicmlzY3ZfemNtcF92YWxpZF9z bG90X29mZnNldF9wIChJTlRWQUwgKG9wKSwgMTIpIikpKQo+Kwo+KyhkZWZpbmVfcHJlZGljYXRl ICJzdGFja19wdXNoX3VwX3RvX3JhX29wZXJhbmQiCj4rIChhbmQgKG1hdGNoX2NvZGUgImNvbnN0 X2ludCIpCj4rIChtYXRjaF90ZXN0ICJyaXNjdl96Y21wX3ZhbGlkX3N0YWNrX2Fkal9ieXRlc19w IChJTlRWQUwgKG9wKSAqIC0xLCAxKSIpKSkKPisKPisoZGVmaW5lX3ByZWRpY2F0ZSAic3RhY2tf cHVzaF91cF90b19zMF9vcGVyYW5kIgo+KyAoYW5kIChtYXRjaF9jb2RlICJjb25zdF9pbnQiKQo+ KyAobWF0Y2hfdGVzdCAicmlzY3ZfemNtcF92YWxpZF9zdGFja19hZGpfYnl0ZXNfcCAoSU5UVkFM IChvcCkgKiAtMSwgMikiKSkpCj4rCj4rKGRlZmluZV9wcmVkaWNhdGUgInN0YWNrX3B1c2hfdXBf dG9fczFfb3BlcmFuZCIKPisgKGFuZCAobWF0Y2hfY29kZSAiY29uc3RfaW50IikKPisgKG1hdGNo X3Rlc3QgInJpc2N2X3pjbXBfdmFsaWRfc3RhY2tfYWRqX2J5dGVzX3AgKElOVFZBTCAob3ApICog LTEsIDMpIikpKQo+Kwo+KyhkZWZpbmVfcHJlZGljYXRlICJzdGFja19wdXNoX3VwX3RvX3MyX29w ZXJhbmQiCj4rIChhbmQgKG1hdGNoX2NvZGUgImNvbnN0X2ludCIpCj4rIChtYXRjaF90ZXN0ICJy aXNjdl96Y21wX3ZhbGlkX3N0YWNrX2Fkal9ieXRlc19wIChJTlRWQUwgKG9wKSAqIC0xLCA0KSIp KSkKPisKPisoZGVmaW5lX3ByZWRpY2F0ZSAic3RhY2tfcHVzaF91cF90b19zM19vcGVyYW5kIgo+ KyAoYW5kIChtYXRjaF9jb2RlICJjb25zdF9pbnQiKQo+KyAobWF0Y2hfdGVzdCAicmlzY3ZfemNt cF92YWxpZF9zdGFja19hZGpfYnl0ZXNfcCAoSU5UVkFMIChvcCkgKiAtMSwgNSkiKSkpCj4rCj4r KGRlZmluZV9wcmVkaWNhdGUgInN0YWNrX3B1c2hfdXBfdG9fczRfb3BlcmFuZCIKPisgKGFuZCAo bWF0Y2hfY29kZSAiY29uc3RfaW50IikKPisgKG1hdGNoX3Rlc3QgInJpc2N2X3pjbXBfdmFsaWRf c3RhY2tfYWRqX2J5dGVzX3AgKElOVFZBTCAob3ApICogLTEsIDYpIikpKQo+Kwo+KyhkZWZpbmVf cHJlZGljYXRlICJzdGFja19wdXNoX3VwX3RvX3M1X29wZXJhbmQiCj4rIChhbmQgKG1hdGNoX2Nv ZGUgImNvbnN0X2ludCIpCj4rIChtYXRjaF90ZXN0ICJyaXNjdl96Y21wX3ZhbGlkX3N0YWNrX2Fk al9ieXRlc19wIChJTlRWQUwgKG9wKSAqIC0xLCA3KSIpKSkKPisKPisoZGVmaW5lX3ByZWRpY2F0 ZSAic3RhY2tfcHVzaF91cF90b19zNl9vcGVyYW5kIgo+KyAoYW5kIChtYXRjaF9jb2RlICJjb25z dF9pbnQiKQo+KyAobWF0Y2hfdGVzdCAicmlzY3ZfemNtcF92YWxpZF9zdGFja19hZGpfYnl0ZXNf cCAoSU5UVkFMIChvcCkgKiAtMSwgOCkiKSkpCj4rCj4rKGRlZmluZV9wcmVkaWNhdGUgInN0YWNr X3B1c2hfdXBfdG9fczdfb3BlcmFuZCIKPisgKGFuZCAobWF0Y2hfY29kZSAiY29uc3RfaW50IikK PisgKG1hdGNoX3Rlc3QgInJpc2N2X3pjbXBfdmFsaWRfc3RhY2tfYWRqX2J5dGVzX3AgKElOVFZB TCAob3ApICogLTEsIDkpIikpKQo+Kwo+KyhkZWZpbmVfcHJlZGljYXRlICJzdGFja19wdXNoX3Vw X3RvX3M4X29wZXJhbmQiCj4rIChhbmQgKG1hdGNoX2NvZGUgImNvbnN0X2ludCIpCj4rIChtYXRj aF90ZXN0ICJyaXNjdl96Y21wX3ZhbGlkX3N0YWNrX2Fkal9ieXRlc19wIChJTlRWQUwgKG9wKSAq IC0xLCAxMCkiKSkpCj4rCj4rKGRlZmluZV9wcmVkaWNhdGUgInN0YWNrX3B1c2hfdXBfdG9fczlf b3BlcmFuZCIKPisgKGFuZCAobWF0Y2hfY29kZSAiY29uc3RfaW50IikKPisgKG1hdGNoX3Rlc3Qg InJpc2N2X3pjbXBfdmFsaWRfc3RhY2tfYWRqX2J5dGVzX3AgKElOVFZBTCAob3ApICogLTEsIDEx KSIpKSkKPisKPisoZGVmaW5lX3ByZWRpY2F0ZSAic3RhY2tfcHVzaF91cF90b19zMTFfb3BlcmFu ZCIKPisgKGFuZCAobWF0Y2hfY29kZSAiY29uc3RfaW50IikKPisgKG1hdGNoX3Rlc3QgInJpc2N2 X3pjbXBfdmFsaWRfc3RhY2tfYWRqX2J5dGVzX3AgKElOVFZBTCAob3ApICogLTEsIDEzKSIpKSkK PisKPisoZGVmaW5lX3ByZWRpY2F0ZSAic3RhY2tfcG9wX3VwX3RvX3JhX29wZXJhbmQiCj4rIChh bmQgKG1hdGNoX2NvZGUgImNvbnN0X2ludCIpCj4rIChtYXRjaF90ZXN0ICJyaXNjdl96Y21wX3Zh bGlkX3N0YWNrX2Fkal9ieXRlc19wIChJTlRWQUwgKG9wKSwgMSkiKSkpCj4rCj4rKGRlZmluZV9w cmVkaWNhdGUgInN0YWNrX3BvcF91cF90b19zMF9vcGVyYW5kIgo+KyAoYW5kIChtYXRjaF9jb2Rl ICJjb25zdF9pbnQiKQo+KyAobWF0Y2hfdGVzdCAicmlzY3ZfemNtcF92YWxpZF9zdGFja19hZGpf Ynl0ZXNfcCAoSU5UVkFMIChvcCksIDIpIikpKQo+Kwo+KyhkZWZpbmVfcHJlZGljYXRlICJzdGFj a19wb3BfdXBfdG9fczFfb3BlcmFuZCIKPisgKGFuZCAobWF0Y2hfY29kZSAiY29uc3RfaW50IikK PisgKG1hdGNoX3Rlc3QgInJpc2N2X3pjbXBfdmFsaWRfc3RhY2tfYWRqX2J5dGVzX3AgKElOVFZB TCAob3ApLCAzKSIpKSkKPisKPisoZGVmaW5lX3ByZWRpY2F0ZSAic3RhY2tfcG9wX3VwX3RvX3My X29wZXJhbmQiCj4rIChhbmQgKG1hdGNoX2NvZGUgImNvbnN0X2ludCIpCj4rIChtYXRjaF90ZXN0 ICJyaXNjdl96Y21wX3ZhbGlkX3N0YWNrX2Fkal9ieXRlc19wIChJTlRWQUwgKG9wKSwgNCkiKSkp Cj4rCj4rKGRlZmluZV9wcmVkaWNhdGUgInN0YWNrX3BvcF91cF90b19zM19vcGVyYW5kIgo+KyAo YW5kIChtYXRjaF9jb2RlICJjb25zdF9pbnQiKQo+KyAobWF0Y2hfdGVzdCAicmlzY3ZfemNtcF92 YWxpZF9zdGFja19hZGpfYnl0ZXNfcCAoSU5UVkFMIChvcCksIDUpIikpKQo+Kwo+KyhkZWZpbmVf cHJlZGljYXRlICJzdGFja19wb3BfdXBfdG9fczRfb3BlcmFuZCIKPisgKGFuZCAobWF0Y2hfY29k ZSAiY29uc3RfaW50IikKPisgKG1hdGNoX3Rlc3QgInJpc2N2X3pjbXBfdmFsaWRfc3RhY2tfYWRq X2J5dGVzX3AgKElOVFZBTCAob3ApLCA2KSIpKSkKPisKPisoZGVmaW5lX3ByZWRpY2F0ZSAic3Rh Y2tfcG9wX3VwX3RvX3M1X29wZXJhbmQiCj4rIChhbmQgKG1hdGNoX2NvZGUgImNvbnN0X2ludCIp Cj4rIChtYXRjaF90ZXN0ICJyaXNjdl96Y21wX3ZhbGlkX3N0YWNrX2Fkal9ieXRlc19wIChJTlRW QUwgKG9wKSwgNykiKSkpCj4rCj4rKGRlZmluZV9wcmVkaWNhdGUgInN0YWNrX3BvcF91cF90b19z Nl9vcGVyYW5kIgo+KyAoYW5kIChtYXRjaF9jb2RlICJjb25zdF9pbnQiKQo+KyAobWF0Y2hfdGVz dCAicmlzY3ZfemNtcF92YWxpZF9zdGFja19hZGpfYnl0ZXNfcCAoSU5UVkFMIChvcCksIDgpIikp KQo+Kwo+KyhkZWZpbmVfcHJlZGljYXRlICJzdGFja19wb3BfdXBfdG9fczdfb3BlcmFuZCIKPisg KGFuZCAobWF0Y2hfY29kZSAiY29uc3RfaW50IikKPisgKG1hdGNoX3Rlc3QgInJpc2N2X3pjbXBf dmFsaWRfc3RhY2tfYWRqX2J5dGVzX3AgKElOVFZBTCAob3ApLCA5KSIpKSkKPisKPisoZGVmaW5l X3ByZWRpY2F0ZSAic3RhY2tfcG9wX3VwX3RvX3M4X29wZXJhbmQiCj4rIChhbmQgKG1hdGNoX2Nv ZGUgImNvbnN0X2ludCIpCj4rIChtYXRjaF90ZXN0ICJyaXNjdl96Y21wX3ZhbGlkX3N0YWNrX2Fk al9ieXRlc19wIChJTlRWQUwgKG9wKSwgMTApIikpKQo+Kwo+KyhkZWZpbmVfcHJlZGljYXRlICJz dGFja19wb3BfdXBfdG9fczlfb3BlcmFuZCIKPisgKGFuZCAobWF0Y2hfY29kZSAiY29uc3RfaW50 IikKPisgKG1hdGNoX3Rlc3QgInJpc2N2X3pjbXBfdmFsaWRfc3RhY2tfYWRqX2J5dGVzX3AgKElO VFZBTCAob3ApLCAxMSkiKSkpCj4rCj4rKGRlZmluZV9wcmVkaWNhdGUgInN0YWNrX3BvcF91cF90 b19zMTFfb3BlcmFuZCIKPisgKGFuZCAobWF0Y2hfY29kZSAiY29uc3RfaW50IikKPisgKG1hdGNo X3Rlc3QgInJpc2N2X3pjbXBfdmFsaWRfc3RhY2tfYWRqX2J5dGVzX3AgKElOVFZBTCAob3ApLCAx MykiKSkpCj4rCj4gOzsgT25seSB1c2UgYnJhbmNoLW9uLWJpdCBzZXF1ZW5jZXMgd2hlbiB0aGUg bWFzayBpcyBub3QgYW4gQU5ESSBpbW1lZGlhdGUuCj4gKGRlZmluZV9wcmVkaWNhdGUgImJyYW5j aF9vbl9iaXRfb3BlcmFuZCIKPiAoYW5kIChtYXRjaF9jb2RlICJjb25zdF9pbnQiKQo+ZGlmZiAt LWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YtcHJvdG9zLmggYi9nY2MvY29uZmlnL3Jpc2N2 L3Jpc2N2LXByb3Rvcy5oCj5pbmRleCA3NzYwYTljYWM4ZC4uZjBlYTE0ZjA1YmUgMTAwNjQ0Cj4t LS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5oCj4rKysgYi9nY2MvY29uZmlnL3Jp c2N2L3Jpc2N2LXByb3Rvcy5oCj5AQCAtNTYsNiArNTYsOCBAQCBleHRlcm4gYm9vbCByaXNjdl9z cGxpdF82NGJpdF9tb3ZlX3AgKHJ0eCwgcnR4KTsKPiBleHRlcm4gdm9pZCByaXNjdl9zcGxpdF9k b3VibGV3b3JkX21vdmUgKHJ0eCwgcnR4KTsKPiBleHRlcm4gY29uc3QgY2hhciAqcmlzY3Zfb3V0 cHV0X21vdmUgKHJ0eCwgcnR4KTsKPiBleHRlcm4gY29uc3QgY2hhciAqcmlzY3Zfb3V0cHV0X3Jl dHVybiAoKTsKPitleHRlcm4gYm9vbCByaXNjdl96Y21wX3ZhbGlkX3Nsb3Rfb2Zmc2V0X3AgKEhP U1RfV0lERV9JTlQsIGludCk7Cj4rZXh0ZXJuIGJvb2wgcmlzY3ZfemNtcF92YWxpZF9zdGFja19h ZGpfYnl0ZXNfcChIT1NUX1dJREVfSU5ULCBpbnQpOwo+ICNpZmRlZiBSVFhfQ09ERQo+IGV4dGVy biB2b2lkIHJpc2N2X2V4cGFuZF9pbnRfc2NjIChydHgsIGVudW0gcnR4X2NvZGUsIHJ0eCwgcnR4 KTsKPmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmNjIGIvZ2NjL2NvbmZpZy9y aXNjdi9yaXNjdi5jYwo+aW5kZXggNjI5ZTVlNDVjYWMuLmEwYTJkYjFmNTk0IDEwMDY0NAo+LS0t IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jYwo+KysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNj di5jYwo+QEAgLTExNyw2ICsxMTcsMTQgQEAgc3RydWN0IEdUWSgoKSkgcmlzY3ZfZnJhbWVfaW5m byB7Cj4gLyogSG93IG11Y2ggdGhlIEdQUiBzYXZlL3Jlc3RvcmUgcm91dGluZXMgYWRqdXN0IHNw IChvciAwIGlmIHVudXNlZCkuICovCj4gdW5zaWduZWQgc2F2ZV9saWJjYWxsX2FkanVzdG1lbnQ7 Cj4rIC8qIHRoZSBtaW5pbXVtIG51bWJlciBvZiBieXRlcywgaW4gbXVsdGlwbGVzIG9mIDE2LWJ5 dGUgYWRkcmVzcyBpbmNyZW1lbnRzLAo+KyByZXF1aXJlZCB0byBjb3ZlciB0aGUgcmVnaXN0ZXJz IGluIGEgbXVsdGkgcHVzaCAmIHBvcC4gKi8KPisgdW5zaWduZWQgbXVsdGlfcHVzaF9hZGpfYmFz ZTsKPisKPisgLyogdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsIDE2LWJ5dGUgYWRkcmVzcyBpbmNy ZW1lbnRzIGFsbG9jYXRlZCBmb3IgdGhlIHN0YWNrIGZyYW1lCj4rIGluIGEgbXVsdGkgcHVzaCAm IHBvcC4gKi8KPisgdW5zaWduZWQgbXVsdGlfcHVzaF9hZGpfYWRkaTsKPisKPiAvKiBPZmZzZXRz IG9mIGZpeGVkLXBvaW50IGFuZCBmbG9hdGluZy1wb2ludCBzYXZlIGFyZWFzIGZyb20gZnJhbWUg Ym90dG9tICovCj4gcG9seV9pbnQ2NCBncF9zcF9vZmZzZXQ7Cj4gcG9seV9pbnQ2NCBmcF9zcF9v ZmZzZXQ7Cj5AQCAtNDEzLDYgKzQyMSwyMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJpc2N2X3R1 bmVfaW5mbyByaXNjdl90dW5lX2luZm9fdGFibGVbXSA9IHsKPiAjaW5jbHVkZSAicmlzY3YtY29y ZXMuZGVmIgo+IH07Cj4rdHlwZWRlZiBlbnVtCj4rewo+KyBTSV9JRFggPSAwLAo+KyBESV9JRFgs Cj4rIFpDTVBfTU9ERV9OVU0gPSBESV9JRFgKPit9IG1vZGVfaWR4Owo+Kwo+K3R5cGVkZWYgZW51 bQo+K3sKPisgUFVTSF9JRFggPSAwLAo+KyBQT1BfSURYLAo+KyBQT1BSRVRfSURYLAo+KyBaQ01Q X09QX05VTSA9IFBPUFJFVF9JRFgKPit9IG9wX2lkeDsKPisKPiB2b2lkIHJpc2N2X2ZyYW1lX2lu Zm86OnJlc2V0KHZvaWQpCj4gewo+IHRvdGFsX3NpemUgPSAwOwo+QEAgLTQ4NDQsNiArNDg2Nywz NyBAQCByaXNjdl9zYXZlX3JlZ19wICh1bnNpZ25lZCBpbnQgcmVnbm8pCj4gcmV0dXJuIGZhbHNl Owo+IH0KPisvKiBSZXR1cm4gVFJVRSBpZiBaY21wIHB1c2ggYW5kIHBvcCBpbnNucyBzaG91bGQg YmUKPisgYXZvaWRlZC4gRkFMU0Ugb3RoZXJ3aXNlLgo+KyBPbmx5IHVzZSBtdWx0aSBwdXNoICYg cG9wIGlmIGFsbCBHUFJzIG1hc2tlZCBjYW4gYmUgY292ZXJlZCwKPisgYW5kIHN0YWNrIGFjY2Vz cyBpcyBTUCBiYXNlZCwKPisgYW5kIEdQUnMgYXJlIGF0IHRvcCBvZiB0aGUgc3RhY2sgZnJhbWUs Cj4rIGFuZCBubyBjb25mbGljdHMgaW4gc3RhY2sgYWxsb2NhdGlvbiB3aXRoIG90aGVyIGZlYXR1 cmVzICovCj4rc3RhdGljIGJvb2wKPityaXNjdl9hdm9pZF9tdWx0aV9wdXNoKGNvbnN0IHN0cnVj dCByaXNjdl9mcmFtZV9pbmZvICpmcmFtZSkKPit7Cj4rIGlmICghVEFSR0VUX1pDTVAKPisgfHwg Y3J0bC0+Y2FsbHNfZWhfcmV0dXJuCj4rIHx8IGZyYW1lX3BvaW50ZXJfbmVlZGVkCj4rIHx8IGNm dW4tPm1hY2hpbmUtPmludGVycnVwdF9oYW5kbGVyX3AKPisgfHwgY2Z1bi0+bWFjaGluZS0+dmFy YXJnc19zaXplICE9IDAKPisgfHwgY3J0bC0+YXJncy5wcmV0ZW5kX2FyZ3Nfc2l6ZSAhPSAwCj4r IHx8IChmcmFtZS0+bWFzayAmIH4gTVVMVElfUFVTSF9HUFJfTUFTSykpCj4rIHJldHVybiB0cnVl Owo+Kwo+KyByZXR1cm4gZmFsc2U7Cj4rfQo+Kwo+Ky8qIERldGVybWluZSB3aGV0aGVyIHRvIHVz ZSBtdWx0aSBwdXNoIGluc24uICovCj4rc3RhdGljIGJvb2wKPityaXNjdl91c2VfbXVsdGlfcHVz aChjb25zdCBzdHJ1Y3QgcmlzY3ZfZnJhbWVfaW5mbyAqZnJhbWUpCj4rewo+KyBpZiAocmlzY3Zf YXZvaWRfbXVsdGlfcHVzaCAoZnJhbWUpKQo+KyByZXR1cm4gZmFsc2U7Cj4rCj4rIHJldHVybiAo ZnJhbWUtPm11bHRpX3B1c2hfYWRqX2Jhc2UgIT0gMCk7Cj4rfQo+Kwo+IC8qIFJldHVybiBUUlVF IGlmIGEgbGliY2FsbCB0byBzYXZlL3Jlc3RvcmUgR1BScyBzaG91bGQgYmUKPiBhdm9pZGVkLiBG QUxTRSBvdGhlcndpc2UuICovCj4gc3RhdGljIGJvb2wKPkBAIC00ODgxLDYgKzQ5MzUsNTEgQEAg cmlzY3Zfc2F2ZV9saWJjYWxsX2NvdW50ICh1bnNpZ25lZCBtYXNrKQo+IGFib3J0ICgpOwo+IH0K PisvKiBjYWxjdWxhdGUgbnVtYmVyIG9mIHMgcmVncyBpbiBtdWx0aSBwdXNoIGFuZCBwb3AuCj4r IE5vdGUgdGhhdCB7czAtczEwfSBpcyBub3QgdmFsaWQgaW4gWmNtcCwgdXNlIHtzMC1zMTF9IGlu c3RlYWQuICovCj4rc3RhdGljIHVuc2lnbmVkCj4rcmlzY3ZfbXVsdGlfcHVzaF9zcmVnc19jb3Vu dCAodW5zaWduZWQgbWFzaykKPit7Cj4rIHVuc2lnbmVkIG51bSA9IHJpc2N2X3NhdmVfbGliY2Fs bF9jb3VudCAobWFzayk7Cj4rIHJldHVybiAobnVtID09IFpDTVBfSU5WQUxJRF9TMFMxMF9TUkVH U19DT1VOVFMpCj4rID8gWkNNUF9TMFMxMV9TUkVHU19DT1VOVFMKPisgOiBudW07Cj4rfQo+Kwo+ Ky8qIGNhbGN1bGF0ZSBudW1iZXIgb2YgcmVncyhyYSwgczAtc3gpIGluIG11bHRpIHB1c2ggYW5k IHBvcC4gKi8KPitzdGF0aWMgdW5zaWduZWQKPityaXNjdl9tdWx0aV9wdXNoX3JlZ3NfY291bnQg KHVuc2lnbmVkIG1hc2spCj4rewo+KyAvKiAxIGlzIGZvciByYSAqLwo+KyByZXR1cm4gcmlzY3Zf bXVsdGlfcHVzaF9zcmVnc19jb3VudCAobWFzaykgKyAxOwo+K30KPisKPisvKiBIYW5kbGUgMTYg Ynl0ZXMgYWxpZ24gZm9yIHBvbHlfaW50LiAqLwo+K3N0YXRpYyBwb2x5X2ludDY0Cj4rcmlzY3Zf MTZieXRlc19hbGlnbiAocG9seV9pbnQ2NCB2YWx1ZSkKPit7Cj4rIHJldHVybiBhbGlnbmVkX3Vw cGVyX2JvdW5kICh2YWx1ZSwgMTYpOwo+K30KPisKPitzdGF0aWMgSE9TVF9XSURFX0lOVAo+K3Jp c2N2XzE2Ynl0ZXNfYWxpZ24gKEhPU1RfV0lERV9JTlQgdmFsdWUpCj4rewo+KyByZXR1cm4gUk9V TkRfVVAodmFsdWUsIDE2KTsKPit9Cj4rCj4rLyogSGFuZGxlIHN0YWNrIGFsaWduIGZvciBwb2x5 X2ludC4gKi8KPitzdGF0aWMgcG9seV9pbnQ2NAo+K3Jpc2N2X3N0YWNrX2FsaWduIChwb2x5X2lu dDY0IHZhbHVlKQo+K3sKPisgcmV0dXJuIGFsaWduZWRfdXBwZXJfYm91bmQgKHZhbHVlLCBQUkVG RVJSRURfU1RBQ0tfQk9VTkRBUlkgLyA4KTsKPit9Cj4rCj4rc3RhdGljIEhPU1RfV0lERV9JTlQK PityaXNjdl9zdGFja19hbGlnbiAoSE9TVF9XSURFX0lOVCB2YWx1ZSkKPit7Cj4rIHJldHVybiBS SVNDVl9TVEFDS19BTElHTiAodmFsdWUpOwo+K30KPisKPiAvKiBQb3B1bGF0ZSB0aGUgY3VycmVu dCBmdW5jdGlvbidzIHJpc2N2X2ZyYW1lX2luZm8gc3RydWN0dXJlLgo+IFJJU0MtViBzdGFjayBm cmFtZXMgZ3Jvd24gZG93bndhcmQuIEhpZ2ggYWRkcmVzc2VzIGFyZSBhdCB0aGUgdG9wLgo+QEAg LTQ5MDYsNyArNTAwNSw3IEBAIHJpc2N2X3NhdmVfbGliY2FsbF9jb3VudCAodW5zaWduZWQgbWFz aykKPiB8IEdQUiBzYXZlIGFyZWEgfCArIFVOSVRTX1BFUl9XT1JECj4gfCB8Cj4gKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDwtLSBzdGFja19wb2ludGVyX3J0eCArIGZwX3NwX29m ZnNldAo+LSB8IHwgKyBVTklUU19QRVJfSFdWQUxVRQo+KyB8IHwgKyBVTklUU19QRVJfRlBfUkVH Cj4gfCBGUFIgc2F2ZSBhcmVhIHwKPiB8IHwKPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsgPC0tIGZyYW1lX3BvaW50ZXJfcnR4ICh2aXJ0dWFsKQo+QEAgLTQ5MjUsMTkgKzUwMjQs NiBAQCByaXNjdl9zYXZlX2xpYmNhbGxfY291bnQgKHVuc2lnbmVkIG1hc2spCj4gc3RhdGljIEhP U1RfV0lERV9JTlQgcmlzY3ZfZmlyc3Rfc3RhY2tfc3RlcCAoc3RydWN0IHJpc2N2X2ZyYW1lX2lu Zm8gKmZyYW1lLCBwb2x5X2ludDY0IHJlbWFpbmluZ19zaXplKTsKPi0vKiBIYW5kbGUgc3RhY2sg YWxpZ24gZm9yIHBvbHlfaW50LiAqLwo+LXN0YXRpYyBwb2x5X2ludDY0Cj4tcmlzY3Zfc3RhY2tf YWxpZ24gKHBvbHlfaW50NjQgdmFsdWUpCj4tewo+LSByZXR1cm4gYWxpZ25lZF91cHBlcl9ib3Vu ZCAodmFsdWUsIFBSRUZFUlJFRF9TVEFDS19CT1VOREFSWSAvIDgpOwo+LX0KPi0KPi1zdGF0aWMg SE9TVF9XSURFX0lOVAo+LXJpc2N2X3N0YWNrX2FsaWduIChIT1NUX1dJREVfSU5UIHZhbHVlKQo+ LXsKPi0gcmV0dXJuIFJJU0NWX1NUQUNLX0FMSUdOICh2YWx1ZSk7Cj4tfQo+LQo+IHN0YXRpYyB2 b2lkCj4gcmlzY3ZfY29tcHV0ZV9mcmFtZV9pbmZvICh2b2lkKQo+IHsKPkBAIC00OTg1LDggKzUw NzEsOSBAQCByaXNjdl9jb21wdXRlX2ZyYW1lX2luZm8gKHZvaWQpCj4gaWYgKGZyYW1lLT5tYXNr KQo+IHsKPiB4X3NhdmVfc2l6ZSA9IHJpc2N2X3N0YWNrX2FsaWduIChudW1feF9zYXZlZCAqIFVO SVRTX1BFUl9XT1JEKTsKPi0gdW5zaWduZWQgbnVtX3NhdmVfcmVzdG9yZSA9IDEgKyByaXNjdl9z YXZlX2xpYmNhbGxfY291bnQgKGZyYW1lLT5tYXNrKTsKPisgLyogMSBpcyBmb3IgcmEgKi8KPisg dW5zaWduZWQgbnVtX3NhdmVfcmVzdG9yZSA9IDEgKyByaXNjdl9zYXZlX2xpYmNhbGxfY291bnQg KGZyYW1lLT5tYXNrKTsKPiAvKiBPbmx5IHVzZSBzYXZlL3Jlc3RvcmUgcm91dGluZXMgaWYgdGhl eSBkb24ndCBhbHRlciB0aGUgc3RhY2sgc2l6ZS4gKi8KPiBpZiAocmlzY3Zfc3RhY2tfYWxpZ24g KG51bV9zYXZlX3Jlc3RvcmUgKiBVTklUU19QRVJfV09SRCkgPT0geF9zYXZlX3NpemUKPiAmJiAh cmlzY3ZfYXZvaWRfc2F2ZV9saWJjYWxsICgpKQo+QEAgLTQ5OTgsNiArNTA4NSwxNSBAQCByaXNj dl9jb21wdXRlX2ZyYW1lX2luZm8gKHZvaWQpCj4gZnJhbWUtPnNhdmVfbGliY2FsbF9hZGp1c3Rt ZW50ID0geF9zYXZlX3NpemU7Cj4gfQo+Kwo+KyBpZiAoIXJpc2N2X2F2b2lkX211bHRpX3B1c2gg KGZyYW1lKSkKPisgewo+KyAvKiBudW0ocmEsIHMwLXN4KSAqLwo+KyB1bnNpZ25lZCBudW1fbXVs dGlfcHVzaCA9Cj4rIHJpc2N2X211bHRpX3B1c2hfcmVnc19jb3VudCAoZnJhbWUtPm1hc2spOwo+ KyB4X3NhdmVfc2l6ZSA9IHJpc2N2X3N0YWNrX2FsaWduIChudW1fbXVsdGlfcHVzaCAqIFVOSVRT X1BFUl9XT1JEKTsKPisgZnJhbWUtPm11bHRpX3B1c2hfYWRqX2Jhc2UgPSByaXNjdl8xNmJ5dGVz X2FsaWduICh4X3NhdmVfc2l6ZSk7Cj4rIH0KPiB9Cj4gLyogQXQgdGhlIGJvdHRvbSBvZiB0aGUg ZnJhbWUgYXJlIGFueSBvdXRnb2luZyBzdGFjayBhcmd1bWVudHMuICovCj5AQCAtNTAxMiw3ICs1 MTA4LDE1IEBAIHJpc2N2X2NvbXB1dGVfZnJhbWVfaW5mbyAodm9pZCkKPiBmcmFtZS0+ZnBfc3Bf b2Zmc2V0ID0gb2Zmc2V0IC0gVU5JVFNfUEVSX0ZQX1JFRzsKPiAvKiBOZXh0IGFyZSB0aGUgY2Fs bGVlLXNhdmVkIEdQUnMuICovCj4gaWYgKGZyYW1lLT5tYXNrKQo+LSBvZmZzZXQgKz0geF9zYXZl X3NpemU7Cj4rIHsKPisgb2Zmc2V0ICs9IHhfc2F2ZV9zaXplOwo+KyAvKiBhbGlnbiB0byAxNiBi eXRlcyBhbmQgYWRkIHBhZGRpbmdzIHRvIEdQUiBwYXJ0IHRvIGhvbm9yCj4rIGJvdGggc3RhY2sg YWxpZ25tZW50IGFuZCB6Y21wIHB1cy9wb3Agc2l6ZSBhbGlnbm1lbnQuICovCj4rIGlmIChyaXNj dl91c2VfbXVsdGlfcHVzaCAoZnJhbWUpCj4rICYmIGtub3duX2x0KG9mZnNldCwKPisgZnJhbWUt Pm11bHRpX3B1c2hfYWRqX2Jhc2UgKyBaQ01QX1NQX0lOQ19TVEVQICogWkNNUF9NQVhfU1BJTU0p KQo+KyBvZmZzZXQgPSByaXNjdl8xNmJ5dGVzX2FsaWduIChvZmZzZXQpOwo+KyB9Cj4gZnJhbWUt PmdwX3NwX29mZnNldCA9IG9mZnNldCAtIFVOSVRTX1BFUl9XT1JEOwo+IC8qIFRoZSBoYXJkIGZy YW1lIHBvaW50ZXIgcG9pbnRzIGFib3ZlIHRoZSBjYWxsZWUtc2F2ZWQgR1BScy4gKi8KPiBmcmFt ZS0+aGFyZF9mcmFtZV9wb2ludGVyX29mZnNldCA9IG9mZnNldDsKPkBAIC01MzU2LDYgKzU0NjAs NDIgQEAgcmlzY3ZfYWRqdXN0X2xpYmNhbGxfY2ZpX3Byb2xvZ3VlICgpCj4gcmV0dXJuIGR3YXJm Owo+IH0KPitzdGF0aWMgcnR4Cj4rcmlzY3ZfYWRqdXN0X211bHRpX3B1c2hfY2ZpX3Byb2xvZ3Vl IChpbnQgc2F2ZWRfc2l6ZSkKPit7Cj4rIHJ0eCBkd2FyZiA9IE5VTExfUlRYOwo+KyBydHggYWRq dXN0X3NwX3J0eCwgcmVnLCBtZW0sIGluc247Cj4rIHVuc2lnbmVkIGludCBtYXNrID0gY2Z1bi0+ bWFjaGluZS0+ZnJhbWUubWFzazsKPisgaW50IG9mZnNldDsKPisgaW50IHNhdmVkX2NudCA9IDA7 Cj4rCj4rIGlmIChtYXNrICYgUzEwX01BU0spCj4rIG1hc2sgfD0gUzExX01BU0s7Cj4rCj4rIGZv ciAoaW50IHJlZ25vID0gR1BfUkVHX0xBU1Q7IHJlZ25vID49IEdQX1JFR19GSVJTVDsgcmVnbm8t LSkKPisgaWYgKEJJVFNFVF9QIChtYXNrICYgTVVMVElfUFVTSF9HUFJfTUFTSywgcmVnbm8gLSBH UF9SRUdfRklSU1QpKQo+KyB7Cj4rIC8qIFRoZSBzYXZlIG9yZGVyIGlzIHMxMS1zMCwgcmEKPisg ZnJvbSBoaWdoIHRvIGxvdyBhZGRyLiAqLwo+KyBvZmZzZXQgPSBzYXZlZF9zaXplIC0gVU5JVFNf UEVSX1dPUkQgKiAoKytzYXZlZF9jbnQpOwo+Kwo+KyByZWcgPSBnZW5fcnR4X1JFRyAoU0ltb2Rl LCByZWdubyk7Cj4rIG1lbSA9IGdlbl9mcmFtZV9tZW0gKFNJbW9kZSwgcGx1c19jb25zdGFudCAo UG1vZGUsCj4rIHN0YWNrX3BvaW50ZXJfcnR4LAo+KyBvZmZzZXQpKTsKPisKPisgaW5zbiA9IGdl bl9ydHhfU0VUIChtZW0sIHJlZyk7Cj4rIGR3YXJmID0gYWxsb2NfcmVnX25vdGUgKFJFR19DRkFf T0ZGU0VULCBpbnNuLCBkd2FyZik7Cj4rIH0KPisKPisgLyogRGVidWcgaW5mbyBmb3IgYWRqdXN0 IHNwLiAqLwo+KyBhZGp1c3Rfc3BfcnR4ID0gZ2VuX3J0eF9TRVQgKHN0YWNrX3BvaW50ZXJfcnR4 LAo+KyBwbHVzX2NvbnN0YW50KFBtb2RlLCBzdGFja19wb2ludGVyX3J0eCwgLXNhdmVkX3NpemUp KTsKPisgZHdhcmYgPSBhbGxvY19yZWdfbm90ZSAoUkVHX0NGQV9BREpVU1RfQ0ZBLCBhZGp1c3Rf c3BfcnR4LAo+KyBkd2FyZik7Cj4rIHJldHVybiBkd2FyZjsKPit9Cj4rCj4gc3RhdGljIHZvaWQK PiByaXNjdl9lbWl0X3N0YWNrX3RpZSAodm9pZCkKPiB7Cj5AQCAtNTM2NSw2ICs1NTA1LDE1MiBA QCByaXNjdl9lbWl0X3N0YWNrX3RpZSAodm9pZCkKPiBlbWl0X2luc24gKGdlbl9zdGFja190aWVk aSAoc3RhY2tfcG9pbnRlcl9ydHgsIGhhcmRfZnJhbWVfcG9pbnRlcl9ydHgpKTsKPiB9Cj4rc3Rh dGljIHJ0eAo+K2dldF9zbG90X29mZnNldF9ydHggKGludCBzbG90X2lkeCkKPit7Cj4rIEhPU1Rf V0lERV9JTlQgc2xvdF9vZmZzZXQgPSAtMSAqIChzbG90X2lkeCArIDEpICogR0VUX01PREVfU0la RSAod29yZF9tb2RlKTsKPisgcmV0dXJuIEdFTl9JTlQgKHNsb3Rfb2Zmc2V0KTsKPit9Cj4rCj4r Lyp6Y21wIG11bHRpIHB1c2ggYW5kIHBvcCBmdW5jdGlvbiBwdHIgYXJyYXkgKi8KPitjb25zdCBp bnNuX2dlbl9mbiBnZW5fcHVzaF9wb3AgW1pDTVBfT1BfTlVNICsgMV1bWkNNUF9NT0RFX05VTSAr IDFdW1pDTVBfTUFYX0dSUF9TTE9UU10gPQo+K3t7eyhpbnNuX2dlbl9mbjo6c3RvcmVkX2Z1bmNw dHIpIGdlbl9ncHJfbXVsdGlfcHVzaF91cF90b19yYV9zaSwKPisgKGluc25fZ2VuX2ZuOjpzdG9y ZWRfZnVuY3B0cikgZ2VuX2dwcl9tdWx0aV9wdXNoX3VwX3RvX3MwX3NpLAo+KyAoaW5zbl9nZW5f Zm46OnN0b3JlZF9mdW5jcHRyKSBnZW5fZ3ByX211bHRpX3B1c2hfdXBfdG9fczFfc2ksCj4rIChp bnNuX2dlbl9mbjo6c3RvcmVkX2Z1bmNwdHIpIGdlbl9ncHJfbXVsdGlfcHVzaF91cF90b19zMl9z aSwKPisgKGluc25fZ2VuX2ZuOjpzdG9yZWRfZnVuY3B0cikgZ2VuX2dwcl9tdWx0aV9wdXNoX3Vw X3RvX3MzX3NpLAo+KyAoaW5zbl9nZW5fZm46OnN0b3JlZF9mdW5jcHRyKSBnZW5fZ3ByX211bHRp X3B1c2hfdXBfdG9fczRfc2ksCj4rIChpbnNuX2dlbl9mbjo6c3RvcmVkX2Z1bmNwdHIpIGdlbl9n cHJfbXVsdGlfcHVzaF91cF90b19zNV9zaSwKPisgKGluc25fZ2VuX2ZuOjpzdG9yZWRfZnVuY3B0 cikgZ2VuX2dwcl9tdWx0aV9wdXNoX3VwX3RvX3M2X3NpLAo+KyAoaW5zbl9nZW5fZm46OnN0b3Jl ZF9mdW5jcHRyKSBnZW5fZ3ByX211bHRpX3B1c2hfdXBfdG9fczdfc2ksCj4rIChpbnNuX2dlbl9m bjo6c3RvcmVkX2Z1bmNwdHIpIGdlbl9ncHJfbXVsdGlfcHVzaF91cF90b19zOF9zaSwKPisgKGlu c25fZ2VuX2ZuOjpzdG9yZWRfZnVuY3B0cikgZ2VuX2dwcl9tdWx0aV9wdXNoX3VwX3RvX3M5X3Np LAo+KyBOVUxMLAo+KyAoaW5zbl9nZW5fZm46OnN0b3JlZF9mdW5jcHRyKSBnZW5fZ3ByX211bHRp X3B1c2hfdXBfdG9fczExX3NpfSwKPisgeyhpbnNuX2dlbl9mbjo6c3RvcmVkX2Z1bmNwdHIpIGdl bl9ncHJfbXVsdGlfcHVzaF91cF90b19yYV9kaSwKPisgKGluc25fZ2VuX2ZuOjpzdG9yZWRfZnVu Y3B0cikgZ2VuX2dwcl9tdWx0aV9wdXNoX3VwX3RvX3MwX2RpLAo+KyAoaW5zbl9nZW5fZm46OnN0 b3JlZF9mdW5jcHRyKSBnZW5fZ3ByX211bHRpX3B1c2hfdXBfdG9fczFfZGksCj4rIChpbnNuX2dl bl9mbjo6c3RvcmVkX2Z1bmNwdHIpIGdlbl9ncHJfbXVsdGlfcHVzaF91cF90b19zMl9kaSwKPisg KGluc25fZ2VuX2ZuOjpzdG9yZWRfZnVuY3B0cikgZ2VuX2dwcl9tdWx0aV9wdXNoX3VwX3RvX3Mz X2RpLAo+KyAoaW5zbl9nZW5fZm46OnN0b3JlZF9mdW5jcHRyKSBnZW5fZ3ByX211bHRpX3B1c2hf dXBfdG9fczRfZGksCj4rIChpbnNuX2dlbl9mbjo6c3RvcmVkX2Z1bmNwdHIpIGdlbl9ncHJfbXVs dGlfcHVzaF91cF90b19zNV9kaSwKPisgKGluc25fZ2VuX2ZuOjpzdG9yZWRfZnVuY3B0cikgZ2Vu X2dwcl9tdWx0aV9wdXNoX3VwX3RvX3M2X2RpLAo+KyAoaW5zbl9nZW5fZm46OnN0b3JlZF9mdW5j cHRyKSBnZW5fZ3ByX211bHRpX3B1c2hfdXBfdG9fczdfZGksCj4rIChpbnNuX2dlbl9mbjo6c3Rv cmVkX2Z1bmNwdHIpIGdlbl9ncHJfbXVsdGlfcHVzaF91cF90b19zOF9kaSwKPisgKGluc25fZ2Vu X2ZuOjpzdG9yZWRfZnVuY3B0cikgZ2VuX2dwcl9tdWx0aV9wdXNoX3VwX3RvX3M5X2RpLAo+KyBO VUxMLAo+KyAoaW5zbl9nZW5fZm46OnN0b3JlZF9mdW5jcHRyKSBnZW5fZ3ByX211bHRpX3B1c2hf dXBfdG9fczExX2RpfX0sCj4rIHt7KGluc25fZ2VuX2ZuOjpzdG9yZWRfZnVuY3B0cikgZ2VuX2dw cl9tdWx0aV9wb3BfdXBfdG9fcmFfc2ksCj4rIChpbnNuX2dlbl9mbjo6c3RvcmVkX2Z1bmNwdHIp IGdlbl9ncHJfbXVsdGlfcG9wX3VwX3RvX3MwX3NpLAo+KyAoaW5zbl9nZW5fZm46OnN0b3JlZF9m dW5jcHRyKSBnZW5fZ3ByX211bHRpX3BvcF91cF90b19zMV9zaSwKPisgKGluc25fZ2VuX2ZuOjpz dG9yZWRfZnVuY3B0cikgZ2VuX2dwcl9tdWx0aV9wb3BfdXBfdG9fczJfc2ksCj4rIChpbnNuX2dl bl9mbjo6c3RvcmVkX2Z1bmNwdHIpIGdlbl9ncHJfbXVsdGlfcG9wX3VwX3RvX3MzX3NpLAo+KyAo aW5zbl9nZW5fZm46OnN0b3JlZF9mdW5jcHRyKSBnZW5fZ3ByX211bHRpX3BvcF91cF90b19zNF9z aSwKPisgKGluc25fZ2VuX2ZuOjpzdG9yZWRfZnVuY3B0cikgZ2VuX2dwcl9tdWx0aV9wb3BfdXBf dG9fczVfc2ksCj4rIChpbnNuX2dlbl9mbjo6c3RvcmVkX2Z1bmNwdHIpIGdlbl9ncHJfbXVsdGlf cG9wX3VwX3RvX3M2X3NpLAo+KyAoaW5zbl9nZW5fZm46OnN0b3JlZF9mdW5jcHRyKSBnZW5fZ3By X211bHRpX3BvcF91cF90b19zN19zaSwKPisgKGluc25fZ2VuX2ZuOjpzdG9yZWRfZnVuY3B0cikg Z2VuX2dwcl9tdWx0aV9wb3BfdXBfdG9fczhfc2ksCj4rIChpbnNuX2dlbl9mbjo6c3RvcmVkX2Z1 bmNwdHIpIGdlbl9ncHJfbXVsdGlfcG9wX3VwX3RvX3M5X3NpLAo+KyBOVUxMLAo+KyAoaW5zbl9n ZW5fZm46OnN0b3JlZF9mdW5jcHRyKSBnZW5fZ3ByX211bHRpX3BvcF91cF90b19zMTFfc2l9LAo+ KyB7KGluc25fZ2VuX2ZuOjpzdG9yZWRfZnVuY3B0cikgZ2VuX2dwcl9tdWx0aV9wb3BfdXBfdG9f cmFfZGksCj4rIChpbnNuX2dlbl9mbjo6c3RvcmVkX2Z1bmNwdHIpIGdlbl9ncHJfbXVsdGlfcG9w X3VwX3RvX3MwX2RpLAo+KyAoaW5zbl9nZW5fZm46OnN0b3JlZF9mdW5jcHRyKSBnZW5fZ3ByX211 bHRpX3BvcF91cF90b19zMV9kaSwKPisgKGluc25fZ2VuX2ZuOjpzdG9yZWRfZnVuY3B0cikgZ2Vu X2dwcl9tdWx0aV9wb3BfdXBfdG9fczJfZGksCj4rIChpbnNuX2dlbl9mbjo6c3RvcmVkX2Z1bmNw dHIpIGdlbl9ncHJfbXVsdGlfcG9wX3VwX3RvX3MzX2RpLAo+KyAoaW5zbl9nZW5fZm46OnN0b3Jl ZF9mdW5jcHRyKSBnZW5fZ3ByX211bHRpX3BvcF91cF90b19zNF9kaSwKPisgKGluc25fZ2VuX2Zu OjpzdG9yZWRfZnVuY3B0cikgZ2VuX2dwcl9tdWx0aV9wb3BfdXBfdG9fczVfZGksCj4rIChpbnNu X2dlbl9mbjo6c3RvcmVkX2Z1bmNwdHIpIGdlbl9ncHJfbXVsdGlfcG9wX3VwX3RvX3M2X2RpLAo+ KyAoaW5zbl9nZW5fZm46OnN0b3JlZF9mdW5jcHRyKSBnZW5fZ3ByX211bHRpX3BvcF91cF90b19z N19kaSwKPisgKGluc25fZ2VuX2ZuOjpzdG9yZWRfZnVuY3B0cikgZ2VuX2dwcl9tdWx0aV9wb3Bf dXBfdG9fczhfZGksCj4rIChpbnNuX2dlbl9mbjo6c3RvcmVkX2Z1bmNwdHIpIGdlbl9ncHJfbXVs dGlfcG9wX3VwX3RvX3M5X2RpLAo+KyBOVUxMLAo+KyAoaW5zbl9nZW5fZm46OnN0b3JlZF9mdW5j cHRyKSBnZW5fZ3ByX211bHRpX3BvcF91cF90b19zMTFfZGl9fSwKPisge3soaW5zbl9nZW5fZm46 OnN0b3JlZF9mdW5jcHRyKSBnZW5fZ3ByX211bHRpX3BvcHJldF91cF90b19yYV9zaSwKPisgKGlu c25fZ2VuX2ZuOjpzdG9yZWRfZnVuY3B0cikgZ2VuX2dwcl9tdWx0aV9wb3ByZXRfdXBfdG9fczBf c2ksCj4rIChpbnNuX2dlbl9mbjo6c3RvcmVkX2Z1bmNwdHIpIGdlbl9ncHJfbXVsdGlfcG9wcmV0 X3VwX3RvX3MxX3NpLAo+KyAoaW5zbl9nZW5fZm46OnN0b3JlZF9mdW5jcHRyKSBnZW5fZ3ByX211 bHRpX3BvcHJldF91cF90b19zMl9zaSwKPisgKGluc25fZ2VuX2ZuOjpzdG9yZWRfZnVuY3B0cikg Z2VuX2dwcl9tdWx0aV9wb3ByZXRfdXBfdG9fczNfc2ksCj4rIChpbnNuX2dlbl9mbjo6c3RvcmVk X2Z1bmNwdHIpIGdlbl9ncHJfbXVsdGlfcG9wcmV0X3VwX3RvX3M0X3NpLAo+KyAoaW5zbl9nZW5f Zm46OnN0b3JlZF9mdW5jcHRyKSBnZW5fZ3ByX211bHRpX3BvcHJldF91cF90b19zNV9zaSwKPisg KGluc25fZ2VuX2ZuOjpzdG9yZWRfZnVuY3B0cikgZ2VuX2dwcl9tdWx0aV9wb3ByZXRfdXBfdG9f czZfc2ksCj4rIChpbnNuX2dlbl9mbjo6c3RvcmVkX2Z1bmNwdHIpIGdlbl9ncHJfbXVsdGlfcG9w cmV0X3VwX3RvX3M3X3NpLAo+KyAoaW5zbl9nZW5fZm46OnN0b3JlZF9mdW5jcHRyKSBnZW5fZ3By X211bHRpX3BvcHJldF91cF90b19zOF9zaSwKPisgKGluc25fZ2VuX2ZuOjpzdG9yZWRfZnVuY3B0 cikgZ2VuX2dwcl9tdWx0aV9wb3ByZXRfdXBfdG9fczlfc2ksCj4rIE5VTEwsCj4rIChpbnNuX2dl bl9mbjo6c3RvcmVkX2Z1bmNwdHIpIGdlbl9ncHJfbXVsdGlfcG9wcmV0X3VwX3RvX3MxMV9zaX0s Cj4rIHsoaW5zbl9nZW5fZm46OnN0b3JlZF9mdW5jcHRyKSBnZW5fZ3ByX211bHRpX3BvcHJldF91 cF90b19yYV9kaSwKPisgKGluc25fZ2VuX2ZuOjpzdG9yZWRfZnVuY3B0cikgZ2VuX2dwcl9tdWx0 aV9wb3ByZXRfdXBfdG9fczBfZGksCj4rIChpbnNuX2dlbl9mbjo6c3RvcmVkX2Z1bmNwdHIpIGdl bl9ncHJfbXVsdGlfcG9wcmV0X3VwX3RvX3MxX2RpLAo+KyAoaW5zbl9nZW5fZm46OnN0b3JlZF9m dW5jcHRyKSBnZW5fZ3ByX211bHRpX3BvcHJldF91cF90b19zMl9kaSwKPisgKGluc25fZ2VuX2Zu OjpzdG9yZWRfZnVuY3B0cikgZ2VuX2dwcl9tdWx0aV9wb3ByZXRfdXBfdG9fczNfZGksCj4rIChp bnNuX2dlbl9mbjo6c3RvcmVkX2Z1bmNwdHIpIGdlbl9ncHJfbXVsdGlfcG9wcmV0X3VwX3RvX3M0 X2RpLAo+KyAoaW5zbl9nZW5fZm46OnN0b3JlZF9mdW5jcHRyKSBnZW5fZ3ByX211bHRpX3BvcHJl dF91cF90b19zNV9kaSwKPisgKGluc25fZ2VuX2ZuOjpzdG9yZWRfZnVuY3B0cikgZ2VuX2dwcl9t dWx0aV9wb3ByZXRfdXBfdG9fczZfZGksCj4rIChpbnNuX2dlbl9mbjo6c3RvcmVkX2Z1bmNwdHIp IGdlbl9ncHJfbXVsdGlfcG9wcmV0X3VwX3RvX3M3X2RpLAo+KyAoaW5zbl9nZW5fZm46OnN0b3Jl ZF9mdW5jcHRyKSBnZW5fZ3ByX211bHRpX3BvcHJldF91cF90b19zOF9kaSwKPisgKGluc25fZ2Vu X2ZuOjpzdG9yZWRfZnVuY3B0cikgZ2VuX2dwcl9tdWx0aV9wb3ByZXRfdXBfdG9fczlfZGksCj4r IE5VTEwsCj4rIChpbnNuX2dlbl9mbjo6c3RvcmVkX2Z1bmNwdHIpIGdlbl9ncHJfbXVsdGlfcG9w cmV0X3VwX3RvX3MxMV9kaX19fTsKPisKPitzdGF0aWMgcnR4Cj4rcmlzY3ZfZ2VuX211bHRpX3B1 c2hfcG9wX2luc24gKG9wX2lkeCBvcCwgSE9TVF9XSURFX0lOVCBhZGpfc2l6ZSwgdW5zaWduZWQg aW50IHJlZ3NfbnVtKQo+K3sKPisgcnR4IHN0YWNrX2FkaiA9IEdFTl9JTlQgKGFkal9zaXplKTsK PisgcnR4IHNsb3RzW1pDTVBfTUFYX0dSUF9TTE9UU107Cj4rCj4rIGZvciAoaW50IHNsb3RfaWR4 ID0gMDsgc2xvdF9pZHggPCBaQ01QX01BWF9HUlBfU0xPVFM7IHNsb3RfaWR4KyspCj4rIHNsb3Rz W3Nsb3RfaWR4XSA9IGdldF9zbG90X29mZnNldF9ydHggKHNsb3RfaWR4KTsKPisKPisgc3dpdGNo IChyZWdzX251bSkKPisgewo+KyBjYXNlIDE6Cj4rIHJldHVybiAoZ2VuX3B1c2hfcG9wW29wXVtU QVJHRVRfNjRCSVRdW3JlZ3NfbnVtIC0gMV0pCj4rIChzdGFja19hZGosIHNsb3RzWzBdKTsKPisg Y2FzZSAyOgo+KyByZXR1cm4gKGdlbl9wdXNoX3BvcFtvcF1bVEFSR0VUXzY0QklUXVtyZWdzX251 bSAtIDFdKQo+KyAoc3RhY2tfYWRqLCBzbG90c1swXSwgc2xvdHNbMV0pOwo+KyBjYXNlIDM6Cj4r IHJldHVybiAoZ2VuX3B1c2hfcG9wW29wXVtUQVJHRVRfNjRCSVRdW3JlZ3NfbnVtIC0gMV0pCj4r IChzdGFja19hZGosIHNsb3RzWzBdLCBzbG90c1sxXSwgc2xvdHNbMl0pOwo+KyBjYXNlIDQ6Cj4r IHJldHVybiAoZ2VuX3B1c2hfcG9wW29wXVtUQVJHRVRfNjRCSVRdW3JlZ3NfbnVtIC0gMV0pCj4r IChzdGFja19hZGosIHNsb3RzWzBdLCBzbG90c1sxXSwgc2xvdHNbMl0sIHNsb3RzWzNdKTsKPisg Y2FzZSA1Ogo+KyByZXR1cm4gKGdlbl9wdXNoX3BvcFtvcF1bVEFSR0VUXzY0QklUXVtyZWdzX251 bSAtIDFdKQo+KyAoc3RhY2tfYWRqLCBzbG90c1swXSwgc2xvdHNbMV0sIHNsb3RzWzJdLCBzbG90 c1szXSwgc2xvdHNbNF0pOwo+KyBjYXNlIDY6Cj4rIHJldHVybiAoZ2VuX3B1c2hfcG9wW29wXVtU QVJHRVRfNjRCSVRdW3JlZ3NfbnVtIC0gMV0pCj4rIChzdGFja19hZGosIHNsb3RzWzBdLCBzbG90 c1sxXSwgc2xvdHNbMl0sIHNsb3RzWzNdLCBzbG90c1s0XSwgc2xvdHNbNV0pOwo+KyBjYXNlIDc6 Cj4rIHJldHVybiAoZ2VuX3B1c2hfcG9wW29wXVtUQVJHRVRfNjRCSVRdW3JlZ3NfbnVtIC0gMV0p Cj4rIChzdGFja19hZGosIHNsb3RzWzBdLCBzbG90c1sxXSwgc2xvdHNbMl0sIHNsb3RzWzNdLCBz bG90c1s0XSwgc2xvdHNbNV0sCj4rIHNsb3RzWzZdKTsKPisgY2FzZSA4Ogo+KyByZXR1cm4gKGdl bl9wdXNoX3BvcFtvcF1bVEFSR0VUXzY0QklUXVtyZWdzX251bSAtIDFdKQo+KyAoc3RhY2tfYWRq LCBzbG90c1swXSwgc2xvdHNbMV0sIHNsb3RzWzJdLCBzbG90c1szXSwgc2xvdHNbNF0sIHNsb3Rz WzVdLAo+KyBzbG90c1s2XSwgc2xvdHNbN10pOwo+KyBjYXNlIDk6Cj4rIHJldHVybiAoZ2VuX3B1 c2hfcG9wW29wXVtUQVJHRVRfNjRCSVRdW3JlZ3NfbnVtIC0gMV0pCj4rIChzdGFja19hZGosIHNs b3RzWzBdLCBzbG90c1sxXSwgc2xvdHNbMl0sIHNsb3RzWzNdLCBzbG90c1s0XSwgc2xvdHNbNV0s Cj4rIHNsb3RzWzZdLCBzbG90c1s3XSwgc2xvdHNbOF0pOwo+KyBjYXNlIDEwOgo+KyByZXR1cm4g KGdlbl9wdXNoX3BvcFtvcF1bVEFSR0VUXzY0QklUXVtyZWdzX251bSAtIDFdKQo+KyAoc3RhY2tf YWRqLCBzbG90c1swXSwgc2xvdHNbMV0sIHNsb3RzWzJdLCBzbG90c1szXSwgc2xvdHNbNF0sIHNs b3RzWzVdLAo+KyBzbG90c1s2XSwgc2xvdHNbN10sIHNsb3RzWzhdLCBzbG90c1s5XSk7Cj4rIGNh c2UgMTE6Cj4rIHJldHVybiAoZ2VuX3B1c2hfcG9wW29wXVtUQVJHRVRfNjRCSVRdW3JlZ3NfbnVt IC0gMV0pCj4rIChzdGFja19hZGosIHNsb3RzWzBdLCBzbG90c1sxXSwgc2xvdHNbMl0sIHNsb3Rz WzNdLCBzbG90c1s0XSwgc2xvdHNbNV0sCj4rIHNsb3RzWzZdLCBzbG90c1s3XSwgc2xvdHNbOF0s IHNsb3RzWzldLCBzbG90c1sxMF0pOwo+KyBjYXNlIDEzOgo+KyByZXR1cm4gKGdlbl9wdXNoX3Bv cFtvcF1bVEFSR0VUXzY0QklUXVtyZWdzX251bSAtIDFdKQo+KyAoc3RhY2tfYWRqLCBzbG90c1sw XSwgc2xvdHNbMV0sIHNsb3RzWzJdLCBzbG90c1szXSwgc2xvdHNbNF0sIHNsb3RzWzVdLAo+KyBz bG90c1s2XSwgc2xvdHNbN10sIHNsb3RzWzhdLCBzbG90c1s5XSwgc2xvdHNbMTBdLCBzbG90c1sx MV0sIHNsb3RzWzEyXSk7Cj4rIGRlZmF1bHQ6Cj4rIGdjY191bnJlYWNoYWJsZSAoKTsKPisgfQo+ K30KPisKPiAvKiBFeHBhbmQgdGhlICJwcm9sb2d1ZSIgcGF0dGVybi4gKi8KPiB2b2lkCj5AQCAt NTM3Myw3ICs1NjU5LDggQEAgcmlzY3ZfZXhwYW5kX3Byb2xvZ3VlICh2b2lkKQo+IHN0cnVjdCBy aXNjdl9mcmFtZV9pbmZvICpmcmFtZSA9ICZjZnVuLT5tYWNoaW5lLT5mcmFtZTsKPiBwb2x5X2lu dDY0IHJlbWFpbmluZ19zaXplID0gZnJhbWUtPnRvdGFsX3NpemU7Cj4gdW5zaWduZWQgbWFzayA9 IGZyYW1lLT5tYXNrOwo+LSBydHggaW5zbjsKPisgaW50IHNwaW1tLCBtdWx0aV9wdXNoX2FkZGl0 aW9uYWwsIHN0YWNrX2FkajsKPisgcnR4IGluc24sIGR3YXJmID0gTlVMTF9SVFg7Cj4gaWYgKGZs YWdfc3RhY2tfdXNhZ2VfaW5mbykKPiBjdXJyZW50X2Z1bmN0aW9uX3N0YXRpY19zdGFja19zaXpl ID0gY29uc3RhbnRfbG93ZXJfYm91bmQgKHJlbWFpbmluZ19zaXplKTsKPkBAIC01MzgxLDggKzU2 NjgsMzUgQEAgcmlzY3ZfZXhwYW5kX3Byb2xvZ3VlICh2b2lkKQo+IGlmIChjZnVuLT5tYWNoaW5l LT5uYWtlZF9wKQo+IHJldHVybjsKPisgLyogcHJlZmVyIG11dGktcHVzaCB0byBzYXZlLXJlc3Rv cmUgbGliY2FsbC4gKi8KPisgaWYgKHJpc2N2X3VzZV9tdWx0aV9wdXNoKGZyYW1lKSkKPisgewo+ KyByZW1haW5pbmdfc2l6ZSAtPSBmcmFtZS0+bXVsdGlfcHVzaF9hZGpfYmFzZTsKPisgaWYgKGtu b3duX2d0KHJlbWFpbmluZ19zaXplLCAyICogWkNNUF9TUF9JTkNfU1RFUCkpCj4rIHNwaW1tID0g MzsKPisgZWxzZSBpZiAoa25vd25fZ3QocmVtYWluaW5nX3NpemUsIFpDTVBfU1BfSU5DX1NURVAp KQo+KyBzcGltbSA9IDI7Cj4rIGVsc2UgaWYgKGtub3duX2d0KHJlbWFpbmluZ19zaXplLCAwKSkK Pisgc3BpbW0gPSAxOwo+KyBlbHNlCj4rIHNwaW1tID0gMDsKPisgbXVsdGlfcHVzaF9hZGRpdGlv bmFsID0gc3BpbW0gKiBaQ01QX1NQX0lOQ19TVEVQOwo+KyBmcmFtZS0+bXVsdGlfcHVzaF9hZGpf YWRkaSA9IG11bHRpX3B1c2hfYWRkaXRpb25hbDsKPisgcmVtYWluaW5nX3NpemUgLT0gbXVsdGlf cHVzaF9hZGRpdGlvbmFsOwo+Kwo+KyAvKiBlbWl0IG11bHRpIHB1c2ggaW5zbiAmIGR3YXJmIGFs b25nIHdpdGggaXQuICovCj4rIHN0YWNrX2FkaiA9IGZyYW1lLT5tdWx0aV9wdXNoX2Fkal9iYXNl ICsgbXVsdGlfcHVzaF9hZGRpdGlvbmFsOwo+KyBpbnNuID0gZW1pdF9pbnNuIChyaXNjdl9nZW5f bXVsdGlfcHVzaF9wb3BfaW5zbihQVVNIX0lEWCwKPisgLXN0YWNrX2FkaiwgcmlzY3ZfbXVsdGlf cHVzaF9yZWdzX2NvdW50KGZyYW1lLT5tYXNrKSkpOwo+KyBkd2FyZiA9IHJpc2N2X2FkanVzdF9t dWx0aV9wdXNoX2NmaV9wcm9sb2d1ZSAoc3RhY2tfYWRqKTsKPisgUlRYX0ZSQU1FX1JFTEFURURf UCAoaW5zbikgPSAxOwo+KyBSRUdfTk9URVMgKGluc24pID0gZHdhcmY7Cj4rCj4rIC8qIFRlbXBv cmFyaWx5IGZpYiB0aGF0IHdlIG5lZWQgbm90IHNhdmUgR1BScy4gKi8KPisgZnJhbWUtPm1hc2sg PSAwOwo+KyB9Cj4gLyogV2hlbiBvcHRpbWl6aW5nIGZvciBzaXplLCBjYWxsIGEgc3Vicm91dGlu ZSB0byBzYXZlIHRoZSByZWdpc3RlcnMuICovCj4tIGlmIChyaXNjdl91c2Vfc2F2ZV9saWJjYWxs IChmcmFtZSkpCj4rIGVsc2UgaWYgKHJpc2N2X3VzZV9zYXZlX2xpYmNhbGwgKGZyYW1lKSkKPiB7 Cj4gcnR4IGR3YXJmID0gTlVMTF9SVFg7Cj4gZHdhcmYgPSByaXNjdl9hZGp1c3RfbGliY2FsbF9j ZmlfcHJvbG9ndWUgKCk7Cj5AQCAtNTM5OCwxMyArNTcxMiwxNSBAQCByaXNjdl9leHBhbmRfcHJv bG9ndWUgKHZvaWQpCj4gLyogU2F2ZSB0aGUgcmVnaXN0ZXJzLiAqLwo+IGlmICgoZnJhbWUtPm1h c2sgfCBmcmFtZS0+Zm1hc2spICE9IDApCj4gewo+LSBIT1NUX1dJREVfSU5UIHN0ZXAxID0gcmlz Y3ZfZmlyc3Rfc3RhY2tfc3RlcCAoZnJhbWUsIHJlbWFpbmluZ19zaXplKTsKPi0KPi0gaW5zbiA9 IGdlbl9hZGQzX2luc24gKHN0YWNrX3BvaW50ZXJfcnR4LAo+LSBzdGFja19wb2ludGVyX3J0eCwK Pi0gR0VOX0lOVCAoLXN0ZXAxKSk7Cj4tIFJUWF9GUkFNRV9SRUxBVEVEX1AgKGVtaXRfaW5zbiAo aW5zbikpID0gMTsKPi0gcmVtYWluaW5nX3NpemUgLT0gc3RlcDE7Cj4rIGlmIChrbm93bl9ndCAo cmVtYWluaW5nX3NpemUsIGZyYW1lLT5mcmFtZV9wb2ludGVyX29mZnNldCkpCj4rIHsKPisgSE9T VF9XSURFX0lOVCBzdGVwMSA9IHJpc2N2X2ZpcnN0X3N0YWNrX3N0ZXAgKGZyYW1lLCByZW1haW5p bmdfc2l6ZSk7Cj4rIHJlbWFpbmluZ19zaXplIC09IHN0ZXAxOwo+KyBpbnNuID0gZ2VuX2FkZDNf aW5zbiAoc3RhY2tfcG9pbnRlcl9ydHgsCj4rIHN0YWNrX3BvaW50ZXJfcnR4LAo+KyBHRU5fSU5U ICgtc3RlcDEpKTsKPisgUlRYX0ZSQU1FX1JFTEFURURfUCAoZW1pdF9pbnNuIChpbnNuKSkgPSAx Owo+KyB9Cj4gcmlzY3ZfZm9yX2VhY2hfc2F2ZWRfcmVnIChyZW1haW5pbmdfc2l6ZSwgcmlzY3Zf c2F2ZV9yZWcsIGZhbHNlLCBmYWxzZSk7Cj4gfQo+QEAgLTU0NjEsNiArNTc3NywzMiBAQCByaXNj dl9leHBhbmRfcHJvbG9ndWUgKHZvaWQpCj4gfQo+IH0KPitzdGF0aWMgcnR4Cj4rcmlzY3ZfYWRq dXN0X211bHRpX3BvcF9jZmlfZXBpbG9ndWUgKGludCBzYXZlZF9zaXplKQo+K3sKPisgcnR4IGR3 YXJmID0gTlVMTF9SVFg7Cj4rIHJ0eCBhZGp1c3Rfc3BfcnR4LCByZWc7Cj4rIHVuc2lnbmVkIGlu dCBtYXNrID0gY2Z1bi0+bWFjaGluZS0+ZnJhbWUubWFzazsKPisKPisgaWYgKG1hc2sgJiBTMTBf TUFTSykKPisgbWFzayB8PSBTMTFfTUFTSzsKPisKPisgLyogRGVidWcgaW5mbyBmb3IgYWRqdXN0 IHNwLiAqLwo+KyBhZGp1c3Rfc3BfcnR4ID0gZ2VuX3J0eF9TRVQgKHN0YWNrX3BvaW50ZXJfcnR4 LAo+KyBwbHVzX2NvbnN0YW50KFBtb2RlLCBzdGFja19wb2ludGVyX3J0eCwgc2F2ZWRfc2l6ZSkp Owo+KyBkd2FyZiA9IGFsbG9jX3JlZ19ub3RlIChSRUdfQ0ZBX0FESlVTVF9DRkEsIGFkanVzdF9z cF9ydHgsCj4rIGR3YXJmKTsKPisKPisgZm9yIChpbnQgcmVnbm8gPSBHUF9SRUdfRklSU1Q7IHJl Z25vIDw9IEdQX1JFR19MQVNUOyByZWdubysrKQo+KyBpZiAoQklUU0VUX1AgKG1hc2ssIHJlZ25v IC0gR1BfUkVHX0ZJUlNUKSkKPisgewo+KyByZWcgPSBnZW5fcnR4X1JFRyAoU0ltb2RlLCByZWdu byk7Cj4rIGR3YXJmID0gYWxsb2NfcmVnX25vdGUgKFJFR19DRkFfUkVTVE9SRSwgcmVnLCBkd2Fy Zik7Cj4rIH0KPisKPisgcmV0dXJuIGR3YXJmOwo+K30KPisKPiBzdGF0aWMgcnR4Cj4gcmlzY3Zf YWRqdXN0X2xpYmNhbGxfY2ZpX2VwaWxvZ3VlICgpCj4gewo+QEAgLTU1MDAsMTAgKzU4NDIsMTgg QEAgcmlzY3ZfZXhwYW5kX2VwaWxvZ3VlIChpbnQgc3R5bGUpCj4gc3RydWN0IHJpc2N2X2ZyYW1l X2luZm8gKmZyYW1lID0gJmNmdW4tPm1hY2hpbmUtPmZyYW1lOwo+IHVuc2lnbmVkIG1hc2sgPSBm cmFtZS0+bWFzazsKPiBIT1NUX1dJREVfSU5UIHN0ZXAyID0gMDsKPi0gYm9vbCB1c2VfcmVzdG9y ZV9saWJjYWxsID0gKChzdHlsZSA9PSBOT1JNQUxfUkVUVVJOKQo+LSAmJiByaXNjdl91c2Vfc2F2 ZV9saWJjYWxsIChmcmFtZSkpOwo+LSB1bnNpZ25lZCBsaWJjYWxsX3NpemUgPSAodXNlX3Jlc3Rv cmVfbGliY2FsbAo+LSA/IGZyYW1lLT5zYXZlX2xpYmNhbGxfYWRqdXN0bWVudCA6IDApOwo+KyBi b29sIHVzZV9tdWx0aV9wb3Bfbm9ybWFsID0gKChzdHlsZSA9PSBOT1JNQUxfUkVUVVJOKQo+KyAm JiByaXNjdl91c2VfbXVsdGlfcHVzaCAoZnJhbWUpKTsKPisgYm9vbCB1c2VfbXVsdGlfcG9wX3Np YmNhbGwgPSAoKHN0eWxlID09IFNJQkNBTExfUkVUVVJOKQo+KyAmJiByaXNjdl91c2VfbXVsdGlf cHVzaCAoZnJhbWUpKTsKPisgYm9vbCB1c2VfbXVsdGlfcG9wID0gdXNlX211bHRpX3BvcF9ub3Jt YWwgfHwgdXNlX211bHRpX3BvcF9zaWJjYWxsOwo+Kwo+KyBib29sIHVzZV9yZXN0b3JlX2xpYmNh bGwgPSAhdXNlX211bHRpX3BvcCAmJiAoKHN0eWxlID09IE5PUk1BTF9SRVRVUk4pCj4rICYmIHJp c2N2X3VzZV9zYXZlX2xpYmNhbGwgKGZyYW1lKSk7Cj4rIHVuc2lnbmVkIGxpYmNhbGxfc2l6ZSA9 IHVzZV9yZXN0b3JlX2xpYmNhbGwgJiYgIXVzZV9tdWx0aV9wb3AgPwo+KyBmcmFtZS0+c2F2ZV9s aWJjYWxsX2FkanVzdG1lbnQgOiAwOwo+KyB1bnNpZ25lZCBtdWx0aXBvcF9zaXplID0gdXNlX211 bHRpX3BvcCA/Cj4rIGZyYW1lLT5tdWx0aV9wdXNoX2Fkal9iYXNlICsgZnJhbWUtPm11bHRpX3B1 c2hfYWRqX2FkZGkgOiAwOwo+IHJ0eCByYSA9IGdlbl9ydHhfUkVHIChQbW9kZSwgUkVUVVJOX0FE RFJfUkVHTlVNKTsKPiBydHggaW5zbjsKPkBAIC01NTc0LDE4ICs1OTI0LDI1IEBAIHJpc2N2X2V4 cGFuZF9lcGlsb2d1ZSAoaW50IHN0eWxlKQo+IFJFR19OT1RFUyAoaW5zbikgPSBkd2FyZjsKPiB9 Cj4tIGlmICh1c2VfcmVzdG9yZV9saWJjYWxsKQo+LSBmcmFtZS0+bWFzayA9IDA7IC8qIFRlbXBv cmFyaWx5IGZpYiBmb3IgR1BScy4gKi8KPisgaWYgKHVzZV9yZXN0b3JlX2xpYmNhbGwgfHwgdXNl X211bHRpX3BvcCkKPisgZnJhbWUtPm1hc2sgPSAwOyAvKiBUZW1wb3JhcmlseSBmaWIgdGhhdCB3 ZSBuZWVkIG5vdCBzYXZlIEdQUnMuICovCj4gLyogSWYgd2UgbmVlZCB0byByZXN0b3JlIHJlZ2lz dGVycywgZGVhbGxvY2F0ZSBhcyBtdWNoIHN0YWNrIGFzCj4gcG9zc2libGUgaW4gdGhlIHNlY29u ZCBzdGVwIHdpdGhvdXQgZ29pbmcgb3V0IG9mIHJhbmdlLiAqLwo+LSBpZiAoKGZyYW1lLT5tYXNr IHwgZnJhbWUtPmZtYXNrKSAhPSAwKQo+KyBpZiAodXNlX211bHRpX3BvcCkKPisgewo+KyBpZiAo ZnJhbWUtPmZtYXNrCj4rICYmIGtub3duX2d0IChmcmFtZS0+dG90YWxfc2l6ZSAtIG11bHRpcG9w X3NpemUsCj4rIGZyYW1lLT5mcmFtZV9wb2ludGVyX29mZnNldCkpCj4rIHN0ZXAyID0gcmlzY3Zf Zmlyc3Rfc3RhY2tfc3RlcCAoZnJhbWUsIGZyYW1lLT50b3RhbF9zaXplIC0gbXVsdGlwb3Bfc2l6 ZSk7Cj4rIH0KPisgZWxzZSBpZiAoKGZyYW1lLT5tYXNrIHwgZnJhbWUtPmZtYXNrKSAhPSAwKQo+ IHN0ZXAyID0gcmlzY3ZfZmlyc3Rfc3RhY2tfc3RlcCAoZnJhbWUsIGZyYW1lLT50b3RhbF9zaXpl IC0gbGliY2FsbF9zaXplKTsKPi0gaWYgKHVzZV9yZXN0b3JlX2xpYmNhbGwpCj4rIGlmICh1c2Vf cmVzdG9yZV9saWJjYWxsIHx8IHVzZV9tdWx0aV9wb3ApCj4gZnJhbWUtPm1hc2sgPSBtYXNrOyAv KiBVbmRvIHRoZSBhYm92ZSBmaWIuICovCj4tIHBvbHlfaW50NjQgc3RlcDEgPSBmcmFtZS0+dG90 YWxfc2l6ZSAtIHN0ZXAyIC0gbGliY2FsbF9zaXplOwo+KyBwb2x5X2ludDY0IHN0ZXAxID0gZnJh bWUtPnRvdGFsX3NpemUgLSBzdGVwMiAtIGxpYmNhbGxfc2l6ZSAtIG11bHRpcG9wX3NpemUgOwo+ IC8qIFNldCBUQVJHRVQgdG8gQkFTRSArIFNURVAxLiAqLwo+IGlmIChrbm93bl9ndCAoc3RlcDEs IDApKQo+QEAgLTU2MjAsNyArNTk3Nyw3IEBAIHJpc2N2X2V4cGFuZF9lcGlsb2d1ZSAoaW50IHN0 eWxlKQo+IGFkanVzdCkpOwo+IHJ0eCBkd2FyZiA9IE5VTExfUlRYOwo+IHJ0eCBjZmFfYWRqdXN0 X3J0eCA9IGdlbl9ydHhfUExVUyAoUG1vZGUsIHN0YWNrX3BvaW50ZXJfcnR4LAo+LSBHRU5fSU5U IChzdGVwMikpOwo+KyBHRU5fSU5UIChzdGVwMiArIGxpYmNhbGxfc2l6ZSArIG11bHRpcG9wX3Np emUpKTsKPiBkd2FyZiA9IGFsbG9jX3JlZ19ub3RlIChSRUdfQ0ZBX0RFRl9DRkEsIGNmYV9hZGp1 c3RfcnR4LCBkd2FyZik7Cj4gUlRYX0ZSQU1FX1JFTEFURURfUCAoaW5zbikgPSAxOwo+QEAgLTU2 MzUsMTUgKzU5OTIsMTUgQEAgcmlzY3ZfZXhwYW5kX2VwaWxvZ3VlIChpbnQgc3R5bGUpCj4gZXBp bG9ndWVfY2ZhX3NwX29mZnNldCA9IHN0ZXAyOwo+IH0KPi0gaWYgKHVzZV9yZXN0b3JlX2xpYmNh bGwpCj4rIGlmICh1c2VfcmVzdG9yZV9saWJjYWxsIHx8IHVzZV9tdWx0aV9wb3ApCj4gZnJhbWUt Pm1hc2sgPSAwOyAvKiBUZW1wb3JhcmlseSBmaWIgdGhhdCB3ZSBuZWVkIG5vdCBzYXZlIEdQUnMu ICovCj4gLyogUmVzdG9yZSB0aGUgcmVnaXN0ZXJzLiAqLwo+LSByaXNjdl9mb3JfZWFjaF9zYXZl ZF9yZWcgKGZyYW1lLT50b3RhbF9zaXplIC0gc3RlcDIgLSBsaWJjYWxsX3NpemUsCj4rIHJpc2N2 X2Zvcl9lYWNoX3NhdmVkX3JlZyAoZnJhbWUtPnRvdGFsX3NpemUgLSBzdGVwMiAtIGxpYmNhbGxf c2l6ZSAtIG11bHRpcG9wX3NpemUsCj4gcmlzY3ZfcmVzdG9yZV9yZWcsCj4gdHJ1ZSwgc3R5bGUg PT0gRVhDRVBUSU9OX1JFVFVSTik7Cj4tIGlmICh1c2VfcmVzdG9yZV9saWJjYWxsKQo+KyBpZiAo dXNlX3Jlc3RvcmVfbGliY2FsbCB8fCB1c2VfbXVsdGlfcG9wKQo+IGZyYW1lLT5tYXNrID0gbWFz azsgLyogVW5kbyB0aGUgYWJvdmUgZmliLiAqLwo+IGlmIChuZWVkX2JhcnJpZXJfcCkKPkBAIC01 NjU3LDE0ICs2MDE0LDMwIEBAIHJpc2N2X2V4cGFuZF9lcGlsb2d1ZSAoaW50IHN0eWxlKQo+IHJ0 eCBkd2FyZiA9IE5VTExfUlRYOwo+IHJ0eCBjZmFfYWRqdXN0X3J0eCA9IGdlbl9ydHhfUExVUyAo UG1vZGUsIHN0YWNrX3BvaW50ZXJfcnR4LAo+LSBjb25zdDBfcnR4KTsKPisgR0VOX0lOVCAobGli Y2FsbF9zaXplICsgbXVsdGlwb3Bfc2l6ZSkpOwo+IGR3YXJmID0gYWxsb2NfcmVnX25vdGUgKFJF R19DRkFfREVGX0NGQSwgY2ZhX2FkanVzdF9ydHgsIGR3YXJmKTsKPiBSVFhfRlJBTUVfUkVMQVRF RF9QIChpbnNuKSA9IDE7Cj4gUkVHX05PVEVTIChpbnNuKSA9IGR3YXJmOwo+IH0KPi0gaWYgKHVz ZV9yZXN0b3JlX2xpYmNhbGwpCj4rIGlmICh1c2VfbXVsdGlfcG9wKQo+KyB7Cj4rIHVuc2lnbmVk IHJlZ3NfY291bnQgPSByaXNjdl9tdWx0aV9wdXNoX3JlZ3NfY291bnQgKGZyYW1lLT5tYXNrKTsK PisgaWYgKHVzZV9tdWx0aV9wb3Bfbm9ybWFsKQo+KyBpbnNuID0gZW1pdF9qdW1wX2luc24gKAo+ KyByaXNjdl9nZW5fbXVsdGlfcHVzaF9wb3BfaW5zbiAoUE9QUkVUX0lEWCwgbXVsdGlwb3Bfc2l6 ZSwgcmVnc19jb3VudCkpOwo+KyBlbHNlCj4rIGluc249IGVtaXRfaW5zbiAoCj4rIHJpc2N2X2dl bl9tdWx0aV9wdXNoX3BvcF9pbnNuKFBPUF9JRFgsIG11bHRpcG9wX3NpemUsIHJlZ3NfY291bnQp KTsKPisKPisgcnR4IGR3YXJmID0gcmlzY3ZfYWRqdXN0X211bHRpX3BvcF9jZmlfZXBpbG9ndWUg KG11bHRpcG9wX3NpemUpOwo+KyBSVFhfRlJBTUVfUkVMQVRFRF9QIChpbnNuKSA9IDE7Cj4rIFJF R19OT1RFUyAoaW5zbikgPSBkd2FyZjsKPisgaWYgKHVzZV9tdWx0aV9wb3Bfbm9ybWFsKQo+KyBy ZXR1cm47Cj4rIH0KPisgZWxzZSBpZiAodXNlX3Jlc3RvcmVfbGliY2FsbCkKPiB7Cj4gcnR4IGR3 YXJmID0gcmlzY3ZfYWRqdXN0X2xpYmNhbGxfY2ZpX2VwaWxvZ3VlICgpOwo+IGluc24gPSBlbWl0 X2luc24gKGdlbl9ncHJfcmVzdG9yZSAoR0VOX0lOVCAocmlzY3Zfc2F2ZV9saWJjYWxsX2NvdW50 IChtYXNrKSkpKTsKPkBAIC02OTM3LDYgKzczMTAsMzAgQEAgcmlzY3ZfZ2VuX2dwcl9zYXZlX2lu c24gKHN0cnVjdCByaXNjdl9mcmFtZV9pbmZvICpmcmFtZSkKPiByZXR1cm4gZ2VuX3J0eF9QQVJB TExFTCAoVk9JRG1vZGUsIHZlYyk7Cj4gfQo+K3N0YXRpYyBIT1NUX1dJREVfSU5UIHpjbXBfYmFz ZV9hZGooaW50IHJlZ3NfbnVtKQo+K3sKPisgcmV0dXJuIHJpc2N2XzE2Ynl0ZXNfYWxpZ24gKChy ZWdzX251bSkgKiBHRVRfTU9ERV9TSVpFICh3b3JkX21vZGUpKTsKPit9Cj4rCj4rc3RhdGljIEhP U1RfV0lERV9JTlQgemNtcF9hZGRpdGlvbmFsX2FkaihIT1NUX1dJREVfSU5UIHRvdGFsLCBpbnQg cmVnc19udW0pCj4rewo+KyByZXR1cm4gdG90YWwgLSB6Y21wX2Jhc2VfYWRqKHJlZ3NfbnVtKTsK Pit9Cj4rCj4rYm9vbCByaXNjdl96Y21wX3ZhbGlkX3Nsb3Rfb2Zmc2V0X3AgKEhPU1RfV0lERV9J TlQgb2Zmc2V0LCBpbnQgc2xvdF9pZHgpCj4rewo+KyByZXR1cm4gb2Zmc2V0ID09IC0xICogKHNs b3RfaWR4ICsgMSkgKiBHRVRfTU9ERV9TSVpFICh3b3JkX21vZGUpOwo+K30KPisKPitib29sIHJp c2N2X3pjbXBfdmFsaWRfc3RhY2tfYWRqX2J5dGVzX3AgKEhPU1RfV0lERV9JTlQgdG90YWwsIGlu dCByZWdzX251bSkKPit7Cj4rIEhPU1RfV0lERV9JTlQgYWRkaXRpb2FubF9ieXRlcyA9IHpjbXBf YWRkaXRpb25hbF9hZGoodG90YWwsIHJlZ3NfbnVtKTsKPisgcmV0dXJuIGFkZGl0aW9hbmxfYnl0 ZXMgPT0gMAo+KyB8fCBhZGRpdGlvYW5sX2J5dGVzID09IDEgKiBaQ01QX1NQX0lOQ19TVEVQCj4r IHx8IGFkZGl0aW9hbmxfYnl0ZXMgPT0gMiAqIFpDTVBfU1BfSU5DX1NURVAKPisgfHwgYWRkaXRp b2FubF9ieXRlcyA9PSBaQ01QX01BWF9TUElNTSAqIFpDTVBfU1BfSU5DX1NURVA7Cj4rfQo+Kwo+ IC8qIFJldHVybiB0cnVlIGlmIGl0J3MgdmFsaWQgZ3ByX3NhdmUgcGF0dGVybi4gKi8KPiBib29s Cj5kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5oIGIvZ2NjL2NvbmZpZy9yaXNj di9yaXNjdi5oCj5pbmRleCAxMzAzOGEzOWU1Yy4uZmYyMTAwODMwMDQgMTAwNjQ0Cj4tLS0gYS9n Y2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmgKPisrKyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YuaAo+ QEAgLTQxMyw2ICs0MTMsMjkgQEAgQVNNX01JU0FfU1BFQwo+ICNkZWZpbmUgUklTQ1ZfQ0FMTF9B RERSRVNTX1RFTVAoTU9ERSkgXAo+IGdlbl9ydHhfUkVHIChNT0RFLCBSSVNDVl9DQUxMX0FERFJF U1NfVEVNUF9SRUdOVU0pCj4rI2RlZmluZSBSRVRVUk5fQUREUl9NQVNLICggMSA8PCBSRVRVUk5f QUREUl9SRUdOVU0pCj4rI2RlZmluZSBTMF9NQVNLICggMSA8PCBTMF9SRUdOVU0pCj4rI2RlZmlu ZSBTMV9NQVNLICggMSA8PCBTMV9SRUdOVU0pCj4rI2RlZmluZSBTMl9NQVNLICggMSA8PCBTMl9S RUdOVU0pCj4rI2RlZmluZSBTM19NQVNLICggMSA8PCBTM19SRUdOVU0pCj4rI2RlZmluZSBTNF9N QVNLICggMSA8PCBTNF9SRUdOVU0pCj4rI2RlZmluZSBTNV9NQVNLICggMSA8PCBTNV9SRUdOVU0p Cj4rI2RlZmluZSBTNl9NQVNLICggMSA8PCBTNl9SRUdOVU0pCj4rI2RlZmluZSBTN19NQVNLICgg MSA8PCBTN19SRUdOVU0pCj4rI2RlZmluZSBTOF9NQVNLICggMSA8PCBTOF9SRUdOVU0pCj4rI2Rl ZmluZSBTOV9NQVNLICggMSA8PCBTOV9SRUdOVU0pCj4rI2RlZmluZSBTMTBfTUFTSyAoIDEgPDwg UzEwX1JFR05VTSkKPisjZGVmaW5lIFMxMV9NQVNLICggMSA8PCBTMTFfUkVHTlVNKQo+Kwo+KyNk ZWZpbmUgTVVMVElfUFVTSF9HUFJfTUFTSyAoIFJFVFVSTl9BRERSX01BU0sgfCBTMF9NQVNLIHwg UzFfTUFTSyB8IFMyX01BU0sgfCBTM19NQVNLIFwKPisgfCBTNF9NQVNLIHwgUzVfTUFTSyB8IFM2 X01BU0sgfCBTN19NQVNLIFwKPisgfCBTOF9NQVNLIHwgUzlfTUFTSyB8IFMxMF9NQVNLIHwgUzEx X01BU0sgKQo+KyNkZWZpbmUgWkNNUF9NQVhfU1BJTU0gMwo+KyNkZWZpbmUgWkNNUF9TUF9JTkNf U1RFUCAxNgo+KyNkZWZpbmUgWkNNUF9JTlZBTElEX1MwUzEwX1NSRUdTX0NPVU5UUyAxMQo+KyNk ZWZpbmUgWkNNUF9TMFMxMV9TUkVHU19DT1VOVFMgMTIKPisjZGVmaW5lIFpDTVBfTUFYX0dSUF9T TE9UUyAxMwo+Kwo+ICNkZWZpbmUgTUNPVU5UX05BTUUgIl9tY291bnQiCj4gI2RlZmluZSBOT19Q Uk9GSUxFX0NPVU5URVJTIDEKPmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2Lm1k IGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5tZAo+aW5kZXggNzA2NWU2OGMwYjcuLjczZmM4Y2I2 OWJjIDEwMDY0NAo+LS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5tZAo+KysrIGIvZ2NjL2Nv bmZpZy9yaXNjdi9yaXNjdi5tZAo+QEAgLTExMyw2ICsxMTMsNyBAQAo+IChkZWZpbmVfY29uc3Rh bnRzCj4gWyhSRVRVUk5fQUREUl9SRUdOVU0gMSkKPisgKFNQX1JFR05VTSAyKQo+IChHUF9SRUdO VU0gMykKPiAoVFBfUkVHTlVNIDQpCj4gKFQwX1JFR05VTSA1KQo+QEAgLTMyMDUsMyArMzIwNiw0 IEBACj4gKGluY2x1ZGUgInNpZml2ZS03Lm1kIikKPiAoaW5jbHVkZSAidGhlYWQubWQiKQo+IChp bmNsdWRlICJ2ZWN0b3IubWQiKQo+KyhpbmNsdWRlICJ6Yy5tZCIpCj5kaWZmIC0tZ2l0IGEvZ2Nj L2NvbmZpZy9yaXNjdi96Yy5tZCBiL2djYy9jb25maWcvcmlzY3YvemMubWQKPm5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj5pbmRleCAwMDAwMDAwMDAwMC4uNmU2Yzg3OTgzZmIKPi0tLSAvZGV2L251bGwK PisrKyBiL2djYy9jb25maWcvcmlzY3YvemMubWQKPkBAIC0wLDAgKzEsMTA0MiBAQAo+Kzs7IE1h Y2hpbmUgZGVzY3JpcHRpb24gZm9yIFJJU0MtViBaYyBleHRlbnRpb24uCj4rOzsgQ29weXJpZ2h0 IChDKSAyMDExLTIwMjMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCj4rOzsgQ29udHJp YnV0ZWQgYnkgRmVpIEdhbyAoZ2FvZmVpQGVzd2luY29tcHV0aW5nLmNvbSkuCj4rCj4rOzsgVGhp cyBmaWxlIGlzIHBhcnQgb2YgR0NDLgo+Kwo+Kzs7IEdDQyBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4rOzsgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPis7OyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91 ciBvcHRpb24pCj4rOzsgYW55IGxhdGVyIHZlcnNpb24uCj4rCj4rOzsgR0NDIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4rOzsgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPis7OyBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0 aGUKPis7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+Kwo+ Kzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCj4rOzsgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4g SWYgbm90IHNlZQo+Kzs7IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KPisKPisoZGVm aW5lX2luc24gImdwcl9tdWx0aV9wb3BfdXBfdG9fcmFfPG1vZGU+Igo+KyBbKHNldCAocmVnOlgg U1BfUkVHTlVNKQo+KyAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5k IDAgInN0YWNrX3BvcF91cF90b19yYV9vcGVyYW5kIiAiSSIpKSkKPisgKHNldCAocmVnOlggUkVU VVJOX0FERFJfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAo bWF0Y2hfb3BlcmFuZDpYIDEgInNsb3RfMF9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKV0KPisgIlRB UkdFVF9aQ01QIgo+KyAiY20ucG9wIHtyYX0sICUwIgo+KykKPisKPisoZGVmaW5lX2luc24gImdw cl9tdWx0aV9wb3BfdXBfdG9fczBfPG1vZGU+Igo+KyBbKHNldCAocmVnOlggU1BfUkVHTlVNKQo+ KyAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kIDAgInN0YWNrX3Bv cF91cF90b19zMF9vcGVyYW5kIiAiSSIpKSkKPisgKHNldCAocmVnOlggUzBfUkVHTlVNKQo+KyAo bWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDEgInNs b3RfMF9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBSRVRVUk5fQUREUl9S RUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVy YW5kOlggMiAic2xvdF8xX29mZnNldF9vcGVyYW5kIiAiSSIpKSkpXQo+KyAiVEFSR0VUX1pDTVAi Cj4rICJjbS5wb3Age3JhLCBzMH0sICUwIgo+KykKPisKPisoZGVmaW5lX2luc24gImdwcl9tdWx0 aV9wb3BfdXBfdG9fczFfPG1vZGU+Igo+KyBbKHNldCAocmVnOlggU1BfUkVHTlVNKQo+KyAocGx1 czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kIDAgInN0YWNrX3BvcF91cF90 b19zMV9vcGVyYW5kIiAiSSIpKSkKPisgKHNldCAocmVnOlggUzFfUkVHTlVNKQo+KyAobWVtOlgg KHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDEgInNsb3RfMF9v ZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBTMF9SRUdOVU0pCj4rIChtZW06 WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggMiAic2xvdF8x X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFJFVFVSTl9BRERSX1JFR05V TSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6 WCAzICJzbG90XzJfb2Zmc2V0X29wZXJhbmQiICJJIikpKSldCj4rICJUQVJHRVRfWkNNUCIKPisg ImNtLnBvcCB7cmEsIHMwLXMxfSwgJTAiCj4rKQo+Kwo+KyhkZWZpbmVfaW5zbiAiZ3ByX211bHRp X3BvcF91cF90b19zMl88bW9kZT4iCj4rIFsoc2V0IChyZWc6WCBTUF9SRUdOVU0pCj4rIChwbHVz OlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQgMCAic3RhY2tfcG9wX3VwX3Rv X3MyX29wZXJhbmQiICJJIikpKQo+KyAoc2V0IChyZWc6WCBTMl9SRUdOVU0pCj4rIChtZW06WCAo cGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggMSAic2xvdF8wX29m ZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFMxX1JFR05VTSkKPisgKG1lbTpY IChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCAyICJzbG90XzFf b2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVnOlggUzBfUkVHTlVNKQo+KyAobWVt OlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDMgInNsb3Rf Ml9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBSRVRVUk5fQUREUl9SRUdO VU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5k OlggNCAic2xvdF8zX29mZnNldF9vcGVyYW5kIiAiSSIpKSkpXQo+KyAiVEFSR0VUX1pDTVAiCj4r ICJjbS5wb3Age3JhLCBzMC1zMn0sICUwIgo+KykKPisKPisoZGVmaW5lX2luc24gImdwcl9tdWx0 aV9wb3BfdXBfdG9fczNfPG1vZGU+Igo+KyBbKHNldCAocmVnOlggU1BfUkVHTlVNKQo+KyAocGx1 czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kIDAgInN0YWNrX3BvcF91cF90 b19zM19vcGVyYW5kIiAiSSIpKSkKPisgKHNldCAocmVnOlggUzNfUkVHTlVNKQo+KyAobWVtOlgg KHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDEgInNsb3RfMF9v ZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBTMl9SRUdOVU0pCj4rIChtZW06 WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggMiAic2xvdF8x X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFMxX1JFR05VTSkKPisgKG1l bTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCAzICJzbG90 XzJfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVnOlggUzBfUkVHTlVNKQo+KyAo bWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDQgInNs b3RfM19vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBSRVRVUk5fQUREUl9S RUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVy YW5kOlggNSAic2xvdF80X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpXQo+KyAiVEFSR0VUX1pDTVAi Cj4rICJjbS5wb3Age3JhLCBzMC1zM30sICUwIgo+KykKPisKPisoZGVmaW5lX2luc24gImdwcl9t dWx0aV9wb3BfdXBfdG9fczRfPG1vZGU+Igo+KyBbKHNldCAocmVnOlggU1BfUkVHTlVNKQo+KyAo cGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kIDAgInN0YWNrX3BvcF91 cF90b19zNF9vcGVyYW5kIiAiSSIpKSkKPisgKHNldCAocmVnOlggUzRfUkVHTlVNKQo+KyAobWVt OlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDEgInNsb3Rf MF9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBTM19SRUdOVU0pCj4rICht ZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggMiAic2xv dF8xX29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFMyX1JFR05VTSkKPisg KG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCAzICJz bG90XzJfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVnOlggUzFfUkVHTlVNKQo+ KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDQg InNsb3RfM19vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBTMF9SRUdOVU0p Cj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlgg NSAic2xvdF80X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFJFVFVSTl9B RERSX1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNo X29wZXJhbmQ6WCA2ICJzbG90XzVfb2Zmc2V0X29wZXJhbmQiICJJIikpKSldCj4rICJUQVJHRVRf WkNNUCIKPisgImNtLnBvcCB7cmEsIHMwLXM0fSwgJTAiCj4rKQo+Kwo+KyhkZWZpbmVfaW5zbiAi Z3ByX211bHRpX3BvcF91cF90b19zNV88bW9kZT4iCj4rIFsoc2V0IChyZWc6WCBTUF9SRUdOVU0p Cj4rIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQgMCAic3RhY2tf cG9wX3VwX3RvX3M1X29wZXJhbmQiICJJIikpKQo+KyAoc2V0IChyZWc6WCBTNV9SRUdOVU0pCj4r IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggMSAi c2xvdF8wX29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFM0X1JFR05VTSkK PisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCAy ICJzbG90XzFfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVnOlggUzNfUkVHTlVN KQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpY IDMgInNsb3RfMl9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBTMl9SRUdO VU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5k OlggNCAic2xvdF8zX29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFMxX1JF R05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJh bmQ6WCA1ICJzbG90XzRfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVnOlggUzBf UkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3Bl cmFuZDpYIDYgInNsb3RfNV9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBS RVRVUk5fQUREUl9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4r IChtYXRjaF9vcGVyYW5kOlggNyAic2xvdF82X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpXQo+KyAi VEFSR0VUX1pDTVAiCj4rICJjbS5wb3Age3JhLCBzMC1zNX0sICUwIgo+KykKPisKPisoZGVmaW5l X2luc24gImdwcl9tdWx0aV9wb3BfdXBfdG9fczZfPG1vZGU+Igo+KyBbKHNldCAocmVnOlggU1Bf UkVHTlVNKQo+KyAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kIDAg InN0YWNrX3BvcF91cF90b19zNl9vcGVyYW5kIiAiSSIpKSkKPisgKHNldCAocmVnOlggUzZfUkVH TlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFu ZDpYIDEgInNsb3RfMF9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBTNV9S RUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVy YW5kOlggMiAic2xvdF8xX29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFM0 X1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29w ZXJhbmQ6WCAzICJzbG90XzJfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVnOlgg UzNfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hf b3BlcmFuZDpYIDQgInNsb3RfM19vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6 WCBTMl9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRj aF9vcGVyYW5kOlggNSAic2xvdF80X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJl ZzpYIFMxX1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1h dGNoX29wZXJhbmQ6WCA2ICJzbG90XzVfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAo cmVnOlggUzBfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAo bWF0Y2hfb3BlcmFuZDpYIDcgInNsb3RfNl9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0 IChyZWc6WCBSRVRVUk5fQUREUl9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9S RUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggOCAic2xvdF83X29mZnNldF9vcGVyYW5kIiAiSSIp KSkpXQo+KyAiVEFSR0VUX1pDTVAiCj4rICJjbS5wb3Age3JhLCBzMC1zNn0sICUwIgo+KykKPisK PisoZGVmaW5lX2luc24gImdwcl9tdWx0aV9wb3BfdXBfdG9fczdfPG1vZGU+Igo+KyBbKHNldCAo cmVnOlggU1BfUkVHTlVNKQo+KyAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9v cGVyYW5kIDAgInN0YWNrX3BvcF91cF90b19zN19vcGVyYW5kIiAiSSIpKSkKPisgKHNldCAocmVn OlggUzdfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0 Y2hfb3BlcmFuZDpYIDEgInNsb3RfMF9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChy ZWc6WCBTNl9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rICht YXRjaF9vcGVyYW5kOlggMiAic2xvdF8xX29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQg KHJlZzpYIFM1X1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisg KG1hdGNoX29wZXJhbmQ6WCAzICJzbG90XzJfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNl dCAocmVnOlggUzRfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+ KyAobWF0Y2hfb3BlcmFuZDpYIDQgInNsb3RfM19vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAo c2V0IChyZWc6WCBTM19SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0p Cj4rIChtYXRjaF9vcGVyYW5kOlggNSAic2xvdF80X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4r IChzZXQgKHJlZzpYIFMyX1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05V TSkKPisgKG1hdGNoX29wZXJhbmQ6WCA2ICJzbG90XzVfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkK PisgKHNldCAocmVnOlggUzFfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVH TlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDcgInNsb3RfNl9vZmZzZXRfb3BlcmFuZCIgIkkiKSkp KQo+KyAoc2V0IChyZWc6WCBTMF9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9S RUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggOCAic2xvdF83X29mZnNldF9vcGVyYW5kIiAiSSIp KSkpCj4rIChzZXQgKHJlZzpYIFJFVFVSTl9BRERSX1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlgg KHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA5ICJzbG90Xzhfb2Zmc2V0X29w ZXJhbmQiICJJIikpKSldCj4rICJUQVJHRVRfWkNNUCIKPisgImNtLnBvcCB7cmEsIHMwLXM3fSwg JTAiCj4rKQo+Kwo+KyhkZWZpbmVfaW5zbiAiZ3ByX211bHRpX3BvcF91cF90b19zOF88bW9kZT4i Cj4rIFsoc2V0IChyZWc6WCBTUF9SRUdOVU0pCj4rIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkK PisgKG1hdGNoX29wZXJhbmQgMCAic3RhY2tfcG9wX3VwX3RvX3M4X29wZXJhbmQiICJJIikpKQo+ KyAoc2V0IChyZWc6WCBTOF9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdO VU0pCj4rIChtYXRjaF9vcGVyYW5kOlggMSAic2xvdF8wX29mZnNldF9vcGVyYW5kIiAiSSIpKSkp Cj4rIChzZXQgKHJlZzpYIFM3X1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JF R05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCAyICJzbG90XzFfb2Zmc2V0X29wZXJhbmQiICJJIikp KSkKPisgKHNldCAocmVnOlggUzZfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1Bf UkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDMgInNsb3RfMl9vZmZzZXRfb3BlcmFuZCIgIkki KSkpKQo+KyAoc2V0IChyZWc6WCBTNV9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBT UF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggNCAic2xvdF8zX29mZnNldF9vcGVyYW5kIiAi SSIpKSkpCj4rIChzZXQgKHJlZzpYIFM0X1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpY IFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA1ICJzbG90XzRfb2Zmc2V0X29wZXJhbmQi ICJJIikpKSkKPisgKHNldCAocmVnOlggUzNfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVn OlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDYgInNsb3RfNV9vZmZzZXRfb3BlcmFu ZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBTMl9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChy ZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggNyAic2xvdF82X29mZnNldF9vcGVy YW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFMxX1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlgg KHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA4ICJzbG90Xzdfb2Zmc2V0X29w ZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVnOlggUzBfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6 WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDkgInNsb3RfOF9vZmZzZXRf b3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBSRVRVUk5fQUREUl9SRUdOVU0pCj4rICht ZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggMTAgInNs b3RfOV9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKV0KPisgIlRBUkdFVF9aQ01QIgo+KyAiY20ucG9w IHtyYSwgczAtczh9LCAlMCIKPispCj4rCj4rKGRlZmluZV9pbnNuICJncHJfbXVsdGlfcG9wX3Vw X3RvX3M5Xzxtb2RlPiIKPisgWyhzZXQgKHJlZzpYIFNQX1JFR05VTSkKPisgKHBsdXM6WCAocmVn OlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZCAwICJzdGFja19wb3BfdXBfdG9fczlfb3Bl cmFuZCIgIkkiKSkpCj4rIChzZXQgKHJlZzpYIFM5X1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlgg KHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCAxICJzbG90XzBfb2Zmc2V0X29w ZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVnOlggUzhfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6 WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDIgInNsb3RfMV9vZmZzZXRf b3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBTN19SRUdOVU0pCj4rIChtZW06WCAocGx1 czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggMyAic2xvdF8yX29mZnNl dF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFM2X1JFR05VTSkKPisgKG1lbTpYIChw bHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA0ICJzbG90XzNfb2Zm c2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVnOlggUzVfUkVHTlVNKQo+KyAobWVtOlgg KHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDUgInNsb3RfNF9v ZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBTNF9SRUdOVU0pCj4rIChtZW06 WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggNiAic2xvdF81 X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFMzX1JFR05VTSkKPisgKG1l bTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA3ICJzbG90 XzZfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVnOlggUzJfUkVHTlVNKQo+KyAo bWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDggInNs b3RfN19vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBTMV9SRUdOVU0pCj4r IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggOSAi c2xvdF84X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFMwX1JFR05VTSkK PisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCAx MCAic2xvdF85X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFJFVFVSTl9B RERSX1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNo X29wZXJhbmQ6WCAxMSAic2xvdF8xMF9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKV0KPisgIlRBUkdF VF9aQ01QIgo+KyAiY20ucG9wIHtyYSwgczAtczl9LCAlMCIKPispCj4rCj4rKGRlZmluZV9pbnNu ICJncHJfbXVsdGlfcG9wX3VwX3RvX3MxMV88bW9kZT4iCj4rIFsoc2V0IChyZWc6WCBTUF9SRUdO VU0pCj4rIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQgMCAic3Rh Y2tfcG9wX3VwX3RvX3MxMV9vcGVyYW5kIiAiSSIpKSkKPisgKHNldCAocmVnOlggUzExX1JFR05V TSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6 WCAxICJzbG90XzBfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVnOlggUzEwX1JF R05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJh bmQ6WCAyICJzbG90XzFfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVnOlggUzlf UkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3Bl cmFuZDpYIDMgInNsb3RfMl9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBT OF9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9v cGVyYW5kOlggNCAic2xvdF8zX29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpY IFM3X1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNo X29wZXJhbmQ6WCA1ICJzbG90XzRfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVn OlggUzZfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0 Y2hfb3BlcmFuZDpYIDYgInNsb3RfNV9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChy ZWc6WCBTNV9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rICht YXRjaF9vcGVyYW5kOlggNyAic2xvdF82X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQg KHJlZzpYIFM0X1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisg KG1hdGNoX29wZXJhbmQ6WCA4ICJzbG90Xzdfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNl dCAocmVnOlggUzNfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+ KyAobWF0Y2hfb3BlcmFuZDpYIDkgInNsb3RfOF9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAo c2V0IChyZWc6WCBTMl9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0p Cj4rIChtYXRjaF9vcGVyYW5kOlggMTAgInNsb3RfOV9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+ KyAoc2V0IChyZWc6WCBTMV9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdO VU0pCj4rIChtYXRjaF9vcGVyYW5kOlggMTEgInNsb3RfMTBfb2Zmc2V0X29wZXJhbmQiICJJIikp KSkKPisgKHNldCAocmVnOlggUzBfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1Bf UkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDEyICJzbG90XzExX29mZnNldF9vcGVyYW5kIiAi SSIpKSkpCj4rIChzZXQgKHJlZzpYIFJFVFVSTl9BRERSX1JFR05VTSkKPisgKG1lbTpYIChwbHVz OlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCAxMyAic2xvdF8xMl9vZmZz ZXRfb3BlcmFuZCIgIkkiKSkpKV0KPisgIlRBUkdFVF9aQ01QIgo+KyAiY20ucG9wIHtyYSwgczAt czExfSwgJTAiCj4rKQo+Kwo+KyhkZWZpbmVfaW5zbiAiZ3ByX211bHRpX3BvcHJldF91cF90b19y YV88bW9kZT4iCj4rIFsoc2V0IChyZWc6WCBTUF9SRUdOVU0pCj4rIChwbHVzOlggKHJlZzpYIFNQ X1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQgMCAic3RhY2tfcG9wX3VwX3RvX3JhX29wZXJhbmQi ICJJIikpKQo+KyAoc2V0IChyZWc6WCBSRVRVUk5fQUREUl9SRUdOVU0pCj4rIChtZW06WCAocGx1 czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggMSAic2xvdF8wX29mZnNl dF9vcGVyYW5kIiAiSSIpKSkpCj4rIChyZXR1cm4pCj4rICh1c2UgKHJlZzpTSSBSRVRVUk5fQURE Ul9SRUdOVU0pKV0KPisgIlRBUkdFVF9aQ01QIgo+KyAiY20ucG9wcmV0IHtyYX0sICUwIgo+KykK PisKPisoZGVmaW5lX2luc24gImdwcl9tdWx0aV9wb3ByZXRfdXBfdG9fczBfPG1vZGU+Igo+KyBb KHNldCAocmVnOlggU1BfUkVHTlVNKQo+KyAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rICht YXRjaF9vcGVyYW5kIDAgInN0YWNrX3BvcF91cF90b19zMF9vcGVyYW5kIiAiSSIpKSkKPisgKHNl dCAocmVnOlggUzBfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+ KyAobWF0Y2hfb3BlcmFuZDpYIDEgInNsb3RfMF9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAo c2V0IChyZWc6WCBSRVRVUk5fQUREUl9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBT UF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggMiAic2xvdF8xX29mZnNldF9vcGVyYW5kIiAi SSIpKSkpCj4rIChyZXR1cm4pCj4rICh1c2UgKHJlZzpTSSBSRVRVUk5fQUREUl9SRUdOVU0pKV0K PisgIlRBUkdFVF9aQ01QIgo+KyAiY20ucG9wcmV0IHtyYSwgczB9LCAlMCIKPispCj4rCj4rKGRl ZmluZV9pbnNuICJncHJfbXVsdGlfcG9wcmV0X3VwX3RvX3MxXzxtb2RlPiIKPisgWyhzZXQgKHJl ZzpYIFNQX1JFR05VTSkKPisgKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3Bl cmFuZCAwICJzdGFja19wb3BfdXBfdG9fczFfb3BlcmFuZCIgIkkiKSkpCj4rIChzZXQgKHJlZzpY IFMxX1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNo X29wZXJhbmQ6WCAxICJzbG90XzBfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVn OlggUzBfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0 Y2hfb3BlcmFuZDpYIDIgInNsb3RfMV9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChy ZWc6WCBSRVRVUk5fQUREUl9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdO VU0pCj4rIChtYXRjaF9vcGVyYW5kOlggMyAic2xvdF8yX29mZnNldF9vcGVyYW5kIiAiSSIpKSkp Cj4rIChyZXR1cm4pCj4rICh1c2UgKHJlZzpTSSBSRVRVUk5fQUREUl9SRUdOVU0pKV0KPisgIlRB UkdFVF9aQ01QIgo+KyAiY20ucG9wcmV0IHtyYSwgczAtczF9LCAlMCIKPispCj4rCj4rKGRlZmlu ZV9pbnNuICJncHJfbXVsdGlfcG9wcmV0X3VwX3RvX3MyXzxtb2RlPiIKPisgWyhzZXQgKHJlZzpY IFNQX1JFR05VTSkKPisgKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFu ZCAwICJzdGFja19wb3BfdXBfdG9fczJfb3BlcmFuZCIgIkkiKSkpCj4rIChzZXQgKHJlZzpYIFMy X1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29w ZXJhbmQ6WCAxICJzbG90XzBfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVnOlgg UzFfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hf b3BlcmFuZDpYIDIgInNsb3RfMV9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6 WCBTMF9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRj aF9vcGVyYW5kOlggMyAic2xvdF8yX29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJl ZzpYIFJFVFVSTl9BRERSX1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05V TSkKPisgKG1hdGNoX29wZXJhbmQ6WCA0ICJzbG90XzNfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkK PisgKHJldHVybikKPisgKHVzZSAocmVnOlNJIFJFVFVSTl9BRERSX1JFR05VTSkpXQo+KyAiVEFS R0VUX1pDTVAiCj4rICJjbS5wb3ByZXQge3JhLCBzMC1zMn0sICUwIgo+KykKPisKPisoZGVmaW5l X2luc24gImdwcl9tdWx0aV9wb3ByZXRfdXBfdG9fczNfPG1vZGU+Igo+KyBbKHNldCAocmVnOlgg U1BfUkVHTlVNKQo+KyAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5k IDAgInN0YWNrX3BvcF91cF90b19zM19vcGVyYW5kIiAiSSIpKSkKPisgKHNldCAocmVnOlggUzNf UkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3Bl cmFuZDpYIDEgInNsb3RfMF9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBT Ml9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9v cGVyYW5kOlggMiAic2xvdF8xX29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpY IFMxX1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNo X29wZXJhbmQ6WCAzICJzbG90XzJfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVn OlggUzBfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0 Y2hfb3BlcmFuZDpYIDQgInNsb3RfM19vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChy ZWc6WCBSRVRVUk5fQUREUl9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdO VU0pCj4rIChtYXRjaF9vcGVyYW5kOlggNSAic2xvdF80X29mZnNldF9vcGVyYW5kIiAiSSIpKSkp Cj4rIChyZXR1cm4pCj4rICh1c2UgKHJlZzpTSSBSRVRVUk5fQUREUl9SRUdOVU0pKV0KPisgIlRB UkdFVF9aQ01QIgo+KyAiY20ucG9wcmV0IHtyYSwgczAtczN9LCAlMCIKPispCj4rCj4rKGRlZmlu ZV9pbnNuICJncHJfbXVsdGlfcG9wcmV0X3VwX3RvX3M0Xzxtb2RlPiIKPisgWyhzZXQgKHJlZzpY IFNQX1JFR05VTSkKPisgKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFu ZCAwICJzdGFja19wb3BfdXBfdG9fczRfb3BlcmFuZCIgIkkiKSkpCj4rIChzZXQgKHJlZzpYIFM0 X1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29w ZXJhbmQ6WCAxICJzbG90XzBfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVnOlgg UzNfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hf b3BlcmFuZDpYIDIgInNsb3RfMV9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6 WCBTMl9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRj aF9vcGVyYW5kOlggMyAic2xvdF8yX29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJl ZzpYIFMxX1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1h dGNoX29wZXJhbmQ6WCA0ICJzbG90XzNfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAo cmVnOlggUzBfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAo bWF0Y2hfb3BlcmFuZDpYIDUgInNsb3RfNF9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0 IChyZWc6WCBSRVRVUk5fQUREUl9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9S RUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggNiAic2xvdF81X29mZnNldF9vcGVyYW5kIiAiSSIp KSkpCj4rIChyZXR1cm4pCj4rICh1c2UgKHJlZzpTSSBSRVRVUk5fQUREUl9SRUdOVU0pKV0KPisg IlRBUkdFVF9aQ01QIgo+KyAiY20ucG9wcmV0IHtyYSwgczAtczR9LCAlMCIKPispCj4rCj4rKGRl ZmluZV9pbnNuICJncHJfbXVsdGlfcG9wcmV0X3VwX3RvX3M1Xzxtb2RlPiIKPisgWyhzZXQgKHJl ZzpYIFNQX1JFR05VTSkKPisgKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3Bl cmFuZCAwICJzdGFja19wb3BfdXBfdG9fczVfb3BlcmFuZCIgIkkiKSkpCj4rIChzZXQgKHJlZzpY IFM1X1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNo X29wZXJhbmQ6WCAxICJzbG90XzBfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVn OlggUzRfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0 Y2hfb3BlcmFuZDpYIDIgInNsb3RfMV9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChy ZWc6WCBTM19SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rICht YXRjaF9vcGVyYW5kOlggMyAic2xvdF8yX29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQg KHJlZzpYIFMyX1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisg KG1hdGNoX29wZXJhbmQ6WCA0ICJzbG90XzNfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNl dCAocmVnOlggUzFfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+ KyAobWF0Y2hfb3BlcmFuZDpYIDUgInNsb3RfNF9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAo c2V0IChyZWc6WCBTMF9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0p Cj4rIChtYXRjaF9vcGVyYW5kOlggNiAic2xvdF81X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4r IChzZXQgKHJlZzpYIFJFVFVSTl9BRERSX1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpY IFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA3ICJzbG90XzZfb2Zmc2V0X29wZXJhbmQi ICJJIikpKSkKPisgKHJldHVybikKPisgKHVzZSAocmVnOlNJIFJFVFVSTl9BRERSX1JFR05VTSkp XQo+KyAiVEFSR0VUX1pDTVAiCj4rICJjbS5wb3ByZXQge3JhLCBzMC1zNX0sICUwIgo+KykKPisK PisoZGVmaW5lX2luc24gImdwcl9tdWx0aV9wb3ByZXRfdXBfdG9fczZfPG1vZGU+Igo+KyBbKHNl dCAocmVnOlggU1BfUkVHTlVNKQo+KyAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRj aF9vcGVyYW5kIDAgInN0YWNrX3BvcF91cF90b19zNl9vcGVyYW5kIiAiSSIpKSkKPisgKHNldCAo cmVnOlggUzZfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAo bWF0Y2hfb3BlcmFuZDpYIDEgInNsb3RfMF9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0 IChyZWc6WCBTNV9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4r IChtYXRjaF9vcGVyYW5kOlggMiAic2xvdF8xX29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChz ZXQgKHJlZzpYIFM0X1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkK PisgKG1hdGNoX29wZXJhbmQ6WCAzICJzbG90XzJfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisg KHNldCAocmVnOlggUzNfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVN KQo+KyAobWF0Y2hfb3BlcmFuZDpYIDQgInNsb3RfM19vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+ KyAoc2V0IChyZWc6WCBTMl9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdO VU0pCj4rIChtYXRjaF9vcGVyYW5kOlggNSAic2xvdF80X29mZnNldF9vcGVyYW5kIiAiSSIpKSkp Cj4rIChzZXQgKHJlZzpYIFMxX1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JF R05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA2ICJzbG90XzVfb2Zmc2V0X29wZXJhbmQiICJJIikp KSkKPisgKHNldCAocmVnOlggUzBfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1Bf UkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDcgInNsb3RfNl9vZmZzZXRfb3BlcmFuZCIgIkki KSkpKQo+KyAoc2V0IChyZWc6WCBSRVRVUk5fQUREUl9SRUdOVU0pCj4rIChtZW06WCAocGx1czpY IChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggOCAic2xvdF83X29mZnNldF9v cGVyYW5kIiAiSSIpKSkpCj4rIChyZXR1cm4pCj4rICh1c2UgKHJlZzpTSSBSRVRVUk5fQUREUl9S RUdOVU0pKV0KPisgIlRBUkdFVF9aQ01QIgo+KyAiY20ucG9wcmV0IHtyYSwgczAtczZ9LCAlMCIK PispCj4rCj4rKGRlZmluZV9pbnNuICJncHJfbXVsdGlfcG9wcmV0X3VwX3RvX3M3Xzxtb2RlPiIK PisgWyhzZXQgKHJlZzpYIFNQX1JFR05VTSkKPisgKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+ KyAobWF0Y2hfb3BlcmFuZCAwICJzdGFja19wb3BfdXBfdG9fczdfb3BlcmFuZCIgIkkiKSkpCj4r IChzZXQgKHJlZzpYIFM3X1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05V TSkKPisgKG1hdGNoX29wZXJhbmQ6WCAxICJzbG90XzBfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkK PisgKHNldCAocmVnOlggUzZfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVH TlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDIgInNsb3RfMV9vZmZzZXRfb3BlcmFuZCIgIkkiKSkp KQo+KyAoc2V0IChyZWc6WCBTNV9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9S RUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggMyAic2xvdF8yX29mZnNldF9vcGVyYW5kIiAiSSIp KSkpCj4rIChzZXQgKHJlZzpYIFM0X1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQ X1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA0ICJzbG90XzNfb2Zmc2V0X29wZXJhbmQiICJJ IikpKSkKPisgKHNldCAocmVnOlggUzNfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlgg U1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDUgInNsb3RfNF9vZmZzZXRfb3BlcmFuZCIg IkkiKSkpKQo+KyAoc2V0IChyZWc6WCBTMl9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6 WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggNiAic2xvdF81X29mZnNldF9vcGVyYW5k IiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFMxX1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJl ZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA3ICJzbG90XzZfb2Zmc2V0X29wZXJh bmQiICJJIikpKSkKPisgKHNldCAocmVnOlggUzBfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAo cmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDggInNsb3RfN19vZmZzZXRfb3Bl cmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBSRVRVUk5fQUREUl9SRUdOVU0pCj4rIChtZW06 WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggOSAic2xvdF84 X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChyZXR1cm4pCj4rICh1c2UgKHJlZzpTSSBSRVRV Uk5fQUREUl9SRUdOVU0pKV0KPisgIlRBUkdFVF9aQ01QIgo+KyAiY20ucG9wcmV0IHtyYSwgczAt czd9LCAlMCIKPispCj4rCj4rKGRlZmluZV9pbnNuICJncHJfbXVsdGlfcG9wcmV0X3VwX3RvX3M4 Xzxtb2RlPiIKPisgWyhzZXQgKHJlZzpYIFNQX1JFR05VTSkKPisgKHBsdXM6WCAocmVnOlggU1Bf UkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZCAwICJzdGFja19wb3BfdXBfdG9fczhfb3BlcmFuZCIg IkkiKSkpCj4rIChzZXQgKHJlZzpYIFM4X1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpY IFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCAxICJzbG90XzBfb2Zmc2V0X29wZXJhbmQi ICJJIikpKSkKPisgKHNldCAocmVnOlggUzdfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVn OlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDIgInNsb3RfMV9vZmZzZXRfb3BlcmFu ZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBTNl9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChy ZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggMyAic2xvdF8yX29mZnNldF9vcGVy YW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFM1X1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlgg KHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA0ICJzbG90XzNfb2Zmc2V0X29w ZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVnOlggUzRfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6 WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDUgInNsb3RfNF9vZmZzZXRf b3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBTM19SRUdOVU0pCj4rIChtZW06WCAocGx1 czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggNiAic2xvdF81X29mZnNl dF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFMyX1JFR05VTSkKPisgKG1lbTpYIChw bHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA3ICJzbG90XzZfb2Zm c2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVnOlggUzFfUkVHTlVNKQo+KyAobWVtOlgg KHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDggInNsb3RfN19v ZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBTMF9SRUdOVU0pCj4rIChtZW06 WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggOSAic2xvdF84 X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFJFVFVSTl9BRERSX1JFR05V TSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6 WCAxMCAic2xvdF85X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChyZXR1cm4pCj4rICh1c2Ug KHJlZzpTSSBSRVRVUk5fQUREUl9SRUdOVU0pKV0KPisgIlRBUkdFVF9aQ01QIgo+KyAiY20ucG9w cmV0IHtyYSwgczAtczh9LCAlMCIKPispCj4rCj4rKGRlZmluZV9pbnNuICJncHJfbXVsdGlfcG9w cmV0X3VwX3RvX3M5Xzxtb2RlPiIKPisgWyhzZXQgKHJlZzpYIFNQX1JFR05VTSkKPisgKHBsdXM6 WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZCAwICJzdGFja19wb3BfdXBfdG9f czlfb3BlcmFuZCIgIkkiKSkpCj4rIChzZXQgKHJlZzpYIFM5X1JFR05VTSkKPisgKG1lbTpYIChw bHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCAxICJzbG90XzBfb2Zm c2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVnOlggUzhfUkVHTlVNKQo+KyAobWVtOlgg KHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDIgInNsb3RfMV9v ZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBTN19SRUdOVU0pCj4rIChtZW06 WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggMyAic2xvdF8y X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFM2X1JFR05VTSkKPisgKG1l bTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA0ICJzbG90 XzNfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVnOlggUzVfUkVHTlVNKQo+KyAo bWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDUgInNs b3RfNF9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBTNF9SRUdOVU0pCj4r IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggNiAi c2xvdF81X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFMzX1JFR05VTSkK PisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA3 ICJzbG90XzZfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVnOlggUzJfUkVHTlVN KQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpY IDggInNsb3RfN19vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBTMV9SRUdO VU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5k OlggOSAic2xvdF84X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFMwX1JF R05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJh bmQ6WCAxMCAic2xvdF85X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFJF VFVSTl9BRERSX1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisg KG1hdGNoX29wZXJhbmQ6WCAxMSAic2xvdF8xMF9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAo cmV0dXJuKQo+KyAodXNlIChyZWc6U0kgUkVUVVJOX0FERFJfUkVHTlVNKSldCj4rICJUQVJHRVRf WkNNUCIKPisgImNtLnBvcHJldCB7cmEsIHMwLXM5fSwgJTAiCj4rKQo+Kwo+KyhkZWZpbmVfaW5z biAiZ3ByX211bHRpX3BvcHJldF91cF90b19zMTFfPG1vZGU+Igo+KyBbKHNldCAocmVnOlggU1Bf UkVHTlVNKQo+KyAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kIDAg InN0YWNrX3BvcF91cF90b19zMTFfb3BlcmFuZCIgIkkiKSkpCj4rIChzZXQgKHJlZzpYIFMxMV9S RUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVy YW5kOlggMSAic2xvdF8wX29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpYIFMx MF9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9v cGVyYW5kOlggMiAic2xvdF8xX29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQgKHJlZzpY IFM5X1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNo X29wZXJhbmQ6WCAzICJzbG90XzJfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNldCAocmVn OlggUzhfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0 Y2hfb3BlcmFuZDpYIDQgInNsb3RfM19vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAoc2V0IChy ZWc6WCBTN19SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rICht YXRjaF9vcGVyYW5kOlggNSAic2xvdF80X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4rIChzZXQg KHJlZzpYIFM2X1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisg KG1hdGNoX29wZXJhbmQ6WCA2ICJzbG90XzVfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHNl dCAocmVnOlggUzVfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+ KyAobWF0Y2hfb3BlcmFuZDpYIDcgInNsb3RfNl9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpKQo+KyAo c2V0IChyZWc6WCBTNF9SRUdOVU0pCj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0p Cj4rIChtYXRjaF9vcGVyYW5kOlggOCAic2xvdF83X29mZnNldF9vcGVyYW5kIiAiSSIpKSkpCj4r IChzZXQgKHJlZzpYIFMzX1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05V TSkKPisgKG1hdGNoX29wZXJhbmQ6WCA5ICJzbG90Xzhfb2Zmc2V0X29wZXJhbmQiICJJIikpKSkK PisgKHNldCAocmVnOlggUzJfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVH TlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDEwICJzbG90Xzlfb2Zmc2V0X29wZXJhbmQiICJJIikp KSkKPisgKHNldCAocmVnOlggUzFfUkVHTlVNKQo+KyAobWVtOlggKHBsdXM6WCAocmVnOlggU1Bf UkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDExICJzbG90XzEwX29mZnNldF9vcGVyYW5kIiAi SSIpKSkpCj4rIChzZXQgKHJlZzpYIFMwX1JFR05VTSkKPisgKG1lbTpYIChwbHVzOlggKHJlZzpY IFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCAxMiAic2xvdF8xMV9vZmZzZXRfb3BlcmFu ZCIgIkkiKSkpKQo+KyAoc2V0IChyZWc6WCBSRVRVUk5fQUREUl9SRUdOVU0pCj4rIChtZW06WCAo cGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggMTMgInNsb3RfMTJf b2Zmc2V0X29wZXJhbmQiICJJIikpKSkKPisgKHJldHVybikKPisgKHVzZSAocmVnOlNJIFJFVFVS Tl9BRERSX1JFR05VTSkpXQo+KyAiVEFSR0VUX1pDTVAiCj4rICJjbS5wb3ByZXQge3JhLCBzMC1z MTF9LCAlMCIKPispCj4rCj4rKGRlZmluZV9pbnNuICJncHJfbXVsdGlfcHVzaF91cF90b19yYV88 bW9kZT4iCj4rIFsoc2V0IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRj aF9vcGVyYW5kOlggMSAic2xvdF8wX29mZnNldF9vcGVyYW5kIiAiSSIpKSkKPisgKHJlZzpYIFJF VFVSTl9BRERSX1JFR05VTSkpCj4rIChzZXQgKHJlZzpYIFNQX1JFR05VTSkKPisgKHBsdXM6WCAo cmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZCAwICJzdGFja19wdXNoX3VwX3RvX3Jh X29wZXJhbmQiICJJIikpKV0KPisgIlRBUkdFVF9aQ01QIgo+KyAiY20ucHVzaCB7cmF9LCAlMCIK PispCj4rCj4rKGRlZmluZV9pbnNuICJncHJfbXVsdGlfcHVzaF91cF90b19zMF88bW9kZT4iCj4r IFsoc2V0IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5k OlggMSAic2xvdF8wX29mZnNldF9vcGVyYW5kIiAiSSIpKSkKPisgKHJlZzpYIFMwX1JFR05VTSkp Cj4rIChzZXQgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJh bmQ6WCAyICJzbG90XzFfb2Zmc2V0X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlggUkVUVVJOX0FE RFJfUkVHTlVNKSkKPisgKHNldCAocmVnOlggU1BfUkVHTlVNKQo+KyAocGx1czpYIChyZWc6WCBT UF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kIDAgInN0YWNrX3B1c2hfdXBfdG9fczBfb3BlcmFu ZCIgIkkiKSkpXQo+KyAiVEFSR0VUX1pDTVAiCj4rICJjbS5wdXNoIHtyYSwgczB9LCAlMCIKPisp Cj4rCj4rKGRlZmluZV9pbnNuICJncHJfbXVsdGlfcHVzaF91cF90b19zMV88bW9kZT4iCj4rIFso c2V0IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlgg MSAic2xvdF8wX29mZnNldF9vcGVyYW5kIiAiSSIpKSkKPisgKHJlZzpYIFMxX1JFR05VTSkpCj4r IChzZXQgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6 WCAyICJzbG90XzFfb2Zmc2V0X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlggUzBfUkVHTlVNKSkK PisgKHNldCAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFu ZDpYIDMgInNsb3RfMl9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpCj4rIChyZWc6WCBSRVRVUk5fQURE Ul9SRUdOVU0pKQo+KyAoc2V0IChyZWc6WCBTUF9SRUdOVU0pCj4rIChwbHVzOlggKHJlZzpYIFNQ X1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQgMCAic3RhY2tfcHVzaF91cF90b19zMV9vcGVyYW5k IiAiSSIpKSldCj4rICJUQVJHRVRfWkNNUCIKPisgImNtLnB1c2gge3JhLCBzMC1zMX0sICUwIgo+ KykKPisKPisoZGVmaW5lX2luc24gImdwcl9tdWx0aV9wdXNoX3VwX3RvX3MyXzxtb2RlPiIKPisg WyhzZXQgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6 WCAxICJzbG90XzBfb2Zmc2V0X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlggUzJfUkVHTlVNKSkK PisgKHNldCAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFu ZDpYIDIgInNsb3RfMV9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpCj4rIChyZWc6WCBTMV9SRUdOVU0p KQo+KyAoc2V0IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVy YW5kOlggMyAic2xvdF8yX29mZnNldF9vcGVyYW5kIiAiSSIpKSkKPisgKHJlZzpYIFMwX1JFR05V TSkpCj4rIChzZXQgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29w ZXJhbmQ6WCA0ICJzbG90XzNfb2Zmc2V0X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlggUkVUVVJO X0FERFJfUkVHTlVNKSkKPisgKHNldCAocmVnOlggU1BfUkVHTlVNKQo+KyAocGx1czpYIChyZWc6 WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kIDAgInN0YWNrX3B1c2hfdXBfdG9fczJfb3Bl cmFuZCIgIkkiKSkpXQo+KyAiVEFSR0VUX1pDTVAiCj4rICJjbS5wdXNoIHtyYSwgczAtczJ9LCAl MCIKPispCj4rCj4rKGRlZmluZV9pbnNuICJncHJfbXVsdGlfcHVzaF91cF90b19zM188bW9kZT4i Cj4rIFsoc2V0IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVy YW5kOlggMSAic2xvdF8wX29mZnNldF9vcGVyYW5kIiAiSSIpKSkKPisgKHJlZzpYIFMzX1JFR05V TSkpCj4rIChzZXQgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29w ZXJhbmQ6WCAyICJzbG90XzFfb2Zmc2V0X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlggUzJfUkVH TlVNKSkKPisgKHNldCAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hf b3BlcmFuZDpYIDMgInNsb3RfMl9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpCj4rIChyZWc6WCBTMV9S RUdOVU0pKQo+KyAoc2V0IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRj aF9vcGVyYW5kOlggNCAic2xvdF8zX29mZnNldF9vcGVyYW5kIiAiSSIpKSkKPisgKHJlZzpYIFMw X1JFR05VTSkpCj4rIChzZXQgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1h dGNoX29wZXJhbmQ6WCA1ICJzbG90XzRfb2Zmc2V0X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlgg UkVUVVJOX0FERFJfUkVHTlVNKSkKPisgKHNldCAocmVnOlggU1BfUkVHTlVNKQo+KyAocGx1czpY IChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kIDAgInN0YWNrX3B1c2hfdXBfdG9f czNfb3BlcmFuZCIgIkkiKSkpXQo+KyAiVEFSR0VUX1pDTVAiCj4rICJjbS5wdXNoIHtyYSwgczAt czN9LCAlMCIKPispCj4rCj4rKGRlZmluZV9pbnNuICJncHJfbXVsdGlfcHVzaF91cF90b19zNF88 bW9kZT4iCj4rIFsoc2V0IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRj aF9vcGVyYW5kOlggMSAic2xvdF8wX29mZnNldF9vcGVyYW5kIiAiSSIpKSkKPisgKHJlZzpYIFM0 X1JFR05VTSkpCj4rIChzZXQgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1h dGNoX29wZXJhbmQ6WCAyICJzbG90XzFfb2Zmc2V0X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlgg UzNfUkVHTlVNKSkKPisgKHNldCAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAo bWF0Y2hfb3BlcmFuZDpYIDMgInNsb3RfMl9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpCj4rIChyZWc6 WCBTMl9SRUdOVU0pKQo+KyAoc2V0IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4r IChtYXRjaF9vcGVyYW5kOlggNCAic2xvdF8zX29mZnNldF9vcGVyYW5kIiAiSSIpKSkKPisgKHJl ZzpYIFMxX1JFR05VTSkpCj4rIChzZXQgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkK PisgKG1hdGNoX29wZXJhbmQ6WCA1ICJzbG90XzRfb2Zmc2V0X29wZXJhbmQiICJJIikpKQo+KyAo cmVnOlggUzBfUkVHTlVNKSkKPisgKHNldCAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVN KQo+KyAobWF0Y2hfb3BlcmFuZDpYIDYgInNsb3RfNV9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpCj4r IChyZWc6WCBSRVRVUk5fQUREUl9SRUdOVU0pKQo+KyAoc2V0IChyZWc6WCBTUF9SRUdOVU0pCj4r IChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQgMCAic3RhY2tfcHVz aF91cF90b19zNF9vcGVyYW5kIiAiSSIpKSldCj4rICJUQVJHRVRfWkNNUCIKPisgImNtLnB1c2gg e3JhLCBzMC1zNH0sICUwIgo+KykKPisKPisoZGVmaW5lX2luc24gImdwcl9tdWx0aV9wdXNoX3Vw X3RvX3M1Xzxtb2RlPiIKPisgWyhzZXQgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkK PisgKG1hdGNoX29wZXJhbmQ6WCAxICJzbG90XzBfb2Zmc2V0X29wZXJhbmQiICJJIikpKQo+KyAo cmVnOlggUzVfUkVHTlVNKSkKPisgKHNldCAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVN KQo+KyAobWF0Y2hfb3BlcmFuZDpYIDIgInNsb3RfMV9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpCj4r IChyZWc6WCBTNF9SRUdOVU0pKQo+KyAoc2V0IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdO VU0pCj4rIChtYXRjaF9vcGVyYW5kOlggMyAic2xvdF8yX29mZnNldF9vcGVyYW5kIiAiSSIpKSkK PisgKHJlZzpYIFMzX1JFR05VTSkpCj4rIChzZXQgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JF R05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA0ICJzbG90XzNfb2Zmc2V0X29wZXJhbmQiICJJIikp KQo+KyAocmVnOlggUzJfUkVHTlVNKSkKPisgKHNldCAobWVtOlggKHBsdXM6WCAocmVnOlggU1Bf UkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDUgInNsb3RfNF9vZmZzZXRfb3BlcmFuZCIgIkki KSkpCj4rIChyZWc6WCBTMV9SRUdOVU0pKQo+KyAoc2V0IChtZW06WCAocGx1czpYIChyZWc6WCBT UF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggNiAic2xvdF81X29mZnNldF9vcGVyYW5kIiAi SSIpKSkKPisgKHJlZzpYIFMwX1JFR05VTSkpCj4rIChzZXQgKG1lbTpYIChwbHVzOlggKHJlZzpY IFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA3ICJzbG90XzZfb2Zmc2V0X29wZXJhbmQi ICJJIikpKQo+KyAocmVnOlggUkVUVVJOX0FERFJfUkVHTlVNKSkKPisgKHNldCAocmVnOlggU1Bf UkVHTlVNKQo+KyAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kIDAg InN0YWNrX3B1c2hfdXBfdG9fczVfb3BlcmFuZCIgIkkiKSkpXQo+KyAiVEFSR0VUX1pDTVAiCj4r ICJjbS5wdXNoIHtyYSwgczAtczV9LCAlMCIKPispCj4rCj4rKGRlZmluZV9pbnNuICJncHJfbXVs dGlfcHVzaF91cF90b19zNl88bW9kZT4iCj4rIFsoc2V0IChtZW06WCAocGx1czpYIChyZWc6WCBT UF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggMSAic2xvdF8wX29mZnNldF9vcGVyYW5kIiAi SSIpKSkKPisgKHJlZzpYIFM2X1JFR05VTSkpCj4rIChzZXQgKG1lbTpYIChwbHVzOlggKHJlZzpY IFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCAyICJzbG90XzFfb2Zmc2V0X29wZXJhbmQi ICJJIikpKQo+KyAocmVnOlggUzVfUkVHTlVNKSkKPisgKHNldCAobWVtOlggKHBsdXM6WCAocmVn OlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDMgInNsb3RfMl9vZmZzZXRfb3BlcmFu ZCIgIkkiKSkpCj4rIChyZWc6WCBTNF9SRUdOVU0pKQo+KyAoc2V0IChtZW06WCAocGx1czpYIChy ZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggNCAic2xvdF8zX29mZnNldF9vcGVy YW5kIiAiSSIpKSkKPisgKHJlZzpYIFMzX1JFR05VTSkpCj4rIChzZXQgKG1lbTpYIChwbHVzOlgg KHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA1ICJzbG90XzRfb2Zmc2V0X29w ZXJhbmQiICJJIikpKQo+KyAocmVnOlggUzJfUkVHTlVNKSkKPisgKHNldCAobWVtOlggKHBsdXM6 WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDYgInNsb3RfNV9vZmZzZXRf b3BlcmFuZCIgIkkiKSkpCj4rIChyZWc6WCBTMV9SRUdOVU0pKQo+KyAoc2V0IChtZW06WCAocGx1 czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggNyAic2xvdF82X29mZnNl dF9vcGVyYW5kIiAiSSIpKSkKPisgKHJlZzpYIFMwX1JFR05VTSkpCj4rIChzZXQgKG1lbTpYIChw bHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA4ICJzbG90Xzdfb2Zm c2V0X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlggUkVUVVJOX0FERFJfUkVHTlVNKSkKPisgKHNl dCAocmVnOlggU1BfUkVHTlVNKQo+KyAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRj aF9vcGVyYW5kIDAgInN0YWNrX3B1c2hfdXBfdG9fczZfb3BlcmFuZCIgIkkiKSkpXQo+KyAiVEFS R0VUX1pDTVAiCj4rICJjbS5wdXNoIHtyYSwgczAtczZ9LCAlMCIKPispCj4rCj4rKGRlZmluZV9p bnNuICJncHJfbXVsdGlfcHVzaF91cF90b19zN188bW9kZT4iCj4rIFsoc2V0IChtZW06WCAocGx1 czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggMSAic2xvdF8wX29mZnNl dF9vcGVyYW5kIiAiSSIpKSkKPisgKHJlZzpYIFM3X1JFR05VTSkpCj4rIChzZXQgKG1lbTpYIChw bHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCAyICJzbG90XzFfb2Zm c2V0X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlggUzZfUkVHTlVNKSkKPisgKHNldCAobWVtOlgg KHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDMgInNsb3RfMl9v ZmZzZXRfb3BlcmFuZCIgIkkiKSkpCj4rIChyZWc6WCBTNV9SRUdOVU0pKQo+KyAoc2V0IChtZW06 WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggNCAic2xvdF8z X29mZnNldF9vcGVyYW5kIiAiSSIpKSkKPisgKHJlZzpYIFM0X1JFR05VTSkpCj4rIChzZXQgKG1l bTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA1ICJzbG90 XzRfb2Zmc2V0X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlggUzNfUkVHTlVNKSkKPisgKHNldCAo bWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDYgInNs b3RfNV9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpCj4rIChyZWc6WCBTMl9SRUdOVU0pKQo+KyAoc2V0 IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggNyAi c2xvdF82X29mZnNldF9vcGVyYW5kIiAiSSIpKSkKPisgKHJlZzpYIFMxX1JFR05VTSkpCj4rIChz ZXQgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA4 ICJzbG90Xzdfb2Zmc2V0X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlggUzBfUkVHTlVNKSkKPisg KHNldCAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpY IDkgInNsb3RfOF9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpCj4rIChyZWc6WCBSRVRVUk5fQUREUl9S RUdOVU0pKQo+KyAoc2V0IChyZWc6WCBTUF9SRUdOVU0pCj4rIChwbHVzOlggKHJlZzpYIFNQX1JF R05VTSkKPisgKG1hdGNoX29wZXJhbmQgMCAic3RhY2tfcHVzaF91cF90b19zN19vcGVyYW5kIiAi SSIpKSldCj4rICJUQVJHRVRfWkNNUCIKPisgImNtLnB1c2gge3JhLCBzMC1zN30sICUwIgo+KykK PisKPisoZGVmaW5lX2luc24gImdwcl9tdWx0aV9wdXNoX3VwX3RvX3M4Xzxtb2RlPiIKPisgWyhz ZXQgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCAx ICJzbG90XzBfb2Zmc2V0X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlggUzhfUkVHTlVNKSkKPisg KHNldCAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpY IDIgInNsb3RfMV9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpCj4rIChyZWc6WCBTN19SRUdOVU0pKQo+ KyAoc2V0IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5k OlggMyAic2xvdF8yX29mZnNldF9vcGVyYW5kIiAiSSIpKSkKPisgKHJlZzpYIFM2X1JFR05VTSkp Cj4rIChzZXQgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJh bmQ6WCA0ICJzbG90XzNfb2Zmc2V0X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlggUzVfUkVHTlVN KSkKPisgKHNldCAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3Bl cmFuZDpYIDUgInNsb3RfNF9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpCj4rIChyZWc6WCBTNF9SRUdO VU0pKQo+KyAoc2V0IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9v cGVyYW5kOlggNiAic2xvdF81X29mZnNldF9vcGVyYW5kIiAiSSIpKSkKPisgKHJlZzpYIFMzX1JF R05VTSkpCj4rIChzZXQgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNo X29wZXJhbmQ6WCA3ICJzbG90XzZfb2Zmc2V0X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlggUzJf UkVHTlVNKSkKPisgKHNldCAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0 Y2hfb3BlcmFuZDpYIDggInNsb3RfN19vZmZzZXRfb3BlcmFuZCIgIkkiKSkpCj4rIChyZWc6WCBT MV9SRUdOVU0pKQo+KyAoc2V0IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rICht YXRjaF9vcGVyYW5kOlggOSAic2xvdF84X29mZnNldF9vcGVyYW5kIiAiSSIpKSkKPisgKHJlZzpY IFMwX1JFR05VTSkpCj4rIChzZXQgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisg KG1hdGNoX29wZXJhbmQ6WCAxMCAic2xvdF85X29mZnNldF9vcGVyYW5kIiAiSSIpKSkKPisgKHJl ZzpYIFJFVFVSTl9BRERSX1JFR05VTSkpCj4rIChzZXQgKHJlZzpYIFNQX1JFR05VTSkKPisgKHBs dXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZCAwICJzdGFja19wdXNoX3Vw X3RvX3M4X29wZXJhbmQiICJJIikpKV0KPisgIlRBUkdFVF9aQ01QIgo+KyAiY20ucHVzaCB7cmEs IHMwLXM4fSwgJTAiCj4rKQo+Kwo+KyhkZWZpbmVfaW5zbiAiZ3ByX211bHRpX3B1c2hfdXBfdG9f czlfPG1vZGU+Igo+KyBbKHNldCAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAo bWF0Y2hfb3BlcmFuZDpYIDEgInNsb3RfMF9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpCj4rIChyZWc6 WCBTOV9SRUdOVU0pKQo+KyAoc2V0IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4r IChtYXRjaF9vcGVyYW5kOlggMiAic2xvdF8xX29mZnNldF9vcGVyYW5kIiAiSSIpKSkKPisgKHJl ZzpYIFM4X1JFR05VTSkpCj4rIChzZXQgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkK PisgKG1hdGNoX29wZXJhbmQ6WCAzICJzbG90XzJfb2Zmc2V0X29wZXJhbmQiICJJIikpKQo+KyAo cmVnOlggUzdfUkVHTlVNKSkKPisgKHNldCAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVN KQo+KyAobWF0Y2hfb3BlcmFuZDpYIDQgInNsb3RfM19vZmZzZXRfb3BlcmFuZCIgIkkiKSkpCj4r IChyZWc6WCBTNl9SRUdOVU0pKQo+KyAoc2V0IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdO VU0pCj4rIChtYXRjaF9vcGVyYW5kOlggNSAic2xvdF80X29mZnNldF9vcGVyYW5kIiAiSSIpKSkK PisgKHJlZzpYIFM1X1JFR05VTSkpCj4rIChzZXQgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JF R05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA2ICJzbG90XzVfb2Zmc2V0X29wZXJhbmQiICJJIikp KQo+KyAocmVnOlggUzRfUkVHTlVNKSkKPisgKHNldCAobWVtOlggKHBsdXM6WCAocmVnOlggU1Bf UkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDcgInNsb3RfNl9vZmZzZXRfb3BlcmFuZCIgIkki KSkpCj4rIChyZWc6WCBTM19SRUdOVU0pKQo+KyAoc2V0IChtZW06WCAocGx1czpYIChyZWc6WCBT UF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggOCAic2xvdF83X29mZnNldF9vcGVyYW5kIiAi SSIpKSkKPisgKHJlZzpYIFMyX1JFR05VTSkpCj4rIChzZXQgKG1lbTpYIChwbHVzOlggKHJlZzpY IFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA5ICJzbG90Xzhfb2Zmc2V0X29wZXJhbmQi ICJJIikpKQo+KyAocmVnOlggUzFfUkVHTlVNKSkKPisgKHNldCAobWVtOlggKHBsdXM6WCAocmVn OlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDEwICJzbG90Xzlfb2Zmc2V0X29wZXJh bmQiICJJIikpKQo+KyAocmVnOlggUzBfUkVHTlVNKSkKPisgKHNldCAobWVtOlggKHBsdXM6WCAo cmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDExICJzbG90XzEwX29mZnNldF9v cGVyYW5kIiAiSSIpKSkKPisgKHJlZzpYIFJFVFVSTl9BRERSX1JFR05VTSkpCj4rIChzZXQgKHJl ZzpYIFNQX1JFR05VTSkKPisgKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3Bl cmFuZCAwICJzdGFja19wdXNoX3VwX3RvX3M5X29wZXJhbmQiICJJIikpKV0KPisgIlRBUkdFVF9a Q01QIgo+KyAiY20ucHVzaCB7cmEsIHMwLXM5fSwgJTAiCj4rKQo+Kwo+KyhkZWZpbmVfaW5zbiAi Z3ByX211bHRpX3B1c2hfdXBfdG9fczExXzxtb2RlPiIKPisgWyhzZXQgKG1lbTpYIChwbHVzOlgg KHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCAxICJzbG90XzBfb2Zmc2V0X29w ZXJhbmQiICJJIikpKQo+KyAocmVnOlggUzExX1JFR05VTSkpCj4rIChzZXQgKG1lbTpYIChwbHVz OlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCAyICJzbG90XzFfb2Zmc2V0 X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlggUzEwX1JFR05VTSkpCj4rIChzZXQgKG1lbTpYIChw bHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCAzICJzbG90XzJfb2Zm c2V0X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlggUzlfUkVHTlVNKSkKPisgKHNldCAobWVtOlgg KHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDQgInNsb3RfM19v ZmZzZXRfb3BlcmFuZCIgIkkiKSkpCj4rIChyZWc6WCBTOF9SRUdOVU0pKQo+KyAoc2V0IChtZW06 WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggNSAic2xvdF80 X29mZnNldF9vcGVyYW5kIiAiSSIpKSkKPisgKHJlZzpYIFM3X1JFR05VTSkpCj4rIChzZXQgKG1l bTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA2ICJzbG90 XzVfb2Zmc2V0X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlggUzZfUkVHTlVNKSkKPisgKHNldCAo bWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpYIDcgInNs b3RfNl9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpCj4rIChyZWc6WCBTNV9SRUdOVU0pKQo+KyAoc2V0 IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kOlggOCAi c2xvdF83X29mZnNldF9vcGVyYW5kIiAiSSIpKSkKPisgKHJlZzpYIFM0X1JFR05VTSkpCj4rIChz ZXQgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29wZXJhbmQ6WCA5 ICJzbG90Xzhfb2Zmc2V0X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlggUzNfUkVHTlVNKSkKPisg KHNldCAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFuZDpY IDEwICJzbG90Xzlfb2Zmc2V0X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlggUzJfUkVHTlVNKSkK PisgKHNldCAobWVtOlggKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAobWF0Y2hfb3BlcmFu ZDpYIDExICJzbG90XzEwX29mZnNldF9vcGVyYW5kIiAiSSIpKSkKPisgKHJlZzpYIFMxX1JFR05V TSkpCj4rIChzZXQgKG1lbTpYIChwbHVzOlggKHJlZzpYIFNQX1JFR05VTSkKPisgKG1hdGNoX29w ZXJhbmQ6WCAxMiAic2xvdF8xMV9vZmZzZXRfb3BlcmFuZCIgIkkiKSkpCj4rIChyZWc6WCBTMF9S RUdOVU0pKQo+KyAoc2V0IChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRj aF9vcGVyYW5kOlggMTMgInNsb3RfMTJfb2Zmc2V0X29wZXJhbmQiICJJIikpKQo+KyAocmVnOlgg UkVUVVJOX0FERFJfUkVHTlVNKSkKPisgKHNldCAocmVnOlggU1BfUkVHTlVNKQo+KyAocGx1czpY IChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRjaF9vcGVyYW5kIDAgInN0YWNrX3B1c2hfdXBfdG9f czExX29wZXJhbmQiICJJIikpKV0KPisgIlRBUkdFVF9aQ01QIgo+KyAiY20ucHVzaCB7cmEsIHMw LXMxMX0sICUwIgo+KykKPmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlz Y3YvcnYzMmVfemNtcC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2MzJlX3pj bXAuYwo+bmV3IGZpbGUgbW9kZSAxMDA2NDQKPmluZGV4IDAwMDAwMDAwMDAwLi42ZGJlNDg5ZGE5 Ygo+LS0tIC9kZXYvbnVsbAo+KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2 MzJlX3pjbXAuYwo+QEAgLTAsMCArMSwyMzkgQEAKPisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwo+ Ky8qIHsgZGctb3B0aW9ucyAiIC1PcyAtbWFyY2g9cnYzMmVfemNhX3pjbXAgLW1hYmk9aWxwMzJl IC1tY21vZGVsPW1lZGxvdyIgfSAqLwo+Ky8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyIt TzAiICItTzEiICItTzIiICItT2ciICItTzMiICItT3oiICItZmx0byJ9IH0gKi8KPisvKiB7IGRn LWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgfSB9ICovCj4rCj4rY2hhciBt eV9nZXRjaGFyKCk7Cj4rZmxvYXQgZ2V0ZigpOwo+K2ludCBfX2F0dHJpYnV0ZV9fKChub2lubGlu ZSkpIGluY29taW5nX3N0YWNrX2FyZ3MKPisgKGludCBhcmcwLCBpbnQgYXJnMSwgaW50IGFyZzIs IGludCBhcmczLAo+KyBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LCBpbnQgYXJnNywgaW50 IGFyZzgpOwo+K2ludCBnZXRpbnQoKTsKPit2b2lkIFByaW50SW50cyAoaW50IG4sIC4uLik7IC8v IHZhcmFyZ3MKPit2b2lkIF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkgUHJpbnRJbnRzTm9WYVN0 YXJ0IChpbnQgbiwgLi4uKTsgLy8gdmFyYXJncwo+K3ZvaWQgUHJpbnRJbnRzMiAoaW50IGFyZzAs IGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsIGludCBhcmc0LCBpbnQgYXJnNSwgaW50IG4s IC4uLik7Cj4rZXh0ZXJuIHZvaWQgZjEodm9pZCk7Cj4rZXh0ZXJuIHZvaWQgZjIodm9pZCk7Cj4r Cj4rLyoKPisqKnRlc3QxOgo+KyoqIC4uLgo+KyoqIGNtLnB1c2gge3JhLCBzMC1zMX0sIC02NAo+ KyoqIC4uLgo+KyoqIGNtLnBvcHJldCB7cmEsIHMwLXMxfSwgNjQKPisqKiAuLi4KPisqLwo+K2lu dCB0ZXN0MSgpCj4rewo+KyBjaGFyIHZvbGF0aWxlIGFycmF5WzMxMjBdOwo+KyBmbG9hdCB2b2xh dGlsZSBmYXJyYXlbMzEyMF07Cj4rCj4rIGZsb2F0IHN1bSA9IDA7Cj4rIGZvciAoaW50IGkgPSAw OyBpIDwgMzEyMDsgaSsrKQo+KyB7Cj4rIGFycmF5W2ldID0gbXlfZ2V0Y2hhcigpOwo+KyBmYXJy YXlbaV0gPSBteV9nZXRjaGFyKCkgKiAxLjI7Cj4rIHN1bSArPSBhcnJheVtpXSArIGZhcnJheVtp XTsKPisgfQo+KyByZXR1cm4gc3VtOwo+K30KPisKPisvKgo+KyoqdGVzdDJfc3RlcDFfMF9zaXpl Ogo+KyoqIC4uLgo+KyoqIGNtLnB1c2gge3JhLCBzMH0sIC02NAo+KyoqIC4uLgo+KyoqIGNtLnBv cHJldCB7cmEsIHMwfSwgNjQKPisqKiAuLi4KPisqLwo+K2ludCB0ZXN0Ml9zdGVwMV8wX3NpemUo KQo+K3sKPisgaW50IHZvbGF0aWxlIGlhcnJheVszMTIwICsgMTgyNC80IC04XTsKPisKPisgZm9y IChpbnQgaSA9IDA7IGkgPCAzMTIwICsgMTgyNC80IC0gODsgaSsrKQo+KyB7Cj4rIGlhcnJheVtp XSA9IG15X2dldGNoYXIoKSAqIDI7Cj4rIH0KPisgcmV0dXJuIGlhcnJheVswXSArIGlhcnJheVsx XTsKPit9Cj4rCj4rLyoKPisqKnRlc3QzOgo+KyoqIC4uLgo+KyoqIGNtLnB1c2gge3JhLCBzMC1z MX0sIC02NAo+KyoqIC4uLgo+KyoqIGNtLnBvcHJldCB7cmEsIHMwLXMxfSwgNjQKPisqKiAuLi4K PisqLwo+K2Zsb2F0IHRlc3QzKCkKPit7Cj4rIGNoYXIgdm9sYXRpbGUgYXJyYXlbMzEyMF07Cj4r IGZsb2F0IHZvbGF0aWxlIGZhcnJheVszMTIwXTsKPisKPisgZmxvYXQgc3VtID0gMCwgZjEgPSAw LCBmMiA9IDAsIGYzID0gMCwgZjQgPSAwLCBmNSA9IDAsIGY2ID0gMCwgZjcgPSAwOwo+Kwo+KyBm b3IgKGludCBpID0gMDsgaSA8IDMxMjA7IGkrKykKPisgewo+KyBmMSA9IGdldGYoKTsKPisgZjIg PSBnZXRmKCk7Cj4rIGYzID0gZ2V0ZigpOwo+KyBmNCA9IGdldGYoKTsKPisgYXJyYXlbaV0gPSBt eV9nZXRjaGFyKCk7Cj4rIGZhcnJheVtpXSA9IG15X2dldGNoYXIoKSAqIDEuMjsKPisgc3VtICs9 IGFycmF5W2ldICsgZmFycmF5W2ldICsgZjEgKyBmMiArIGYzICsgZjQ7Cj4rIH0KPisgcmV0dXJu IHN1bTsKPit9Cj4rCj4rLyoKPisqKm91dGdvaW5nX3N0YWNrX2FyZ3M6Cj4rKiogLi4uCj4rKiog Y20ucHVzaCB7cmEsIHMwfSwgLTMyCj4rKiogLi4uCj4rKiogY20ucG9wcmV0IHtyYSwgczB9LCAz Mgo+KyoqIC4uLgo+KyovCj4raW50IG91dGdvaW5nX3N0YWNrX2FyZ3MoKQo+K3sKPisgaW50IGxv Y2FsID0gZ2V0aW50KCk7Cj4rIHJldHVybiBsb2NhbCAraW5jb21pbmdfc3RhY2tfYXJncygwLCAx LCAyLCAzLCA0LCA1LCA2LCA3LCA4KTsKPit9Cj4rCj4rLyoKPisqKmNhbGxQcmludEludHM6Cj4r KiogLi4uCj4rKiogY20ucHVzaCB7cmF9LCAtMzIKPisqKiAuLi4KPisqKiBjbS5wb3ByZXQge3Jh fSwgMzIKPisqKiAuLi4KPisqLwo+K2Zsb2F0IGNhbGxQcmludEludHMoKQo+K3sKPisgdm9sYXRp bGUgZmxvYXQgZiA9IGdldGYoKTsgLy8gZiBpbiBsb2NhbAo+KyBQcmludEludHMoOSwxLDIsMyw0 LDUsNiw3LDgsOSk7Cj4rIHJldHVybiBmOwo+K30KPisKPisvKgo+KyoqY2FsbFByaW50Ogo+Kyoq IC4uLgo+KyoqIGNtLnB1c2gge3JhfSwgLTMyCj4rKiogLi4uCj4rKiogY20ucG9wcmV0IHtyYX0s IDMyCj4rKiogLi4uCj4rKi8KPitmbG9hdCBjYWxsUHJpbnQoKQo+K3sKPisgdm9sYXRpbGUgZmxv YXQgZiA9IGdldGYoKTsgLy8gZiBpbiBsb2NhbAo+KyBQcmludEludHNOb1ZhU3RhcnQoMCwxLDIs Myw0LDUsNiw3LDgsOSk7Cj4rIHJldHVybiBmOwo+K30KPisKPisvKgo+KyoqY2FsbFByaW50X1M6 Cj4rKiogLi4uCj4rKiogY20ucHVzaCB7cmEsIHMwfSwgLTMyCj4rKiogLi4uCj4rKiogY20ucG9w cmV0IHtyYSwgczB9LCAzMgo+KyoqIC4uLgo+KyovCj4rZmxvYXQgY2FsbFByaW50X1MoKQo+K3sK PisgZmxvYXQgZiA9IGdldGYoKTsKPisgUHJpbnRJbnRzTm9WYVN0YXJ0KDAsMSwyLDMsNCw1LDYs Nyw4LDkpOwo+KyByZXR1cm4gZjsKPit9Cj4rCj4rLyoKPisqKmNhbGxQcmludF8yOgo+KyoqIC4u Lgo+KyoqIGNtLnB1c2gge3JhLCBzMH0sIC0zMgo+KyoqIC4uLgo+KyoqIGNtLnBvcHJldCB7cmEs IHMwfSwgMzIKPisqKiAuLi4KPisqLwo+K2Zsb2F0IGNhbGxQcmludF8yKCkKPit7Cj4rIGZsb2F0 IGYgPSBnZXRmKCk7Cj4rIFByaW50SW50czIoMCwxLDIsMyw0LDUsNiw3LDgsOSk7Cj4rIHJldHVy biBmOwo+K30KPisKPisvKgo+KyoqdGVzdF9zdGVwMV8wYnl0ZXNfc2F2ZV9yZXN0b3JlOgo+Kyoq IC4uLgo+KyoqIGNtLnB1c2gge3JhfSwgLTE2Cj4rKiogLi4uCj4rKiogY20ucG9wcmV0IHtyYX0s IDE2Cj4rKiogLi4uCj4rKi8KPitpbnQgdGVzdF9zdGVwMV8wYnl0ZXNfc2F2ZV9yZXN0b3JlKCkK Pit7Cj4rCj4rIGludCBhID0gOTsKPisgaW50IGIgPSBteV9nZXRjaGFyKCk7Cj4rIHJldHVybiBh ICtiOwo+K30KPisKPisvKgo+KyoqdGVzdF9zMDoKPisqKiAuLi4KPisqKiBjbS5wdXNoIHtyYSwg czB9LCAtMTYKPisqKiAuLi4KPisqKiBjbS5wb3ByZXQge3JhLCBzMH0sIDE2Cj4rKiogLi4uCj4r Ki8KPitpbnQgdGVzdF9zMCgpCj4rewo+Kwo+KyBpbnQgYSA9IG15X2dldGNoYXIoKTsKPisgaW50 IGIgPSBteV9nZXRjaGFyKCk7Cj4rIHJldHVybiBhICtiOwo+K30KPisKPisvKgo+KyoqdGVzdF9z MToKPisqKiAuLi4KPisqKiBjbS5wdXNoIHtyYSwgczAtczF9LCAtMTYKPisqKiAuLi4KPisqKiBj bS5wb3ByZXQge3JhLCBzMC1zMX0sIDE2Cj4rKiogLi4uCj4rKi8KPitpbnQgdGVzdF9zMSgpCj4r ewo+Kwo+KyBpbnQgczAgPSBteV9nZXRjaGFyKCk7Cj4rIGludCBzMSA9IG15X2dldGNoYXIoKTsK PisgaW50IGIgPSBteV9nZXRjaGFyKCk7Cj4rIHJldHVybiBzMSArczAgK2I7Cj4rfQo+Kwo+Ky8q Cj4rKip0ZXN0X2YwOgo+KyoqIC4uLgo+KyoqIGNtLnB1c2gge3JhLCBzMC1zMX0sIC0xNgo+Kyoq IC4uLgo+KyoqIGNtLnBvcHJldCB7cmEsIHMwLXMxfSwgMTYKPisqKiAuLi4KPisqLwo+K2ludCB0 ZXN0X2YwKCkKPit7Cj4rCj4rIGludCBzMCA9IG15X2dldGNoYXIoKTsKPisgZmxvYXQgZjAgPSBn ZXRmKCk7Cj4rIGludCBiID0gbXlfZ2V0Y2hhcigpOwo+KyByZXR1cm4gZjAgK3MwICtiOwo+K30K PisKPisvKgo+KyoqZm9vOgo+KyoqIGNtLnB1c2gge3JhfSwgLTE2Cj4rKiogY2FsbCBmMQo+Kyoq IGNtLnBvcCB7cmF9LCAxNgo+KyoqIHRhaWwgZjIKPisqLwo+K3ZvaWQgZm9vKHZvaWQpCj4rewo+ KyBmMSgpOwo+KyBmMigpOwo+K30KPmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvcmlzY3YvcnYzMmlfemNtcC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2 MzJpX3pjbXAuYwo+bmV3IGZpbGUgbW9kZSAxMDA2NDQKPmluZGV4IDAwMDAwMDAwMDAwLi45MjQx OTdjYjNjNAo+LS0tIC9kZXYvbnVsbAo+KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jp c2N2L3J2MzJpX3pjbXAuYwo+QEAgLTAsMCArMSwyMzkgQEAKPisvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLwo+Ky8qIHsgZGctb3B0aW9ucyAiIC1PcyAtbWFyY2g9cnYzMmltYWZfemNhX3pjbXAgLW1h Ymk9aWxwMzJmIC1tY21vZGVsPW1lZGxvdyIgfSAqLwo+Ky8qIHsgZGctc2tpcC1pZiAiIiB7ICot Ki0qIH0geyItTzAiICItTzEiICItTzIiICItT2ciICItTzMiICItT3oiICItZmx0byJ9IH0gKi8K PisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgfSB9ICovCj4r Cj4rY2hhciBteV9nZXRjaGFyKCk7Cj4rZmxvYXQgZ2V0ZigpOwo+K2ludCBfX2F0dHJpYnV0ZV9f KChub2lubGluZSkpIGluY29taW5nX3N0YWNrX2FyZ3MKPisgKGludCBhcmcwLCBpbnQgYXJnMSwg aW50IGFyZzIsIGludCBhcmczLAo+KyBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LCBpbnQg YXJnNywgaW50IGFyZzgpOwo+K2ludCBnZXRpbnQoKTsKPit2b2lkIFByaW50SW50cyAoaW50IG4s IC4uLik7IC8vIHZhcmFyZ3MKPit2b2lkIF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkgUHJpbnRJ bnRzTm9WYVN0YXJ0IChpbnQgbiwgLi4uKTsgLy8gdmFyYXJncwo+K3ZvaWQgUHJpbnRJbnRzMiAo aW50IGFyZzAsIGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsIGludCBhcmc0LCBpbnQgYXJn NSwgaW50IG4sIC4uLik7Cj4rZXh0ZXJuIHZvaWQgZjEodm9pZCk7Cj4rZXh0ZXJuIHZvaWQgZjIo dm9pZCk7Cj4rCj4rLyoKPisqKnRlc3QxOgo+KyoqIC4uLgo+KyoqIGNtLnB1c2gge3JhLCBzMC1z NH0sIC04MAo+KyoqIC4uLgo+KyoqIGNtLnBvcHJldCB7cmEsIHMwLXM0fSwgODAKPisqKiAuLi4K PisqLwo+K2ludCB0ZXN0MSgpCj4rewo+KyBjaGFyIHZvbGF0aWxlIGFycmF5WzMxMjBdOwo+KyBm bG9hdCB2b2xhdGlsZSBmYXJyYXlbMzEyMF07Cj4rCj4rIGZsb2F0IHN1bSA9IDA7Cj4rIGZvciAo aW50IGkgPSAwOyBpIDwgMzEyMDsgaSsrKQo+KyB7Cj4rIGFycmF5W2ldID0gbXlfZ2V0Y2hhcigp Owo+KyBmYXJyYXlbaV0gPSBteV9nZXRjaGFyKCkgKiAxLjI7Cj4rIHN1bSArPSBhcnJheVtpXSAr IGZhcnJheVtpXTsKPisgfQo+KyByZXR1cm4gc3VtOwo+K30KPisKPisvKgo+KyoqdGVzdDJfc3Rl cDFfMF9zaXplOgo+KyoqIC4uLgo+KyoqIGNtLnB1c2gge3JhLCBzMC1zMX0sIC02NAo+KyoqIC4u Lgo+KyoqIGNtLnBvcHJldCB7cmEsIHMwLXMxfSwgNjQKPisqKiAuLi4KPisqLwo+K2ludCB0ZXN0 Ml9zdGVwMV8wX3NpemUoKQo+K3sKPisgaW50IHZvbGF0aWxlIGlhcnJheVszMTIwICsgMTgyNC80 IC04XTsKPisKPisgZm9yIChpbnQgaSA9IDA7IGkgPCAzMTIwICsgMTgyNC80IC0gODsgaSsrKQo+ KyB7Cj4rIGlhcnJheVtpXSA9IG15X2dldGNoYXIoKSAqIDI7Cj4rIH0KPisgcmV0dXJuIGlhcnJh eVswXSArIGlhcnJheVsxXTsKPit9Cj4rCj4rLyoKPisqKnRlc3QzOgo+KyoqIC4uLgo+KyoqIGNt LnB1c2gge3JhLCBzMC1zNH0sIC04MAo+KyoqIC4uLgo+KyoqIGNtLnBvcHJldCB7cmEsIHMwLXM0 fSwgODAKPisqKiAuLi4KPisqLwo+K2Zsb2F0IHRlc3QzKCkKPit7Cj4rIGNoYXIgdm9sYXRpbGUg YXJyYXlbMzEyMF07Cj4rIGZsb2F0IHZvbGF0aWxlIGZhcnJheVszMTIwXTsKPisKPisgZmxvYXQg c3VtID0gMCwgZjEgPSAwLCBmMiA9IDAsIGYzID0gMCwgZjQgPSAwLCBmNSA9IDAsIGY2ID0gMCwg ZjcgPSAwOwo+Kwo+KyBmb3IgKGludCBpID0gMDsgaSA8IDMxMjA7IGkrKykKPisgewo+KyBmMSA9 IGdldGYoKTsKPisgZjIgPSBnZXRmKCk7Cj4rIGYzID0gZ2V0ZigpOwo+KyBmNCA9IGdldGYoKTsK PisgYXJyYXlbaV0gPSBteV9nZXRjaGFyKCk7Cj4rIGZhcnJheVtpXSA9IG15X2dldGNoYXIoKSAq IDEuMjsKPisgc3VtICs9IGFycmF5W2ldICsgZmFycmF5W2ldICsgZjEgKyBmMiArIGYzICsgZjQ7 Cj4rIH0KPisgcmV0dXJuIHN1bTsKPit9Cj4rCj4rLyoKPisqKm91dGdvaW5nX3N0YWNrX2FyZ3M6 Cj4rKiogLi4uCj4rKiogY20ucHVzaCB7cmEsIHMwfSwgLTMyCj4rKiogLi4uCj4rKiogY20ucG9w cmV0IHtyYSwgczB9LCAzMgo+KyoqIC4uLgo+KyovCj4raW50IG91dGdvaW5nX3N0YWNrX2FyZ3Mo KQo+K3sKPisgaW50IGxvY2FsID0gZ2V0aW50KCk7Cj4rIHJldHVybiBsb2NhbCAraW5jb21pbmdf c3RhY2tfYXJncygwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4KTsKPit9Cj4rCj4rLyoKPisqKmNh bGxQcmludEludHM6Cj4rKiogLi4uCj4rKiogY20ucHVzaCB7cmF9LCAtNDgKPisqKiAuLi4KPisq KiBjbS5wb3ByZXQge3JhfSwgNDgKPisqKiAuLi4KPisqLwo+K2Zsb2F0IGNhbGxQcmludEludHMo KQo+K3sKPisgdm9sYXRpbGUgZmxvYXQgZiA9IGdldGYoKTsgLy8gZiBpbiBsb2NhbAo+KyBQcmlu dEludHMoOSwxLDIsMyw0LDUsNiw3LDgsOSk7Cj4rIHJldHVybiBmOwo+K30KPisKPisvKgo+Kyoq Y2FsbFByaW50Ogo+KyoqIC4uLgo+KyoqIGNtLnB1c2gge3JhfSwgLTQ4Cj4rKiogLi4uCj4rKiog Y20ucG9wcmV0IHtyYX0sIDQ4Cj4rKiogLi4uCj4rKi8KPitmbG9hdCBjYWxsUHJpbnQoKQo+K3sK Pisgdm9sYXRpbGUgZmxvYXQgZiA9IGdldGYoKTsgLy8gZiBpbiBsb2NhbAo+KyBQcmludEludHNO b1ZhU3RhcnQoMCwxLDIsMyw0LDUsNiw3LDgsOSk7Cj4rIHJldHVybiBmOwo+K30KPisKPisvKgo+ KyoqY2FsbFByaW50X1M6Cj4rKiogLi4uCj4rKiogY20ucHVzaCB7cmF9LCAtNDgKPisqKiAuLi4K PisqKiBjbS5wb3ByZXQge3JhfSwgNDgKPisqKiAuLi4KPisqLwo+K2Zsb2F0IGNhbGxQcmludF9T KCkKPit7Cj4rIGZsb2F0IGYgPSBnZXRmKCk7Cj4rIFByaW50SW50c05vVmFTdGFydCgwLDEsMiwz LDQsNSw2LDcsOCw5KTsKPisgcmV0dXJuIGY7Cj4rfQo+Kwo+Ky8qCj4rKipjYWxsUHJpbnRfMjoK PisqKiAuLi4KPisqKiBjbS5wdXNoIHtyYX0sIC00OAo+KyoqIC4uLgo+KyoqIGNtLnBvcHJldCB7 cmF9LCA0OAo+KyoqIC4uLgo+KyovCj4rZmxvYXQgY2FsbFByaW50XzIoKQo+K3sKPisgZmxvYXQg ZiA9IGdldGYoKTsKPisgUHJpbnRJbnRzMigwLDEsMiwzLDQsNSw2LDcsOCw5KTsKPisgcmV0dXJu IGY7Cj4rfQo+Kwo+Ky8qCj4rKip0ZXN0X3N0ZXAxXzBieXRlc19zYXZlX3Jlc3RvcmU6Cj4rKiog Li4uCj4rKiogY20ucHVzaCB7cmF9LCAtMTYKPisqKiAuLi4KPisqKiBjbS5wb3ByZXQge3JhfSwg MTYKPisqKiAuLi4KPisqLwo+K2ludCB0ZXN0X3N0ZXAxXzBieXRlc19zYXZlX3Jlc3RvcmUoKQo+ K3sKPisKPisgaW50IGEgPSA5Owo+KyBpbnQgYiA9IG15X2dldGNoYXIoKTsKPisgcmV0dXJuIGEg K2I7Cj4rfQo+Kwo+Ky8qCj4rKip0ZXN0X3MwOgo+KyoqIC4uLgo+KyoqIGNtLnB1c2gge3JhLCBz MH0sIC0xNgo+KyoqIC4uLgo+KyoqIGNtLnBvcHJldCB7cmEsIHMwfSwgMTYKPisqKiAuLi4KPisq Lwo+K2ludCB0ZXN0X3MwKCkKPit7Cj4rCj4rIGludCBhID0gbXlfZ2V0Y2hhcigpOwo+KyBpbnQg YiA9IG15X2dldGNoYXIoKTsKPisgcmV0dXJuIGEgK2I7Cj4rfQo+Kwo+Ky8qCj4rKip0ZXN0X3Mx Ogo+KyoqIC4uLgo+KyoqIGNtLnB1c2gge3JhLCBzMC1zMX0sIC0xNgo+KyoqIC4uLgo+KyoqIGNt LnBvcHJldCB7cmEsIHMwLXMxfSwgMTYKPisqKiAuLi4KPisqLwo+K2ludCB0ZXN0X3MxKCkKPit7 Cj4rCj4rIGludCBzMCA9IG15X2dldGNoYXIoKTsKPisgaW50IHMxID0gbXlfZ2V0Y2hhcigpOwo+ KyBpbnQgYiA9IG15X2dldGNoYXIoKTsKPisgcmV0dXJuIHMxICtzMCArYjsKPit9Cj4rCj4rLyoK PisqKnRlc3RfZjA6Cj4rKiogLi4uCj4rKiogY20ucHVzaCB7cmEsIHMwfSwgLTMyCj4rKiogLi4u Cj4rKiogY20ucG9wcmV0IHtyYSwgczB9LCAzMgo+KyoqIC4uLgo+KyovCj4raW50IHRlc3RfZjAo KQo+K3sKPisKPisgaW50IHMwID0gbXlfZ2V0Y2hhcigpOwo+KyBmbG9hdCBmMCA9IGdldGYoKTsK PisgaW50IGIgPSBteV9nZXRjaGFyKCk7Cj4rIHJldHVybiBmMCArczAgK2I7Cj4rfQo+Kwo+Ky8q Cj4rKipmb286Cj4rKiogY20ucHVzaCB7cmF9LCAtMTYKPisqKiBjYWxsIGYxCj4rKiogY20ucG9w IHtyYX0sIDE2Cj4rKiogdGFpbCBmMgo+KyovCj4rdm9pZCBmb28odm9pZCkKPit7Cj4rIGYxKCk7 Cj4rIGYyKCk7Cj4rfQo+ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di96Y21wX3N0YWNrX2FsaWdubWVudC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2 L3pjbXBfc3RhY2tfYWxpZ25tZW50LmMKPm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj5pbmRleCAwMDAw MDAwMDAwMC4uOGU0ODE1MjJmODkKPi0tLSAvZGV2L251bGwKPisrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9yaXNjdi96Y21wX3N0YWNrX2FsaWdubWVudC5jCj5AQCAtMCwwICsxLDIzIEBA Cj4rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KPisvKiB7IGRnLW9wdGlvbnMgIiAtTzAgLW1hcmNo PXJ2MzJlX3pjYV96Y2JfemNtcCAtbWFiaT1pbHAzMmUgLW1jbW9kZWw9bWVkbG93IC1mb21pdC1m cmFtZS1wb2ludGVyIiB9ICovCj4rLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7Ii1PMiIg Ii1PMSIgIi1PcyIgIi1PZyIgIi1PMyIgIi1PeiIgIi1mbHRvIn0gfSAqLwo+Ky8qIHsgZGctZmlu YWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiB9IH0gKi8KPisKPit2b2lkIGJhcigp Owo+Kwo+Ky8qCj4rKipmb29sX3J2MzJlOgo+KyoqIGNtLnB1c2gge3JhfSwgLTMyCj4rKiogLi4u Cj4rKiogY2FsbCBiYXIKPisqKiAuLi4KPisqKiBsdyBhNSwzMlwoc3BcKQo+KyoqIC4uLgo+Kyoq IGNtLnBvcHJldCB7cmF9LCAzMgo+KyovCj4raW50IGZvb2xfcnYzMmUgKCBpbnQgYTAsIGludCBh MSwgaW50IGEyLCBpbnQgYTMsIGludCBhNCwgaW50IGE1LAo+KyBpbnQgaW5jb21pbmcwKQo+K3sK PisgYmFyKCk7Cj4rIHJldHVybiBhMCArIGExICsgYTIgKyBhMyArIGE0ICsgYTUgKyBpbmNvbWlu ZzA7Cj4rfQo+XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCj4tLQo+Mi4xNy4x