From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 66572 invoked by alias); 23 Feb 2016 21:36:30 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 66562 invoked by uid 89); 23 Feb 2016 21:36:29 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.1 required=5.0 tests=AWL,BAYES_50,MIME_BASE64_BLANKS,RCVD_IN_DNSWL_LOW,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 spammy=*filename, xfree, 738, 64k X-HELO: mail-oi0-f74.google.com Received: from mail-oi0-f74.google.com (HELO mail-oi0-f74.google.com) (209.85.218.74) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Tue, 23 Feb 2016 21:36:22 +0000 Received: by mail-oi0-f74.google.com with SMTP id w5so7807638oie.0 for ; Tue, 23 Feb 2016 13:36:22 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:message-id:date:subject:from:to:cc :content-transfer-encoding; bh=fOMaENEJkK62HFyAi/ZidoMq+4cnkC/KaIL2pwaRR/I=; b=FzQwk0xJBUOtE2uldcxIbDRnejIMWPtjxHhsX8WEsOiylilIczCJuLo8no+yQqlcb/ gY4Ca/uBesr1vkqP5paYNuWuH6Tw5h2IC57I+dQRsmBUnB3nSYVfJp6DXiGyqJF8EK70 4FAzIcSsV2pLCP3XFAFXkoXkoGIBkMuOcRc6U6HAJhfakduXUqmG07e0gjYMCBb4sM8s QYDLoV2ILXpjS4slEXAIBpsob3ObY1ETyVOEuysT3qEFHGra0IpkVMWo0+hVvfMesMyo jfuE5FAP3jj0/l+Byh0O9KziUIlXs9MlXxE9PNZEW0OCqenMsbhKSaNK7XC4TGR4bVYu F71A== X-Gm-Message-State: AG10YOQwaZ5BhZStJ8e4R2RVmM7AxUDYdGlOezIgXsmludHMUgqPeu7Bbbvq5CWeWe0ug5x8Rw== MIME-Version: 1.0 X-Received: by 10.50.109.136 with SMTP id hs8mr18249235igb.12.1456263380603; Tue, 23 Feb 2016 13:36:20 -0800 (PST) Message-ID: <089e013a213e80c5bf052c76bd79@google.com> Date: Tue, 23 Feb 2016 21:36:00 -0000 Subject: Re: [PATCH, doc RFA] Add "skip regexp" From: Doug Evans To: Eli Zaretskii Cc: palves@redhat.com, gdb-patches@sourceware.org Content-Type: text/plain; charset=UTF-8; format=flowed; delsp=yes Content-Transfer-Encoding: base64 X-IsSubscribed: yes X-SW-Source: 2016-02/txt/msg00702.txt.bz2 RWxpIFphcmV0c2tpaSB3cml0ZXM6DQogID4gPiBEYXRlOiBXZWQsIDE3IEZl YiAyMDE2IDAxOjA3OjM4ICswMDAwDQogID4gPiBGcm9tOiBEb3VnIEV2YW5z IDxkamVAZ29vZ2xlLmNvbT4NCiAgPiA+IENjOiBnZGItcGF0Y2hlc0Bzb3Vy Y2V3YXJlLm9yZw0KICA+ID4NCiAgPiA+IEVsaTogSGVhZHMgdXAsIHJld3Jp dHRlbiBkb2NzLCBuZWVkaW5nIHJlLWFwcHJvdmFsLg0KICA+DQogID4gVGhh bmtzIGZvciB0aGUgaGVhZHMtdXAuDQogID4NCiAgPiA+IC0tLSBhL2dkYi9O RVdTDQogID4gPiArKysgYi9nZGIvTkVXUw0KICA+ID4gQEAgLTEyNyw2ICsx MjcsMTQgQEAgc2hvdyBtYXgtdmFsdWUtc2l6ZQ0KICA+ID4gICAgIGFsbG9j YXRlIGZvciB2YWx1ZSBjb250ZW50cy4gIFByZXZlbnRzIGluY29ycmVjdCBw cm9ncmFtcyBmcm9tDQogID4gPiAgICAgY2F1c2luZyBHREIgdG8gYWxsb2Nh dGUgb3Zlcmx5IGxhcmdlIGJ1ZmZlcnMuICBEZWZhdWx0IGlzIDY0ay4NCiAg PiA+DQogID4gPiArc2tpcCAtZmlsZSBmaWxlDQogID4gPiArc2tpcCAtZ2Zp bGUgZmlsZS1nbG9iLXBhdHRlcm4NCiAgPiA+ICtza2lwIC1mdW5jdGlvbiBm dW5jdGlvbg0KICA+ID4gK3NraXAgLXJmdW5jdGlvbiByZWd1bGFyLWV4cHJl c3Npb24NCiAgPiA+ICsgIEEgZ2VuZXJhbGl6ZWQgZm9ybSBvZiB0aGUgc2tp cCBjb21tYW5kLCB3aXRoIG5ldyBzdXBwb3J0IGZvcg0KICA+ID4gKyAgZ2xv Yi1zdHlsZSBmaWxlIG5hbWVzIGFuZCByZWd1bGFyIGV4cHJlc3Npb25zIGZv ciBmdW5jdGlvbiBuYW1lcy4NCiAgPiA+ICsgIEFkZGl0aW9uYWxseSwgYSBm aWxlIHNwZWMgYW5kIGEgZnVuY3Rpb24gc3BlYyBtYXkgbm93IGJlIGNvbWJp bmVkLg0KICA+ID4gKw0KICA+DQogID4gVGhpcyBwYXJ0IGlzIE9LLg0KICA+ DQogID4gPiArQGl0ZW0gLWdmaWxlIEB2YXJ7ZmlsZS1nbG9iLXBhdHRlcm59 DQogID4gPiArQGl0ZW14IC1nZmkgQHZhcntmaWxlLWdsb2ItcGF0dGVybn0N CiAgPiA+ICtGdW5jdGlvbnMgaW4gZmlsZXMgbWF0Y2hpbmcgQHZhcntmaWxl LWdsb2ItcGF0dGVybn0gd2lsbCBiZSBza2lwcGVkDQogID4gPiArb3ZlciB3 aGVuIHN0ZXBwaW5nLg0KICA+ID4gKw0KICA+ID4gK0BzbWFsbGV4YW1wbGUN CiAgPiA+ICsoZ2RiKSBza2lwIC1nZmkgdXRpbHMvKi5jDQogID4gPiArQGVu ZCBzbWFsbGV4YW1wbGUNCiAgPg0KICA+IElzIHRoZXJlIGEgd2F5IHRvIHBy b3RlY3Qgd2lsZGNhcmQgY2hhcmFjdGVycz8gIElmIHNvLCBJIHRoaW5rIHdl DQogID4gc2hvdWxkIG1lbnRpb24gaXQuDQoNClRoZSBkb2NzIGluY2x1ZGUg dGhpczoNCg0KU2VlIGZvciBleGFtcGxlIEBzYW1we21hbiA3IGdsb2J9IG9u IEBzY3tnbnV9L0xpbnV4IHN5c3RlbXMgZm9yIGENCmRlc2NyaXB0aW9uIG9m IEBjb2Rle2dsb2J9LXN0eWxlIHBhdHRlcm5zLg0KDQp3aGljaCBzaG91bGQg YmUgc3VmZmljaWVudC4gVGhlcmUncyBhIGxvdCB0aGVyZSwgc28gdGhlIHVz ZXINCmhhcyBnb29kIGRvY3Mgb24gdGhlbS4NCg0KICA+ID4gK0ZvciBleGFt cGxlLCB0aGVyZSBpcyBnZW5lcmFsbHkgbm8gbmVlZCB0byBzdGVwIGludG8g QysrIHN0ZDo6c3RyaW5nDQogID4NCiAgPiBDQHR7Kyt9LCBhbmQgInN0ZDo6 c3RyaW5nIiBzaG91bGQgYmUgaW4gQGNvZGUuDQogID4NCiAgPiBBbHNvLCB0 aGlzIGRlc2NyaXB0aW9uIHNob3VsZCBoYXZlIGEgY291cGxlIG9mIEBjaW5k ZXggZW50cmllcywgYXMNCiAgPiByZWFkZXJzIGFyZSBsaWtlbHkgdG8gbG9v ayBmb3IgaXQgd2l0aG91dCByZW1lbWJlcmluZyB0aGF0IHRoZQ0KICA+IGNv bW1hbmQncyBuYW1lIGlzICJza2lwIi4NCiAgPg0KICA+IFRoZSBkb2N1bWVu dGF0aW9uIGlzIE9LIHdpdGggdGhvc2UgZml4ZWQuDQogID4NCiAgPiBUaGFu a3MuDQoNCkhlcmUgaXMgd2hhdCBJIGNvbW1pdHRlZC4NClRoYW5rcy4NCg0K MjAxNi0wMi0yMyAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPg0KDQoJ RXh0ZW5kICJza2lwIiBjb21tYW5kIHRvIHN1cHBvcnQgLWZpbGUsIC1nZmls ZSwgLWZ1bmN0aW9uLCAtcmZ1bmN0aW9uLg0KCSogTkVXUzogRG9jdW1lbnQg bmV3IGZlYXR1cmVzLg0KCSogc2tpcC5jOiAjaW5jbHVkZSAiZm5tYXRjaC5o IiwgImdkYl9yZWdleC5oIi4NCgkoc2tpcGxpc3RfZW50cnkpIDxmaWxlPjog UmVuYW1lZCBmcm9tIGZpbGVuYW1lLg0KCTxmdW5jdGlvbj46IFJlbmFtZWQg ZnJvbSBmdW5jdGlvbl9uYW1lLg0KCTxmaWxlX2lzX2dsb2IsIGZ1bmN0aW9u X2lzX3JlZ2V4cD46IE5ldyBtZW1iZXJzLg0KCTxjb21waWxlZF9mdW5jdGlv bl9yZWdleHAsIGNvbXBpbGVkX2Z1bmN0aW9uX3JlZ2V4cF9pc192YWxpZD46 DQoJTmV3IG1lbWJlcnMuDQoJKG1ha2Vfc2tpcF9lbnRyeSk6IE5ldyBmdW5j dGlvbi4NCgkoZnJlZV9za2lwbGlzdF9lbnRyeSwgZnJlZV9za2lwbGlzdF9l bnRyeV9jbGVhbnVwKTogTmV3IGZ1bmN0aW9ucy4NCgkobWFrZV9mcmVlX3Nr aXBsaXN0X2VudHJ5X2NsZWFudXApOiBOZXcgZnVuY3Rpb24uDQoJKHNraXBf ZmlsZV9jb21tYW5kKTogVXBkYXRlLg0KCShza2lwX2Z1bmN0aW9uLCBza2lw X2Z1bmN0aW9uX2NvbW1hbmQpOiBVcGRhdGUuDQoJKGNvbXBpbGVfc2tpcF9y ZWdleHApOiBOZXcgZnVuY3Rpb25zLg0KCShza2lwX2NvbW1hbmQpOiBBZGQg c3VwcG9ydCBmb3IgbmV3IG9wdGlvbnMuDQoJKHNraXBfaW5mbyk6IFVwZGF0 ZS4NCgkoc2tpcF9maWxlX3AsIHNraXBfZ2ZpbGVfcCk6IE5ldyBmdW5jdGlv bnMuDQoJKHNraXBfZnVuY3Rpb25fcCwgc2tpcF9yZnVuY3Rpb25fcCk6IE5l dyBmdW5jdGlvbnMuDQoJKGZ1bmN0aW9uX25hbWVfaXNfbWFya2VkX2Zvcl9z a2lwKTogVXBkYXRlIGFuZCBzaW1wbGlmeS4NCgkoX2luaXRpYWxpemVfc3Rl cF9za2lwKTogVXBkYXRlLg0KCSogc3ltdGFiLmM6ICNpbmNsdWRlICJmbm1h dGNoLmgiLg0KCShjb21wYXJlX2dsb2JfZmlsZW5hbWVzX2Zvcl9zZWFyY2gp OiBOZXcgZnVuY3Rpb24uDQoJKiBzeW10YWIuaCAoY29tcGFyZV9nbG9iX2Zp bGVuYW1lc19mb3Jfc2VhcmNoKTogRGVjbGFyZS4NCgkqIHV0aWxzLmMgKGNv dW50X3BhdGhfZWxlbWVudHMpOiBOZXcgZnVuY3Rpb24uDQoJKHN0cmlwX2xl YWRpbmdfcGF0aF9lbGVtZW50cyk6IE5ldyBmdW5jdGlvbi4NCgkqIHV0aWxz LmggKGNvdW50X3BhdGhfZWxlbWVudHMpOiBEZWNsYXJlLg0KCShzdHJpcF9s ZWFkaW5nX3BhdGhfZWxlbWVudHMpOiBEZWNsYXJlLg0KDQoJZG9jLw0KCSog Z2RiLnRleGluZm8gKFNraXBwaW5nIE92ZXIgRnVuY3Rpb25zIGFuZCBGaWxl cyk6IERvY3VtZW50IG5ldw0KCW9wdGlvbnMgdG8gInNraXAiIGNvbW1hbmQu ICBVcGRhdGUgZG9jcyBvZiBvdXRwdXQgb2YgImluZm8gc2tpcCIuDQoNCgl0 ZXN0c3VpdGUvDQoJKiBnZGIuYmFzZS9za2lwLmMgKHRlc3Rfc2tpcCk6IE5l dyBmdW5jdGlvbi4NCgkoZW5kX3Rlc3Rfc2tpcF9maWxlX2FuZF9mdW5jdGlv bik6IE5ldyBmdW5jdGlvbi4NCgkodGVzdF9za2lwX2ZpbGVfYW5kX2Z1bmN0 aW9uKTogTmV3IGZ1bmN0aW9uLg0KCSogZ2RiLmJhc2Uvc2tpcDEuYyAodGVz dF9za2lwKTogTmV3IGZ1bmN0aW9uLg0KCShza2lwMV90ZXN0X3NraXBfZmls ZV9hbmRfZnVuY3Rpb24pOiBOZXcgZnVuY3Rpb24uDQoJKiBnZGIuYmFzZS9z a2lwLmV4cDogQWRkIHRlc3RzIGZvciBuZXcgc2tpcCBvcHRpb25zLg0KCSog Z2RiLmJhc2Uvc2tpcC1zb2xpYi5leHA6IFVwZGF0ZSBleHBlY3RlZCBvdXRw dXQuDQoJKiBnZGIucGVyZi9za2lwLWNvbW1hbmQuY2M6IE5ldyBmaWxlLg0K CSogZ2RiLnBlcmYvc2tpcC1jb21tYW5kLmV4cDogTmV3IGZpbGUuDQoJKiBn ZGIucGVyZi9za2lwLWNvbW1hbmQucHk6IE5ldyBmaWxlLg0KDQpkaWZmIC0t Z2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVXUw0KaW5kZXggNjRjNDg2OS4uZmM3 OTE0MiAxMDA2NDQNCi0tLSBhL2dkYi9ORVdTDQorKysgYi9nZGIvTkVXUw0K QEAgLTE0MSw2ICsxNDEsMTQgQEAgc2hvdyBtYXgtdmFsdWUtc2l6ZQ0KICAg IGFsbG9jYXRlIGZvciB2YWx1ZSBjb250ZW50cy4gIFByZXZlbnRzIGluY29y cmVjdCBwcm9ncmFtcyBmcm9tDQogICAgY2F1c2luZyBHREIgdG8gYWxsb2Nh dGUgb3Zlcmx5IGxhcmdlIGJ1ZmZlcnMuICBEZWZhdWx0IGlzIDY0ay4NCg0K K3NraXAgLWZpbGUgZmlsZQ0KK3NraXAgLWdmaWxlIGZpbGUtZ2xvYi1wYXR0 ZXJuDQorc2tpcCAtZnVuY3Rpb24gZnVuY3Rpb24NCitza2lwIC1yZnVuY3Rp b24gcmVndWxhci1leHByZXNzaW9uDQorICBBIGdlbmVyYWxpemVkIGZvcm0g b2YgdGhlIHNraXAgY29tbWFuZCwgd2l0aCBuZXcgc3VwcG9ydCBmb3INCisg IGdsb2Itc3R5bGUgZmlsZSBuYW1lcyBhbmQgcmVndWxhciBleHByZXNzaW9u cyBmb3IgZnVuY3Rpb24gbmFtZXMuDQorICBBZGRpdGlvbmFsbHksIGEgZmls ZSBzcGVjIGFuZCBhIGZ1bmN0aW9uIHNwZWMgbWF5IG5vdyBiZSBjb21iaW5l ZC4NCisNCiAgKiBUaGUgImRpc2Fzc2VtYmxlIiBjb21tYW5kIGFjY2VwdHMg YSBuZXcgbW9kaWZpZXI6IC9zLg0KICAgIEl0IHByaW50cyBtaXhlZCBzb3Vy Y2UrZGlzYXNzZW1ibHkgbGlrZSAvbSB3aXRoIHR3byBkaWZmZXJlbmNlczoN CiAgICAtIGRpc2Fzc2VtYmxlZCBpbnN0cnVjdGlvbnMgYXJlIG5vdyBwcmlu dGVkIGluIHByb2dyYW0gb3JkZXIsIGFuZA0KZGlmZiAtLWdpdCBhL2dkYi9k b2MvZ2RiLnRleGluZm8gYi9nZGIvZG9jL2dkYi50ZXhpbmZvDQppbmRleCA1 ZGI3Y2YyLi40ZWMwZWMxIDEwMDY0NA0KLS0tIGEvZ2RiL2RvYy9nZGIudGV4 aW5mbw0KKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbw0KQEAgLTU1MjgsNyAr NTUyOCw4IEBAIGRlZmF1bHQgaXMgQGNvZGV7b259Lg0KDQogIFRoZSBwcm9n cmFtIHlvdSBhcmUgZGVidWdnaW5nIG1heSBjb250YWluIHNvbWUgZnVuY3Rp b25zIHdoaWNoIGFyZQ0KICB1bmludGVyZXN0aW5nIHRvIGRlYnVnLiAgVGhl IEBjb2Rle3NraXB9IGNvbW1hbmQgbGV0cyB5b3UgdGVsbCAgDQpAdmFsdWV7 R0RCTn0gdG8NCi1za2lwIGEgZnVuY3Rpb24gb3IgYWxsIGZ1bmN0aW9ucyBp biBhIGZpbGUgd2hlbiBzdGVwcGluZy4NCitza2lwIGEgZnVuY3Rpb24sIGFs bCBmdW5jdGlvbnMgaW4gYSBmaWxlIG9yIGEgcGFydGljdWxhciBmdW5jdGlv biBpbg0KK2EgcGFydGljdWxhciBmaWxlIHdoZW4gc3RlcHBpbmcuDQoNCiAg Rm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgQyBmdW5jdGlv bjoNCg0KQEAgLTU1NTUsMTMgKzU1NTYsNzUgQEAgQSBtb3JlIGZsZXhpYmxl IHNvbHV0aW9uIGlzIHRvIGV4ZWN1dGUgQGtiZHtza2lwICANCmJvcmluZ30u ICBUaGlzIGluc3RydWN0cw0KICBAY29kZXtzdGVwfSBhdCBsaW5lIDEwMywg eW91J2xsIHN0ZXAgb3ZlciBAY29kZXtib3Jpbmd9IGFuZCBkaXJlY3RseSBp bnRvDQogIEBjb2Rle2Zvb30uDQoNCi1Zb3UgY2FuIGFsc28gaW5zdHJ1Y3Qg QHZhbHVle0dEQk59IHRvIHNraXAgYWxsIGZ1bmN0aW9ucyBpbiBhIGZpbGUs IHdpdGgsICANCmZvcg0KLWV4YW1wbGUsIEBjb2Rle3NraXAgZmlsZSBib3Jp bmcuY30uDQorRnVuY3Rpb25zIG1heSBiZSBza2lwcGVkIGJ5IHByb3ZpZGlu ZyBlaXRoZXIgYSBmdW5jdGlvbiBuYW1lLCBsaW5lc3BlYw0KKyhAcHhyZWZ7 U3BlY2lmeSBMb2NhdGlvbn0pLCByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBt YXRjaGVzIHRoZSBmdW5jdGlvbidzDQorbmFtZSwgZmlsZSBuYW1lIG9yIGEg QGNvZGV7Z2xvYn0tc3R5bGUgcGF0dGVybiB0aGF0IG1hdGNoZXMgdGhlIGZp bGUgbmFtZS4NCisNCitPbiBQb3NpeCBzeXN0ZW1zIHRoZSBmb3JtIG9mIHRo ZSByZWd1bGFyIGV4cHJlc3Npb24gaXMNCitgYEV4dGVuZGVkIFJlZ3VsYXIg RXhwcmVzc2lvbnMnJy4gIFNlZSBmb3IgZXhhbXBsZSBAc2FtcHttYW4gNyBy ZWdleH0NCitvbiBAc2N7Z251fS9MaW51eCBzeXN0ZW1zLiAgT24gbm9uLVBv c2l4IHN5c3RlbXMgdGhlIGZvcm0gb2YgdGhlIHJlZ3VsYXINCitleHByZXNz aW9uIGlzIHdoYXRldmVyIGlzIHByb3ZpZGVkIGJ5IHRoZSBAY29kZXtyZWdj b21wfSBmdW5jdGlvbiBvZg0KK3RoZSB1bmRlcmx5aW5nIHN5c3RlbS4NCitT ZWUgZm9yIGV4YW1wbGUgQHNhbXB7bWFuIDcgZ2xvYn0gb24gQHNje2dudX0v TGludXggc3lzdGVtcyBmb3IgYQ0KK2Rlc2NyaXB0aW9uIG9mIEBjb2Rle2ds b2J9LXN0eWxlIHBhdHRlcm5zLg0KKw0KK0B0YWJsZSBAY29kZQ0KK0BraW5k ZXggc2tpcA0KK0BpdGVtIHNraXAgQHJ7W31AdmFye29wdGlvbnN9QHJ7XX0N CitUaGUgYmFzaWMgZm9ybSBvZiB0aGUgQGNvZGV7c2tpcH0gY29tbWFuZCB0 YWtlcyB6ZXJvIG9yIG1vcmUgb3B0aW9ucw0KK3RoYXQgc3BlY2lmeSB3aGF0 IHRvIHNraXAuDQorVGhlIEB2YXJ7b3B0aW9uc30gYXJndW1lbnQgaXMgYW55 IHVzZWZ1bCBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nOg0KDQogIEB0 YWJsZSBAY29kZQ0KK0BpdGVtIC1maWxlIEB2YXJ7ZmlsZX0NCitAaXRlbXgg LWZpIEB2YXJ7ZmlsZX0NCitGdW5jdGlvbnMgaW4gQHZhcntmaWxlfSB3aWxs IGJlIHNraXBwZWQgb3ZlciB3aGVuIHN0ZXBwaW5nLg0KKw0KK0BpdGVtIC1n ZmlsZSBAdmFye2ZpbGUtZ2xvYi1wYXR0ZXJufQ0KK0BpdGVteCAtZ2ZpIEB2 YXJ7ZmlsZS1nbG9iLXBhdHRlcm59DQorQGNpbmRleCBza2lwcGluZyBvdmVy IGZpbGVzIHZpYSBnbG9iLXN0eWxlIHBhdHRlcm5zDQorRnVuY3Rpb25zIGlu IGZpbGVzIG1hdGNoaW5nIEB2YXJ7ZmlsZS1nbG9iLXBhdHRlcm59IHdpbGwg YmUgc2tpcHBlZA0KK292ZXIgd2hlbiBzdGVwcGluZy4NCisNCitAc21hbGxl eGFtcGxlDQorKGdkYikgc2tpcCAtZ2ZpIHV0aWxzLyouYw0KK0BlbmQgc21h bGxleGFtcGxlDQorDQorQGl0ZW0gLWZ1bmN0aW9uIEB2YXJ7bGluZXNwZWN9 DQorQGl0ZW14IC1mdSBAdmFye2xpbmVzcGVjfQ0KK0Z1bmN0aW9ucyBuYW1l ZCBieSBAdmFye2xpbmVzcGVjfSBvciB0aGUgZnVuY3Rpb24gY29udGFpbmlu ZyB0aGUgbGluZQ0KK25hbWVkIGJ5IEB2YXJ7bGluZXNwZWN9IHdpbGwgYmUg c2tpcHBlZCBvdmVyIHdoZW4gc3RlcHBpbmcuDQorQHhyZWZ7U3BlY2lmeSBM b2NhdGlvbn0uDQorDQorQGl0ZW0gLXJmdW5jdGlvbiBAdmFye3JlZ2V4cH0N CitAaXRlbXggLXJmdSBAdmFye3JlZ2V4cH0NCitAY2luZGV4IHNraXBwaW5n IG92ZXIgZnVuY3Rpb25zIHZpYSByZWd1bGFyIGV4cHJlc3Npb25zDQorRnVu Y3Rpb25zIHdob3NlIG5hbWUgbWF0Y2hlcyBAdmFye3JlZ2V4cH0gd2lsbCBi ZSBza2lwcGVkIG92ZXIgd2hlbiAgDQpzdGVwcGluZy4NCisNCitUaGlzIGZv cm0gaXMgdXNlZnVsIGZvciBjb21wbGV4IGZ1bmN0aW9uIG5hbWVzLg0KK0Zv ciBleGFtcGxlLCB0aGVyZSBpcyBnZW5lcmFsbHkgbm8gbmVlZCB0byBzdGVw IGludG8gQ0B0eysrfSAgDQpAY29kZXtzdGQ6OnN0cmluZ30NCitjb25zdHJ1 Y3RvcnMgb3IgZGVzdHJ1Y3RvcnMuICBQbHVzIHdpdGggQ0B0eysrfSB0ZW1w bGF0ZXMgaXQgY2FuIGJlIGhhcmQgdG8NCit3cml0ZSBvdXQgdGhlIGZ1bGwg bmFtZSBvZiB0aGUgZnVuY3Rpb24sIGFuZCBvZnRlbiBpdCBkb2Vzbid0IG1h dHRlciB3aGF0DQordGhlIHRlbXBsYXRlIGFyZ3VtZW50cyBhcmUuICBTcGVj aWZ5aW5nIHRoZSBmdW5jdGlvbiB0byBiZSBza2lwcGVkIGFzIGENCityZWd1 bGFyIGV4cHJlc3Npb24gbWFrZXMgdGhpcyBlYXNpZXIuDQorDQorQHNtYWxs ZXhhbXBsZQ0KKyhnZGIpIHNraXAgLXJmdSBec3RkOjooYWxsb2NhdG9yfGJh c2ljX3N0cmluZyk8Lio+Ojp+P1wxICpcKA0KK0BlbmQgc21hbGxleGFtcGxl DQorDQorSWYgeW91IHdhbnQgdG8gc2tpcCBldmVyeSB0ZW1wbGF0ZWQgQ0B0 eysrfSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3Rvcg0KK2luIHRoZSBAY29k ZXtzdGR9IG5hbWVzcGFjZSB5b3UgY2FuIGRvOg0KKw0KK0BzbWFsbGV4YW1w bGUNCisoZ2RiKSBza2lwIC1yZnUgXnN0ZDo6KFthLXpBLXowLTlfXSspPC4q Pjo6fj9cMSAqXCgNCitAZW5kIHNtYWxsZXhhbXBsZQ0KK0BlbmQgdGFibGUN CisNCitJZiBubyBvcHRpb25zIGFyZSBzcGVjaWZpZWQsIHRoZSBmdW5jdGlv biB5b3UncmUgY3VycmVudGx5IGRlYnVnZ2luZw0KK3dpbGwgYmUgc2tpcHBl ZC4NCisNCiAgQGtpbmRleCBza2lwIGZ1bmN0aW9uDQotQGl0ZW0gc2tpcCBA cntbfUB2YXJ7bGluZXNwZWN9QHJ7XX0NCi1AaXRlbXggc2tpcCBmdW5jdGlv biBAcntbfUB2YXJ7bGluZXNwZWN9QHJ7XX0NCitAaXRlbSBza2lwIGZ1bmN0 aW9uIEBye1t9QHZhcntsaW5lc3BlY31AcntdfQ0KICBBZnRlciBydW5uaW5n IHRoaXMgY29tbWFuZCwgdGhlIGZ1bmN0aW9uIG5hbWVkIGJ5IEB2YXJ7bGlu ZXNwZWN9IG9yIHRoZQ0KICBmdW5jdGlvbiBjb250YWluaW5nIHRoZSBsaW5l IG5hbWVkIGJ5IEB2YXJ7bGluZXNwZWN9IHdpbGwgYmUgc2tpcHBlZCBvdmVy ICANCndoZW4NCiAgc3RlcHBpbmcuICBAeHJlZntTcGVjaWZ5IExvY2F0aW9u fS4NCkBAIC01NTc3LDYgKzU2NDAsMTEgQEAgd2lsbCBiZSBza2lwcGVkLg0K ICBBZnRlciBydW5uaW5nIHRoaXMgY29tbWFuZCwgYW55IGZ1bmN0aW9uIHdo b3NlIHNvdXJjZSBsaXZlcyBpbiAgDQpAdmFye2ZpbGVuYW1lfQ0KICB3aWxs IGJlIHNraXBwZWQgb3ZlciB3aGVuIHN0ZXBwaW5nLg0KDQorQHNtYWxsZXhh bXBsZQ0KKyhnZGIpIHNraXAgZmlsZSBib3JpbmcuYw0KK0ZpbGUgYm9yaW5n LmMgd2lsbCBiZSBza2lwcGVkIHdoZW4gc3RlcHBpbmcuDQorQGVuZCBzbWFs bGV4YW1wbGUNCisNCiAgSWYgeW91IGRvIG5vdCBzcGVjaWZ5IEB2YXJ7Zmls ZW5hbWV9LCBmdW5jdGlvbnMgd2hvc2Ugc291cmNlIGxpdmVzIGluIHRoZSAg DQpmaWxlDQogIHlvdSdyZSBjdXJyZW50bHkgZGVidWdnaW5nIHdpbGwgYmUg c2tpcHBlZC4NCiAgQGVuZCB0YWJsZQ0KQEAgLTU1OTQsMjAgKzU2NjIsMjEg QEAgcHJpbnQgYSB0YWJsZSB3aXRoIGRldGFpbHMgYWJvdXQgYWxsIGZ1bmN0 aW9ucyBhbmQgIA0KZmlsZXMgbWFya2VkIGZvciBza2lwcGluZy4NCiAgQHRh YmxlIEBlbXBoDQogIEBpdGVtIElkZW50aWZpZXINCiAgQSBudW1iZXIgaWRl bnRpZnlpbmcgdGhpcyBza2lwLg0KLUBpdGVtIFR5cGUNCi1UaGUgdHlwZSBv ZiB0aGlzIHNraXAsIGVpdGhlciBAc2FtcHtmdW5jdGlvbn0gb3IgQHNhbXB7 ZmlsZX0uDQogIEBpdGVtIEVuYWJsZWQgb3IgRGlzYWJsZWQNCi1FbmFibGVk IHNraXBzIGFyZSBtYXJrZWQgd2l0aCBAc2FtcHt5fS4gIERpc2FibGVkIHNr aXBzIGFyZSBtYXJrZWQgd2l0aCAgDQpAc2FtcHtufS4NCi1AaXRlbSBBZGRy ZXNzDQotRm9yIGZ1bmN0aW9uIHNraXBzLCB0aGlzIGNvbHVtbiBpbmRpY2F0 ZXMgdGhlIGFkZHJlc3MgaW4gbWVtb3J5IG9mIHRoZSAgDQpmdW5jdGlvbg0K LWJlaW5nIHNraXBwZWQuICBJZiB5b3UndmUgc2V0IGEgZnVuY3Rpb24gc2tp cCBvbiBhIGZ1bmN0aW9uIHdoaWNoIGhhcyBub3QgIA0KeWV0DQotYmVlbiBs b2FkZWQsIHRoaXMgZmllbGQgd2lsbCBjb250YWluIEBzYW1wezxQRU5ESU5H Pn0uICBPbmNlIGEgc2hhcmVkICANCmxpYnJhcnkNCi13aGljaCBoYXMgdGhl IGZ1bmN0aW9uIGlzIGxvYWRlZCwgQGNvZGV7aW5mbyBza2lwfSB3aWxsIHNo b3cgdGhlIGZ1bmN0aW9uJ3MNCi1hZGRyZXNzIGhlcmUuDQotQGl0ZW0gV2hh dA0KLUZvciBmaWxlIHNraXBzLCB0aGlzIGZpZWxkIGNvbnRhaW5zIHRoZSBm aWxlbmFtZSBiZWluZyBza2lwcGVkLiAgRm9yICANCmZ1bmN0aW9ucw0KLXNr aXBzLCB0aGlzIGZpZWxkIGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBuYW1lIGFu ZCBpdHMgbGluZSBudW1iZXIgaW4gdGhlICANCmZpbGUNCi13aGVyZSBpdCBp cyBkZWZpbmVkLg0KK0VuYWJsZWQgc2tpcHMgYXJlIG1hcmtlZCB3aXRoIEBz YW1we3l9Lg0KK0Rpc2FibGVkIHNraXBzIGFyZSBtYXJrZWQgd2l0aCBAc2Ft cHtufS4NCitAaXRlbSBHbG9iDQorSWYgdGhlIGZpbGUgbmFtZSBpcyBhIEBz YW1we2dsb2J9IHBhdHRlcm4gdGhpcyBpcyBAc2FtcHt5fS4NCitPdGhlcndp c2UgaXQgaXMgQHNhbXB7bn0uDQorQGl0ZW0gRmlsZQ0KK1RoZSBuYW1lIG9y IEBzYW1we2dsb2J9IHBhdHRlcm4gb2YgdGhlIGZpbGUgdG8gYmUgc2tpcHBl ZC4NCitJZiBubyBmaWxlIGlzIHNwZWNpZmllZCB0aGlzIGlzIEBzYW1wezxu b25lPn0uDQorQGl0ZW0gUkUNCitJZiB0aGUgZnVuY3Rpb24gbmFtZSBpcyBh IEBzYW1we3JlZ3VsYXIgZXhwcmVzc2lvbn0gdGhpcyBpcyBAc2FtcHt5fS4N CitPdGhlcndpc2UgaXQgaXMgQHNhbXB7bn0uDQorQGl0ZW0gRnVuY3Rpb24N CitUaGUgbmFtZSBvciByZWd1bGFyIGV4cHJlc3Npb24gb2YgdGhlIGZ1bmN0 aW9uIHRvIHNraXAuDQorSWYgbm8gZnVuY3Rpb24gaXMgc3BlY2lmaWVkIHRo aXMgaXMgQHNhbXB7PG5vbmU+fS4NCiAgQGVuZCB0YWJsZQ0KDQogIEBraW5k ZXggc2tpcCBkZWxldGUNCmRpZmYgLS1naXQgYS9nZGIvc2tpcC5jIGIvZ2Ri L3NraXAuYw0KaW5kZXggZDkwOTEwZC4uMTU2ODFjYyAxMDA2NDQNCi0tLSBh L2dkYi9za2lwLmMNCisrKyBiL2dkYi9za2lwLmMNCkBAIC0zMiwxOSArMzIs MzUgQEANCiAgI2luY2x1ZGUgImJyZWFrcG9pbnQuaCIgLyogZm9yIGdldF9z YWxfYXJjaCAoKSAqLw0KICAjaW5jbHVkZSAic291cmNlLmgiDQogICNpbmNs dWRlICJmaWxlbmFtZXMuaCINCisjaW5jbHVkZSAiZm5tYXRjaC5oIg0KKyNp bmNsdWRlICJnZGJfcmVnZXguaCINCg0KICBzdHJ1Y3Qgc2tpcGxpc3RfZW50 cnkNCiAgew0KICAgIGludCBudW1iZXI7DQoNCi0gIC8qIE5VTEwgaWYgdGhp cyBpc24ndCBhIHNraXBsaXN0IGVudHJ5IGZvciBhbiBlbnRpcmUgZmlsZS4N CisgIC8qIE5vbi16ZXJvIGlmIEZJTEUgaXMgYSBnbG9iLXN0eWxlIHBhdHRl cm4uDQorICAgICBPdGhlcmV3aXNlIGl0IGlzIHRoZSBwbGFpbiBmaWxlIG5h bWUgKHBvc3NpYmx5IHdpdGggZGlyZWN0b3JpZXMpLiAgKi8NCisgIGludCBm aWxlX2lzX2dsb2I7DQorDQorICAvKiBUaGUgbmFtZSBvZiB0aGUgZmlsZSBv ciBOVUxMLg0KICAgICAgIFRoZSBza2lwbGlzdCBlbnRyeSBvd25zIHRoaXMg cG9pbnRlci4gICovDQotICBjaGFyICpmaWxlbmFtZTsNCisgIGNoYXIgKmZp bGU7DQorDQorICAvKiBOb24temVybyBpZiBGVU5DVElPTiBpcyBhIHJlZ2V4 cC4NCisgICAgIE90aGVyd2lzZSBpdCBpcyBhIHBsYWluIGZ1bmN0aW9uIG5h bWUgKHBvc3NpYmx5IHdpdGggYXJndW1lbnRzLA0KKyAgICAgZm9yIEMrKyku ICAqLw0KKyAgaW50IGZ1bmN0aW9uX2lzX3JlZ2V4cDsNCg0KLSAgLyogVGhl IG5hbWUgb2YgdGhlIG1hcmtlZC1mb3Itc2tpcCBmdW5jdGlvbiwgaWYgdGhp cyBpcyBhIHNraXBsaXN0DQotICAgICBlbnRyeSBmb3IgYSBmdW5jdGlvbi4N CisgIC8qIFRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiBvciBOVUxMLg0KICAg ICAgIFRoZSBza2lwbGlzdCBlbnRyeSBvd25zIHRoaXMgcG9pbnRlci4gICov DQotICBjaGFyICpmdW5jdGlvbl9uYW1lOw0KKyAgY2hhciAqZnVuY3Rpb247 DQorDQorICAvKiBJZiB0aGlzIGlzIGEgZnVuY3Rpb24gcmVnZXhwLCB0aGUg Y29tcGlsZWQgZm9ybS4gICovDQorICByZWdleF90IGNvbXBpbGVkX2Z1bmN0 aW9uX3JlZ2V4cDsNCisNCisgIC8qIE5vbi16ZXJvIGlmIHRoZSBmdW5jdGlv biByZWdleHAgaGFzIGJlZW4gY29tcGlsZWQuICAqLw0KKyAgaW50IGNvbXBp bGVkX2Z1bmN0aW9uX3JlZ2V4cF9pc192YWxpZDsNCg0KICAgIGludCBlbmFi bGVkOw0KDQpAQCAtNTIsNyArNjgsNiBAQCBzdHJ1Y3Qgc2tpcGxpc3RfZW50 cnkNCiAgfTsNCg0KICBzdGF0aWMgdm9pZCBhZGRfc2tpcGxpc3RfZW50cnkg KHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZSk7DQotc3RhdGljIHZvaWQgc2tp cF9mdW5jdGlvbiAoY29uc3QgY2hhciAqbmFtZSk7DQoNCiAgc3RhdGljIHN0 cnVjdCBza2lwbGlzdF9lbnRyeSAqc2tpcGxpc3RfZW50cnlfY2hhaW47DQog IHN0YXRpYyBpbnQgc2tpcGxpc3RfZW50cnlfY291bnQ7DQpAQCAtNjUsMTAg KzgwLDYyIEBAIHN0YXRpYyBpbnQgc2tpcGxpc3RfZW50cnlfY291bnQ7DQog ICAgICAgICBFID8gKFRNUCA9IEUtPm5leHQsIDEpIDogMDsgICAgICAgXA0K ICAgICAgICAgRSA9IFRNUCkNCg0KKy8qIENyZWF0ZSBhIHNraXAgb2JqZWN0 LiAgKi8NCisNCitzdGF0aWMgc3RydWN0IHNraXBsaXN0X2VudHJ5ICoNCitt YWtlX3NraXBfZW50cnkgKGludCBmaWxlX2lzX2dsb2IsIGNvbnN0IGNoYXIg KmZpbGUsDQorCQkgaW50IGZ1bmN0aW9uX2lzX3JlZ2V4cCwgY29uc3QgY2hh ciAqZnVuY3Rpb24pDQorew0KKyAgc3RydWN0IHNraXBsaXN0X2VudHJ5ICpl ID0gWENORVcgKHN0cnVjdCBza2lwbGlzdF9lbnRyeSk7DQorDQorICBnZGJf YXNzZXJ0IChmaWxlICE9IE5VTEwgfHwgZnVuY3Rpb24gIT0gTlVMTCk7DQor ICBpZiAoZmlsZV9pc19nbG9iKQ0KKyAgICBnZGJfYXNzZXJ0IChmaWxlICE9 IE5VTEwpOw0KKyAgaWYgKGZ1bmN0aW9uX2lzX3JlZ2V4cCkNCisgICAgZ2Ri X2Fzc2VydCAoZnVuY3Rpb24gIT0gTlVMTCk7DQorDQorICBpZiAoZmlsZSAh PSBOVUxMKQ0KKyAgICBlLT5maWxlID0geHN0cmR1cCAoZmlsZSk7DQorICBp ZiAoZnVuY3Rpb24gIT0gTlVMTCkNCisgICAgZS0+ZnVuY3Rpb24gPSB4c3Ry ZHVwIChmdW5jdGlvbik7DQorICBlLT5maWxlX2lzX2dsb2IgPSBmaWxlX2lz X2dsb2I7DQorICBlLT5mdW5jdGlvbl9pc19yZWdleHAgPSBmdW5jdGlvbl9p c19yZWdleHA7DQorICBlLT5lbmFibGVkID0gMTsNCisNCisgIHJldHVybiBl Ow0KK30NCisNCisvKiBGcmVlIGEgc2tpcGxpc3QgZW50cnkuICAqLw0KKw0K K3N0YXRpYyB2b2lkDQorZnJlZV9za2lwbGlzdF9lbnRyeSAoc3RydWN0IHNr aXBsaXN0X2VudHJ5ICplKQ0KK3sNCisgIHhmcmVlIChlLT5maWxlKTsNCisg IHhmcmVlIChlLT5mdW5jdGlvbik7DQorICBpZiAoZS0+ZnVuY3Rpb25faXNf cmVnZXhwICYmIGUtPmNvbXBpbGVkX2Z1bmN0aW9uX3JlZ2V4cF9pc192YWxp ZCkNCisgICAgcmVnZnJlZSAoJmUtPmNvbXBpbGVkX2Z1bmN0aW9uX3JlZ2V4 cCk7DQorICB4ZnJlZSAoZSk7DQorfQ0KKw0KKy8qIFdyYXBwZXIgdG8gZnJl ZV9za2lwbGlzdF9lbnRyeSBmb3IgdXNlIGFzIGEgY2xlYW51cC4gICovDQor DQorc3RhdGljIHZvaWQNCitmcmVlX3NraXBsaXN0X2VudHJ5X2NsZWFudXAg KHZvaWQgKmUpDQorew0KKyAgZnJlZV9za2lwbGlzdF9lbnRyeSAoKHN0cnVj dCBza2lwbGlzdF9lbnRyeSAqKSBlKTsNCit9DQorDQorLyogQ3JlYXRlIGEg Y2xlYW51cCB0byBmcmVlIHNraXBsaXN0IGVudHJ5IEUuICAqLw0KKw0KK3N0 YXRpYyBzdHJ1Y3QgY2xlYW51cCAqDQorbWFrZV9mcmVlX3NraXBsaXN0X2Vu dHJ5X2NsZWFudXAgKHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZSkNCit7DQor ICByZXR1cm4gbWFrZV9jbGVhbnVwIChmcmVlX3NraXBsaXN0X2VudHJ5X2Ns ZWFudXAsIGUpOw0KK30NCisNCiAgc3RhdGljIHZvaWQNCiAgc2tpcF9maWxl X2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQ0KICB7DQotICBz dHJ1Y3Qgc2tpcGxpc3RfZW50cnkgKmU7DQogICAgc3RydWN0IHN5bXRhYiAq c3ltdGFiOw0KICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lID0gTlVMTDsNCg0K QEAgLTg1LDM3ICsxNTIsMzEgQEAgc2tpcF9maWxlX2NvbW1hbmQgKGNoYXIg KmFyZywgaW50IGZyb21fdHR5KQ0KICAgICAgICBmaWxlbmFtZSA9IHN5bXRh Yl90b19mdWxsbmFtZSAoc3ltdGFiKTsNCiAgICAgIH0NCiAgICBlbHNlDQot ICAgIHsNCi0gICAgICBzeW10YWIgPSBsb29rdXBfc3ltdGFiIChhcmcpOw0K LSAgICAgIGlmIChzeW10YWIgPT0gTlVMTCkNCi0Jew0KLQkgIGZwcmludGZf ZmlsdGVyZWQgKGdkYl9zdGRlcnIsIF8oIk5vIHNvdXJjZSBmaWxlIG5hbWVk ICVzLlxuIiksIGFyZyk7DQotCSAgaWYgKCFucXVlcnkgKF8oIlwNCi1JZ25v cmUgZmlsZSBwZW5kaW5nIGZ1dHVyZSBzaGFyZWQgbGlicmFyeSBsb2FkPyAi KSkpDQotCSAgICByZXR1cm47DQotCX0NCi0gICAgICAvKiBEbyBub3QgdXNl IFNZTVRBQidzIGZpbGVuYW1lLCBsYXRlciBsb2FkZWQgc2hhcmVkIGxpYnJh cmllcyBtYXkgIA0KbWF0Y2gNCi0gICAgICAgICBnaXZlbiBBUkcgYnV0IG5v dCBTWU1UQUIncyBmaWxlbmFtZS4gICovDQotICAgICAgZmlsZW5hbWUgPSBh cmc7DQotICAgIH0NCisgICAgZmlsZW5hbWUgPSBhcmc7DQoNCi0gIGUgPSBY Q05FVyAoc3RydWN0IHNraXBsaXN0X2VudHJ5KTsNCi0gIGUtPmZpbGVuYW1l ID0geHN0cmR1cCAoZmlsZW5hbWUpOw0KLSAgZS0+ZW5hYmxlZCA9IDE7DQot DQotICBhZGRfc2tpcGxpc3RfZW50cnkgKGUpOw0KKyAgYWRkX3NraXBsaXN0 X2VudHJ5IChtYWtlX3NraXBfZW50cnkgKDAsIGZpbGVuYW1lLCAwLCBOVUxM KSk7DQoNCiAgICBwcmludGZfZmlsdGVyZWQgKF8oIkZpbGUgJXMgd2lsbCBi ZSBza2lwcGVkIHdoZW4gc3RlcHBpbmcuXG4iKSwgIA0KZmlsZW5hbWUpOw0K ICB9DQoNCisvKiBDcmVhdGUgYSBza2lwbGlzdCBlbnRyeSBmb3IgdGhlIGdp dmVuIGZ1bmN0aW9uIE5BTUUgYW5kIGFkZCBpdCB0byB0aGUNCisgICBsaXN0 LiAgKi8NCisNCiAgc3RhdGljIHZvaWQNCi1za2lwX2Z1bmN0aW9uX2NvbW1h bmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQ0KK3NraXBfZnVuY3Rpb24g KGNvbnN0IGNoYXIgKm5hbWUpDQogIHsNCi0gIGNvbnN0IGNoYXIgKm5hbWUg PSBOVUxMOw0KKyAgYWRkX3NraXBsaXN0X2VudHJ5IChtYWtlX3NraXBfZW50 cnkgKDAsIE5VTEwsIDAsIG5hbWUpKTsNCisNCisgIHByaW50Zl9maWx0ZXJl ZCAoXygiRnVuY3Rpb24gJXMgd2lsbCBiZSBza2lwcGVkIHdoZW4gc3RlcHBp bmcuXG4iKSwgIA0KbmFtZSk7DQorfQ0KDQorc3RhdGljIHZvaWQNCitza2lw X2Z1bmN0aW9uX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQ0K K3sNCiAgICAvKiBEZWZhdWx0IHRvIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGlm IG5vIGFyZ3VtZW50IGlzIGdpdmVuLiAgKi8NCiAgICBpZiAoYXJnID09IE5V TEwpDQogICAgICB7DQorICAgICAgY29uc3QgY2hhciAqbmFtZSA9IE5VTEw7 DQogICAgICAgIENPUkVfQUREUiBwYzsNCg0KICAgICAgICBpZiAoIWxhc3Rf ZGlzcGxheWVkX3NhbF9pc192YWxpZCAoKSkNCkBAIC0xMjgsMjUgKzE4OSwx NjkgQEAgc2tpcF9mdW5jdGlvbl9jb21tYW5kIChjaGFyICphcmcsIGludCBm cm9tX3R0eSkNCiAgCQkgIHBhZGRyZXNzIChnZXRfY3VycmVudF9hcmNoICgp LCBwYykpOw0KICAJfQ0KICAgICAgICBza2lwX2Z1bmN0aW9uIChuYW1lKTsN CisgICAgICByZXR1cm47DQogICAgICB9DQotICBlbHNlDQorDQorICBza2lw X2Z1bmN0aW9uIChhcmcpOw0KK30NCisNCisvKiBDb21waWxlIHRoZSByZWdl eHAgaW4gRS4NCisgICBBbiBlcnJvciBpcyB0aHJvd24gaWYgdGhlcmUncyBh biBlcnJvci4NCisgICBNRVNTQUdFIGlzIHVzZWQgYXMgYSBwcmVmaXggb2Yg dGhlIGVycm9yIG1lc3NhZ2UuICAqLw0KKw0KK3N0YXRpYyB2b2lkDQorY29t cGlsZV9za2lwX3JlZ2V4cCAoc3RydWN0IHNraXBsaXN0X2VudHJ5ICplLCBj b25zdCBjaGFyICptZXNzYWdlKQ0KK3sNCisgIGludCBjb2RlOw0KKyAgaW50 IGZsYWdzID0gUkVHX05PU1VCOw0KKw0KKyNpZmRlZiBSRUdfRVhURU5ERUQN CisgIGZsYWdzIHw9IFJFR19FWFRFTkRFRDsNCisjZW5kaWYNCisNCisgIGdk Yl9hc3NlcnQgKGUtPmZ1bmN0aW9uX2lzX3JlZ2V4cCAmJiBlLT5mdW5jdGlv biAhPSBOVUxMKTsNCisNCisgIGNvZGUgPSByZWdjb21wICgmZS0+Y29tcGls ZWRfZnVuY3Rpb25fcmVnZXhwLCBlLT5mdW5jdGlvbiwgZmxhZ3MpOw0KKyAg aWYgKGNvZGUgIT0gMCkNCiAgICAgIHsNCi0gICAgICBpZiAobG9va3VwX3N5 bWJvbCAoYXJnLCBOVUxMLCBWQVJfRE9NQUlOLCBOVUxMKS5zeW1ib2wgPT0g TlVMTCkNCi0gICAgICAgIHsNCi0JICBmcHJpbnRmX2ZpbHRlcmVkIChnZGJf c3RkZXJyLA0KLQkJCSAgICBfKCJObyBmdW5jdGlvbiBmb3VuZCBuYW1lZCAl cy5cbiIpLCBhcmcpOw0KKyAgICAgIGNoYXIgKmVyciA9IGdldF9yZWdjb21w X2Vycm9yIChjb2RlLCAmZS0+Y29tcGlsZWRfZnVuY3Rpb25fcmVnZXhwKTsN Cg0KLQkgIGlmIChucXVlcnkgKF8oIlwNCi1JZ25vcmUgZnVuY3Rpb24gcGVu ZGluZyBmdXR1cmUgc2hhcmVkIGxpYnJhcnkgbG9hZD8gIikpKQ0KLQkgICAg ew0KLQkgICAgICAvKiBBZGQgdGhlIHVudmVyaWZpZWQgc2tpcGxpc3QgZW50 cnkuICAqLw0KLQkgICAgICBza2lwX2Z1bmN0aW9uIChhcmcpOw0KLQkgICAg fQ0KKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGVycik7DQorICAgICAg ZXJyb3IgKF8oIiVzOiAlcyIpLCBtZXNzYWdlLCBlcnIpOw0KKyAgICB9DQor ICBlLT5jb21waWxlZF9mdW5jdGlvbl9yZWdleHBfaXNfdmFsaWQgPSAxOw0K K30NCisNCisvKiBQcm9jZXNzICJza2lwIC4uLiIgdGhhdCBkb2VzIG5vdCBt YXRjaCAic2tpcCBmaWxlIiBvciAic2tpcCBmdW5jdGlvbiIuICAgDQoqLw0K Kw0KK3N0YXRpYyB2b2lkDQorc2tpcF9jb21tYW5kIChjaGFyICphcmcsIGlu dCBmcm9tX3R0eSkNCit7DQorICBjb25zdCBjaGFyICpmaWxlID0gTlVMTDsN CisgIGNvbnN0IGNoYXIgKmdmaWxlID0gTlVMTDsNCisgIGNvbnN0IGNoYXIg KmZ1bmN0aW9uID0gTlVMTDsNCisgIGNvbnN0IGNoYXIgKnJmdW5jdGlvbiA9 IE5VTEw7DQorICBjaGFyICoqYXJndjsNCisgIHN0cnVjdCBjbGVhbnVwICpj bGVhbnVwczsNCisgIHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZTsNCisgIGlu dCBpOw0KKw0KKyAgaWYgKGFyZyA9PSBOVUxMKQ0KKyAgICB7DQorICAgICAg c2tpcF9mdW5jdGlvbl9jb21tYW5kIChhcmcsIGZyb21fdHR5KTsNCisgICAg ICByZXR1cm47DQorICAgIH0NCisNCisgIGFyZ3YgPSBidWlsZGFyZ3YgKGFy Zyk7DQorICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cF9mcmVlYXJndiAoYXJn dik7DQorDQorICBmb3IgKGkgPSAwOyBhcmd2W2ldICE9IE5VTEw7ICsraSkN CisgICAgew0KKyAgICAgIGNvbnN0IGNoYXIgKnAgPSBhcmd2W2ldOw0KKyAg ICAgIGNvbnN0IGNoYXIgKnZhbHVlID0gYXJndltpICsgMV07DQorDQorICAg ICAgaWYgKHN0cmNtcCAocCwgIi1maSIpID09IDANCisJICB8fCBzdHJjbXAg KHAsICItZmlsZSIpID09IDApDQorCXsNCisJICBpZiAodmFsdWUgPT0gTlVM TCkNCisJICAgIGVycm9yIChfKCJNaXNzaW5nIHZhbHVlIGZvciAlcyBvcHRp b24uIiksIHApOw0KKwkgIGZpbGUgPSB2YWx1ZTsNCisJICArK2k7DQorCX0N CisgICAgICBlbHNlIGlmIChzdHJjbXAgKHAsICItZ2ZpIikgPT0gMA0KKwkg ICAgICAgfHwgc3RyY21wIChwLCAiLWdmaWxlIikgPT0gMCkNCisJew0KKwkg IGlmICh2YWx1ZSA9PSBOVUxMKQ0KKwkgICAgZXJyb3IgKF8oIk1pc3Npbmcg dmFsdWUgZm9yICVzIG9wdGlvbi4iKSwgcCk7DQorCSAgZ2ZpbGUgPSB2YWx1 ZTsNCisJICArK2k7DQorCX0NCisgICAgICBlbHNlIGlmIChzdHJjbXAgKHAs ICItZnUiKSA9PSAwDQorCSAgICAgICB8fCBzdHJjbXAgKHAsICItZnVuY3Rp b24iKSA9PSAwKQ0KKwl7DQorCSAgaWYgKHZhbHVlID09IE5VTEwpDQorCSAg ICBlcnJvciAoXygiTWlzc2luZyB2YWx1ZSBmb3IgJXMgb3B0aW9uLiIpLCBw KTsNCisJICBmdW5jdGlvbiA9IHZhbHVlOw0KKwkgICsraTsNCisJfQ0KKyAg ICAgIGVsc2UgaWYgKHN0cmNtcCAocCwgIi1yZnUiKSA9PSAwDQorCSAgICAg ICB8fCBzdHJjbXAgKHAsICItcmZ1bmN0aW9uIikgPT0gMCkNCisJew0KKwkg IGlmICh2YWx1ZSA9PSBOVUxMKQ0KKwkgICAgZXJyb3IgKF8oIk1pc3Npbmcg dmFsdWUgZm9yICVzIG9wdGlvbi4iKSwgcCk7DQorCSAgcmZ1bmN0aW9uID0g dmFsdWU7DQorCSAgKytpOw0KKwl9DQorICAgICAgZWxzZSBpZiAoKnAgPT0g Jy0nKQ0KKwllcnJvciAoXygiSW52YWxpZCBza2lwIG9wdGlvbjogJXMiKSwg cCk7DQorICAgICAgZWxzZSBpZiAoaSA9PSAwKQ0KKwl7DQorCSAgLyogQXNz dW1lIHRoZSB1c2VyIGVudGVyZWQgInNraXAgRlVOQ1RJT04tTkFNRSIuDQor CSAgICAgRlVOQ1RJT04tTkFNRSBtYXkgYmUgYGZvbyAoaW50KScsIGFuZCB0 aGVyZWZvcmUgd2UgcGFzcyB0aGUNCisJICAgICBjb21wbGV0ZSBvcmlnaW5h bCBhcmcgdG8gc2tpcF9mdW5jdGlvbiBjb21tYW5kIGFzIGlmIHRoZSB1c2Vy DQorCSAgICAgdHlwZWQgInNraXAgZnVuY3Rpb24gYXJnIi4gICovDQorCSAg ZG9fY2xlYW51cHMgKGNsZWFudXBzKTsNCisJICBza2lwX2Z1bmN0aW9uX2Nv bW1hbmQgKGFyZywgZnJvbV90dHkpOw0KICAJICByZXR1cm47DQogIAl9DQor ICAgICAgZWxzZQ0KKwllcnJvciAoXygiSW52YWxpZCBhcmd1bWVudDogJXMi KSwgcCk7DQorICAgIH0NCisNCisgIGlmIChmaWxlICE9IE5VTEwgJiYgZ2Zp bGUgIT0gTlVMTCkNCisgICAgZXJyb3IgKF8oIkNhbm5vdCBzcGVjaWZ5IGJv dGggLWZpbGUgYW5kIC1nZmlsZS4iKSk7DQorDQorICBpZiAoZnVuY3Rpb24g IT0gTlVMTCAmJiByZnVuY3Rpb24gIT0gTlVMTCkNCisgICAgZXJyb3IgKF8o IkNhbm5vdCBzcGVjaWZ5IGJvdGggLWZ1bmN0aW9uIGFuZCAtcmZ1bmN0aW9u LiIpKTsNCisNCisgIC8qIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBhcyAic2tp cCIgYnkgaXRzZWxmIGdldHMgcHVudGVkIHRvDQorICAgICBza2lwX2Z1bmN0 aW9uX2NvbW1hbmQuICAqLw0KKyAgZ2RiX2Fzc2VydCAoZmlsZSAhPSBOVUxM IHx8IGdmaWxlICE9IE5VTEwNCisJICAgICAgfHwgZnVuY3Rpb24gIT0gTlVM TCB8fCByZnVuY3Rpb24gIT0gTlVMTCk7DQorDQorICBlID0gbWFrZV9za2lw X2VudHJ5IChnZmlsZSAhPSBOVUxMLCBmaWxlID8gZmlsZSA6IGdmaWxlLA0K KwkJICAgICAgIHJmdW5jdGlvbiAhPSBOVUxMLCBmdW5jdGlvbiA/IGZ1bmN0 aW9uIDogcmZ1bmN0aW9uKTsNCisgIGlmIChyZnVuY3Rpb24gIT0gTlVMTCkN CisgICAgew0KKyAgICAgIHN0cnVjdCBjbGVhbnVwICpyZl9jbGVhbnVwcyA9 IG1ha2VfZnJlZV9za2lwbGlzdF9lbnRyeV9jbGVhbnVwIChlKTsNCg0KLSAg ICAgIHNraXBfZnVuY3Rpb24gKGFyZyk7DQorICAgICAgY29tcGlsZV9za2lw X3JlZ2V4cCAoZSwgXygicmVnZXhwIikpOw0KKyAgICAgIGRpc2NhcmRfY2xl YW51cHMgKHJmX2NsZWFudXBzKTsNCiAgICAgIH0NCisgIGFkZF9za2lwbGlz dF9lbnRyeSAoZSk7DQorDQorICAvKiBJMThOIGNvbmNlcm5zIGRyaXZlIHNv bWUgb2YgdGhlIGNob2ljZXMgaGVyZSAod2UgY2FuJ3QgcGllY2UgdG9nZXRo ZXINCisgICAgIHRoZSBvdXRwdXQgdG9vIG11Y2gpLiAgT1RPSCB3ZSB3YW50 IHRvIGtlZXAgdGhpcyBzaW1wbGUuICBUaGVyZWZvcmUgIA0KdGhlDQorICAg ICBvbmx5IHBvbGlzaCB3ZSBhZGQgdG8gdGhlIG91dHB1dCBpcyB0byBhcHBl bmQgIihzKSIgdG8gIkZpbGUiIG9yDQorICAgICAiRnVuY3Rpb24iIGlmIHRo ZXkncmUgYSBnbG9iL3JlZ2V4cC4gICovDQorICB7DQorICAgIGNvbnN0IGNo YXIgKmZpbGVfdG9fcHJpbnQgPSBmaWxlICE9IE5VTEwgPyBmaWxlIDogZ2Zp bGU7DQorICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX3RvX3ByaW50ID0gZnVu Y3Rpb24gIT0gTlVMTCA/IGZ1bmN0aW9uIDogIA0KcmZ1bmN0aW9uOw0KKyAg ICBjb25zdCBjaGFyICpmaWxlX3RleHQgPSBnZmlsZSAhPSBOVUxMID8gXygi RmlsZShzKSIpIDogXygiRmlsZSIpOw0KKyAgICBjb25zdCBjaGFyICpsb3dl cl9maWxlX3RleHQgPSBnZmlsZSAhPSBOVUxMID8gXygiZmlsZShzKSIpIDog XygiZmlsZSIpOw0KKyAgICBjb25zdCBjaGFyICpmdW5jdGlvbl90ZXh0DQor ICAgICAgPSByZnVuY3Rpb24gIT0gTlVMTCA/IF8oIkZ1bmN0aW9uKHMpIikg OiBfKCJGdW5jdGlvbiIpOw0KKw0KKyAgICBpZiAoZnVuY3Rpb25fdG9fcHJp bnQgPT0gTlVMTCkNCisgICAgICB7DQorCXByaW50Zl9maWx0ZXJlZCAoXygi JXMgJXMgd2lsbCBiZSBza2lwcGVkIHdoZW4gc3RlcHBpbmcuXG4iKSwNCisJ CQkgZmlsZV90ZXh0LCBmaWxlX3RvX3ByaW50KTsNCisgICAgICB9DQorICAg IGVsc2UgaWYgKGZpbGVfdG9fcHJpbnQgPT0gTlVMTCkNCisgICAgICB7DQor CXByaW50Zl9maWx0ZXJlZCAoXygiJXMgJXMgd2lsbCBiZSBza2lwcGVkIHdo ZW4gc3RlcHBpbmcuXG4iKSwNCisJCQkgZnVuY3Rpb25fdGV4dCwgZnVuY3Rp b25fdG9fcHJpbnQpOw0KKyAgICAgIH0NCisgICAgZWxzZQ0KKyAgICAgIHsN CisJcHJpbnRmX2ZpbHRlcmVkIChfKCIlcyAlcyBpbiAlcyAlcyB3aWxsIGJl IHNraXBwZWQiDQorCQkJICAgIiB3aGVuIHN0ZXBwaW5nLlxuIiksDQorCQkJ IGZ1bmN0aW9uX3RleHQsIGZ1bmN0aW9uX3RvX3ByaW50LA0KKwkJCSBsb3dl cl9maWxlX3RleHQsIGZpbGVfdG9fcHJpbnQpOw0KKyAgICAgIH0NCisgIH0N CisNCisgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7DQogIH0NCg0KICBzdGF0 aWMgdm9pZA0KQEAgLTE3NywxNCArMzgyLDE3IEBAIE5vdCBza2lwcGluZyBh bnkgZmlsZXMgb3IgZnVuY3Rpb25zLlxuIikpOw0KICAgICAgICByZXR1cm47 DQogICAgICB9DQoNCi0gIHRibF9jaGFpbiA9IG1ha2VfY2xlYW51cF91aV9v dXRfdGFibGVfYmVnaW5fZW5kIChjdXJyZW50X3Vpb3V0LCA0LA0KKyAgdGJs X2NoYWluID0gbWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9lbmQg KGN1cnJlbnRfdWlvdXQsIDYsDQogIAkJCQkJCSAgIG51bV9wcmludGFibGVf ZW50cmllcywNCiAgCQkJCQkJICAgIlNraXBsaXN0VGFibGUiKTsNCg0KLSAg dWlfb3V0X3RhYmxlX2hlYWRlciAoY3VycmVudF91aW91dCwgNywgdWlfbGVm dCwgIm51bWJlciIsICJOdW0iKTsgICAgICAgDQovKiAxICovDQotICB1aV9v dXRfdGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0LCAxNCwgdWlfbGVmdCwg InR5cGUiLCAiVHlwZSIpOyAgICAgICANCi8qIDIgKi8NCi0gIHVpX291dF90 YWJsZV9oZWFkZXIgKGN1cnJlbnRfdWlvdXQsIDMsIHVpX2xlZnQsICJlbmFi bGVkIiwgIkVuYiIpOyAgICAgIA0KLyogMyAqLw0KLSAgdWlfb3V0X3RhYmxl X2hlYWRlciAoY3VycmVudF91aW91dCwgNDAsIHVpX25vYWxpZ24sICJ3aGF0 IiwgIldoYXQiKTsgICAgDQovKiA0ICovDQorICB1aV9vdXRfdGFibGVfaGVh ZGVyIChjdXJyZW50X3Vpb3V0LCA1LCB1aV9sZWZ0LCAibnVtYmVyIiwgIk51 bSIpOyAgIC8qIDEgIA0KKi8NCisgIHVpX291dF90YWJsZV9oZWFkZXIgKGN1 cnJlbnRfdWlvdXQsIDMsIHVpX2xlZnQsICJlbmFibGVkIiwgIkVuYiIpOyAg LyogMiAgDQoqLw0KKyAgdWlfb3V0X3RhYmxlX2hlYWRlciAoY3VycmVudF91 aW91dCwgNCwgdWlfcmlnaHQsICJyZWdleHAiLCAiR2xvYiIpOyAvKiAzICAN CiovDQorICB1aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0LCAy MCwgdWlfbGVmdCwgImZpbGUiLCAiRmlsZSIpOyAgIC8qIDQgIA0KKi8NCisg IHVpX291dF90YWJsZV9oZWFkZXIgKGN1cnJlbnRfdWlvdXQsIDIsIHVpX3Jp Z2h0LCAicmVnZXhwIiwgIlJFIik7ICAgLyogNSAgDQoqLw0KKyAgdWlfb3V0 X3RhYmxlX2hlYWRlciAoY3VycmVudF91aW91dCwgNDAsIHVpX25vYWxpZ24s DQorCQkgICAgICAgImZ1bmN0aW9uIiwgIkZ1bmN0aW9uIik7IC8qIDYgKi8N CiAgICB1aV9vdXRfdGFibGVfYm9keSAoY3VycmVudF91aW91dCk7DQoNCiAg ICBBTExfU0tJUExJU1RfRU5UUklFUyAoZSkNCkBAIC0xOTcsMjUgKzQwNSwy NyBAQCBOb3Qgc2tpcHBpbmcgYW55IGZpbGVzIG9yIGZ1bmN0aW9ucy5cbiIp KTsNCg0KICAgICAgICBlbnRyeV9jaGFpbiA9IG1ha2VfY2xlYW51cF91aV9v dXRfdHVwbGVfYmVnaW5fZW5kIChjdXJyZW50X3Vpb3V0LA0KICAJCQkJCQkJ ICJibGtsc3QtZW50cnkiKTsNCi0gICAgICB1aV9vdXRfZmllbGRfaW50IChj dXJyZW50X3Vpb3V0LCAibnVtYmVyIiwgZS0+bnVtYmVyKTsgICAgICAgICAg ICAgIA0KLyogMSAqLw0KKyAgICAgIHVpX291dF9maWVsZF9pbnQgKGN1cnJl bnRfdWlvdXQsICJudW1iZXIiLCBlLT5udW1iZXIpOyAvKiAxICovDQoNCi0g ICAgICBpZiAoZS0+ZnVuY3Rpb25fbmFtZSAhPSBOVUxMKQ0KLQl1aV9vdXRf ZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAidHlwZSIsICJmdW5jdGlv biIpOyAgICAgICAgIC8qIDIgKi8NCi0gICAgICBlbHNlIGlmIChlLT5maWxl bmFtZSAhPSBOVUxMKQ0KLQl1aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50 X3Vpb3V0LCAidHlwZSIsICJmaWxlIik7ICAgICAgICAgICAgIC8qIDIgKi8N CisgICAgICBpZiAoZS0+ZW5hYmxlZCkNCisJdWlfb3V0X2ZpZWxkX3N0cmlu ZyAoY3VycmVudF91aW91dCwgImVuYWJsZWQiLCAieSIpOyAvKiAyICovDQog ICAgICAgIGVsc2UNCi0JaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJ TkVfXywgXygiXA0KLVNraXBsaXN0IGVudHJ5IHNob3VsZCBoYXZlIGVpdGhl ciBhIGZpbGVuYW1lIG9yIGEgZnVuY3Rpb24gbmFtZS4iKSk7DQorCXVpX291 dF9maWVsZF9zdHJpbmcgKGN1cnJlbnRfdWlvdXQsICJlbmFibGVkIiwgIm4i KTsgLyogMiAqLw0KDQotICAgICAgaWYgKGUtPmVuYWJsZWQpDQotCXVpX291 dF9maWVsZF9zdHJpbmcgKGN1cnJlbnRfdWlvdXQsICJlbmFibGVkIiwgInki KTsgICAgICAgICAgICAgLyogMyAqLw0KKyAgICAgIGlmIChlLT5maWxlX2lz X2dsb2IpDQorCXVpX291dF9maWVsZF9zdHJpbmcgKGN1cnJlbnRfdWlvdXQs ICJyZWdleHAiLCAieSIpOyAvKiAzICovDQogICAgICAgIGVsc2UNCi0JdWlf b3V0X2ZpZWxkX3N0cmluZyAoY3VycmVudF91aW91dCwgImVuYWJsZWQiLCAi biIpOyAgICAgICAgICAgICAvKiAzICovDQorCXVpX291dF9maWVsZF9zdHJp bmcgKGN1cnJlbnRfdWlvdXQsICJyZWdleHAiLCAibiIpOyAvKiAzICovDQoN Ci0gICAgICBpZiAoZS0+ZnVuY3Rpb25fbmFtZSAhPSBOVUxMKQ0KLQl1aV9v dXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAid2hhdCIsIGUtPmZ1 bmN0aW9uX25hbWUpOwkgLyogNCAqLw0KLSAgICAgIGVsc2UgaWYgKGUtPmZp bGVuYW1lICE9IE5VTEwpDQotCXVpX291dF9maWVsZF9zdHJpbmcgKGN1cnJl bnRfdWlvdXQsICJ3aGF0IiwgZS0+ZmlsZW5hbWUpOwkgLyogNCAqLw0KKyAg ICAgIHVpX291dF9maWVsZF9zdHJpbmcgKGN1cnJlbnRfdWlvdXQsICJmaWxl IiwNCisJCQkgICBlLT5maWxlID8gZS0+ZmlsZSA6ICI8bm9uZT4iKTsgLyog NCAqLw0KKyAgICAgIGlmIChlLT5mdW5jdGlvbl9pc19yZWdleHApDQorCXVp X291dF9maWVsZF9zdHJpbmcgKGN1cnJlbnRfdWlvdXQsICJyZWdleHAiLCAi eSIpOyAvKiA1ICovDQorICAgICAgZWxzZQ0KKwl1aV9vdXRfZmllbGRfc3Ry aW5nIChjdXJyZW50X3Vpb3V0LCAicmVnZXhwIiwgIm4iKTsgLyogNSAqLw0K Kw0KKyAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKGN1cnJlbnRfdWlvdXQs ICJmdW5jdGlvbiIsDQorCQkJICAgZS0+ZnVuY3Rpb24gPyBlLT5mdW5jdGlv biA6ICI8bm9uZT4iKTsgLyogNiAqLw0KDQogICAgICAgIHVpX291dF90ZXh0 IChjdXJyZW50X3Vpb3V0LCAiXG4iKTsNCiAgICAgICAgZG9fY2xlYW51cHMg KGVudHJ5X2NoYWluKTsNCkBAIC0yNzMsOSArNDgzLDcgQEAgc2tpcF9kZWxl dGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpDQogIAllbHNl DQogIAkgIHNraXBsaXN0X2VudHJ5X2NoYWluID0gZS0+bmV4dDsNCg0KLQl4 ZnJlZSAoZS0+ZnVuY3Rpb25fbmFtZSk7DQotCXhmcmVlIChlLT5maWxlbmFt ZSk7DQotCXhmcmVlIChlKTsNCisJZnJlZV9za2lwbGlzdF9lbnRyeSAoZSk7 DQogICAgICAgICAgZm91bmQgPSAxOw0KICAgICAgICB9DQogICAgICBlbHNl DQpAQCAtMjg3LDIyICs0OTUsNiBAQCBza2lwX2RlbGV0ZV9jb21tYW5kIChj aGFyICphcmcsIGludCBmcm9tX3R0eSkNCiAgICAgIGVycm9yIChfKCJObyBz a2lwbGlzdCBlbnRyaWVzIGZvdW5kIHdpdGggbnVtYmVyICVzLiIpLCBhcmcp Ow0KICB9DQoNCi0vKiBDcmVhdGUgYSBza2lwbGlzdCBlbnRyeSBmb3IgdGhl IGdpdmVuIGZ1bmN0aW9uIE5BTUUgYW5kIGFkZCBpdCB0byB0aGUNCi0gICBs aXN0LiAgKi8NCi0NCi1zdGF0aWMgdm9pZA0KLXNraXBfZnVuY3Rpb24gKGNv bnN0IGNoYXIgKm5hbWUpDQotew0KLSAgc3RydWN0IHNraXBsaXN0X2VudHJ5 ICplID0gWENORVcgKHN0cnVjdCBza2lwbGlzdF9lbnRyeSk7DQotDQotICBl LT5lbmFibGVkID0gMTsNCi0gIGUtPmZ1bmN0aW9uX25hbWUgPSB4c3RyZHVw IChuYW1lKTsNCi0NCi0gIGFkZF9za2lwbGlzdF9lbnRyeSAoZSk7DQotDQot ICBwcmludGZfZmlsdGVyZWQgKF8oIkZ1bmN0aW9uICVzIHdpbGwgYmUgc2tp cHBlZCB3aGVuIHN0ZXBwaW5nLlxuIiksICANCm5hbWUpOw0KLX0NCi0NCiAg LyogQWRkIHRoZSBnaXZlbiBza2lwbGlzdCBlbnRyeSB0byBvdXIgbGlzdCwg YW5kIHNldCB0aGUgZW50cnkncyBudW1iZXIuICAgDQoqLw0KDQogIHN0YXRp YyB2b2lkDQpAQCAtMzI2LDYgKzUxOCw5OCBAQCBhZGRfc2tpcGxpc3RfZW50 cnkgKHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZSkNCiAgICAgIH0NCiAgfQ0K DQorLyogUmV0dXJuIG5vbi16ZXJvIGlmIHdlJ3JlIHN0b3BwZWQgYXQgYSBm aWxlIHRvIGJlIHNraXBwZWQuICAqLw0KKw0KK3N0YXRpYyBpbnQNCitza2lw X2ZpbGVfcCAoc3RydWN0IHNraXBsaXN0X2VudHJ5ICplLA0KKwkgICAgIGNv bnN0IHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgKmZ1bmN0aW9uX3NhbCkNCit7 DQorICBnZGJfYXNzZXJ0IChlLT5maWxlICE9IE5VTEwgJiYgIWUtPmZpbGVf aXNfZ2xvYik7DQorDQorICBpZiAoZnVuY3Rpb25fc2FsLT5zeW10YWIgPT0g TlVMTCkNCisgICAgcmV0dXJuIDA7DQorDQorICAvKiBDaGVjayBmaXJzdCBz b2xlIFNZTVRBQi0+RklMRU5BTUUuICBJdCBtYXkgbm90IGJlIGEgc3Vic3Ry aW5nIG9mDQorICAgICBzeW10YWJfdG9fZnVsbG5hbWUgYXMgaXQgbWF5IGNv bnRhaW4gIi4vIiBldGMuICAqLw0KKyAgaWYgKGNvbXBhcmVfZmlsZW5hbWVz X2Zvcl9zZWFyY2ggKGZ1bmN0aW9uX3NhbC0+c3ltdGFiLT5maWxlbmFtZSwg IA0KZS0+ZmlsZSkpDQorICAgIHJldHVybiAxOw0KKw0KKyAgLyogQmVmb3Jl IHdlIGludm9rZSByZWFscGF0aCwgd2hpY2ggY2FuIGdldCBleHBlbnNpdmUg d2hlbiBtYW55DQorICAgICBmaWxlcyBhcmUgaW52b2x2ZWQsIGRvIGEgcXVp Y2sgY29tcGFyaXNvbiBvZiB0aGUgYmFzZW5hbWVzLiAgKi8NCisgIGlmICgh YmFzZW5hbWVzX21heV9kaWZmZXINCisgICAgICAmJiBmaWxlbmFtZV9jbXAg KGxiYXNlbmFtZSAoZnVuY3Rpb25fc2FsLT5zeW10YWItPmZpbGVuYW1lKSwN CisJCSAgICAgICBsYmFzZW5hbWUgKGUtPmZpbGUpKSAhPSAwKQ0KKyAgICBy ZXR1cm4gMDsNCisNCisgIC8qIE5vdGU6IHN5bXRhYl90b19mdWxsbmFtZSBj YWNoZXMgaXRzIHJlc3VsdCwgdGh1cyB3ZSBkb24ndCBoYXZlIHRvLiAgKi8N CisgIHsNCisgICAgY29uc3QgY2hhciAqZnVsbG5hbWUgPSBzeW10YWJfdG9f ZnVsbG5hbWUgKGZ1bmN0aW9uX3NhbC0+c3ltdGFiKTsNCisNCisgICAgaWYg KGNvbXBhcmVfZmlsZW5hbWVzX2Zvcl9zZWFyY2ggKGZ1bGxuYW1lLCBlLT5m aWxlKSkNCisgICAgICByZXR1cm4gMTsNCisgIH0NCisNCisgIHJldHVybiAw Ow0KK30NCisNCisvKiBSZXR1cm4gbm9uLXplcm8gaWYgd2UncmUgc3RvcHBl ZCBhdCBhIGdsb2JiZWQgZmlsZSB0byBiZSBza2lwcGVkLiAgKi8NCisNCitz dGF0aWMgaW50DQorc2tpcF9nZmlsZV9wIChzdHJ1Y3Qgc2tpcGxpc3RfZW50 cnkgKmUsDQorCSAgICAgIGNvbnN0IHN0cnVjdCBzeW10YWJfYW5kX2xpbmUg KmZ1bmN0aW9uX3NhbCkNCit7DQorICBnZGJfYXNzZXJ0IChlLT5maWxlICE9 IE5VTEwgJiYgZS0+ZmlsZV9pc19nbG9iKTsNCisNCisgIGlmIChmdW5jdGlv bl9zYWwtPnN5bXRhYiA9PSBOVUxMKQ0KKyAgICByZXR1cm4gMDsNCisNCisg IC8qIENoZWNrIGZpcnN0IHNvbGUgU1lNVEFCLT5GSUxFTkFNRS4gIEl0IG1h eSBub3QgYmUgYSBzdWJzdHJpbmcgb2YNCisgICAgIHN5bXRhYl90b19mdWxs bmFtZSBhcyBpdCBtYXkgY29udGFpbiAiLi8iIGV0Yy4gICovDQorICBpZiAo Z2RiX2ZpbGVuYW1lX2ZubWF0Y2ggKGUtPmZpbGUsIGZ1bmN0aW9uX3NhbC0+ c3ltdGFiLT5maWxlbmFtZSwNCisJCQkgICAgRk5NX0ZJTEVfTkFNRSB8IEZO TV9OT0VTQ0FQRSkgPT0gMCkNCisgICAgcmV0dXJuIDE7DQorDQorICAvKiBC ZWZvcmUgd2UgaW52b2tlIHN5bXRhYl90b19mdWxsbmFtZSwgd2hpY2ggaXMg ZXhwZW5zaXZlLCBkbyBhIHF1aWNrDQorICAgICBjb21wYXJpc29uIG9mIHRo ZSBiYXNlbmFtZXMuDQorICAgICBOb3RlIHRoYXQgd2UgYXNzdW1lIHRoYXQg bGJhc2VuYW1lIHdvcmtzIHdpdGggZ2xvYi1zdHlsZSBwYXR0ZXJucy4NCisg ICAgIElmIHRoZSBiYXNlbmFtZSBvZiB0aGUgZ2xvYiBwYXR0ZXJuIGlzIHNv bWV0aGluZyBsaWtlICIqLmMiIHRoZW4gdGhpcw0KKyAgICAgaXNuJ3QgbXVj aCBvZiBhIHdpbi4gIE9oIHdlbGwuICAqLw0KKyAgaWYgKCFiYXNlbmFtZXNf bWF5X2RpZmZlcg0KKyAgICAgICYmIGdkYl9maWxlbmFtZV9mbm1hdGNoIChs YmFzZW5hbWUgKGUtPmZpbGUpLA0KKwkJCSAgICAgICBsYmFzZW5hbWUgKGZ1 bmN0aW9uX3NhbC0+c3ltdGFiLT5maWxlbmFtZSksDQorCQkJICAgICAgIEZO TV9GSUxFX05BTUUgfCBGTk1fTk9FU0NBUEUpICE9IDApDQorICAgIHJldHVy biAwOw0KKw0KKyAgLyogTm90ZTogc3ltdGFiX3RvX2Z1bGxuYW1lIGNhY2hl cyBpdHMgcmVzdWx0LCB0aHVzIHdlIGRvbid0IGhhdmUgdG8uICAqLw0KKyAg ew0KKyAgICBjb25zdCBjaGFyICpmdWxsbmFtZSA9IHN5bXRhYl90b19mdWxs bmFtZSAoZnVuY3Rpb25fc2FsLT5zeW10YWIpOw0KKw0KKyAgICBpZiAoY29t cGFyZV9nbG9iX2ZpbGVuYW1lc19mb3Jfc2VhcmNoIChmdWxsbmFtZSwgZS0+ ZmlsZSkpDQorICAgICAgcmV0dXJuIDE7DQorICB9DQorDQorICByZXR1cm4g MDsNCit9DQorDQorLyogUmV0dXJuIG5vbi16ZXJvIGlmIHdlJ3JlIHN0b3Bw ZWQgYXQgYSBmdW5jdGlvbiB0byBiZSBza2lwcGVkLiAgKi8NCisNCitzdGF0 aWMgaW50DQorc2tpcF9mdW5jdGlvbl9wIChzdHJ1Y3Qgc2tpcGxpc3RfZW50 cnkgKmUsIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUpDQorew0KKyAgZ2Ri X2Fzc2VydCAoZS0+ZnVuY3Rpb24gIT0gTlVMTCAmJiAhZS0+ZnVuY3Rpb25f aXNfcmVnZXhwKTsNCisgIHJldHVybiBzdHJjbXBfaXcgKGZ1bmN0aW9uX25h bWUsIGUtPmZ1bmN0aW9uKSA9PSAwOw0KK30NCisNCisvKiBSZXR1cm4gbm9u LXplcm8gaWYgd2UncmUgc3RvcHBlZCBhdCBhIGZ1bmN0aW9uIHJlZ2V4cCB0 byBiZSBza2lwcGVkLiAgKi8NCisNCitzdGF0aWMgaW50DQorc2tpcF9yZnVu Y3Rpb25fcCAoc3RydWN0IHNraXBsaXN0X2VudHJ5ICplLCBjb25zdCBjaGFy ICpmdW5jdGlvbl9uYW1lKQ0KK3sNCisgIGdkYl9hc3NlcnQgKGUtPmZ1bmN0 aW9uICE9IE5VTEwgJiYgZS0+ZnVuY3Rpb25faXNfcmVnZXhwDQorCSAgICAg ICYmIGUtPmNvbXBpbGVkX2Z1bmN0aW9uX3JlZ2V4cF9pc192YWxpZCk7DQor ICByZXR1cm4gKHJlZ2V4ZWMgKCZlLT5jb21waWxlZF9mdW5jdGlvbl9yZWdl eHAsIGZ1bmN0aW9uX25hbWUsIDAsIE5VTEwsIDApDQorCSAgPT0gMCk7DQor fQ0KDQogIC8qIFNlZSBza2lwLmguICAqLw0KDQpAQCAtMzMzLDggKzYxNyw2 IEBAIGludA0KICBmdW5jdGlvbl9uYW1lX2lzX21hcmtlZF9mb3Jfc2tpcCAo Y29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwNCiAgCQkJCSAgY29uc3Qgc3Ry dWN0IHN5bXRhYl9hbmRfbGluZSAqZnVuY3Rpb25fc2FsKQ0KICB7DQotICBp bnQgc2VhcmNoZWRfZm9yX2Z1bGxuYW1lID0gMDsNCi0gIGNvbnN0IGNoYXIg KmZ1bGxuYW1lID0gTlVMTDsNCiAgICBzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkg KmU7DQoNCiAgICBpZiAoZnVuY3Rpb25fbmFtZSA9PSBOVUxMKQ0KQEAgLTM0 Miw0MyArNjI0LDQ5IEBAIGZ1bmN0aW9uX25hbWVfaXNfbWFya2VkX2Zvcl9z a2lwIChjb25zdCBjaGFyICANCipmdW5jdGlvbl9uYW1lLA0KDQogICAgQUxM X1NLSVBMSVNUX0VOVFJJRVMgKGUpDQogICAgICB7DQorICAgICAgaW50IHNr aXBfYnlfZmlsZSA9IDA7DQorICAgICAgaW50IHNraXBfYnlfZnVuY3Rpb24g PSAwOw0KKw0KICAgICAgICBpZiAoIWUtPmVuYWJsZWQpDQogIAljb250aW51 ZTsNCg0KLSAgICAgIC8qIERvZXMgdGhlIHBjIHdlJ3JlIHN0ZXBwaW5nIGlu dG8gbWF0Y2ggZSdzIHN0b3JlZCBwYz8gKi8NCi0gICAgICBpZiAoZS0+ZnVu Y3Rpb25fbmFtZSAhPSBOVUxMDQotCSAgJiYgc3RyY21wX2l3IChmdW5jdGlv bl9uYW1lLCBlLT5mdW5jdGlvbl9uYW1lKSA9PSAwKQ0KLQlyZXR1cm4gMTsN Ci0NCi0gICAgICBpZiAoZS0+ZmlsZW5hbWUgIT0gTlVMTCkNCisgICAgICBp ZiAoZS0+ZmlsZSAhPSBOVUxMKQ0KICAJew0KLQkgIC8qIENoZWNrIGZpcnN0 IHNvbGUgU1lNVEFCLT5GSUxFTkFNRS4gIEl0IGRvZXMgbm90IG5lZWQgdG8g YmUNCi0JICAgICBhIHN1YnN0cmluZyBvZiBzeW10YWJfdG9fZnVsbG5hbWUg YXMgaXQgbWF5IGNvbnRhaW4gIi4vIiBldGMuICAqLw0KLQkgIGlmIChmdW5j dGlvbl9zYWwtPnN5bXRhYiAhPSBOVUxMDQotCSAgICAgICYmIGNvbXBhcmVf ZmlsZW5hbWVzX2Zvcl9zZWFyY2ggKGZ1bmN0aW9uX3NhbC0+c3ltdGFiLT5m aWxlbmFtZSwNCi0JCQkJCSAgICAgICBlLT5maWxlbmFtZSkpDQotCSAgICBy ZXR1cm4gMTsNCi0NCi0JICAvKiBCZWZvcmUgd2UgaW52b2tlIHJlYWxwYXRo LCB3aGljaCBjYW4gZ2V0IGV4cGVuc2l2ZSB3aGVuIG1hbnkNCi0JICAgICBm aWxlcyBhcmUgaW52b2x2ZWQsIGRvIGEgcXVpY2sgY29tcGFyaXNvbiBvZiB0 aGUgYmFzZW5hbWVzLiAgKi8NCi0JICBpZiAoIWJhc2VuYW1lc19tYXlfZGlm ZmVyDQotCSAgICAgICYmIChmdW5jdGlvbl9zYWwtPnN5bXRhYiA9PSBOVUxM DQotCSAgICAgICAgICB8fCBmaWxlbmFtZV9jbXAgKGxiYXNlbmFtZSAoZnVu Y3Rpb25fc2FsLT5zeW10YWItPmZpbGVuYW1lKSwNCi0JCQkJICAgbGJhc2Vu YW1lIChlLT5maWxlbmFtZSkpICE9IDApKQ0KLQkgICAgY29udGludWU7DQot DQotCSAgLyogR2V0IHRoZSBmaWxlbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRo aXMgRlVOQ1RJT05fU0FMLCBpZiB3ZSBoYXZlbid0DQotCSAgICAgeWV0LiAg Ki8NCi0JICBpZiAoIXNlYXJjaGVkX2Zvcl9mdWxsbmFtZSkNCisJICBpZiAo ZS0+ZmlsZV9pc19nbG9iKQ0KKwkgICAgew0KKwkgICAgICBpZiAoc2tpcF9n ZmlsZV9wIChlLCBmdW5jdGlvbl9zYWwpKQ0KKwkJc2tpcF9ieV9maWxlID0g MTsNCisJICAgIH0NCisJICBlbHNlDQogIAkgICAgew0KLQkgICAgICBpZiAo ZnVuY3Rpb25fc2FsLT5zeW10YWIgIT0gTlVMTCkNCi0JCWZ1bGxuYW1lID0g c3ltdGFiX3RvX2Z1bGxuYW1lIChmdW5jdGlvbl9zYWwtPnN5bXRhYik7DQot CSAgICAgIHNlYXJjaGVkX2Zvcl9mdWxsbmFtZSA9IDE7DQorCSAgICAgIGlm IChza2lwX2ZpbGVfcCAoZSwgZnVuY3Rpb25fc2FsKSkNCisJCXNraXBfYnlf ZmlsZSA9IDE7DQogIAkgICAgfQ0KLQkgIGlmIChmdWxsbmFtZSAhPSBOVUxM DQotCSAgICAgICYmIGNvbXBhcmVfZmlsZW5hbWVzX2Zvcl9zZWFyY2ggKGZ1 bGxuYW1lLCBlLT5maWxlbmFtZSkpDQorCX0NCisgICAgICBpZiAoZS0+ZnVu Y3Rpb24gIT0gTlVMTCkNCisJew0KKwkgIGlmIChlLT5mdW5jdGlvbl9pc19y ZWdleHApDQorCSAgICB7DQorCSAgICAgIGlmIChza2lwX3JmdW5jdGlvbl9w IChlLCBmdW5jdGlvbl9uYW1lKSkNCisJCXNraXBfYnlfZnVuY3Rpb24gPSAx Ow0KKwkgICAgfQ0KKwkgIGVsc2UNCisJICAgIHsNCisJICAgICAgaWYgKHNr aXBfZnVuY3Rpb25fcCAoZSwgZnVuY3Rpb25fbmFtZSkpDQorCQlza2lwX2J5 X2Z1bmN0aW9uID0gMTsNCisJICAgIH0NCisJfQ0KKw0KKyAgICAgIC8qIElm IGJvdGggZmlsZSBhbmQgZnVuY3Rpb24gbXVzdCBtYXRjaCwgbWFrZSBzdXJl IHdlIGRvbid0IGVycmFudGx5DQorCSBleGl0IGlmIG9ubHkgb25lIG9mIHRo ZW0gbWF0Y2guICAqLw0KKyAgICAgIGlmIChlLT5maWxlICE9IE5VTEwgJiYg ZS0+ZnVuY3Rpb24gIT0gTlVMTCkNCisJew0KKwkgIGlmIChza2lwX2J5X2Zp bGUgJiYgc2tpcF9ieV9mdW5jdGlvbikNCiAgCSAgICByZXR1cm4gMTsNCiAg CX0NCisgICAgICAvKiBPbmx5IG9uZSBvZiBmaWxlL2Z1bmN0aW9uIGlzIHNw ZWNpZmllZC4gICovDQorICAgICAgZWxzZSBpZiAoc2tpcF9ieV9maWxlIHx8 IHNraXBfYnlfZnVuY3Rpb24pDQorCXJldHVybiAxOw0KICAgICAgfQ0KDQog ICAgcmV0dXJuIDA7DQpAQCAtMzk2LDIyICs2ODQsMzEgQEAgX2luaXRpYWxp emVfc3RlcF9za2lwICh2b2lkKQ0KICAgIHNraXBsaXN0X2VudHJ5X2NoYWlu ID0gMDsNCiAgICBza2lwbGlzdF9lbnRyeV9jb3VudCA9IDA7DQoNCi0gIGFk ZF9wcmVmaXhfY21kICgic2tpcCIsIGNsYXNzX2JyZWFrcG9pbnQsIHNraXBf ZnVuY3Rpb25fY29tbWFuZCwgXygiXA0KKyAgYWRkX3ByZWZpeF9jbWQgKCJz a2lwIiwgY2xhc3NfYnJlYWtwb2ludCwgc2tpcF9jb21tYW5kLCBfKCJcDQog IElnbm9yZSBhIGZ1bmN0aW9uIHdoaWxlIHN0ZXBwaW5nLlxuXA0KLVVzYWdl OiBza2lwIFtGVU5DVElPTiBOQU1FXVxuXA0KLUlmIG5vIGZ1bmN0aW9uIG5h bWUgaXMgZ2l2ZW4sIGlnbm9yZSB0aGUgY3VycmVudCBmdW5jdGlvbi4iKSwN CitcblwNCitVc2FnZTogc2tpcCBbRlVOQ1RJT04tTkFNRV1cblwNCisgICAg ICAgc2tpcCBbPGZpbGUtc3BlYz5dIFs8ZnVuY3Rpb24tc3BlYz5dXG5cDQor SWYgbm8gYXJndW1lbnRzIGFyZSBnaXZlbiwgaWdub3JlIHRoZSBjdXJyZW50 IGZ1bmN0aW9uLlxuXA0KK1xuXA0KKzxmaWxlLXNwZWM+IGlzIG9uZSBvZjpc blwNCisgICAgICAgLWZpfC1maWxlIEZJTEUtTkFNRVxuXA0KKyAgICAgICAt Z2ZpfC1nZmlsZSBHTE9CLUZJTEUtUEFUVEVSTlxuXA0KKzxmdW5jdGlvbi1z cGVjPiBpcyBvbmUgb2Y6XG5cDQorICAgICAgIC1mdXwtZnVuY3Rpb24gRlVO Q1RJT04tTkFNRVxuXA0KKyAgICAgICAtcmZ1fC1yZnVuY3Rpb24gRlVOQ1RJ T04tTkFNRS1SRUdVTEFSLUVYUFJFU1NJT04iKSwNCiAgICAgICAgICAgICAg ICAgICAgJnNraXBsaXN0LCAic2tpcCAiLCAxLCAmY21kbGlzdCk7DQoNCiAg ICBjID0gYWRkX2NtZCAoImZpbGUiLCBjbGFzc19icmVha3BvaW50LCBza2lw X2ZpbGVfY29tbWFuZCwgXygiXA0KICBJZ25vcmUgYSBmaWxlIHdoaWxlIHN0 ZXBwaW5nLlxuXA0KLVVzYWdlOiBza2lwIGZpbGUgW0ZJTEVOQU1FXVxuXA0K K1VzYWdlOiBza2lwIGZpbGUgW0ZJTEUtTkFNRV1cblwNCiAgSWYgbm8gZmls ZW5hbWUgaXMgZ2l2ZW4sIGlnbm9yZSB0aGUgY3VycmVudCBmaWxlLiIpLA0K ICAJICAgICAgICZza2lwbGlzdCk7DQogICAgc2V0X2NtZF9jb21wbGV0ZXIg KGMsIGZpbGVuYW1lX2NvbXBsZXRlcik7DQoNCiAgICBjID0gYWRkX2NtZCAo ImZ1bmN0aW9uIiwgY2xhc3NfYnJlYWtwb2ludCwgc2tpcF9mdW5jdGlvbl9j b21tYW5kLCBfKCJcDQogIElnbm9yZSBhIGZ1bmN0aW9uIHdoaWxlIHN0ZXBw aW5nLlxuXA0KLVVzYWdlOiBza2lwIGZ1bmN0aW9uIFtGVU5DVElPTiBOQU1F XVxuXA0KK1VzYWdlOiBza2lwIGZ1bmN0aW9uIFtGVU5DVElPTi1OQU1FXVxu XA0KICBJZiBubyBmdW5jdGlvbiBuYW1lIGlzIGdpdmVuLCBza2lwIHRoZSBj dXJyZW50IGZ1bmN0aW9uLiIpLA0KICAJICAgICAgICZza2lwbGlzdCk7DQog ICAgc2V0X2NtZF9jb21wbGV0ZXIgKGMsIGxvY2F0aW9uX2NvbXBsZXRlcik7 DQpkaWZmIC0tZ2l0IGEvZ2RiL3N5bXRhYi5jIGIvZ2RiL3N5bXRhYi5jDQpp bmRleCA5NWIzYTExLi5lMDYxMDRiIDEwMDY0NA0KLS0tIGEvZ2RiL3N5bXRh Yi5jDQorKysgYi9nZGIvc3ltdGFiLmMNCkBAIC00MSw3ICs0MSw3IEBADQog ICNpbmNsdWRlICJwLWxhbmcuaCINCiAgI2luY2x1ZGUgImFkZHJtYXAuaCIN CiAgI2luY2x1ZGUgImNsaS9jbGktdXRpbHMuaCINCi0NCisjaW5jbHVkZSAi Zm5tYXRjaC5oIg0KICAjaW5jbHVkZSAiaGFzaHRhYi5oIg0KDQogICNpbmNs dWRlICJnZGJfb2JzdGFjay5oIg0KQEAgLTM0Miw2ICszNDIsNDAgQEAgY29t cGFyZV9maWxlbmFtZXNfZm9yX3NlYXJjaCAoY29uc3QgY2hhciAqZmlsZW5h bWUsICANCmNvbnN0IGNoYXIgKnNlYXJjaF9uYW1lKQ0KICAJICAgICAgJiYg U1RSSVBfRFJJVkVfU1BFQyAoZmlsZW5hbWUpID09ICZmaWxlbmFtZVtsZW4g LSBzZWFyY2hfbGVuXSkpOw0KICB9DQoNCisvKiBTYW1lIGFzIGNvbXBhcmVf ZmlsZW5hbWVzX2Zvcl9zZWFyY2gsIGJ1dCBmb3IgZ2xvYi1zdHlsZSBwYXR0 ZXJucy4NCisgICBIZWFkcyB1cCBvbiB0aGUgb3JkZXIgb2YgdGhlIGFyZ3Vt ZW50cy4gIFRoZXkgbWF0Y2ggdGhlIG9yZGVyIG9mDQorICAgY29tcGFyZV9m aWxlbmFtZXNfZm9yX3NlYXJjaCwgYnV0IGl0J3MgdGhlIG9wcG9zaXRlIG9m IHRoZSBvcmRlciBvZg0KKyAgIGFyZ3VtZW50cyB0byBnZGJfZmlsZW5hbWVf Zm5tYXRjaC4gICovDQorDQoraW50DQorY29tcGFyZV9nbG9iX2ZpbGVuYW1l c19mb3Jfc2VhcmNoIChjb25zdCBjaGFyICpmaWxlbmFtZSwNCisJCQkJICAg Y29uc3QgY2hhciAqc2VhcmNoX25hbWUpDQorew0KKyAgLyogV2UgcmVseSBv biB0aGUgcHJvcGVydHkgb2YgZ2xvYi1zdHlsZSBwYXR0ZXJucyB3aXRoIEZO TV9GSUxFX05BTUUgdGhhdA0KKyAgICAgYWxsIC9zIGhhdmUgdG8gYmUgZXhw bGljaXRseSBzcGVjaWZpZWQuICAqLw0KKyAgaW50IGZpbGVfcGF0aF9lbGVt ZW50cyA9IGNvdW50X3BhdGhfZWxlbWVudHMgKGZpbGVuYW1lKTsNCisgIGlu dCBzZWFyY2hfcGF0aF9lbGVtZW50cyA9IGNvdW50X3BhdGhfZWxlbWVudHMg KHNlYXJjaF9uYW1lKTsNCisNCisgIGlmIChzZWFyY2hfcGF0aF9lbGVtZW50 cyA+IGZpbGVfcGF0aF9lbGVtZW50cykNCisgICAgcmV0dXJuIDA7DQorDQor ICBpZiAoSVNfQUJTT0xVVEVfUEFUSCAoc2VhcmNoX25hbWUpKQ0KKyAgICB7 DQorICAgICAgcmV0dXJuIChzZWFyY2hfcGF0aF9lbGVtZW50cyA9PSBmaWxl X3BhdGhfZWxlbWVudHMNCisJICAgICAgJiYgZ2RiX2ZpbGVuYW1lX2ZubWF0 Y2ggKHNlYXJjaF9uYW1lLCBmaWxlbmFtZSwNCisJCQkJICAgICAgIEZOTV9G SUxFX05BTUUgfCBGTk1fTk9FU0NBUEUpID09IDApOw0KKyAgICB9DQorDQor ICB7DQorICAgIGNvbnN0IGNoYXIgKmZpbGVfdG9fY29tcGFyZQ0KKyAgICAg ID0gc3RyaXBfbGVhZGluZ19wYXRoX2VsZW1lbnRzIChmaWxlbmFtZSwNCisJ CQkJICAgICBmaWxlX3BhdGhfZWxlbWVudHMgLSBzZWFyY2hfcGF0aF9lbGVt ZW50cyk7DQorDQorICAgIHJldHVybiBnZGJfZmlsZW5hbWVfZm5tYXRjaCAo c2VhcmNoX25hbWUsIGZpbGVfdG9fY29tcGFyZSwNCisJCQkJIEZOTV9GSUxF X05BTUUgfCBGTk1fTk9FU0NBUEUpID09IDA7DQorICB9DQorfQ0KKw0KICAv KiBDaGVjayBmb3IgYSBzeW10YWIgb2YgYSBzcGVjaWZpYyBuYW1lIGJ5IHNl YXJjaGluZyBzb21lIHN5bXRhYnMuDQogICAgIFRoaXMgaXMgYSBoZWxwZXIg ZnVuY3Rpb24gZm9yIGNhbGxiYWNrcyBvZiBpdGVyYXRlX292ZXJfc3ltdGFi cy4NCg0KZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuaCBiL2dkYi9zeW10YWIu aA0KaW5kZXggZjc4ODRiOS4uNmYwMGJhZiAxMDA2NDQNCi0tLSBhL2dkYi9z eW10YWIuaA0KKysrIGIvZ2RiL3N5bXRhYi5oDQpAQCAtMTYwMCw2ICsxNjAw LDkgQEAgZXh0ZXJuIGludCBiYXNlbmFtZXNfbWF5X2RpZmZlcjsNCiAgaW50 IGNvbXBhcmVfZmlsZW5hbWVzX2Zvcl9zZWFyY2ggKGNvbnN0IGNoYXIgKmZp bGVuYW1lLA0KICAJCQkJICBjb25zdCBjaGFyICpzZWFyY2hfbmFtZSk7DQoN CitpbnQgY29tcGFyZV9nbG9iX2ZpbGVuYW1lc19mb3Jfc2VhcmNoIChjb25z dCBjaGFyICpmaWxlbmFtZSwNCisJCQkJICAgICAgIGNvbnN0IGNoYXIgKnNl YXJjaF9uYW1lKTsNCisNCiAgaW50IGl0ZXJhdGVfb3Zlcl9zb21lX3N5bXRh YnMgKGNvbnN0IGNoYXIgKm5hbWUsDQogIAkJCSAgICAgICBjb25zdCBjaGFy ICpyZWFsX3BhdGgsDQogIAkJCSAgICAgICBpbnQgKCpjYWxsYmFjaykgKHN0 cnVjdCBzeW10YWIgKnN5bXRhYiwNCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3NraXAtc29saWIuZXhwICANCmIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9za2lwLXNvbGliLmV4cA0KaW5kZXggYTQwNDdjMy4uZWQ4 MWQ2NSAxMDA2NDQNCi0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tp cC1zb2xpYi5leHANCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tp cC1zb2xpYi5leHANCkBAIC03Myw4ICs3Myw4IEBAIElnbm9yZSBmaWxlIHBl bmRpbmcgZnV0dXJlIHNoYXJlZCBsaWJyYXJ5IGxvYWQuKiIgXA0KICAjIENo ZWNraW5mbyBza2lwIGxpc3QuDQogICMNCiAgZ2RiX3Rlc3QgImluZm8gc2tp cCIgXA0KLSAgIk51bVxccytUeXBlXFxzK0VuYlxccytXaGF0XFxzKg0KLTFc XHMrZmlsZVxccyt5XFxzKyR7c3JjZmlsZV9saWJ9XFxzKiIgXA0KKyAgIk51 bVxccytFbmJcXHMrR2xvYlxccytGaWxlXFxzK1JFXFxzK0Z1bmN0aW9uXFxz Kg0KKzFcXHMreVxccytuXFxzKyR7c3JjZmlsZV9saWJ9XFxzK25cXHMrPG5v bmU+XFxzKiIgXA0KICAgICJpbmZvIHNraXAgd2l0aCBwZW5kaW5nIGZpbGUi DQoNCiAgaWYgIVtydW50b19tYWluXSB7IGZhaWwgInNraXAgdGVzdHMgc3Vw cHJlc3NlZCIgfQ0KQEAgLTEwOCw4ICsxMDgsOCBAQCBnZGJfdGVzdCAic3Rl cCIgInNxdWFyZS4qIg0KICAjIE5vdyBvdXIgZW50cnkgc2hvdWxkIG5vIGxv bmdlciBiZSBwZW5kaW5nLg0KICAjDQogIGdkYl90ZXN0ICJpbmZvIHNraXAi IFwNCi0gICJOdW1cXHMrVHlwZVxccytFbmJcXHMrV2hhdFxccyoNCi0xXFxz K2Z1bmN0aW9uXFxzK3lcXHMrbXVsdGlwbHlcXHMqIiBcDQorICAiTnVtXFxz K0VuYlxccytHbG9iXFxzK0ZpbGVcXHMrUkVcXHMrRnVuY3Rpb25cXHMqDQor MVxccyt5XFxzK25cXHMrPG5vbmU+XFxzK25cXHMrbXVsdGlwbHlcXHMqIiBc DQogICAgImluZm8gc2tpcCBmb3IgZnVuY3Rpb24gbXVsdGlwbHkiDQoNCiAg Iw0KZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC5j IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLmMNCmluZGV4IDM1Njgy OTYuLmI5ZGIyYTcgMTAwNjQ0DQotLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3NraXAuYw0KKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lw LmMNCkBAIC0yMCw2ICsyMCw3IEBADQogIGludCBmb28gKHZvaWQpOw0KICBp bnQgYmFyICh2b2lkKTsNCiAgaW50IGJheiAoaW50KTsNCit2b2lkIHNraXAx X3Rlc3Rfc2tpcF9maWxlX2FuZF9mdW5jdGlvbiAodm9pZCk7DQoNCiAgaW50 DQogIG1haW4gKCkNCkBAIC0zMywzICszNCwyMiBAQCBmb28gKCkNCiAgew0K ICAgIHJldHVybiAwOw0KICB9DQorDQorc3RhdGljIHZvaWQNCit0ZXN0X3Nr aXAgKHZvaWQpDQorew0KK30NCisNCitzdGF0aWMgdm9pZA0KK2VuZF90ZXN0 X3NraXBfZmlsZV9hbmRfZnVuY3Rpb24gKHZvaWQpDQorew0KKyAgYWJvcnQg KCk7DQorfQ0KKw0KK3ZvaWQNCit0ZXN0X3NraXBfZmlsZV9hbmRfZnVuY3Rp b24gKHZvaWQpDQorew0KKyAgdGVzdF9za2lwICgpOw0KKyAgc2tpcDFfdGVz dF9za2lwX2ZpbGVfYW5kX2Z1bmN0aW9uICgpOw0KKyAgZW5kX3Rlc3Rfc2tp cF9maWxlX2FuZF9mdW5jdGlvbiAoKTsNCit9DQpkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLmV4cCAgDQpiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2Uvc2tpcC5leHANCmluZGV4IDQwZjMxMDMuLjdkMjhiOGIg MTAwNjQ0DQotLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAuZXhw DQorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAuZXhwDQpAQCAt MTQsNiArMTQsNyBAQA0KICAjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lg0K DQogICMgVGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IEp1c3RpbiBMZWJhci4g KGp1c3Rpbi5sZWJhckBnbWFpbC5jb20pDQorIyBBbmQgZnVydGhlciBoYWNr ZWQgb24gYnkgRG91ZyBFdmFucy4gKGRqZUBnb29nbGUuY29tKQ0KDQogIGlm IHsgW3ByZXBhcmVfZm9yX3Rlc3Rpbmcgc2tpcC5leHAgInNraXAiIFwNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7c2tpcC5jIHNraXAxLmMgfSBc DQpAQCAtMzAsNyArMzEsMjQgQEAgZ2RiX3Rlc3QgInNraXAgZmlsZSIgIk5v IGRlZmF1bHQgZmlsZSBub3cuIiAic2tpcCBmaWxlICANCihubyBkZWZhdWx0 IGZpbGUpIg0KICBnZGJfdGVzdCAic2tpcCBmdW5jdGlvbiIgIk5vIGRlZmF1 bHQgZnVuY3Rpb24gbm93LiINCiAgZ2RiX3Rlc3QgInNraXAiICJObyBkZWZh dWx0IGZ1bmN0aW9uIG5vdy4iICJza2lwIChubyBkZWZhdWx0IGZ1bmN0aW9u KSINCg0KLWlmICFbcnVudG9fbWFpbl0geyBmYWlsICJza2lwIHRlc3RzIHN1 cHByZXNzZWQiIH0NCisjIFRlc3QgZWxpZGVkIGFyZ3MuDQorDQorZ2RiX3Rl c3QgInNraXAgLWZpIiAiTWlzc2luZyB2YWx1ZSBmb3IgLWZpIG9wdGlvbi4i DQorZ2RiX3Rlc3QgInNraXAgLWZpbGUiICJNaXNzaW5nIHZhbHVlIGZvciAt ZmlsZSBvcHRpb24uIg0KK2dkYl90ZXN0ICJza2lwIC1mdSIgIk1pc3Npbmcg dmFsdWUgZm9yIC1mdSBvcHRpb24uIg0KK2dkYl90ZXN0ICJza2lwIC1mdW5j dGlvbiIgIk1pc3NpbmcgdmFsdWUgZm9yIC1mdW5jdGlvbiBvcHRpb24uIg0K K2dkYl90ZXN0ICJza2lwIC1yZnUiICJNaXNzaW5nIHZhbHVlIGZvciAtcmZ1 IG9wdGlvbi4iDQorZ2RiX3Rlc3QgInNraXAgLXJmdW5jdGlvbiIgIk1pc3Np bmcgdmFsdWUgZm9yIC1yZnVuY3Rpb24gb3B0aW9uLiINCisNCisjIFRlc3Qg b3RoZXIgaW52YWxpZCBvcHRpb24gY29tYmluYXRpb25zLg0KKw0KK2dkYl90 ZXN0ICJza2lwIC14IiAiSW52YWxpZCBza2lwIG9wdGlvbjogLXgiDQorZ2Ri X3Rlc3QgInNraXAgLXJmdSBmb28uKiB4eXp6eSIgIkludmFsaWQgYXJndW1l bnQ6IHh5enp5Ig0KKw0KK2lmICFbcnVudG9fbWFpbl0gew0KKyAgICBmYWls ICJDYW4ndCBydW4gdG8gbWFpbiINCisgICAgcmV0dXJuDQorfQ0KDQogICMg VGVzdCB8aW5mbyBza2lwfCB3aXRoIGFuIGVtcHR5IHNraXBsaXN0Lg0KDQpA QCAtNjIsMzQgKzgwLDM5IEBAIGdkYl90ZXN0ICJpbmZvIHNraXAgOTk5IiAi Tm8gc2tpcGxpc3QgZW50cmllcyBmb3VuZCAgDQp3aXRoIG51bWJlciA5OTku Ig0KICAjIERvZXMgfGluZm8gc2tpcHwgbG9vayByaWdodD8NCg0KICBnZGJf dGVzdCAiaW5mbyBza2lwIiBcDQotICAiTnVtXFxzK1R5cGVcXHMrRW5iXFxz K1doYXRcXHMqDQotMVxccytmaWxlXFxzK3lcXHMrLiokc3JjZmlsZVxccyoN Ci0yXFxzK2Z1bmN0aW9uXFxzK3lcXHMrbWFpblxccyoNCi0zXFxzK2ZpbGVc XHMreVxccyskc3JjZmlsZTFcXHMqDQotNFxccytmdW5jdGlvblxccyt5XFxz K2JhelxccyoiDQorICAgICJOdW1cXHMrRW5iXFxzK0dsb2JcXHMrRmlsZVxc cytSRVxccytGdW5jdGlvblxccyoNCisxXFxzK3lcXHMrblxccysuKiRzcmNm aWxlXFxzK25cXHMrPG5vbmU+XFxzKg0KKzJcXHMreVxccytuXFxzKzxub25l PlxccytuXFxzK21haW5cXHMqDQorM1xccyt5XFxzK25cXHMrJHNyY2ZpbGUx XFxzK25cXHMrPG5vbmU+XFxzKg0KKzRcXHMreVxccytuXFxzKzxub25lPlxc cytuXFxzK2JhelxccyoiDQoNCiAgIyBSaWdodCBub3csIHdlIGhhdmUgYW4g b3V0c3RhbmRpbmcgc2tpcGxpc3QgZW50cnkgb24gYm90aCBzb3VyY2UNCiAg IyBmaWxlcywgc28gd2hlbiB3ZSBzdGVwIGludG8gdGhlIGZpcnN0IGxpbmUg aW4gbWFpbigpLCB3ZSBzaG91bGQgc3RlcA0KICAjIHJpZ2h0IG92ZXIgaXQg YW5kIGdvIHRvIHRoZSBzZWNvbmQgbGluZSBvZiBtYWluKCkuDQoNCi1pZiAh W3J1bnRvX21haW5dIHsgZmFpbCAic2tpcCB0ZXN0cyBzdXBwcmVzc2VkIiB9 DQoraWYgIVtydW50b19tYWluXSB7DQorICAgIGZhaWwgIkNhbid0IHJ1biB0 byBtYWluIg0KKyAgICByZXR1cm4NCit9DQogIGdkYl90ZXN0ICJzdGVwIiAi LioiICJzdGVwIGluIHRoZSBtYWluIg0KICBnZGJfdGVzdCAiYnQiICJcXHMq XFwjMFxccyttYWluLioiICJzdGVwIGFmdGVyIGFsbCBpZ25vcmVkIg0KDQog ICMgTm93IHJlbW92ZSBza2lwLmMgZnJvbSB0aGUgc2tpcGxpc3QuICBPdXIg Zmlyc3Qgc3RlcCBzaG91bGQgdGFrZSB1cw0KLSMgaW50byBmb28oKSwgYW5k IG91ciBzZWNvbmQgc3RlcCBzaG91bGQgdGFrZSB1cyB0byB0aGUgbmV4dCBs aW5lIGluDQotIyBtYWluKCkuDQorIyBpbnRvIGZvbygpLCBhbmQgb3VyIHNl Y29uZCBzdGVwIHNob3VsZCB0YWtlIHVzIHRvIHRoZSBuZXh0IGxpbmUgaW4g IA0KbWFpbigpLg0KDQogIGdkYl90ZXN0ICJza2lwIGRlbGV0ZSAxIg0KICAj IENoZWNrIHRoYXQgZW50cnkgMSBpcyBtaXNzaW5nIGZyb20gfGluZm8gc2tp cHwNCiAgZ2RiX3Rlc3QgImluZm8gc2tpcCIgXA0KLSAgIk51bVxccytUeXBl XFxzK0VuYlxccytXaGF0XFxzKg0KLTJcXHMrZnVuY3Rpb25cXHMreVxccytt YWluXFxzKg0KLTNcXHMrZmlsZVxccyt5XFxzKyRzcmNmaWxlMVxccyoNCi00 XFxzK2Z1bmN0aW9uXFxzK3lcXHMrYmF6XFxzKiIgXA0KKyAgICAiTnVtXFxz K0VuYlxccytHbG9iXFxzK0ZpbGVcXHMrUkVcXHMrRnVuY3Rpb25cXHMqDQor Mlxccyt5XFxzK25cXHMrPG5vbmU+XFxzK25cXHMrbWFpblxccyoNCiszXFxz K3lcXHMrblxccyskc3JjZmlsZTFcXHMrblxccys8bm9uZT5cXHMqDQorNFxc cyt5XFxzK25cXHMrPG5vbmU+XFxzK25cXHMrYmF6XFxzKiIgXA0KICAgICAg ImluZm8gc2tpcCAoZGVsZXRlIDEpIg0KDQotaWYgIVtydW50b19tYWluXSB7 IGZhaWwgInNraXAgdGVzdHMgc3VwcHJlc3NlZCIgfQ0KK2lmICFbcnVudG9f bWFpbl0gew0KKyAgICBmYWlsICJDYW4ndCBydW4gdG8gbWFpbiINCisgICAg cmV0dXJuDQorfQ0KICBzZXQgdGVzdCAic3RlcCBhZnRlciBkZWxldGluZyAx Ig0KICBnZGJfdGVzdCAic3RlcCIgImZvbyBcXChcXCkgYXQuKiIgIiR0ZXN0 ICgxKSINCiAgZ2RiX3Rlc3QgInN0ZXAiICIuKiIgIiR0ZXN0ICgyKSIgOyAj IFJldHVybiBmcm9tIGZvbygpDQpAQCAtMTAwLDEwICsxMjMsMTQgQEAgZ2Ri X3Rlc3QgInN0ZXAiICJtYWluIFxcKFxcKSBhdC4qIiAiJHRlc3QgKDMpIg0K DQogIGdkYl90ZXN0ICJza2lwIGRpc2FibGUgMyINCiAgIyBJcyBlbnRyeSAz IGRpc2FibGVkIGluIHxpbmZvIHNraXB8Pw0KLWdkYl90ZXN0ICJpbmZvIHNr aXAgMyIgIi4qXFxuM1xccytmaWxlXFxzK24uKiIgXA0KLSAgImluZm8gc2tp cCBzaG93cyBlbnRyeSBhcyBkaXNhYmxlZCINCitnZGJfdGVzdCAiaW5mbyBz a2lwIDMiIFwNCisgICAgIjNcXHMrblxccytuXFxzKyRzcmNmaWxlMVxccytu XFxzKzxub25lPlxccyoiIFwNCisgICAgImluZm8gc2tpcCBzaG93cyBlbnRy eSBhcyBkaXNhYmxlZCINCg0KLWlmICFbcnVudG9fbWFpbl0geyBmYWlsICJz a2lwIHRlc3RzIHN1cHByZXNzZWQiIH0NCitpZiAhW3J1bnRvX21haW5dIHsN CisgICAgZmFpbCAiQ2FuJ3QgcnVuIHRvIG1haW4iDQorICAgIHJldHVybg0K K30NCiAgc2V0IHRlc3QgInN0ZXAgYWZ0ZXIgZGlzYWJsaW5nIDMiDQogIGdk Yl90ZXN0ICJzdGVwIiAiYmFyIFxcKFxcKSBhdC4qIiAiJHRlc3QgKDEpIg0K ICBnZGJfdGVzdCAic3RlcCIgIi4qIiAiJHRlc3QgKDIpIjsgIyBSZXR1cm4g ZnJvbSBmb28oKQ0KQEAgLTExNSw5ICsxNDIsMTMgQEAgZ2RiX3Rlc3QgInN0 ZXAiICJtYWluIFxcKFxcKSBhdC4qIiAiJHRlc3QgKDUpIg0KDQogIGdkYl90 ZXN0ICJza2lwIGVuYWJsZSAzIg0KICAjIElzIGVudHJ5IDMgZW5hYmxlZCBp biB8aW5mbyBza2lwfD8NCi1nZGJfdGVzdCAiaW5mbyBza2lwIDMiICIuKlxc bjNcXHMrZmlsZVxccyt5LioiIFwNCi0gICJpbmZvIHNraXAgc2hvd3MgZW50 cnkgYXMgZW5hYmxlZCINCi1pZiAhW3J1bnRvX21haW5dIHsgZmFpbCAic2tp cCB0ZXN0cyBzdXBwcmVzc2VkIiB9DQorZ2RiX3Rlc3QgImluZm8gc2tpcCAz IiBcDQorICAgICIzXFxzK3lcXHMrblxccyskc3JjZmlsZTFcXHMrblxccys8 bm9uZT5cXHMqIiBcDQorICAgICJpbmZvIHNraXAgc2hvd3MgZW50cnkgYXMg ZW5hYmxlZCINCitpZiAhW3J1bnRvX21haW5dIHsNCisgICAgZmFpbCAiQ2Fu J3QgcnVuIHRvIG1haW4iDQorICAgIHJldHVybg0KK30NCiAgc2V0IHRlc3Qg InN0ZXAgYWZ0ZXIgZW5hYmxlIDMiDQogIGdkYl90ZXN0ICJzdGVwIiAiZm9v IFxcKFxcKSBhdC4qIiAiJHRlc3QgKDEpIg0KICBnZGJfdGVzdCAic3RlcCIg Ii4qIiAiJHRlc3QgKDIpIjsgIyBSZXR1cm4gZnJvbSBmb28oKQ0KQEAgLTEy NSw0NyArMTU2LDEyOSBAQCBnZGJfdGVzdCAic3RlcCIgIm1haW4gXFwoXFwp IGF0LioiICIkdGVzdCAoMykiDQoNCiAgZ2RiX3Rlc3QgInNraXAgZGlzYWJs ZSINCiAgZ2RiX3Rlc3QgImluZm8gc2tpcCIgXA0KLSAgIk51bVxccytUeXBl XFxzK0VuYlxccytXaGF0XFxzKg0KLTJcXHMrZnVuY3Rpb25cXHMrblxccytt YWluXFxzKg0KLTNcXHMrZmlsZVxccytuXFxzKyRzcmNmaWxlMVxccyoNCi00 XFxzK2Z1bmN0aW9uXFxzK25cXHMrYmF6XFxzKiIgXA0KLSAgImluZm8gc2tp cCBhZnRlciBkaXNhYmxpbmcgYWxsIg0KKyAgICAiTnVtXFxzK0VuYlxccytH bG9iXFxzK0ZpbGVcXHMrUkVcXHMrRnVuY3Rpb25cXHMqDQorMlxccytuXFxz K25cXHMrPG5vbmU+XFxzK25cXHMrbWFpblxccyoNCiszXFxzK25cXHMrblxc cyskc3JjZmlsZTFcXHMrblxccys8bm9uZT5cXHMqDQorNFxccytuXFxzK25c XHMrPG5vbmU+XFxzK25cXHMrYmF6XFxzKiIgXA0KKyAgICAiaW5mbyBza2lw IGFmdGVyIGRpc2FibGluZyBhbGwiDQoNCiAgZ2RiX3Rlc3QgInNraXAgZW5h YmxlIg0KICBnZGJfdGVzdCAiaW5mbyBza2lwIiBcDQotICAiTnVtXFxzK1R5 cGVcXHMrRW5iXFxzK1doYXRcXHMqDQotMlxccytmdW5jdGlvblxccyt5XFxz K21haW5cXHMqDQotM1xccytmaWxlXFxzK3lcXHMrJHNyY2ZpbGUxXFxzKg0K LTRcXHMrZnVuY3Rpb25cXHMreVxccytiYXpcXHMqIiBcDQotICAiaW5mbyBz a2lwIGFmdGVyIGVuYWJsaW5nIGFsbCINCisgICAgIk51bVxccytFbmJcXHMr R2xvYlxccytGaWxlXFxzK1JFXFxzK0Z1bmN0aW9uXFxzKg0KKzJcXHMreVxc cytuXFxzKzxub25lPlxccytuXFxzK21haW5cXHMqDQorM1xccyt5XFxzK25c XHMrJHNyY2ZpbGUxXFxzK25cXHMrPG5vbmU+XFxzKg0KKzRcXHMreVxccytu XFxzKzxub25lPlxccytuXFxzK2JhelxccyoiIFwNCisgICAgImluZm8gc2tp cCBhZnRlciBlbmFibGluZyBhbGwiDQoNCiAgZ2RiX3Rlc3QgInNraXAgZGlz YWJsZSA0IDItMyINCiAgZ2RiX3Rlc3QgImluZm8gc2tpcCIgXA0KLSAgIk51 bVxccytUeXBlXFxzK0VuYlxccytXaGF0XFxzKg0KLTJcXHMrZnVuY3Rpb25c XHMrblxccyttYWluXFxzKg0KLTNcXHMrZmlsZVxccytuXFxzKyRzcmNmaWxl MVxccyoNCi00XFxzK2Z1bmN0aW9uXFxzK25cXHMrYmF6XFxzKiIgXA0KLSAg ImluZm8gc2tpcCBhZnRlciBkaXNhYmxpbmcgNCAyLTMiDQorICAgICJOdW1c XHMrRW5iXFxzK0dsb2JcXHMrRmlsZVxccytSRVxccytGdW5jdGlvblxccyoN CisyXFxzK25cXHMrblxccys8bm9uZT5cXHMrblxccyttYWluXFxzKg0KKzNc XHMrblxccytuXFxzKyRzcmNmaWxlMVxccytuXFxzKzxub25lPlxccyoNCis0 XFxzK25cXHMrblxccys8bm9uZT5cXHMrblxccytiYXpcXHMqIiBcDQorICAg ICJpbmZvIHNraXAgYWZ0ZXIgZGlzYWJsaW5nIDQgMi0zIg0KDQogIGdkYl90 ZXN0ICJza2lwIGVuYWJsZSAyLTMiDQogIGdkYl90ZXN0ICJpbmZvIHNraXAi IFwNCi0gICJOdW1cXHMrVHlwZVxccytFbmJcXHMrV2hhdFxccyoNCi0yXFxz K2Z1bmN0aW9uXFxzK3lcXHMrbWFpblxccyoNCi0zXFxzK2ZpbGVcXHMreVxc cyskc3JjZmlsZTFcXHMqDQotNFxccytmdW5jdGlvblxccytuXFxzK2Jhelxc cyoiIFwNCi0gICJpbmZvIHNraXAgYWZ0ZXIgZW5hYmxpbmcgMi0zIg0KKyAg ICAiTnVtXFxzK0VuYlxccytHbG9iXFxzK0ZpbGVcXHMrUkVcXHMrRnVuY3Rp b25cXHMqDQorMlxccyt5XFxzK25cXHMrPG5vbmU+XFxzK25cXHMrbWFpblxc cyoNCiszXFxzK3lcXHMrblxccyskc3JjZmlsZTFcXHMrblxccys8bm9uZT5c XHMqDQorNFxccytuXFxzK25cXHMrPG5vbmU+XFxzK25cXHMrYmF6XFxzKiIg XA0KKyAgICAiaW5mbyBza2lwIGFmdGVyIGVuYWJsaW5nIDItMyINCg0KICBn ZGJfdGVzdCAiaW5mbyBza2lwIDItMyIgXA0KLSAgIk51bVxccytUeXBlXFxz K0VuYlxccytXaGF0XFxzKg0KLTJcXHMrZnVuY3Rpb25cXHMreVxccyttYWlu XFxzKg0KLTNcXHMrZmlsZVxccyt5XFxzKyRzcmNmaWxlMVxccyoiIFwNCi0g ICJpbmZvIHNraXAgMi0zIg0KKyAgICAiTnVtXFxzK0VuYlxccytHbG9iXFxz K0ZpbGVcXHMrUkVcXHMrRnVuY3Rpb25cXHMqDQorMlxccyt5XFxzK25cXHMr PG5vbmU+XFxzK25cXHMrbWFpblxccyoNCiszXFxzK3lcXHMrblxccyskc3Jj ZmlsZTFcXHMrblxccys8bm9uZT5cXHMqIiBcDQorICAgICJpbmZvIHNraXAg Mi0zIg0KDQogIGdkYl90ZXN0ICJza2lwIGRlbGV0ZSAyIDMiDQogIGdkYl90 ZXN0ICJpbmZvIHNraXAiIFwNCi0gICI0XFxzK2Z1bmN0aW9uXFxzK25cXHMr YmF6XFxzKiIgXA0KLSAgImluZm8gc2tpcCBhZnRlciBkZWxldGluZyAyIDMi DQorICAgICJOdW1cXHMrRW5iXFxzK0dsb2JcXHMrRmlsZVxccytSRVxccytG dW5jdGlvblxccyoNCis0XFxzK25cXHMrblxccys8bm9uZT5cXHMrblxccyti YXpcXHMqIiBcDQorICAgICJpbmZvIHNraXAgYWZ0ZXIgZGVsZXRpbmcgMiAz Ig0KDQogIGdkYl90ZXN0ICJza2lwIGRlbGV0ZSINCiAgZ2RiX3Rlc3QgImlu Zm8gc2tpcCIgIk5vdCBza2lwcGluZyBhbnkgZmlsZXMgb3IgZnVuY3Rpb25z XC4iIFwNCi0gICJpbmZvIHNraXAgYWZ0ZXIgZGVsZXRpbmcgYWxsIg0KKyAg ICAiaW5mbyBza2lwIGFmdGVyIGRlbGV0aW5nIGFsbCINCisNCisjIE5vdyB0 ZXN0IHNraXAgLWZpLCBldGMuDQorDQorIyBDcmVhdGUgYSBza2lwbGlzdCBl bnRyeSBmb3IgYSBzcGVjaWZpZWQgZmlsZSBhbmQgZnVuY3Rpb24uDQorZ2Ri X3Rlc3QgInNraXAgLWZpIHNraXAxLmMiICJGaWxlIC4qJHNyY2ZpbGUxIHdp bGwgYmUgc2tpcHBlZCB3aGVuICANCnN0ZXBwaW5nXC4iDQorZ2RiX3Rlc3Qg InNraXAgLWdmaSBzayoxLmMiICJGaWxlXFwoc1xcKSBza1xcKjEuYyB3aWxs IGJlIHNraXBwZWQgd2hlbiAgDQpzdGVwcGluZ1wuIg0KK2dkYl90ZXN0ICJz a2lwIC1mdSBiYXoiICJGdW5jdGlvbiBiYXogd2lsbCBiZSBza2lwcGVkIHdo ZW4gc3RlcHBpbmdcLiINCitnZGJfdGVzdCAic2tpcCAtcmZ1IF5iLnokIiAi RnVuY3Rpb25cXChzXFwpIFxcXmJcXC56XFwkIHdpbGwgYmUgc2tpcHBlZCAg DQp3aGVuIHN0ZXBwaW5nLiINCisNCitpZiAhW3J1bnRvX21haW5dIHsNCisg ICAgZmFpbCAiQ2FuJ3QgcnVuIHRvIG1haW4iDQorICAgIHJldHVybg0KK30N CisNCitzZXQgdGVzdCAic3RlcCB1c2luZyAtZmkiDQorZ2RiX3Rlc3Rfbm9f b3V0cHV0ICJza2lwIGRpc2FibGUiDQorZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJz a2lwIGVuYWJsZSA1Ig0KK2dkYl90ZXN0ICJzdGVwIiAiZm9vIFxcKFxcKSBh dC4qIiAiJHRlc3QgKDEpIg0KK2dkYl90ZXN0ICJzdGVwIiAiLioiICIkdGVz dCAoMikiOyAjIFJldHVybiBmcm9tIGZvbygpDQorZ2RiX3Rlc3QgInN0ZXAi ICJtYWluIFxcKFxcKSBhdC4qIiAiJHRlc3QgKDMpIg0KKw0KK2lmICFbcnVu dG9fbWFpbl0gew0KKyAgICBmYWlsICJDYW4ndCBydW4gdG8gbWFpbiINCisg ICAgcmV0dXJuDQorfQ0KKw0KK3NldCB0ZXN0ICJzdGVwIHVzaW5nIC1nZmki DQorZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJza2lwIGRpc2FibGUiDQorZ2RiX3Rl c3Rfbm9fb3V0cHV0ICJza2lwIGVuYWJsZSA2Ig0KK2dkYl90ZXN0ICJzdGVw IiAiZm9vIFxcKFxcKSBhdC4qIiAiJHRlc3QgKDEpIg0KK2dkYl90ZXN0ICJz dGVwIiAiLioiICIkdGVzdCAoMikiOyAjIFJldHVybiBmcm9tIGZvbygpDQor Z2RiX3Rlc3QgInN0ZXAiICJtYWluIFxcKFxcKSBhdC4qIiAiJHRlc3QgKDMp Ig0KKw0KK2lmICFbcnVudG9fbWFpbl0gew0KKyAgICBmYWlsICJDYW4ndCBy dW4gdG8gbWFpbiINCisgICAgcmV0dXJuDQorfQ0KKw0KK3NldCB0ZXN0ICJz dGVwIHVzaW5nIC1mdSBmb3IgYmF6Ig0KK2dkYl90ZXN0X25vX291dHB1dCAi c2tpcCBkaXNhYmxlIg0KK2dkYl90ZXN0X25vX291dHB1dCAic2tpcCBlbmFi bGUgNyINCitnZGJfdGVzdCAic3RlcCIgImJhciBcXChcXCkgYXQuKiIgIiR0 ZXN0ICgxKSINCitnZGJfdGVzdCAic3RlcCIgIi4qIiAiJHRlc3QgKDIpIjsg IyBSZXR1cm4gZnJvbSBiYXIoKQ0KK2dkYl90ZXN0ICJzdGVwIiAiZm9vIFxc KFxcKSBhdC4qIiAiJHRlc3QgKDMpIg0KK2dkYl90ZXN0ICJzdGVwIiAiLioi ICIkdGVzdCAoNCkiOyAjIFJldHVybiBmcm9tIGZvbygpDQorZ2RiX3Rlc3Qg InN0ZXAiICJtYWluIFxcKFxcKSBhdC4qIiAiJHRlc3QgKDUpIg0KKw0KK2lm ICFbcnVudG9fbWFpbl0gew0KKyAgICBmYWlsICJDYW4ndCBydW4gdG8gbWFp biINCisgICAgcmV0dXJuDQorfQ0KKw0KK3NldCB0ZXN0ICJzdGVwIHVzaW5n IC1yZnUgZm9yIGJheiINCitnZGJfdGVzdF9ub19vdXRwdXQgInNraXAgZGlz YWJsZSINCitnZGJfdGVzdF9ub19vdXRwdXQgInNraXAgZW5hYmxlIDgiDQor Z2RiX3Rlc3QgInN0ZXAiICJiYXIgXFwoXFwpIGF0LioiICIkdGVzdCAoMSki DQorZ2RiX3Rlc3QgInN0ZXAiICIuKiIgIiR0ZXN0ICgyKSI7ICMgUmV0dXJu IGZyb20gYmFyKCkNCitnZGJfdGVzdCAic3RlcCIgImZvbyBcXChcXCkgYXQu KiIgIiR0ZXN0ICgzKSINCitnZGJfdGVzdCAic3RlcCIgIi4qIiAiJHRlc3Qg KDQpIjsgIyBSZXR1cm4gZnJvbSBmb28oKQ0KK2dkYl90ZXN0ICJzdGVwIiAi bWFpbiBcXChcXCkgYXQuKiIgIiR0ZXN0ICg1KSINCisNCisjIFRlc3QgLWZp ICsgLWZ1Lg0KKw0KK2lmICFbcnVudG9fbWFpbl0gew0KKyAgICBmYWlsICJD YW4ndCBydW4gdG8gbWFpbiINCisgICAgcmV0dXJuDQorfQ0KKw0KK3NldCB0 ZXN0ICJzdGVwIHVzaW5nIC1maSArIC1mdSINCitnZGJfdGVzdF9ub19vdXRw dXQgInNraXAgZGVsZXRlIg0KK2dkYl90ZXN0ICJza2lwIC1maSBza2lwMS5j IC1mdSB0ZXN0X3NraXAiIFwNCisgICAgIkZ1bmN0aW9uIHRlc3Rfc2tpcCBp biBmaWxlIHNraXAxLmMgd2lsbCBiZSBza2lwcGVkIHdoZW4gc3RlcHBpbmdc LiINCitnZGJfYnJlYWtwb2ludCAidGVzdF9za2lwX2ZpbGVfYW5kX2Z1bmN0 aW9uIg0KK2dkYl9icmVha3BvaW50ICJlbmRfdGVzdF9za2lwX2ZpbGVfYW5k X2Z1bmN0aW9uIg0KK2dkYl90ZXN0ICJjYWxsIHRlc3Rfc2tpcF9maWxlX2Fu ZF9mdW5jdGlvbiAoKSIgInNpbGVudGx5IHN0b3AuIg0KKyMgVmVyaWZ5IHdl IGNhbiBzdGVwIGludG8gc2tpcC5jOnRlc3Rfc2tpcCBidXQgbm90IHNraXAx LmM6dGVzdF9za2lwLg0KK2dkYl90ZXN0ICJzdGVwIiAidGVzdF9za2lwIFxc KFxcKSBhdC4qIiAiJHRlc3QgKDEpIg0KK2dkYl90ZXN0ICJzdGVwIiAidGVz dF9za2lwX2ZpbGVfYW5kX2Z1bmN0aW9uIFxcKFxcKSBhdC4qIiAiJHRlc3Qg KDIpIjsgIyAgDQpSZXR1cm4gZnJvbSB0ZXN0X3NraXAoKQ0KK2dkYl90ZXN0 ICJzdGVwIiAic2tpcDFfdGVzdF9za2lwX2ZpbGVfYW5kX2Z1bmN0aW9uIFxc KFxcKSBhdC4qIiAiJHRlc3QgKDQpIg0KK2dkYl90ZXN0ICJzdGVwIiAiLioi ICIkdGVzdCAoNSkiOyAjIFNraXAgb3ZlciB0ZXN0X3NraXAoKQ0KK2dkYl90 ZXN0ICJzdGVwIiAidGVzdF9za2lwX2ZpbGVfYW5kX2Z1bmN0aW9uIFxcKFxc KSBhdC4qIiAiJHRlc3QgKDYpIjsgIyAgDQpSZXR1cm4gZnJvbSBza2lwMV90 ZXN0X3NraXBfZmlsZV9hbmRfZnVuY3Rpb24oKQ0KZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcDEuYyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2Uvc2tpcDEuYw0KaW5kZXggOWEwNmU2Mi4uN2Q5NDMzMiAxMDA2 NDQNCi0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcDEuYw0KKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwMS5jDQpAQCAtMjYsMyAr MjYsMTQgQEAgYmF6IChpbnQgYSkNCiAgew0KICAgIHJldHVybiBhICsgMTsN CiAgfQ0KKw0KK3N0YXRpYyB2b2lkDQordGVzdF9za2lwICh2b2lkKQ0KK3sN Cit9DQorDQordm9pZA0KK3NraXAxX3Rlc3Rfc2tpcF9maWxlX2FuZF9mdW5j dGlvbiAodm9pZCkNCit7DQorICB0ZXN0X3NraXAgKCk7DQorfQ0KZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnBlcmYvc2tpcC1jb21tYW5kLmNj ICANCmIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGVyZi9za2lwLWNvbW1hbmQuY2MN Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi41ODIwZWY3 DQotLS0gL2Rldi9udWxsDQorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5wZXJm L3NraXAtY29tbWFuZC5jYw0KQEAgLTAsMCArMSw0NiBAQA0KKy8qIFRoaXMg dGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuDQor DQorICAgQ29weXJpZ2h0IChDKSAyMDE2IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLg0KKw0KKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQor ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCisgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcg0KKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uDQorDQorICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICAgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YNCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQorICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisNCisgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgIA0KKi8NCisNCit2b2xhdGlsZSBpbnQgZmxhZzsNCisNCitpbnQN CitmdW5jICgpDQorew0KKyAgcmV0dXJuIDQyOw0KK30NCisNCitjbGFzcyBj DQorew0KKyBwdWJsaWM6DQorICBpbnQgX3g7DQorICBjICgpIDogX3ggKDQy KSB7fQ0KK307DQorDQordm9pZA0KK2NhbGxfbWUgKGludCB4LCBjIHkpDQor ew0KK30NCisNCitpbnQNCittYWluICgpDQorew0KKyAgd2hpbGUgKGZsYWcp DQorICAgIHsNCisgICAgICBjYWxsX21lIChmdW5jICgpLCBjICgpKTsNCisg ICAgfQ0KKyAgcmV0dXJuIDA7DQorfQ0KZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLnBlcmYvc2tpcC1jb21tYW5kLmV4cCAgDQpiL2dkYi90ZXN0 c3VpdGUvZ2RiLnBlcmYvc2tpcC1jb21tYW5kLmV4cA0KbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLmQyNTE3MjUNCi0tLSAvZGV2L251 bGwNCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnBlcmYvc2tpcC1jb21tYW5k LmV4cA0KQEAgLTAsMCArMSwxMzggQEANCisjIENvcHlyaWdodCAoQykgMjAx NiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCisNCisjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5DQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQ0KKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3INCisjIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uDQorIw0KKyMgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsDQorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQ0KKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4NCisjDQorIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uDQorDQorIyBUaGlzIHRlc3QgY2FzZSBpcyB0 byB0ZXN0IHRoZSBzcGVlZCBvZiBHREIgd2hlbiBpdCBpcyBzaW5nbGUtc3Rl cHBpbmcNCisjIHdpdGggc2tpcCBkaXJlY3RpdmVzIGFjdGl2ZS4gVGhlcmUn cyBubyBuZWVkIHRvIHRlc3Qgc2tpcCBkaXJlY3RpdmVzIHRoYXQNCisjIG1h dGNoIGZ1bmN0aW9ucyB3ZSdyZSBzdGVwcGluZyB0aHJvdWdoLiBUaGF0J3Mg bm90IHRoZSBpbnRlcmVzdGluZyBjYXNlLg0KKyMgVGhlIGludGVyZXN0aW5n IGNhc2UgaXMgd2hlcmUgdGhlcmUgYXJlIDEwMHMgb3IgbW9yZSBjbGFzc2Vz IG9yICANCmxpYnJhcmllcywNCisjIGVhY2ggcHJvdmlkaW5nIHRoZWlyIG93 biBzZXQgb2Ygc2tpcCBkaXJlY3RpdmVzLg0KKyMNCisjIFBhcmFtZXRlcnM6 DQorIyBTS0lQX1NURVBfQ09VTlQ6IHRoZSBudW1iZXIgb2Ygc2luZ2xlIHN0 ZXBzIEdEQiBwZXJmb3Jtcw0KKyMgU0tJUF9ESVJFQ1RJVkVfQ09VTlQ6IHRo ZSBudW1iZXIgb2Ygc2tpcCBkaXJlY3RpdmVzIHRvIGNyZWF0ZQ0KKw0KK2xv YWRfbGliIHBlcmZ0ZXN0LmV4cA0KKw0KK2lmIFtza2lwX3BlcmZfdGVzdHNd IHsNCisgICAgcmV0dXJuIDANCit9DQorDQorc3RhbmRhcmRfdGVzdGZpbGUg LmNjIHNraXAtZnVuY3MuY2MNCitzZXQgZXhlY3V0YWJsZSAkdGVzdGZpbGUN CitzZXQgc2tpcF9mdW5jX2ZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICRz cmNmaWxlMl0NCitzZXQgZXhwZmlsZSAkdGVzdGZpbGUuZXhwDQorDQorIyBt YWtlIGNoZWNrLXBlcmYgUlVOVEVTVEZMQUdTPSdza2lwLWNvbW1hbmQuZXhw IFNLSVBfU1RFUF9DT1VOVD0xMDAwIC4uLicNCitpZiAhW2luZm8gZXhpc3Rz IFNLSVBfU1RFUF9DT1VOVF0gew0KKyAgICBzZXQgU0tJUF9TVEVQX0NPVU5U IDEwMDANCit9DQoraWYgIVtpbmZvIGV4aXN0cyBTS0lQX0RJUkVDVElWRV9D T1VOVF0gew0KKyAgICBzZXQgU0tJUF9ESVJFQ1RJVkVfQ09VTlQgMTAwMA0K K30NCisNCitwcm9jIGRlbGV0ZV9hbGxfc2tpcHMgeyB9IHsNCisgICAgIyBG SVhNRTogc2tpcCBjdXJyZW50bHkgZG9lc24ndCBhc2sgZm9yIGNvbmZpcm1h dGlvbg0KKyAgICAjIEZJWE1FOiAic2tpcCBkZWxldGUiIHdpdGggbm8gc2tp cHMgLT4NCisgICAgIyAgICJObyBza2lwbGlzdCBlbnRyaWVzIGZvdW5kIHdp dGggbnVtYmVyIChudWxsKS4iDQorICAgIGdkYl90ZXN0X25vX291dHB1dCAi c2V0IGNvbmZpcm0gb2ZmIg0KKyAgICBnZGJfdGVzdCAic2tpcCBkZWxldGUi ICIiDQorICAgIGdkYl90ZXN0X25vX291dHB1dCAic2V0IGNvbmZpcm0gb24i DQorfQ0KKw0KK3Byb2MgaW5zdGFsbF9za2lwcyB7IGtpbmQgdGV4dCBucl9z a2lwcyB9IHsNCisgICAgZ2xvYmFsIGdkYl9wcm9tcHQNCisgICAgc2V0IHRl c3QgImluc3RhbGxfc2tpcHMiDQorICAgIGRlbGV0ZV9hbGxfc2tpcHMNCisg ICAgc3dpdGNoICRraW5kIHsNCisJImZ1bmN0aW9uIiB7IHNldCBza2lwX2Fy ZyAiLWZ1bmN0aW9uIiB9DQorCSJyZWdleHAiIHsgc2V0IHNraXBfYXJnICIt cmZ1bmN0aW9uIiB9DQorCWRlZmF1bHQgew0KKwkgICAgcGVycm9yICJiYWQg c2tpcCBraW5kOiAka2luZCINCisJICAgIHJldHVybg0KKwl9DQorICAgIH0N CisgICAgZm9yIHsgc2V0IGkgMCB9IHsgJGkgPCAkbnJfc2tpcHMgfSB7IGlu Y3IgaSB9IHsNCisJZ2RiX3Rlc3QgInNraXAgJHNraXBfYXJnIFtmb3JtYXQg JHRleHQgJGldIiAiIg0KKyAgICB9DQorICAgICMgVGhlcmUgY291bGQgYmUg MTAwMCdzIG9mIHRoZXNlLCB3aGljaCBjYW4gb3ZlcmZsb3cgdGhlIGJ1ZmZl ci4NCisgICAgIyBIb3dldmVyLCBpdCdzIGdvb2QgdG8gaGF2ZSB0aGlzIGlu IHRoZSBsb2csIHNvIHdlIGdvIHRvIHRoZSBlZmZvcnQNCisgICAgIyB0byBy ZWFkIGl0IGFsbCBpbi4NCisgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgImluZm8g c2tpcCIgJHRlc3Qgew0KKwktcmUgIlxbXlxyXG5cXSpcclxuIiB7IGV4cF9j b250aW51ZSB9DQorCS1yZSAiXFtcclxuXF0qJGdkYl9wcm9tcHQgJCIgew0K KwkgICAgcGFzcyAkdGVzdA0KKwl9DQorCXRpbWVvdXQgew0KKwkgICAgZmFp bCAiJHRlc3QgKHRpbWVvdXQpIg0KKwl9DQorICAgIH0NCit9DQorDQorcHJv YyB3cml0ZV9za2lwX2Z1bmNfc291cmNlIHsgZmlsZV9uYW1lIGZ1bmNfbmFt ZV9wcmVmaXggbnJfZnVuY3MgfSB7DQorICAgIHNldCBmIFtvcGVuICRmaWxl X25hbWUgInciXQ0KKyAgICBwdXRzICRmICIvLyBETyBOT1QgRURJVCwgbWFj aGluZSBnZW5lcmF0ZWQgZmlsZS4gIFNlZSAgDQpza2lwLWNvbW1hbmQuZXhw LiINCisgICAgZm9yIHsgc2V0IGkgMCB9IHsgJGkgPCAkbnJfZnVuY3MgfSB7 IGluY3IgaSB9IHsNCisJc2V0IGZ1bmNfbmFtZSBbZm9ybWF0ICIke2Z1bmNf bmFtZV9wcmVmaXh9XyUwMmQiICRpXQ0KKwlwdXRzICRmICJpbnQgJGZ1bmNf bmFtZSAoKSB7IHJldHVybiAwOyB9Ig0KKyAgICB9DQorICAgIGNsb3NlICRm DQorfQ0KKw0KK3Byb2MgcnVuX3NraXBfYmVuY2ggeyBraW5kIHRleHQgfSB7 DQorICAgIGdsb2JhbCBTS0lQX1NURVBfQ09VTlQgU0tJUF9ESVJFQ1RJVkVf Q09VTlQNCisNCisgICAgaWYgIVtydW50b19tYWluXSB7DQorCWZhaWwgIkNh bid0IHJ1biB0byBtYWluIg0KKwlyZXR1cm4gLTENCisgICAgfQ0KKw0KKyAg ICBnZGJfdGVzdF9ub19vdXRwdXQgInNldCB2YXJpYWJsZSBmbGFnID0gMSIN CisNCisgICAgZm9yIHsgc2V0IGkgMCB9IHsgJGkgPCA1IH0geyBpbmNyIGkg fSB7DQorCXNldCBucl9za2lwcyBbZXhwciAkaSAqICRTS0lQX0RJUkVDVElW RV9DT1VOVF0NCisJaW5zdGFsbF9za2lwcyAka2luZCAkdGV4dCAkbnJfc2tp cHMNCisJZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJweXRob24gU2tpcENvbW1hbmRc KFwic2tpcC0ka2luZC0kbnJfc2tpcHNcIiwgIA0KJHtTS0lQX1NURVBfQ09V TlR9XCkucnVuKCkiDQorICAgIH0NCisNCisgICAgZ2RiX3Rlc3QgInNldCB2 YXJpYWJsZSBmbGFnID0gMCINCit9DQorDQorUGVyZlRlc3Q6OmFzc2VtYmxl IHsNCisgICAgZ2xvYmFsIHNyY2RpciBzdWJkaXIgc3JjZmlsZSBiaW5maWxl IHNraXBfZnVuY19maWxlDQorICAgIGdsb2JhbCBTS0lQX0RJUkVDVElWRV9D T1VOVA0KKw0KKyAgICB3cml0ZV9za2lwX2Z1bmNfc291cmNlICRza2lwX2Z1 bmNfZmlsZSAic2tpcF9mdW5jIiBbZXhwciA0ICogIA0KJFNLSVBfRElSRUNU SVZFX0NPVU5UXQ0KKyAgICBpZiB7IFtnZGJfY29tcGlsZSBbbGlzdCAiJHNy Y2Rpci8kc3ViZGlyLyRzcmNmaWxlIiAkc2tpcF9mdW5jX2ZpbGVdICANCiR7 YmluZmlsZX0gZXhlY3V0YWJsZSB7YysrIGRlYnVnfV0gIT0gIiIgfSB7DQor CXJldHVybiAtMQ0KKyAgICB9DQorICAgIHJldHVybiAwDQorfSB7DQorICAg IGdsb2JhbCBiaW5maWxlDQorICAgIGNsZWFuX3Jlc3RhcnQgJGJpbmZpbGUN CisgICAgcmV0dXJuIDANCit9IHsNCisgICAgZ2xvYmFsIFNLSVBfU1RFUF9D T1VOVCBTS0lQX0RJUkVDVElWRV9DT1VOVA0KKw0KKyAgICB3aXRoX3Rlc3Rf cHJlZml4ICJ0aW1lX3NraXBfZnVuYyIgew0KKwkjIE4uQi4gVGhlIGZ1bmN0 aW9uIG5hbWUgbXVzdCBtYXRjaCB0aGUgb25lcyBpbiBza2lwLWNvbW1hbmQu Y2MuDQorCXJ1bl9za2lwX2JlbmNoICJmdW5jdGlvbiIgInNraXBfZnVuY18l MDJkIg0KKyAgICB9DQorDQorICAgIHdpdGhfdGVzdF9wcmVmaXggInRpbWVf c2tpcF9jb25zdHJ1Y3RvciIgew0KKwlydW5fc2tpcF9iZW5jaCAicmVnZXhw IiAiXihza2lwX2NsYXNzXyUwMmQpOjpcXDEgKlxcKCINCisgICAgfQ0KKw0K KyAgICByZXR1cm4gMA0KK30NCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5wZXJmL3NraXAtY29tbWFuZC5weSAgDQpiL2dkYi90ZXN0c3VpdGUv Z2RiLnBlcmYvc2tpcC1jb21tYW5kLnB5DQpuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KaW5kZXggMDAwMDAwMC4uMTJjMjhmMg0KLS0tIC9kZXYvbnVsbA0KKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGVyZi9za2lwLWNvbW1hbmQucHkNCkBA IC0wLDAgKzEsMzQgQEANCisjIENvcHlyaWdodCAoQykgMjAxNiBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCisNCisjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5DQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KKyMgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3INCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uDQorIw0KKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZg0KKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KKyMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisj DQorIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uDQorDQorZnJvbSBwZXJmdGVzdCBpbXBvcnQgcGVyZnRlc3QN CisNCitjbGFzcyBTa2lwQ29tbWFuZCAocGVyZnRlc3QuVGVzdENhc2VXaXRo QmFzaWNNZWFzdXJlbWVudHMpOg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwg bmFtZSwgc3RlcCk6DQorICAgICAgICBzdXBlciAoU2tpcENvbW1hbmQsIHNl bGYpLl9faW5pdF9fIChuYW1lKQ0KKyAgICAgICAgc2VsZi5zdGVwID0gc3Rl cA0KKw0KKyAgICBkZWYgd2FybV91cChzZWxmKToNCisgICAgICAgIGZvciBf IGluIHJhbmdlKDAsIDEwKToNCisgICAgICAgICAgICBnZGIuZXhlY3V0ZSgi c3RlcCIsIEZhbHNlLCBUcnVlKQ0KKw0KKyAgICBkZWYgX3J1bihzZWxmLCBy KToNCisgICAgICAgIGZvciBfIGluIHJhbmdlKDAsIHIpOg0KKyAgICAgICAg ICAgIGdkYi5leGVjdXRlKCJzdGVwIiwgRmFsc2UsIFRydWUpDQorDQorICAg IGRlZiBleGVjdXRlX3Rlc3Qoc2VsZik6DQorICAgICAgICBmb3IgaSBpbiBy YW5nZSgxLCA1KToNCisgICAgICAgICAgICBmdW5jID0gbGFtYmRhOiBzZWxm Ll9ydW4oaSAqIHNlbGYuc3RlcCkNCisgICAgICAgICAgICBzZWxmLm1lYXN1 cmUubWVhc3VyZShmdW5jLCBpICogc2VsZi5zdGVwKQ0KZGlmZiAtLWdpdCBh L2dkYi91dGlscy5jIGIvZ2RiL3V0aWxzLmMNCmluZGV4IGUzNGMxMmUuLjk3 NzMxNGIgMTAwNjQ0DQotLS0gYS9nZGIvdXRpbHMuYw0KKysrIGIvZ2RiL3V0 aWxzLmMNCkBAIC0zMzgwLDYgKzMzODAsODMgQEAgZ2RiX2ZpbGVuYW1lX2Zu bWF0Y2ggKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGNvbnN0ICANCmNoYXIgKnN0 cmluZywgaW50IGZsYWdzKQ0KICAgIHJldHVybiBmbm1hdGNoIChwYXR0ZXJu LCBzdHJpbmcsIGZsYWdzKTsNCiAgfQ0KDQorLyogUmV0dXJuIHRoZSBudW1i ZXIgb2YgcGF0aCBlbGVtZW50cyBpbiBQQVRILg0KKyAgIC8gPSAxDQorICAg L2ZvbyA9IDINCisgICAvZm9vLyA9IDINCisgICBmb28vYmFyID0gMg0KKyAg IGZvby8gPSAxICAqLw0KKw0KK2ludA0KK2NvdW50X3BhdGhfZWxlbWVudHMg KGNvbnN0IGNoYXIgKnBhdGgpDQorew0KKyAgaW50IGNvdW50ID0gMDsNCisg IGNvbnN0IGNoYXIgKnAgPSBwYXRoOw0KKw0KKyAgaWYgKEhBU19EUklWRV9T UEVDIChwKSkNCisgICAgew0KKyAgICAgIHAgPSBTVFJJUF9EUklWRV9TUEVD IChwKTsNCisgICAgICArK2NvdW50Ow0KKyAgICB9DQorDQorICB3aGlsZSAo KnAgIT0gJ1wwJykNCisgICAgew0KKyAgICAgIGlmIChJU19ESVJfU0VQQVJB VE9SICgqcCkpDQorCSsrY291bnQ7DQorICAgICAgKytwOw0KKyAgICB9DQor DQorICAvKiBCYWNrdXAgb25lIGlmIGxhc3QgY2hhcmFjdGVyIGlzIC8sIHVu bGVzcyBpdCdzIHRoZSBvbmx5IG9uZS4gICovDQorICBpZiAocCA+IHBhdGgg KyAxICYmIElTX0RJUl9TRVBBUkFUT1IgKHBbLTFdKSkNCisgICAgLS1jb3Vu dDsNCisNCisgIC8qIEFkZCBvbmUgZm9yIHRoZSBmaWxlIG5hbWUsIGlmIHBy ZXNlbnQuICAqLw0KKyAgaWYgKHAgPiBwYXRoICYmICFJU19ESVJfU0VQQVJB VE9SIChwWy0xXSkpDQorICAgICsrY291bnQ7DQorDQorICByZXR1cm4gY291 bnQ7DQorfQ0KKw0KKy8qIFJlbW92ZSBOIGxlYWRpbmcgcGF0aCBlbGVtZW50 cyBmcm9tIFBBVEguDQorICAgTiBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4NCisg ICBJZiBQQVRIIGhhcyBtb3JlIHRoYW4gTiBwYXRoIGVsZW1lbnRzIHRoZW4g cmV0dXJuIE5VTEwuDQorICAgSWYgUEFUSCBoYXMgZXhhY3RseSBOIHBhdGgg ZWxlbWVudHMgdGhlbiByZXR1cm4gIiIuDQorICAgU2VlIGNvdW50X3BhdGhf ZWxlbWVudHMgZm9yIGEgZGVzY3JpcHRpb24gb2YgaG93IHdlIGRvIHRoZSBj b3VudGluZy4gICovDQorDQorY29uc3QgY2hhciAqDQorc3RyaXBfbGVhZGlu Z19wYXRoX2VsZW1lbnRzIChjb25zdCBjaGFyICpwYXRoLCBpbnQgbikNCit7 DQorICBpbnQgaSA9IDA7DQorICBjb25zdCBjaGFyICpwID0gcGF0aDsNCisN CisgIGdkYl9hc3NlcnQgKG4gPj0gMCk7DQorDQorICBpZiAobiA9PSAwKQ0K KyAgICByZXR1cm4gcDsNCisNCisgIGlmIChIQVNfRFJJVkVfU1BFQyAocCkp DQorICAgIHsNCisgICAgICBwID0gU1RSSVBfRFJJVkVfU1BFQyAocCk7DQor ICAgICAgKytpOw0KKyAgICB9DQorDQorICB3aGlsZSAoaSA8IG4pDQorICAg IHsNCisgICAgICB3aGlsZSAoKnAgIT0gJ1wwJyAmJiAhSVNfRElSX1NFUEFS QVRPUiAoKnApKQ0KKwkrK3A7DQorICAgICAgaWYgKCpwID09ICdcMCcpDQor CXsNCisJICBpZiAoaSArIDEgPT0gbikNCisJICAgIHJldHVybiAiIjsNCisJ ICByZXR1cm4gTlVMTDsNCisJfQ0KKyAgICAgICsrcDsNCisgICAgICArK2k7 DQorICAgIH0NCisNCisgIHJldHVybiBwOw0KK30NCisNCiAgLyogUHJvdmlk ZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90b3R5cGVz LiAgKi8NCiAgZXh0ZXJuIGluaXRpYWxpemVfZmlsZV9mdHlwZSBfaW5pdGlh bGl6ZV91dGlsczsNCg0KZGlmZiAtLWdpdCBhL2dkYi91dGlscy5oIGIvZ2Ri L3V0aWxzLmgNCmluZGV4IDQ1NzFhYWYuLjA2ODdjODYgMTAwNjQ0DQotLS0g YS9nZGIvdXRpbHMuaA0KKysrIGIvZ2RiL3V0aWxzLmgNCkBAIC0xMzUsNiAr MTM1LDEwIEBAIGV4dGVybiB2b2lkIHN1YnN0aXR1dGVfcGF0aF9jb21wb25l bnQgKGNoYXIgKipzdHJpbmdwLCAgDQpjb25zdCBjaGFyICpmcm9tLA0KICAJ CQkJICAgICAgIGNvbnN0IGNoYXIgKnRvKTsNCg0KICBjaGFyICpsZGlybmFt ZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpOw0KKw0KK2V4dGVybiBpbnQgY291 bnRfcGF0aF9lbGVtZW50cyAoY29uc3QgY2hhciAqcGF0aCk7DQorDQorZXh0 ZXJuIGNvbnN0IGNoYXIgKnN0cmlwX2xlYWRpbmdfcGF0aF9lbGVtZW50cyAo Y29uc3QgY2hhciAqcGF0aCwgaW50IG4pOw0KICAMDQogIC8qIEdEQiBvdXRw dXQsIHVpX2ZpbGUgdXRpbGl0aWVzLiAgKi8NCg0K >From gdb-patches-return-129819-listarch-gdb-patches=sources.redhat.com@sourceware.org Wed Feb 24 00:19:21 2016 Return-Path: Delivered-To: listarch-gdb-patches@sources.redhat.com Received: (qmail 47622 invoked by alias); 24 Feb 2016 00:19:20 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 47606 invoked by uid 89); 24 Feb 2016 00:19:19 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=dereference, 1811, Hx-languages-length:2813, Eliminate X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 24 Feb 2016 00:19:18 +0000 Received: from svr-orw-fem-05.mgc.mentorg.com ([147.34.97.43]) by relay1.mentorg.com with esmtp id 1aYNAh-00026Q-3T from Don_Breazeal@mentor.com for gdb-patches@sourceware.org; Tue, 23 Feb 2016 16:19:15 -0800 Received: from build4-lucid-cs (147.34.91.1) by svr-orw-fem-05.mgc.mentorg.com (147.34.97.43) with Microsoft SMTP Server id 14.3.224.2; Tue, 23 Feb 2016 16:19:14 -0800 Received: by build4-lucid-cs (Postfix, from userid 1905) id 92DD141155; Tue, 23 Feb 2016 16:19:14 -0800 (PST) From: Don Breazeal To: Subject: [PATCH] Eliminate -var-create error for optzd ptr to struct Date: Wed, 24 Feb 2016 00:19:00 -0000 Message-ID: <1456273154-28629-1-git-send-email-donb@codesourcery.com> MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes X-SW-Source: 2016-02/txt/msg00703.txt.bz2 Content-length: 2828 Problem: This patch eliminates an error thrown when accessing the value of a pointer to a structure where the pointer has been optimized out. The error shows up as the rather ugly value of the pointer variable in Eclipse. With this change such an access will return "" like other optimized out variables. We should throw an error when dereferencing an optimized-out pointer, but not when just looking at its value. Cause: The error only occurs when '-gdb-set print object on' has been set. This setting requires GDB to "identify the actual (derived) type of the object rather than the declared type". Part of this process is to dereference the pointer in order to get the type of the thing that is pointed-to. Since the pointer has been optimized out, this is impossible, and an error is thrown. Fix: The fix is to simply ignore the 'print object on' setting for pointers or references to structures when they have been optimized out. This means we just get the declared type instead of the actual type, because in this case that's the best that we can do. Results: Attempts to dereference the optimized-out pointer using -var-create or -data-evaluate-expression will throw an error, but a dereference using -var-evaluate-expression will return an empty value. To be consistent, this last case would also throw an error. I looked into this some, enough to confirm that there isn't an obvious fix. Given that my goal is just to eliminate the unnecessary error, I stopped here. I'm working on setting things in motion for a patch to Eclipse that recognizes optimized-out pointer-to-struct in this scenario and prevents any subsequent attempt to dereference it from that end. Testing: I looked at creating a test case for this, but so far haven't been able to create anything general enough to include in the test suite. Tested on bare-metal powerpc board with Linux x86_64 host. OK? thanks --Don gdb/ChangeLog: 2016-02-23 Don Breazeal * gdb/value.c (value_actual_type): Ignore the 'print object on' setting for pointers and references to structures. --- gdb/value.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gdb/value.c b/gdb/value.c index 738b2b2..50e4f8a 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -1203,9 +1203,10 @@ value_actual_type (struct value *value, int resolve_simple_types, /* If result's target type is TYPE_CODE_STRUCT, proceed to fetch its rtti type. */ if ((TYPE_CODE (result) == TYPE_CODE_PTR - || TYPE_CODE (result) == TYPE_CODE_REF) + || TYPE_CODE (result) == TYPE_CODE_REF) && TYPE_CODE (check_typedef (TYPE_TARGET_TYPE (result))) - == TYPE_CODE_STRUCT) + == TYPE_CODE_STRUCT + && !value_optimized_out (value)) { struct type *real_type; -- 1.8.1.1