From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out198-20.us.a.mail.aliyun.com (out198-20.us.a.mail.aliyun.com [47.90.198.20]) by sourceware.org (Postfix) with ESMTPS id 5D1823858405 for ; Wed, 23 Mar 2022 12:07:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 5D1823858405 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=c-sky.com Authentication-Results: sourceware.org; spf=none smtp.mailfrom=c-sky.com X-Alimail-AntiSpam: AC=CONTINUE; BC=0.07392585|-1; CH=green; DM=|CONTINUE|false|; DS=CONTINUE|ham_system_inform|0.00379177-7.00145e-05-0.996138; FP=0|0|0|0|0|-1|-1|-1; HT=ay29a033018047190; MF=jiangshuai_li@c-sky.com; NM=1; PH=DW; RN=2; RT=2; SR=0; TI=W4_0.1.30_v5_21254DFF_1648036028337_o7001c92p; Received: from WS-web (jiangshuai_li@c-sky.com[W4_0.1.30_v5_21254DFF_1648036028337_o7001c92p]) by ay29a011140100187.et135 at Wed, 23 Mar 2022 20:02:03 +0800 Date: Wed, 23 Mar 2022 20:02:03 +0800 From: "=?UTF-8?B?5p2O5rGf5biF?=" To: "Simon Marchi" , "gdb-patches" Reply-To: "=?UTF-8?B?5p2O5rGf5biF?=" Message-ID: Subject: =?UTF-8?B?5Zue5aSN77yaW1BBVENIXSBnZGI6Y3NreSB1c2luZyBjc2t5X2dkYmFyY2hfdGRlcCBpbiBj?= =?UTF-8?B?c2t5X2dkYmFyY2hfaW5pdA==?= X-Mailer: [Alimail-Mailagent][W4_0.1.30][v5][Chrome] MIME-Version: 1.0 References: <20220322115203.2201-1-jiangshuai_li@c-sky.com>, x-aliyun-mail-creator: W4_0.1.30_v5_LjMTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzk5LjAuNDg0NC44MiBTYWZhcmkvNTM3LjM2TM In-Reply-To: X-Spam-Status: No, score=-10.8 required=5.0 tests=BAYES_00, BODY_8BITS, GIT_PATCH_0, HTML_MESSAGE, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 23 Mar 2022 12:07:23 -0000 VGhhbmtzIFNpbW9uIE1hcmNoaSBmb3IgeW91ciByZXZpZXcuIFRvIGZpbmQgYSBtYWNoIGlzIHVz ZWQgaW4gdGhlIHZlcnNpb24gb2YgZ2RiNy4yLAp0aGUgY29kZSBpcyB0b28gb2xkIGFuZCBpcyBu b3Qgc3VpdGFibGUgaW4gdGhlIGN1cnJlbnQgR0RCLgoKSSBoYXZlIGRlbGV0ZWQgaXQgYW5kIGNo YW5nZWQgdGhpcyBwYXRjaCBhcyBiZWxvdzoKCkZyb20gMTdmMDFiMzJkN2UyNzk0MjQ3ZjU2OGM1 OGY1N2Y3ZTRmZmYyYmU5OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSmlhbmdzaHVh aSBMaSA8amlhbmdzaHVhaV9saUBjLXNreS5jb20+CkRhdGU6IFdlZCwgMTYgTWFyIDIwMjIgMTU6 MDI6NDUgKzA4MDAKU3ViamVjdDogW1BBVENIXSBnZGI6Y3NreSBzYXZlIGZwdSBhbmQgdmRzcCBp bmZvIHRvIHN0cnVjdCBjc2t5X2dkYmFyY2hfdGRlcAoKRmlyc3QsIGFkZCB0aHJlZSB2YXJpYWJs ZXMgZnB1X2FiaSwgZnB1X2hhcmRmcCBhbmQgdmRzcF92ZXJzaW9uCnRvIGNza3lfZ2RiYXJjaF90 ZGVwLiBUaGV5IHdpbGwgYmUgaW5pdGlhbGl6ZWQgZnJvbSBpbmZvLmFiZmQgaW4KY3NrZ19nZGJh cmNoX2luaXQuCgpOb3csIHRoZXkgYXJlIGp1c3QgdXNlZCB0byBmaW5kIGEgY2FuZGlkYXRlIGFt b25nIHRoZSBsaXN0IG9mIHByZS1kZWNsYXJlZAphcmNoaXRlY3R1cmVzLgoKTGF0ZXIsIHRoZXkg d2lsbCBiZSB1c2VkIGluIGdkYmFyY2hfcmV0dXJuX3ZhbHVlIGFuZCBnZGJhcmNoX3B1c2hfZHVt bXlfY2FsbApmb3IgZnVudGlvbnMgZGVzY3JpYmVkIGJlbG93OgpmcHVfYWJpOiB0byBjaGVjayB3 aGV0aGVyIHRoZSBiZmQgaXMgdXNpbmcgVkFMX0NTS1lfRlBVX0FCSV9IQVJEIG9yClZBTF9DU0tZ X0ZQVV9BQklfU09GVApmcHVfaGFyZGZwOiB0byBjaGVjayB3aGV0aGVyIHRoZSBiZmQgaXMgdXNp bmcgVkFMX0NTS1lfRlBVX0hBUkRGUF9TSU5HTEUKb3IgVkFMX0NTS1lfRlBVX0hBUkRGUF9ET1VC TEUKdmRzcF92ZXJzaW9uOiB0byBjaGVjayBpZiBhIGZ1bmN0aW9uIGlzIHJldHVybmVkIHdpdGgg Q1NLWV9WUkVUX1JFR05VTQotLS0KIGdkYi9jc2t5LXRkZXAuYyB8IDQyICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLQogZ2RiL2Nza3ktdGRlcC5oIHwgIDUgKysrKy0K IDIgZmlsZXMgY2hhbmdlZCwgNDMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9nZGIvY3NreS10ZGVwLmMgYi9nZGIvY3NreS10ZGVwLmMKaW5kZXggY2JhMDA2NWZh NTMuLjA0ZjU1OGNmMTRiIDEwMDY0NAotLS0gYS9nZGIvY3NreS10ZGVwLmMKKysrIGIvZ2RiL2Nz a3ktdGRlcC5jCkBAIC0yMTU3LDE2ICsyMTU3LDUyIEBAIHN0YXRpYyBzdHJ1Y3QgZ2RiYXJjaCAq CiBjc2t5X2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2Ri YXJjaF9saXN0ICphcmNoZXMpCiB7CiAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOworICAvKiBB bmFseXplIGluZm8uYWJmZC4gICovCisgIHVuc2lnbmVkIGludCBmcHVfYWJpID0gMDsKKyAgdW5z aWduZWQgaW50IHZkc3BfdmVyc2lvbiA9IDA7CisgIHVuc2lnbmVkIGludCBmcHVfaGFyZGZwID0g MDsKKworICAvKiBXaGVuIHRoZSB0eXBlIG9mIGJmZCBmaWxlIGlzIHNyZWMob3IgYW55IGZpbGVz IGFyZSBub3QgZWxmKSwKKyAgICAgdGhlIEVfRkxBR1Mgd2lsbCBiZSBub3QgY3JlZGlibGUuICAq LworICBpZiAoaW5mby5hYmZkICE9IE5VTEwgJiYgYmZkX2dldF9mbGF2b3VyIChpbmZvLmFiZmQp ID09IGJmZF90YXJnZXRfZWxmX2ZsYXZvdXIpCisgICAgeworICAgICAgLyogR2V0IEZQVSwgVkRT UCBidWlsZCBvcHRpb25zLiAgKi8KKyAgICAgIGZwdV9hYmkgPSBiZmRfZWxmX2dldF9vYmpfYXR0 cl9pbnQgKGluZm8uYWJmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE9CSl9BVFRSX1BST0MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBUYWdfQ1NLWV9GUFVfQUJJKTsKKyAgICAgIHZkc3BfdmVyc2lvbiA9IGJmZF9lbGZfZ2V0 X29ial9hdHRyX2ludCAoaW5mby5hYmZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPQkpfQVRUUl9QUk9DLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBUYWdfQ1NLWV9WRFNQX1ZFUlNJT04pOworICAgICAgZnB1 X2hhcmRmcCA9IGJmZF9lbGZfZ2V0X29ial9hdHRyX2ludCAoaW5mby5hYmZkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0JKX0FUVFJfUFJPQywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhZ19DU0tZX0ZQVV9IQVJE RlApOworICAgIH0KICAgLyogRmluZCBhIGNhbmRpZGF0ZSBhbW9uZyB0aGUgbGlzdCBvZiBwcmUt ZGVjbGFyZWQgYXJjaGl0ZWN0dXJlcy4gICovCi0gIGFyY2hlcyA9IGdkYmFyY2hfbGlzdF9sb29r dXBfYnlfaW5mbyAoYXJjaGVzLCAmaW5mbyk7Ci0gIGlmIChhcmNoZXMgIT0gTlVMTCkKLSAgICBy ZXR1cm4gYXJjaGVzLT5nZGJhcmNoOworICBmb3IgKGFyY2hlcyA9IGdkYmFyY2hfbGlzdF9sb29r dXBfYnlfaW5mbyAoYXJjaGVzLCAmaW5mbyk7CisgICAgICAgYXJjaGVzICE9IE5VTEw7CisgICAg ICAgYXJjaGVzID0gZ2RiYXJjaF9saXN0X2xvb2t1cF9ieV9pbmZvIChhcmNoZXMtPm5leHQsICZp bmZvKSkKKyAgICB7CisgICAgICBjc2t5X2dkYmFyY2hfdGRlcCAqdGRlcAorICAgICAgICA9IChj c2t5X2dkYmFyY2hfdGRlcCAqKSBnZGJhcmNoX3RkZXAgKGFyY2hlcy0+Z2RiYXJjaCk7CisgICAg ICBpZiAoZnB1X2FiaSAhPSB0ZGVwLT5mcHVfYWJpKQorICAgICAgICBjb250aW51ZTsKKyAgICAg IGlmICh2ZHNwX3ZlcnNpb24gIT0gdGRlcC0+dmRzcF92ZXJzaW9uKQorICAgICAgICBjb250aW51 ZTsKKyAgICAgIGlmIChmcHVfaGFyZGZwICE9IHRkZXAtPmZwdV9oYXJkZnApCisgICAgICAgIGNv bnRpbnVlOworCisgICAgICAvKiBGb3VuZCBhIG1hdGNoLiAgKi8KKyAgICAgIHJldHVybiBhcmNo ZXMtPmdkYmFyY2g7CisgICAgfQogICAvKiBOb25lIGZvdW5kLCBjcmVhdGUgYSBuZXcgYXJjaGl0 ZWN0dXJlIGZyb20gdGhlIGluZm9ybWF0aW9uCiAgICAgIHByb3ZpZGVkLiAgKi8KICAgY3NreV9n ZGJhcmNoX3RkZXAgKnRkZXAgPSBuZXcgY3NreV9nZGJhcmNoX3RkZXA7CiAgIGdkYmFyY2ggPSBn ZGJhcmNoX2FsbG9jICgmaW5mbywgdGRlcCk7CisgIHRkZXAtPmZwdV9hYmkgPSBmcHVfYWJpOwor ICB0ZGVwLT52ZHNwX3ZlcnNpb24gPSB2ZHNwX3ZlcnNpb247CisgIHRkZXAtPmZwdV9oYXJkZnAg PSBmcHVfaGFyZGZwOwogICAvKiBUYXJnZXQgZGF0YSB0eXBlcy4gICovCiAgIHNldF9nZGJhcmNo X3B0cl9iaXQgKGdkYmFyY2gsIDMyKTsKZGlmZiAtLWdpdCBhL2dkYi9jc2t5LXRkZXAuaCBiL2dk Yi9jc2t5LXRkZXAuaAppbmRleCA3ODk4ZTBkMzI1Yi4uZDBlNWZjMDkyNzAgMTAwNjQ0Ci0tLSBh L2dkYi9jc2t5LXRkZXAuaAorKysgYi9nZGIvY3NreS10ZGVwLmgKQEAgLTMzLDcgKzMzLDEwIEBA IGVudW0gbHJfdHlwZV90CiAvKiBUYXJnZXQtZGVwZW5kZW50IHN0cnVjdHVyZSBpbiBnZGJhcmNo LiAgKi8KIHN0cnVjdCBjc2t5X2dkYmFyY2hfdGRlcCA6IGdkYmFyY2hfdGRlcAogewotICAvKiBU aGlzIGlzIFVudXNlZC4gICovCisgIC8qIFNhdmUgRlBVLCBWRFNQIEFCSS4gICovCisgIHVuc2ln bmVkIGludCBmcHVfYWJpOworICB1bnNpZ25lZCBpbnQgZnB1X2hhcmRmcDsKKyAgdW5zaWduZWQg aW50IHZkc3BfdmVyc2lvbjsKIH07CiAvKiBJbnN0cnVjdGlvbiBzaXplcy4gICovCi0tIDIuMTcu MQoKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQrlj5Hku7bkurrvvJpTaW1vbiBNYXJjaGkgPHNpbWFya0BzaW1hcmsuY2E+ CuWPkemAgeaXtumXtO+8mjIwMjLlubQz5pyIMjLml6Uo5pif5pyf5LqMKSAyMjoxOQrmlLbku7bk urrvvJrmnY7msZ/luIUgPGppYW5nc2h1YWlfbGlAYy1za3kuY29tPjsgZ2RiLXBhdGNoZXMgPGdk Yi1wYXRjaGVzQHNvdXJjZXdhcmUub3JnPgrkuLvjgIDpopjvvJpSZTogW1BBVENIXSBnZGI6Y3Nr eSB1c2luZyBjc2t5X2dkYmFyY2hfdGRlcCBpbiBjc2t5X2dkYmFyY2hfaW5pdAoKT24gMjAyMi0w My0yMiAwNzo1MiwgSmlhbmdzaHVhaSBMaSB3cm90ZToKPiBhZGQgdGhyZWUgcG9pbnRzOgo+IDEu IGFkZCB2YXJzIHRvIGNza3lfZ2RiYXJjaF90ZGVwCj4gMi4gc2F2ZSBtYWNoLCBmcHVfYWJpLCB2 ZHNwX3ZlcmlvbiBhbmQgZnB1X2hhcmRmcCBmcm9tIGluZm8uYWJmZAo+IDMuIGZpbmQgYSBwcmUt ZGVjbGFyZWQgZ2RiYXJjaCB2aWEgcG9pbnQgMgo+Cj4gZnB1X2FiaSBhbmQgdmRzcF92ZXJpb24g d2lsbCBiZSB1c2VkIGJ5IGdkYmFyY2hfcmV0dXJuX3ZhbHVlCj4gYW5kIGdkYmFyY2hfcHVzaF9k dW1teV9jYWxsIGxhdGVyLgo+Cj4gZ2RiLwo+ICAqY3NreS10ZGVwLmg6IGFkZCB2YXJzIHRvIGNz a3lfZ2RiYXJjaF90ZGVwCj4gICpjc2t5LXRkZXAuYzogc2F2ZSBtc2dzIGZyb20gaW5mby5hYmZk IGFuZCB1c2UgdGhlbQo+ICB0byBmaW5kIGEgcHJlLWRlY2xhcmVkIGdkYmFyY2gKCkRvbid0IG5l ZWQgYSBDaGFuZ2VMb2cgZW50cnkgZm9yIEdEQi4KClRoZSBzdWJqZWN0IG9mIHRoZSBwYXRjaDoK CiAgY3NreSB1c2luZyBjc2t5X2dkYmFyY2hfdGRlcCBpbiBjc2t5X2dkYmFyY2hfaW5pdAoKaXMg bm90IGNsZWFyLiAgV2hhdCBiZWhhdmlvciBjaGFuZ2UgZG8geW91IHdhbnQgdG8gaW50cm9kdWNl IGhlcmU/Cgo+IC0tLQo+ICBnZGIvY3NreS10ZGVwLmMgfCA4NyArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4gIGdkYi9jc2t5LXRkZXAuaCB8IDE3ICsr KysrKysrKy0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMDAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlv bnMoLSkKPgo+IGRpZmYgLS1naXQgYS9nZGIvY3NreS10ZGVwLmMgYi9nZGIvY3NreS10ZGVwLmMK PiBpbmRleCBjYmEwMDY1ZmE1My4uNDRjMmI1NmZiYTQgMTAwNjQ0Cj4gLS0tIGEvZ2RiL2Nza3kt dGRlcC5jCj4gKysrIGIvZ2RiL2Nza3ktdGRlcC5jCj4gQEAgLTIxNTcsMTYgKzIxNTcsOTcgQEAg c3RhdGljIHN0cnVjdCBnZGJhcmNoICoKPiAgY3NreV9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJh cmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQo+ICB7Cj4gICAgc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2g7Cj4gKyAgLyogQW5hbHlzaXMgaW5mby5hYmZkLiAgKi8KCkFu YWx5c2lzIC0+IEFuYWx5emUgPwoKPiArICB1bnNpZ25lZCBpbnQgbWFjaDsKPiArICBpbnQgbWFj aF9maW5kID0gMDsKPiArICB1bnNpZ25lZCBsb25nIGFiZmRfZV9mbGFnczsKPiArICB1bnNpZ25l ZCBpbnQgZnB1X2FiaSA9IDA7Cj4gKyAgdW5zaWduZWQgaW50IHZkc3BfdmVyc2lvbiA9IDA7Cj4g KyAgdW5zaWduZWQgaW50IGZwdV9oYXJkZnAgPSAwOwo+ICsgIHN0YXRpYyBiZmRfYXJjaF9pbmZv X3R5cGUgYmZkX2Nza3lfYXJjaF90OwoKV2hhdCdzIHRoZSBwdXJwb3NlIG9mIHRoaXMgdmFyaWFi bGUgYmVpbmcgc3RhdGljPwoKPiArCj4gKyAgLyogV2hlbiB0aGUgdHlwZSBvZiBiZmQgZmlsZSBp cyBzcmVjKG9yIGFueSBmaWxlcyBhcmUgbm90IGVsZiksCj4gKyAgICAgdGhlIEVfRkxBR1Mgd2ls bCBiZSBub3QgY3JlZGlibGUuICAqLwo+ICsgIGlmIChpbmZvLmFiZmQgJiYgYmZkX2dldF9mbGF2 b3VyIChpbmZvLmFiZmQpID09IGJmZF90YXJnZXRfZWxmX2ZsYXZvdXIpCgppbmZvLmFiZmQgIT0g bnVsbHB0cgoKPiArICAgIHsKPiArICAgICAgLyogIEdldCBlX2ZsYWdzIGZvcm0gYWJmZC4gICov Cj4gKyAgICAgIGFiZmRfZV9mbGFncyA9IGVsZl9lbGZoZWFkZXIgKGluZm8uYWJmZCktPmVfZmxh Z3M7Cj4gKyAgICAgIGlmIChJU19DU0tZX1YyIChhYmZkX2VfZmxhZ3MpKQo+ICsgICAgICAgIHsK PiArICAgICAgICAgIHN3aXRjaCAoYWJmZF9lX2ZsYWdzICYgQ1NLWV9BUkNIX01BU0spCgpQbGVh c2UgY29ycmVjdCB0aGUgaW5kZW50YXRpb24gdG8gZml0IHRoZSBjb2Rpbmcgc3R5bGUgKHRhYnMg KyBzcGFjZXMpLgoKPiArICAgICAgICAgICAgewo+ICsgICAgICAgICAgICBjYXNlIENTS1lfQVJD SF84MDE6Cj4gKyAgICAgICAgICAgIGNhc2UgQ1NLWV9BUkNIXzgwMjoKPiArICAgICAgICAgICAg Y2FzZSBDU0tZX0FSQ0hfODAzOgo+ICsgICAgICAgICAgICBjYXNlIENTS1lfQVJDSF84MDc6Cj4g KyAgICAgICAgICAgIGNhc2UgQ1NLWV9BUkNIXzgxMDoKPiArICAgICAgICAgICAgY2FzZSBDU0tZ X0FSQ0hfODYwOgo+ICsgICAgICAgICAgICAgIG1hY2ggPSBhYmZkX2VfZmxhZ3MgJiBDU0tZX0FS Q0hfTUFTSzsKPiArICAgICAgICAgICAgICBtYWNoX2ZpbmQgPSAxOwoKSXQncyBub3QgY2xlYXIg d2h5IHlvdSBuZWVkIHRvIGRvIHRoaXMgaGVyZS4gIFNlbGVjdGluZyB0aGUgcmlnaHQKbWFjaGlu ZSB0eXBlIGJhc2VkIG9uIGZsYWdzIGlzIG5vcm1hbGx5IHRoZSBraW5kIG9mIHRoaW5ncyBkb25l IGluIEJGRC4KU28gYnkgdGhlIHRpbWUgaXQgcmVhY2hlcyBHREIsIHRoZSBjb3JyZWN0IGJmZF9h cmNoX2luZm8gc2hvdWxkIGhhdmUKYWxyZWFkeSBiZWVuIHNlbGVjdGVkIGJ5IEJGRC4gIEZvciBl eGFtcGxlLCBpZiB0aGUgRUxGIGZpbGUgaXMgYQpDU0tZX0FSQ0hfODAzLCB0aGVuIGluZm8uYWJm ZC0+YXJjaF9pbmZvIHNob3VsZCBhbHJlYWR5IHBvaW50IHRvCmJmZF9tYWNoX2NrODAzLgoKPiAr ICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgZGVmYXVsdDoKPiArICAgICAgICAg ICAgICBtYWNoID0gQ1NLWV9BUkNIXzgxMDsKPiArICAgICAgICAgICAgICBicmVhazsKPiArICAg ICAgICAgICAgfQo+ICsgICAgICAgIH0KPiArICAgICAgZWxzZQo+ICsgICAgICAgIHsKPiArICAg ICAgICAgIG1hY2ggPSBDU0tZX0FSQ0hfODEwOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgIC8q IEdldCBGUFUsIFZEU1AgYnVpbGQgb3B0aW9ucy4gICovCj4gKyAgICAgIGZwdV9hYmkgPSBiZmRf ZWxmX2dldF9vYmpfYXR0cl9pbnQgKGluZm8uYWJmZCwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT0JKX0FUVFJfUFJPQywKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVGFnX0NTS1lfRlBVX0FCSSk7Cj4gKyAgICAgIHZkc3Bf dmVyc2lvbiA9IGJmZF9lbGZfZ2V0X29ial9hdHRyX2ludCAoaW5mby5hYmZkLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9CSl9BVFRSX1BST0MsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFnX0NTS1lf VkRTUF9WRVJTSU9OKTsKPiArICAgICAgZnB1X2hhcmRmcCA9IGJmZF9lbGZfZ2V0X29ial9hdHRy X2ludCAoaW5mby5hYmZkLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPQkpfQVRUUl9QUk9DLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBUYWdfQ1NLWV9GUFVfSEFSREZQKTsKPiArICAgIH0KPiArICBlbHNlCj4g KyAgICB7Cj4gKyAgICAgIG1hY2ggPSBDU0tZX0FSQ0hfODEwOwo+ICsgICAgfQo+ICsKPiArICAv KiBTZXQgaW5mby5iZmRfYXJjaF9pbmZvLiAgKi8KPiArICBtZW1jcHkgKCZiZmRfY3NreV9hcmNo X3QsIGluZm8uYmZkX2FyY2hfaW5mbywgc2l6ZW9mIChiZmRfY3NreV9hcmNoX3QpKTsKPiArICBp ZiAobWFjaF9maW5kKQo+ICsgICAgYmZkX2Nza3lfYXJjaF90Lm1hY2ggPSBhYmZkX2VfZmxhZ3M7 Cj4gKyAgZWxzZQo+ICsgICAgYmZkX2Nza3lfYXJjaF90Lm1hY2ggPSBtYWNoIHwgQ1NLWV9BQklf VjI7Cj4gKyAgaW5mby5iZmRfYXJjaF9pbmZvID0gJmJmZF9jc2t5X2FyY2hfdDsKPgo+ICAgIC8q IEZpbmQgYSBjYW5kaWRhdGUgYW1vbmcgdGhlIGxpc3Qgb2YgcHJlLWRlY2xhcmVkIGFyY2hpdGVj dHVyZXMuICAqLwo+IC0gIGFyY2hlcyA9IGdkYmFyY2hfbGlzdF9sb29rdXBfYnlfaW5mbyAoYXJj aGVzLCAmaW5mbyk7Cj4gLSAgaWYgKGFyY2hlcyAhPSBOVUxMKQo+IC0gICAgcmV0dXJuIGFyY2hl cy0+Z2RiYXJjaDsKPiArICBmb3IgKGFyY2hlcyA9IGdkYmFyY2hfbGlzdF9sb29rdXBfYnlfaW5m byAoYXJjaGVzLCAmaW5mbyk7Cj4gKyAgICAgICBhcmNoZXMgIT0gTlVMTDsKPiArICAgICAgIGFy Y2hlcyA9IGdkYmFyY2hfbGlzdF9sb29rdXBfYnlfaW5mbyAoYXJjaGVzLT5uZXh0LCAmaW5mbykp Cj4gKyAgICB7Cj4gKyAgICAgIGNza3lfZ2RiYXJjaF90ZGVwICp0ZGVwCj4gKyAgICAgICAgPSAo Y3NreV9nZGJhcmNoX3RkZXAgKikgZ2RiYXJjaF90ZGVwIChhcmNoZXMtPmdkYmFyY2gpOwo+ICsg ICAgICBpZiAobWFjaCAhPSB0ZGVwLT5tYWNoKQo+ICsgICAgICAgIGNvbnRpbnVlOwoKQXMgZXhw bGFpbmVkIGFib3ZlLCB0aGlzIGZpbHRlcmluZyBvbiBtYWNoIHNob3VsZCBub3QgYmUgbmVjZXNz YXJ5OiB0d28KRUxGIGZpbGVzIHdpdGggZGlmZmVyZW50IG1hY2hpbmUgdmFsdWVzIChpbiB0aGVp ciBlX2ZsYWdzKSBzaG91bGQgbGVhZAp0byB0d28gYWJmZHMgd2l0aCBkaWZmZXJlbnQgYXJjaCBp bmZvcy4gIEFuZCBnZGJhcmNoX2xpc3RfbG9va3VwX2J5X2luZm8Kd2lsbCBhdXRvbWF0aWNhbGx5 IGZpbHRlcnMgb3V0IHRob3NlIHdpdGggZGlmZmVyZW50IGFyY2ggaW5mb3MuCgpJdCdzIG5vdCBj bGVhciB3aGF0IHByb2JsZW0geW91IGFyZSB0cnlpbmcgdG8gc29sdmUsIG1heWJlIGlmIHRyeSB0 bwpleHBsYWluIHRoYXQgZmlyc3QgaXQgd2lsbCBiZSBlYXNpZXIgdG8gdW5kZXJzdGFuZCB3aGF0 IHlvdSBhcmUgdHJ5aW5nCnRvIGFjaGlldmUuCgpTaW1vbgoK