From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 60229 invoked by alias); 9 Feb 2016 15:34:22 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 60218 invoked by uid 89); 9 Feb 2016 15:34:22 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=1.6 required=5.0 tests=AWL,BAYES_50,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_NONE,RP_MATCHES_RCVD autolearn=no version=3.3.2 spammy=H*RU:sk:smtprel, Hx-spam-relays-external:sk:smtprel, HX-HELO:sk:smtprel, H*r:14.3.195 X-HELO: smtprelay.synopsys.com Received: from us01smtprelay-2.synopsys.com (HELO smtprelay.synopsys.com) (198.182.60.111) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Tue, 09 Feb 2016 15:34:21 +0000 Received: from dc8secmta2.synopsys.com (dc8secmta2.synopsys.com [10.13.218.202]) by smtprelay.synopsys.com (Postfix) with ESMTP id F003010C1000; Tue, 9 Feb 2016 07:34:18 -0800 (PST) Received: from dc8secmta2.internal.synopsys.com (dc8secmta2.internal.synopsys.com [127.0.0.1]) by dc8secmta2.internal.synopsys.com (Service) with ESMTP id D82BAA4112; Tue, 9 Feb 2016 07:34:18 -0800 (PST) Received: from mailhost.synopsys.com (mailhost1.synopsys.com [10.12.238.239]) by dc8secmta2.internal.synopsys.com (Service) with ESMTP id 983E9A4102; Tue, 9 Feb 2016 07:34:18 -0800 (PST) Received: from mailhost.synopsys.com (localhost [127.0.0.1]) by mailhost.synopsys.com (Postfix) with ESMTP id 6FFF92D6; Tue, 9 Feb 2016 07:34:18 -0800 (PST) Received: from us01wehtc1.internal.synopsys.com (us01wehtc1-vip.internal.synopsys.com [10.12.239.236]) by mailhost.synopsys.com (Postfix) with ESMTP id 38A102D2; Tue, 9 Feb 2016 07:34:17 -0800 (PST) Received: from DE02WEHTCA.internal.synopsys.com (10.225.19.92) by us01wehtc1.internal.synopsys.com (10.12.239.231) with Microsoft SMTP Server (TLS) id 14.3.195.1; Tue, 9 Feb 2016 07:34:17 -0800 Received: from DE02WEMBXB.internal.synopsys.com ([fe80::95ce:118a:8321:a099]) by DE02WEHTCA.internal.synopsys.com ([::1]) with mapi id 14.03.0195.001; Tue, 9 Feb 2016 16:34:14 +0100 From: Claudiu Zissulescu To: Joern Wolfgang Rennecke , "gcc-patches@gcc.gnu.org" CC: "Francois.Bedard@synopsys.com" , "jeremy.bennett@embecosm.com" Subject: RE: [PATCH] [ARC] Add single/double IEEE precission FPU support. Date: Tue, 09 Feb 2016 15:34:00 -0000 Message-ID: <098ECE41A0A6114BB2A07F1EC238DE8966176790@DE02WEMBXB.internal.synopsys.com> References: <1454335022-21760-1-git-send-email-claziss@synopsys.com> <56B13316.9090903@amylaar.uk> <56B4AEA1.6090607@amylaar.uk> In-Reply-To: <56B4AEA1.6090607@amylaar.uk> Content-Type: multipart/mixed; boundary="_002_098ECE41A0A6114BB2A07F1EC238DE8966176790DE02WEMBXBinter_" MIME-Version: 1.0 X-SW-Source: 2016-02/txt/msg00625.txt.bz2 --_002_098ECE41A0A6114BB2A07F1EC238DE8966176790DE02WEMBXBinter_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-length: 2377 Please find attached a reworked patch. It doesn't contain the ABI modificat= ions as I notified you earlier in an email. Also, you may have extra comme= nts regarding these original observations: >+ /* ARCHS has 64-bit data-path which makes use of the even-odd paired >+ registers. */ >+ if (TARGET_HS) >+ { >+ for (regno =3D 1; regno < 32; regno +=3D2) >+ { >+ arc_hard_regno_mode_ok[regno] =3D S_MODES; >+ } >+ } >+ > >Does TARGET_HS with -mabi=3Ddefault allow for passing DFmode / DImode=20 >arguments >in odd registers? I fear you might run into reload trouble when trying to >access the values. The current ABI passes the DI-like modes in any register pair. This should = not be an issue as the movdi_insn and movdf_insn should handle those except= ional cases. As for partial passing of arguments, move_block_from_reg() sho= uld take care of exceptional cases like DImode. >+ if (!link_insn >+ /* Avoid FPU instructions. */ >+ || (GET_MODE (SET_DEST >+ (PATTERN (link_insn))) =3D=3D CC_FPUmode) >+ || (GET_MODE (SET_DEST >+ (PATTERN (link_insn))) =3D=3D CC_FPU_UNEQm= ode) >+ || (GET_MODE (SET_DEST >+ (PATTERN (link_insn))) =3D=3D CC_FPUEmode)) > >It's pointless to search for the CC setter and then bail out this late. >The mode is also accessible in the CC user, so after we have computed >pc_target, we can check the condition code register in the comparison >XEXP (pc_target, 1) for its mode. Most of the cases checking only the CC user may be sufficient. However, the= re are cases (only one which I found), where the CC user has a different mo= de than of the CC setter. This is happening when running gcc.dg/pr56424.c = test. Here, the C_FPU mode cstore is simplified by the following steps losi= ng the CC_FPU mode: In the expand: 18: cc:CC_FPU=3Dcmp(r159:DF,r162:DF) 19: r163:SI=3Dcc:CC_FPU<0 20: r161:QI=3Dr163:SI#0 21: r153:SI=3Dzero_extend(r161:QI) 22: cc:CC_ZN=3Dcmp(r153:SI,0) 23: pc=3D{(cc:CC_ZN!=3D0)?L28:pc} Then after combine we get this: 18: cc:CC_FPU=3Dcmp(r2:DF,r4:DF) REG_DEAD r4:DF REG_DEAD r2:DF 23: pc=3D{(cc:CC_ZN<0)?L28:pc} REG_DEAD cc:CC_ZN REG_BR_PROB 6102 Ok to apply? Claudiu --_002_098ECE41A0A6114BB2A07F1EC238DE8966176790DE02WEMBXBinter_ Content-Type: application/octet-stream; name="0001-ARC-Add-single-double-IEEE-precission-FPU-support.patch" Content-Description: 0001-ARC-Add-single-double-IEEE-precission-FPU-support.patch Content-Disposition: attachment; filename="0001-ARC-Add-single-double-IEEE-precission-FPU-support.patch"; size=52674; creation-date="Tue, 09 Feb 2016 15:32:47 GMT"; modification-date="Tue, 09 Feb 2016 15:32:42 GMT" Content-Transfer-Encoding: base64 Content-length: 71403 RnJvbSA3NmYxMmZlYmNhNTM5MTk4ZTI5OGIxMTQ1MDYyMTRlMDk0ODBhOWE0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDbGF1ZGl1IFppc3N1 bGVzY3UgPGNsYXppc3NAc3lub3BzeXMuY29tPgpEYXRlOiBNb24sIDEgRmVi IDIwMTYgMTQ6NTU6MDkgKzAxMDAKU3ViamVjdDogW1BBVENIXSBbQVJDXSBB ZGQgc2luZ2xlL2RvdWJsZSBJRUVFIHByZWNpc3Npb24gRlBVIHN1cHBvcnQu CgpJbiB0aGlzIHBhdGNoLCB3ZSBhZGQgc3VwcG9ydCBmb3IgdGhlIG5ldyBG UFUgaW5zdHJ1Y3Rpb25zIGF2YWlsYWJsZSB3aXRoCkFSQyBWMiBwcm9jZXNz b3JzLiAgVGhlIG5ldyBGUFUgaW5zdHJ1Y3Rpb25zIGNvdmVycyBib3RoIHNp bmdsZSBhbmQKZG91YmxlIHByZWNpc2lvbiBJRUVFIGZvcm1hdHMuIFdoaWxl IHRoZSBzaW5nbGUgcHJlY2lzaW9uIGlzIGF2YWlsYWJsZQpmb3IgYm90aCBB UkMgRU0gYW5kIEFSQyBIUyBwcm9jZXNzb3JzLCB0aGUgZG91YmxlIHByZWNp c2lvbiBpcyBvbmx5CmF2YWlsYWJsZSBmb3IgQVJDIEhTLiBBUkMgRU0gd2ls bCBtYWtlIHVzZSBvZiB0aGUgZG91YmxlIHByZWNpc2lvbiBhc3Npc3QKaW5z dHJ1Y3Rpb25zIHdoaWNoIGFyZSBpbiBmYWN0IEZQWCBkb3VibGUgaW5zdHJ1 Y3Rpb25zLiAgVGhlIGRvdWJsZQpmbG9hdGluZyBwb2ludCBwcmVjaXNpb24g aW5zdHJ1Y3Rpb25zIGFyZSBtYWtpbmcgdXNlIG9mIHRoZSBvZGQtZXZlbgpy ZWdpc3RlciBwYWlycyB0byBob2xkIDY0LWJpdCBkYXR1bSwgZXhhY3RseSBs aWtlIGluIHRoZSBjYXNlIG9mIGxkZC9zdGQKaW5zdHJ1Y3Rpb25zLgoKZ2Nj LwoyMDE2LTAyLTA5ICBDbGF1ZGl1IFppc3N1bGVzY3UgIDxjbGF6aXNzQHN5 bm9wc3lzLmNvbT4KCgkqIGNvbmZpZy9hcmMvYXJjLW1vZGVzLmRlZiAoQ0Nf RlBVLCBDQ19GUFVfVU5FUSk6IE5ldyBtb2Rlcy4KCSogY29uZmlnL2FyYy9h cmMtb3B0cy5oIChGUFVfU1AsIEZQVV9TRiwgRlBVX1NDLCBGUFVfU0QsIEZQ VV9EUCkKCShGUFVfREYsIEZQVV9EQywgRlBVX0RELCBGWFBfRFApOiBEZWZp bmUuCgkqIGNvbmZpZy9hcmMvYXJjLmMgKGFyY19pbml0KTogQ2hlY2sgRlBV IG9wdGlvbnMuCgkoZ2V0X2FyY19jb25kaXRpb25fY29kZSk6IEhhbmRsZSBu ZXcgQ0NfRlBVKiBtb2Rlcy4KCShhcmNfc2VsZWN0X2NjX21vZGUpOiBMaWtl d2lzZS4KCShhcmNfY29uZGl0aW9uYWxfcmVnaXN0ZXJfdXNhZ2UpOiBBbGxv dyA2NCBiaXQgZGF0dW0gaW50byBldmVuLW9kZAoJcmVnaXN0ZXIgcGFpciBv bmx5LiBBbGxvdyBhY2Nlc3MgZm9yIEFSQ3YyIGFjY3VtdWxhdG9yLgoJKGdl bl9jb21wYXJlX3JlZyk6IFdoZW5ldmVyIHdlIGhhdmUgRlBVIHN1cHBvcnQg dXNlIEZQVSBjb21wYXJlCglpbnN0cnVjdGlvbnMuCgkoYXJjX3Jlb3JnKTog RG9uJ3QgZ2VuZXJhdGUgYnJjYyBpbnNucyB3aGVuIEZQVSBjb21wYXJlCglp bnN0cnVjdGlvbnMgYXJlIGludm9sdmVkLgoJKiBjb25maWcvYXJjL2FyYy5o IChUQVJHRVRfRFBGUCk6IEFkZCBUQVJHRVRfRlBfRFBBWCBjb25kaXRpb24u CgkoVEFSR0VUX09QVEZQRSk6IEFkZCBjb25kaXRpb24gd2hlbiBBUkMgRU0g Y2FuIHVzZSBvcHRpbWl6ZWQKCWZsb2F0aW5nIHBvaW50IGVtdWxhdGlvbi4K CShBQ0NfUkVHX0ZJUlNULCBBQ0NfUkVHX0xBU1QsIEFDQ0xfUkVHTk8sIEFD Q0hfUkVHTk8pOiBEZWZpbmUuCgkoUkVWRVJTRV9DT05ESVRJT04pOiBBZGQg bmV3IENDX0ZQVSogbW9kZXMuCgkoVEFSR0VUX0ZQX1NQX0JBU0UpOiBEZWZp bmUuCgkoVEFSR0VUX0ZQX0RQX0JBU0UpOiBMaWtld2lzZS4KCShUQVJHRVRf RlBfU1BfRlVTRUQpOiBMaWtld2lzZS4KCShUQVJHRVRfRlBfRFBfRlVTRUQp OiBMaWtld2lzZS4KCShUQVJHRVRfRlBfU1BfQ09OVik6IExpa2V3aXNlLgoJ KFRBUkdFVF9GUF9EUF9DT05WKTogTGlrZXdpc2UuCgkoVEFSR0VUX0ZQX1NQ X1NRUlQpOiBMaWtld2lzZS4KCShUQVJHRVRfRlBfRFBfU1FSVCk6IExpa2V3 aXNlLgoJKFRBUkdFVF9GUF9EUF9BWCk6IExpa2V3aXNlLgoJKiBjb25maWcv YXJjL2FyYy5tZCAoQVJDVjJfQUNDKTogTmV3IGNvbnN0YW50LgoJKHR5cGUp OiBOZXcgZnB1IHR5cGUgYXR0cmlidXRlLgoJKFNERik6IENvbmRpdGlvbmFs IGl0ZXJhdG9yLgoJKGNzdG9yZTxtb2RlPiwgY2JyYW5jaDxtb2RlPik6IENo YW5nZSBleHBhbmQgY29uZGl0aW9uLgoJKGFkZHNmMywgc3Vic2YzLCBtdWxz ZjMsIGFkZGRmMywgc3ViZGYzLCBtdWxkZjMpOiBOZXcgZXhwYW5kcywKCWhh bmRsZXMgRlBVL0ZQWCBjYXNlcyBhcyB3ZWxsLgoJKiBjb25maWcvYXJjL2Fy Yy5vcHQgKG1mcHUpOiBOZXcgb3B0aW9uLgoJKiBjb25maWcvYXJjL2ZweC5t ZCAoYWRkc2YzX2ZweCwgc3Vic2YzX2ZweCwgbXVsc2YzX2ZweCk6CglSZW5h bWVkLgoJKGFkZGRmMywgbXVsZGYzLCBzdWJkZjMpOiBSZW1vdmVkLgoJKiBj b25maWcvYXJjL3ByZWRpY2F0ZXMubWQgKHByb3Blcl9jb21wYXJpc29uX29w ZXJhdG9yKTogUmVjb2duaXplCglDQ19GUFUqIG1vZGVzLgoJKiBjb25maWcv YXJjL2ZwdS5tZDogTmV3IGZpbGUuCgkqIGRvYy9pbnZva2UudGV4aSAoQVJD IE9wdGlvbnMpOiBEb2N1bWVudCBtZnB1IG9wdGlvbi4KLS0tCiBnY2MvY29u ZmlnL2FyYy9hcmMtbW9kZXMuZGVmIHwgICA0ICsKIGdjYy9jb25maWcvYXJj L2FyYy1vcHRzLmggICAgfCAgMjAgKysKIGdjYy9jb25maWcvYXJjL2FyYy5j ICAgICAgICAgfCAxNDkgKysrKysrKysrKy0tCiBnY2MvY29uZmlnL2FyYy9h cmMuaCAgICAgICAgIHwgIDU3ICsrKystCiBnY2MvY29uZmlnL2FyYy9hcmMu bWQgICAgICAgIHwgMTY1ICsrKysrKysrKysrKy0KIGdjYy9jb25maWcvYXJj L2FyYy5vcHQgICAgICAgfCAgNDMgKysrKwogZ2NjL2NvbmZpZy9hcmMvZnB1 Lm1kICAgICAgICB8IDU2NiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiBnY2MvY29uZmlnL2FyYy9mcHgubWQgICAgICAg IHwgIDY0ICstLS0tCiBnY2MvY29uZmlnL2FyYy9wcmVkaWNhdGVzLm1kIHwg ICA5ICsKIGdjYy9kb2MvaW52b2tlLnRleGkgICAgICAgICAgfCAgODQgKysr KysrLQogMTAgZmlsZXMgY2hhbmdlZCwgMTA1OCBpbnNlcnRpb25zKCspLCAx MDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL2NvbmZp Zy9hcmMvZnB1Lm1kCgpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcmMvYXJj LW1vZGVzLmRlZiBiL2djYy9jb25maWcvYXJjL2FyYy1tb2Rlcy5kZWYKaW5k ZXggYjY0YTU5Ni4uOTIxYTU5OCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9h cmMvYXJjLW1vZGVzLmRlZgorKysgYi9nY2MvY29uZmlnL2FyYy9hcmMtbW9k ZXMuZGVmCkBAIC0zNSwzICszNSw3IEBAIENDX01PREUgKENDX0ZQWCk7CiBW RUNUT1JfTU9ERVMgKElOVCwgNCk7ICAgICAgICAvKiAgICAgICAgICAgIFY0 UUkgVjJISSAqLwogVkVDVE9SX01PREVTIChJTlQsIDgpOyAgICAgICAgLyog ICAgICAgVjhRSSBWNEhJIFYyU0kgKi8KIFZFQ1RPUl9NT0RFUyAoSU5ULCAx Nik7ICAgICAgIC8qIFYxNlFJIFY4SEkgVjRTSSBWMkRJICovCisKKy8qIEZQ VSBjb25kaXRpb24gZmxhZ3MuICAqLworQ0NfTU9ERSAoQ0NfRlBVKTsKK0ND X01PREUgKENDX0ZQVV9VTkVRKTsKZGlmZiAtLWdpdCBhL2djYy9jb25maWcv YXJjL2FyYy1vcHRzLmggYi9nY2MvY29uZmlnL2FyYy9hcmMtb3B0cy5oCmlu ZGV4IDBmMTI4ODUuLjFlMTFlYmM0IDEwMDY0NAotLS0gYS9nY2MvY29uZmln L2FyYy9hcmMtb3B0cy5oCisrKyBiL2djYy9jb25maWcvYXJjL2FyYy1vcHRz LmgKQEAgLTI3LDMgKzI3LDIzIEBAIGVudW0gcHJvY2Vzc29yX3R5cGUKICAg UFJPQ0VTU09SX0FSQ0VNLAogICBQUk9DRVNTT1JfQVJDSFMKIH07CisKKy8q IFNpbmdsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQuICAqLworI2RlZmlu ZSBGUFVfU1AgICAgMHgwMDAxCisvKiBTaW5nbGUgcHJlY2lzaW9uIGZ1c2Vk IGZsb2F0aW5nIHBvaW50IG9wZXJhdGlvbnMuICAqLworI2RlZmluZSBGUFVf U0YgICAgMHgwMDAyCisvKiBTaW5nbGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBv aW50IGZvcm1hdCBjb252ZXJzaW9uIG9wZXJhdGlvbnMuICAqLworI2RlZmlu ZSBGUFVfU0MgICAgMHgwMDA0CisvKiBTaW5nbGUgcHJlY2lzaW9uIGZsb2F0 aW5nIHBvaW50IHNxcnQgYW5kIGRpdiBvcGVyYXRpb25zLiAgKi8KKyNkZWZp bmUgRlBVX1NEICAgIDB4MDAwOAorLyogRG91YmxlIHByZWNpc2lvbiBmbG9h dGluZyBwb2ludC4gICovCisjZGVmaW5lIEZQVV9EUCAgICAweDAwMTAKKy8q IERvdWJsZSBwcmVjaXNpb24gZnVzZWQgZmxvYXRpbmcgcG9pbnQgb3BlcmF0 aW9ucy4gICovCisjZGVmaW5lIEZQVV9ERiAgICAweDAwMjAKKy8qIERvdWJs ZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgZm9ybWF0IGNvbnZlcnNpb24g b3BlcmF0aW9ucy4gICovCisjZGVmaW5lIEZQVV9EQyAgICAweDAwNDAKKy8q IERvdWJsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3FydCBhbmQgZGl2 IG9wZXJhdGlvbnMuICAqLworI2RlZmluZSBGUFVfREQgICAgMHgwMDgwCisv KiBEb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IGFzc2lzdCBvcGVy YXRpb25zLiAgKi8KKyNkZWZpbmUgRlBYX0RQICAgIDB4MDEwMAorCmRpZmYg LS1naXQgYS9nY2MvY29uZmlnL2FyYy9hcmMuYyBiL2djYy9jb25maWcvYXJj L2FyYy5jCmluZGV4IGI5Nzk5YTAuLjI1NGY1YzUgMTAwNjQ0Ci0tLSBhL2dj Yy9jb25maWcvYXJjL2FyYy5jCisrKyBiL2djYy9jb25maWcvYXJjL2FyYy5j CkBAIC03MTksOSArNzE5LDE2IEBAIGFyY19pbml0ICh2b2lkKQogCiAgIC8q IEZQWC0zLiBObyBGUFggZXh0ZW5zaW9ucyBvbiBwcmUtQVJDNjAwIGNvcmVz LiAgKi8KICAgaWYgKChUQVJHRVRfRFBGUCB8fCBUQVJHRVRfU1BGUCkKLSAg ICAgICYmICFUQVJHRVRfQVJDT01QQUNUX0ZBTUlMWSkKKyAgICAgICYmICgh VEFSR0VUX0FSQ09NUEFDVF9GQU1JTFkgJiYgIVRBUkdFVF9FTSkpCiAgICAg ZXJyb3IgKCJGUFggZXh0ZW5zaW9ucyBub3QgYXZhaWxhYmxlIG9uIHByZS1B UkM2MDAgY29yZXMiKTsKIAorICAvKiBGUFgtNC4gIE5vIEZQWCBleHRlbnNp b25zIG1peGVkIHdpdGggRlBVIGV4dGVuc2lvbnMgZm9yIEFSQyBIUworICAg ICBjcHVzLiAgKi8KKyAgaWYgKChUQVJHRVRfRFBGUCB8fCBUQVJHRVRfU1BG UCkKKyAgICAgICYmIFRBUkdFVF9IQVJEX0ZMT0FUCisgICAgICAmJiBUQVJH RVRfSFMpCisgICAgZXJyb3IgKCJObyBGUFgvRlBVIG1peGluZyBhbGxvd2Vk Iik7CisKICAgLyogT25seSBzZWxlY3RlZCBtdWx0aXBsaWVyIGNvbmZpZ3Vy YXRpb25zIGFyZSBhdmFpbGFibGUgZm9yIEhTLiAgKi8KICAgaWYgKFRBUkdF VF9IUyAmJiAoKGFyY19tcHlfb3B0aW9uID4gMiAmJiBhcmNfbXB5X29wdGlv biA8IDcpCiAJCSAgICB8fCAoYXJjX21weV9vcHRpb24gPT0gMSkpKQpAQCAt NzQzLDYgKzc1MCwxOSBAQCBhcmNfaW5pdCAodm9pZCkKICAgaWYgKFRBUkdF VF9MTDY0ICYmICFUQVJHRVRfSFMpCiAgICAgZXJyb3IgKCItbWxsNjQgaXMg b25seSBzdXBwb3J0ZWQgZm9yIEFSQyBIUyBjb3JlcyIpOwogCisgIC8qIEZQ VSBzdXBwb3J0IG9ubHkgZm9yIFYyLiAgKi8KKyAgaWYgKFRBUkdFVF9IQVJE X0ZMT0FUKQorICAgIHsKKyAgICAgIGlmIChUQVJHRVRfRU0KKwkgICYmIChh cmNfZnB1X2J1aWxkICYgfihGUFVfU1AgfCBGUFVfU0YgfCBGUFVfU0MgfCBG UFVfU0QgfCBGUFhfRFApKSkKKwllcnJvciAoIkZQVSBkb3VibGUgcHJlY2lz aW9uIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3IgQVJDIEhTIG9ubHkiKTsK KyAgICAgIGlmIChUQVJHRVRfSFMgJiYgKGFyY19mcHVfYnVpbGQgJiBGUFhf RFApKQorCWVycm9yICgiRlBVIGRvdWJsZSBwcmVjaXNpb24gYXNzaXN0ICIK KwkgICAgICAgIm9wdGlvbnMgYXJlIG5vdCBhdmFpbGFibGUgZm9yIEFSQyBI UyIpOworICAgICAgaWYgKCFUQVJHRVRfSFMgJiYgIVRBUkdFVF9FTSkKKwll cnJvciAoIkZQVSBvcHRpb25zIGFyZSBhdmFpbGFibGUgZm9yIEFSQ3YyIGFy Y2hpdGVjdHVyZSBvbmx5Iik7CisgICAgfQorCiAgIGFyY19pbml0X3JlZ190 YWJsZXMgKCk7CiAKICAgLyogSW5pdGlhbGl6ZSBhcnJheSBmb3IgUFJJTlRf T1BFUkFORF9QVU5DVF9WQUxJRF9QLiAgKi8KQEAgLTkyNiw2ICs5NDYsMzMg QEAgZ2V0X2FyY19jb25kaXRpb25fY29kZSAocnR4IGNvbXBhcmlzb24pCiAJ Y2FzZSBVTkVRICAgICAgOiByZXR1cm4gQVJDX0NDX0xTOwogCWRlZmF1bHQg OiBnY2NfdW5yZWFjaGFibGUgKCk7CiAJfQorICAgIGNhc2UgQ0NfRlBVbW9k ZToKKyAgICAgIHN3aXRjaCAoR0VUX0NPREUgKGNvbXBhcmlzb24pKQorCXsK KwljYXNlIEVRCSAgICAgICA6IHJldHVybiBBUkNfQ0NfRVE7CisJY2FzZSBO RQkgICAgICAgOiByZXR1cm4gQVJDX0NDX05FOworCWNhc2UgR1QJICAgICAg IDogcmV0dXJuIEFSQ19DQ19HVDsKKwljYXNlIEdFCSAgICAgICA6IHJldHVy biBBUkNfQ0NfR0U7CisJY2FzZSBMVAkgICAgICAgOiByZXR1cm4gQVJDX0ND X0M7CisJY2FzZSBMRQkgICAgICAgOiByZXR1cm4gQVJDX0NDX0xTOworCWNh c2UgVU5PUkRFUkVEIDogcmV0dXJuIEFSQ19DQ19WOworCWNhc2UgT1JERVJF RCAgIDogcmV0dXJuIEFSQ19DQ19OVjsKKwljYXNlIFVOR1QgICAgICA6IHJl dHVybiBBUkNfQ0NfSEk7CisJY2FzZSBVTkdFICAgICAgOiByZXR1cm4gQVJD X0NDX0hTOworCWNhc2UgVU5MVCAgICAgIDogcmV0dXJuIEFSQ19DQ19MVDsK KwljYXNlIFVOTEUgICAgICA6IHJldHVybiBBUkNfQ0NfTEU7CisJICAvKiBV TkVRIGFuZCBMVEdUIGRvIG5vdCBoYXZlIHJlcHJlc2VudGF0aW9uLiAgKi8K KwljYXNlIExUR1QgICAgICA6IC8qIEZhbGwgdGhyb3VnaC4gICovCisJY2Fz ZSBVTkVRICAgICAgOiAvKiBGYWxsIHRocm91Z2guICAqLworCWRlZmF1bHQg OiBnY2NfdW5yZWFjaGFibGUgKCk7CisJfQorICAgIGNhc2UgQ0NfRlBVX1VO RVFtb2RlOgorICAgICAgc3dpdGNoIChHRVRfQ09ERSAoY29tcGFyaXNvbikp CisJeworCWNhc2UgTFRHVCA6IHJldHVybiBBUkNfQ0NfTkU7CisJY2FzZSBV TkVRIDogcmV0dXJuIEFSQ19DQ19FUTsKKwlkZWZhdWx0IDogZ2NjX3VucmVh Y2hhYmxlICgpOworCX0KICAgICBkZWZhdWx0IDogZ2NjX3VucmVhY2hhYmxl ICgpOwogICAgIH0KICAgLypOT1RSRUFDSEVEKi8KQEAgLTEwMDksMTkgKzEw NTYsNDYgQEAgYXJjX3NlbGVjdF9jY19tb2RlIChlbnVtIHJ0eF9jb2RlIG9w LCBydHggeCwgcnR4IHkpCiAJcmV0dXJuIENDX0ZQX0dFbW9kZTsKICAgICAg IGRlZmF1bHQ6IGdjY191bnJlYWNoYWJsZSAoKTsKICAgICAgIH0KLSAgZWxz ZSBpZiAoR0VUX01PREVfQ0xBU1MgKG1vZGUpID09IE1PREVfRkxPQVQgJiYg VEFSR0VUX09QVEZQRSkKKyAgZWxzZSBpZiAoVEFSR0VUX0hBUkRfRkxPQVQK KwkgICAmJiAoKG1vZGUgPT0gU0Ztb2RlICYmIFRBUkdFVF9GUF9TUF9CQVNF KQorCSAgICAgICB8fCAobW9kZSA9PSBERm1vZGUgJiYgVEFSR0VUX0ZQX0RQ X0JBU0UpKSkKICAgICBzd2l0Y2ggKG9wKQogICAgICAgewotICAgICAgY2Fz ZSBFUTogY2FzZSBORTogcmV0dXJuIENDX1ptb2RlOwotICAgICAgY2FzZSBM VDogY2FzZSBVTkdFOgotICAgICAgY2FzZSBHVDogY2FzZSBVTkxFOiByZXR1 cm4gQ0NfRlBfR1Rtb2RlOwotICAgICAgY2FzZSBMRTogY2FzZSBVTkdUOgot ICAgICAgY2FzZSBHRTogY2FzZSBVTkxUOiByZXR1cm4gQ0NfRlBfR0Vtb2Rl OwotICAgICAgY2FzZSBVTkVROiBjYXNlIExUR1Q6IHJldHVybiBDQ19GUF9V TkVRbW9kZTsKLSAgICAgIGNhc2UgT1JERVJFRDogY2FzZSBVTk9SREVSRUQ6 IHJldHVybiBDQ19GUF9PUkRtb2RlOwotICAgICAgZGVmYXVsdDogZ2NjX3Vu cmVhY2hhYmxlICgpOwotICAgICAgfQorICAgICAgY2FzZSBFUToKKyAgICAg IGNhc2UgTkU6CisgICAgICBjYXNlIFVOT1JERVJFRDoKKyAgICAgIGNhc2Ug T1JERVJFRDoKKyAgICAgIGNhc2UgVU5MVDoKKyAgICAgIGNhc2UgVU5MRToK KyAgICAgIGNhc2UgVU5HVDoKKyAgICAgIGNhc2UgVU5HRToKKyAgICAgIGNh c2UgTFQ6CisgICAgICBjYXNlIExFOgorICAgICAgY2FzZSBHVDoKKyAgICAg IGNhc2UgR0U6CisJcmV0dXJuIENDX0ZQVW1vZGU7CisKKyAgICAgIGNhc2Ug TFRHVDoKKyAgICAgIGNhc2UgVU5FUToKKwlyZXR1cm4gQ0NfRlBVX1VORVFt b2RlOwogCisgICAgICBkZWZhdWx0OgorCWdjY191bnJlYWNoYWJsZSAoKTsK KyAgICAgIH0KKyAgZWxzZSBpZiAoR0VUX01PREVfQ0xBU1MgKG1vZGUpID09 IE1PREVfRkxPQVQgJiYgVEFSR0VUX09QVEZQRSkKKyAgICB7CisgICAgICBz d2l0Y2ggKG9wKQorCXsKKwljYXNlIEVROiBjYXNlIE5FOiByZXR1cm4gQ0Nf Wm1vZGU7CisJY2FzZSBMVDogY2FzZSBVTkdFOgorCWNhc2UgR1Q6IGNhc2Ug VU5MRTogcmV0dXJuIENDX0ZQX0dUbW9kZTsKKwljYXNlIExFOiBjYXNlIFVO R1Q6CisJY2FzZSBHRTogY2FzZSBVTkxUOiByZXR1cm4gQ0NfRlBfR0Vtb2Rl OworCWNhc2UgVU5FUTogY2FzZSBMVEdUOiByZXR1cm4gQ0NfRlBfVU5FUW1v ZGU7CisJY2FzZSBPUkRFUkVEOiBjYXNlIFVOT1JERVJFRDogcmV0dXJuIEND X0ZQX09SRG1vZGU7CisJZGVmYXVsdDogZ2NjX3VucmVhY2hhYmxlICgpOwor CX0KKyAgICB9CiAgIHJldHVybiBDQ21vZGU7CiB9CiAKQEAgLTEyODIsNiAr MTM1NiwxNiBAQCBhcmNfY29uZGl0aW9uYWxfcmVnaXN0ZXJfdXNhZ2UgKHZv aWQpCiAJYXJjX2hhcmRfcmVnbm9fbW9kZV9va1s2MF0gPSAxIDw8IChpbnQp IFNfTU9ERTsKICAgICB9CiAKKyAgLyogQVJDSFMgaGFzIDY0LWJpdCBkYXRh LXBhdGggd2hpY2ggbWFrZXMgdXNlIG9mIHRoZSBldmVuLW9kZCBwYWlyZWQK KyAgICAgcmVnaXN0ZXJzLiAgKi8KKyAgaWYgKFRBUkdFVF9IUykKKyAgICB7 CisgICAgICBmb3IgKHJlZ25vID0gMTsgcmVnbm8gPCAzMjsgcmVnbm8gKz0y KQorCXsKKwkgIGFyY19oYXJkX3JlZ25vX21vZGVfb2tbcmVnbm9dID0gU19N T0RFUzsKKwl9CisgICAgfQorCiAgIGZvciAoaSA9IDA7IGkgPCBGSVJTVF9Q U0VVRE9fUkVHSVNURVI7IGkrKykKICAgICB7CiAgICAgICBpZiAoaSA8IDI5 KQpAQCAtMTM3Niw2ICsxNDYwLDE5IEBAIGFyY19jb25kaXRpb25hbF9yZWdp c3Rlcl91c2FnZSAodm9pZCkKIAogICAvKiBwYyA6IHI2MyAqLwogICBhcmNf cmVnbm9fcmVnX2NsYXNzW1BST0dSQU1fQ09VTlRFUl9SRUdOT10gPSBHRU5F UkFMX1JFR1M7CisKKyAgLypBUkNWMiBBY2N1bXVsYXRvci4gICovCisgIGlm IChUQVJHRVRfVjIKKyAgICAgICYmIChUQVJHRVRfRlBfRFBfRlVTRUQgfHwg VEFSR0VUX0ZQX1NQX0ZVU0VEKSkKKyAgeworICAgIGFyY19yZWdub19yZWdf Y2xhc3NbQUNDTF9SRUdOT10gPSBXUklUQUJMRV9DT1JFX1JFR1M7CisgICAg YXJjX3JlZ25vX3JlZ19jbGFzc1tBQ0NIX1JFR05PXSA9IFdSSVRBQkxFX0NP UkVfUkVHUzsKKyAgICBTRVRfSEFSRF9SRUdfQklUIChyZWdfY2xhc3NfY29u dGVudHNbV1JJVEFCTEVfQ09SRV9SRUdTXSwgQUNDTF9SRUdOTyk7CisgICAg U0VUX0hBUkRfUkVHX0JJVCAocmVnX2NsYXNzX2NvbnRlbnRzW1dSSVRBQkxF X0NPUkVfUkVHU10sIEFDQ0hfUkVHTk8pOworICAgIFNFVF9IQVJEX1JFR19C SVQgKHJlZ19jbGFzc19jb250ZW50c1tDSEVBUF9DT1JFX1JFR1NdLCBBQ0NM X1JFR05PKTsKKyAgICBTRVRfSEFSRF9SRUdfQklUIChyZWdfY2xhc3NfY29u dGVudHNbQ0hFQVBfQ09SRV9SRUdTXSwgQUNDSF9SRUdOTyk7CisgICAgYXJj X2hhcmRfcmVnbm9fbW9kZV9va1tBQ0NfUkVHX0ZJUlNUXSA9IERfTU9ERVM7 CisgIH0KIH0KIAogLyogSGFuZGxlIGFuICJpbnRlcnJ1cHQiIGF0dHJpYnV0 ZTsgYXJndW1lbnRzIGFzIGluCkBAIC0xNTQ1LDYgKzE2NDIsMTAgQEAgZ2Vu X2NvbXBhcmVfcmVnIChydHggY29tcGFyaXNvbiwgbWFjaGluZV9tb2RlIG9t b2RlKQogCQkJCQkJIGdlbl9ydHhfUkVHIChDQ19GUFhtb2RlLCA2MSksCiAJ CQkJCQkgY29uc3QwX3J0eCkpKTsKICAgICB9CisgIGVsc2UgaWYgKFRBUkdF VF9IQVJEX0ZMT0FUCisJICAgJiYgKChjbW9kZSA9PSBTRm1vZGUgJiYgVEFS R0VUX0ZQX1NQX0JBU0UpCisJICAgICAgIHx8IChjbW9kZSA9PSBERm1vZGUg JiYgVEFSR0VUX0ZQX0RQX0JBU0UpKSkKKyAgICBlbWl0X2luc24gKGdlbl9y dHhfU0VUIChjY19yZWcsIGdlbl9ydHhfQ09NUEFSRSAobW9kZSwgeCwgeSkp KTsKICAgZWxzZSBpZiAoR0VUX01PREVfQ0xBU1MgKGNtb2RlKSA9PSBNT0RF X0ZMT0FUICYmIFRBUkdFVF9PUFRGUEUpCiAgICAgewogICAgICAgcnR4IG9w MCA9IGdlbl9ydHhfUkVHIChjbW9kZSwgMCk7CkBAIC0xNjM4LDEwICsxNzM5 LDExIEBAIGFyY19zZXR1cF9pbmNvbWluZ192YXJhcmdzIChjdW11bGF0aXZl X2FyZ3NfdCBhcmdzX3NvX2ZhciwKICAgLyogV2UgbXVzdCB0cmVhdCBgX19i dWlsdGluX3ZhX2FsaXN0JyBhcyBhbiBhbm9ueW1vdXMgYXJnLiAgKi8KIAog ICBuZXh0X2N1bSA9ICpnZXRfY3VtdWxhdGl2ZV9hcmdzIChhcmdzX3NvX2Zh cik7Ci0gIGFyY19mdW5jdGlvbl9hcmdfYWR2YW5jZSAocGFja19jdW11bGF0 aXZlX2FyZ3MgKCZuZXh0X2N1bSksIG1vZGUsIHR5cGUsIDEpOworICBhcmNf ZnVuY3Rpb25fYXJnX2FkdmFuY2UgKHBhY2tfY3VtdWxhdGl2ZV9hcmdzICgm bmV4dF9jdW0pLAorCQkJICAgIG1vZGUsIHR5cGUsIHRydWUpOwogICBmaXJz dF9hbm9uX2FyZyA9IG5leHRfY3VtOwogCi0gIGlmIChmaXJzdF9hbm9uX2Fy ZyA8IE1BWF9BUkNfUEFSTV9SRUdTKQorICBpZiAoRlVOQ1RJT05fQVJHX1JF R05PX1AgKGZpcnN0X2Fub25fYXJnKSkKICAgICB7CiAgICAgICAvKiBGaXJz dCBhbm9ueW1vdXMgKHVubmFtZWQpIGFyZ3VtZW50IGlzIGluIGEgcmVnLiAg Ki8KIApAQCAtNDg1Niw4ICs0OTU4LDYgQEAgYXJjX2FyZ19wYXJ0aWFsX2J5 dGVzIChjdW11bGF0aXZlX2FyZ3NfdCBjdW1fdiwgbWFjaGluZV9tb2RlIG1v ZGUsCiAgIHJldHVybiByZXQ7CiB9CiAKLQotCiAvKiBUaGlzIGZ1bmN0aW9u IGlzIHVzZWQgdG8gY29udHJvbCBhIGZ1bmN0aW9uIGFyZ3VtZW50IGlzIHBh c3NlZCBpbiBhCiAgICByZWdpc3RlciwgYW5kIHdoaWNoIHJlZ2lzdGVyLgog CkBAIC00ODk1LDggKzQ5OTUsMTAgQEAgYXJjX2FyZ19wYXJ0aWFsX2J5dGVz IChjdW11bGF0aXZlX2FyZ3NfdCBjdW1fdiwgbWFjaGluZV9tb2RlIG1vZGUs CiAgICBhbmQgdGhlIHJlc3QgYXJlIHB1c2hlZC4gICovCiAKIHN0YXRpYyBy dHgKLWFyY19mdW5jdGlvbl9hcmcgKGN1bXVsYXRpdmVfYXJnc190IGN1bV92 LCBtYWNoaW5lX21vZGUgbW9kZSwKLQkJICBjb25zdF90cmVlIHR5cGUgQVRU UklCVVRFX1VOVVNFRCwgYm9vbCBuYW1lZCBBVFRSSUJVVEVfVU5VU0VEKQor YXJjX2Z1bmN0aW9uX2FyZyAoY3VtdWxhdGl2ZV9hcmdzX3QgY3VtX3YsCisJ CSAgbWFjaGluZV9tb2RlIG1vZGUsCisJCSAgY29uc3RfdHJlZSB0eXBlIEFU VFJJQlVURV9VTlVTRUQsCisJCSAgYm9vbCBuYW1lZCBBVFRSSUJVVEVfVU5V U0VEKQogewogICBDVU1VTEFUSVZFX0FSR1MgKmN1bSA9IGdldF9jdW11bGF0 aXZlX2FyZ3MgKGN1bV92KTsKICAgaW50IGFyZ19udW0gPSAqY3VtOwpAQCAt NDk0Miw4ICs1MDQ0LDEwIEBAIGFyY19mdW5jdGlvbl9hcmcgKGN1bXVsYXRp dmVfYXJnc190IGN1bV92LCBtYWNoaW5lX21vZGUgbW9kZSwKICAgIGNvdXJz ZSBmdW5jdGlvbl9hcmdfcGFydGlhbF9ucmVncyB3aWxsIGNvbWUgaW50byBw bGF5LiAgKi8KIAogc3RhdGljIHZvaWQKLWFyY19mdW5jdGlvbl9hcmdfYWR2 YW5jZSAoY3VtdWxhdGl2ZV9hcmdzX3QgY3VtX3YsIG1hY2hpbmVfbW9kZSBt b2RlLAotCQkJICBjb25zdF90cmVlIHR5cGUsIGJvb2wgbmFtZWQgQVRUUklC VVRFX1VOVVNFRCkKK2FyY19mdW5jdGlvbl9hcmdfYWR2YW5jZSAoY3VtdWxh dGl2ZV9hcmdzX3QgY3VtX3YsCisJCQkgIG1hY2hpbmVfbW9kZSBtb2RlLAor CQkJICBjb25zdF90cmVlIHR5cGUsCisJCQkgIGJvb2wgbmFtZWQgQVRUUklC VVRFX1VOVVNFRCkKIHsKICAgQ1VNVUxBVElWRV9BUkdTICpjdW0gPSBnZXRf Y3VtdWxhdGl2ZV9hcmdzIChjdW1fdik7CiAgIGludCBieXRlcyA9IChtb2Rl ID09IEJMS21vZGUKQEAgLTY0MjAsNyArNjUyNCwxMiBAQCBhcmNfcmVvcmcg KHZvaWQpCiAJCSAgICAgIGJyZWFrOwogCQkgICAgfQogCQl9Ci0JICAgICAg aWYgKCEgbGlua19pbnNuKQorCSAgICAgIGlmICghbGlua19pbnNuCisJCSAg LyogQXZvaWQgRlBVIGluc3RydWN0aW9ucy4gICovCisJCSAgfHwgKEdFVF9N T0RFIChTRVRfREVTVAorCQkJCShQQVRURVJOIChsaW5rX2luc24pKSkgPT0g Q0NfRlBVbW9kZSkKKwkJICB8fCAoR0VUX01PREUgKFNFVF9ERVNUCisJCQkJ KFBBVFRFUk4gKGxpbmtfaW5zbikpKSA9PSBDQ19GUFVfVU5FUW1vZGUpKQog CQljb250aW51ZTsKIAkgICAgICBlbHNlCiAJCS8qIENoZWNrIGlmIHRoaXMg aXMgYSBkYXRhIGRlcGVuZGVuY3kuICAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2Nv bmZpZy9hcmMvYXJjLmggYi9nY2MvY29uZmlnL2FyYy9hcmMuaAppbmRleCAy NzY2NWIwLi4yMWMwNDlmIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FyYy9h cmMuaAorKysgYi9nY2MvY29uZmlnL2FyYy9hcmMuaApAQCAtMjU1LDcgKzI1 NSw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMu ICBJZiBub3Qgc2VlCiAjZGVmaW5lIFRBUkdFVF9NSVhFRF9DT0RFIChUQVJH RVRfTUlYRURfQ09ERV9TRVQpCiAKICNkZWZpbmUgVEFSR0VUX1NQRlAgKFRB UkdFVF9TUEZQX0ZBU1RfU0VUIHx8IFRBUkdFVF9TUEZQX0NPTVBBQ1RfU0VU KQotI2RlZmluZSBUQVJHRVRfRFBGUCAoVEFSR0VUX0RQRlBfRkFTVF9TRVQg fHwgVEFSR0VUX0RQRlBfQ09NUEFDVF9TRVQpCisjZGVmaW5lIFRBUkdFVF9E UEZQIChUQVJHRVRfRFBGUF9GQVNUX1NFVCB8fCBUQVJHRVRfRFBGUF9DT01Q QUNUX1NFVAlcCisJCSAgICAgfHwgVEFSR0VUX0ZQX0RQX0FYKQogCiAjZGVm aW5lIFNVQlRBUkdFVF9TV0lUQ0hFUwogCkBAIC0yNjYsMTEgKzI2NywxMiBA QCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYg bm90IHNlZQogICAgZGVmYXVsdCBmb3IgQTcsIGFuZCBvbmx5IGZvciBwcmUg QTcgY29yZXMgd2hlbiAtbW5vcm0gaXMgZ2l2ZW4uICAqLwogI2RlZmluZSBU QVJHRVRfTk9STSAoVEFSR0VUX0FSQzcwMCB8fCBUQVJHRVRfTk9STV9TRVQg fHwgVEFSR0VUX0hTKQogLyogSW5kaWNhdGUgaWYgYW4gb3B0aW1pemVkIGZs b2F0aW5nIHBvaW50IGVtdWxhdGlvbiBsaWJyYXJ5IGlzIGF2YWlsYWJsZS4g ICovCi0jZGVmaW5lIFRBUkdFVF9PUFRGUEUgXAotIChUQVJHRVRfQVJDNzAw IFwKLSAgLyogV2UgbmVlZCBhIGJhcnJlbCBzaGlmdGVyIGFuZCBOT1JNLiAg Ki8gXAotICB8fCAoVEFSR0VUX0FSQzYwMCAmJiBUQVJHRVRfTk9STV9TRVQp IFwKLSAgfHwgVEFSR0VUX0hTKQorI2RlZmluZSBUQVJHRVRfT1BURlBFCQkJ CVwKKyAgIChUQVJHRVRfQVJDNzAwCQkJCVwKKyAgICAvKiBXZSBuZWVkIGEg YmFycmVsIHNoaWZ0ZXIgYW5kIE5PUk0uICAqLwlcCisgICAgfHwgKFRBUkdF VF9BUkM2MDAgJiYgVEFSR0VUX05PUk1fU0VUKQlcCisgICAgfHwgVEFSR0VU X0hTCQkJCVwKKyAgICB8fCAoVEFSR0VUX0VNICYmIFRBUkdFVF9OT1JNX1NF VCAmJiBUQVJHRVRfQkFSUkVMX1NISUZURVIpKQogCiAvKiBOb24temVybyBt ZWFucyB0aGUgY3B1IHN1cHBvcnRzIHN3YXAgaW5zdHJ1Y3Rpb24uICBUaGlz IGZsYWcgaXMgc2V0IGJ5CiAgICBkZWZhdWx0IGZvciBBNywgYW5kIG9ubHkg Zm9yIHByZSBBNyBjb3JlcyB3aGVuIC1tc3dhcCBpcyBnaXZlbi4gICovCkBA IC03MTMsNiArNzE1LDEyIEBAIGVudW0gcmVnX2NsYXNzCiAjZGVmaW5lIEFS Q19GSVJTVF9TSU1EX0RNQV9DT05GSUdfT1VUX1JFRyAgMTM2CiAjZGVmaW5l IEFSQ19MQVNUX1NJTURfRE1BX0NPTkZJR19SRUcgICAgICAgMTQzCiAKKy8q IEFSQ3YyIGRvdWJsZS1yZWdpc3RlciBhY2N1bXVsYXRvci4gICovCisjZGVm aW5lIEFDQ19SRUdfRklSU1QgNTgKKyNkZWZpbmUgQUNDX1JFR19MQVNUICA1 OQorI2RlZmluZSBBQ0NMX1JFR05PICAgIChUQVJHRVRfQklHX0VORElBTiA/ IEFDQ19SRUdfRklSU1QgKyAxIDogQUNDX1JFR19GSVJTVCkKKyNkZWZpbmUg QUNDSF9SRUdOTyAgICAoVEFSR0VUX0JJR19FTkRJQU4gPyBBQ0NfUkVHX0ZJ UlNUIDogQUNDX1JFR19GSVJTVCArIDEpCisKIC8qIFRoZSBzYW1lIGluZm9y bWF0aW9uLCBpbnZlcnRlZDoKICAgIFJldHVybiB0aGUgY2xhc3MgbnVtYmVy IG9mIHRoZSBzbWFsbGVzdCBjbGFzcyBjb250YWluaW5nCiAgICByZWcgbnVt YmVyIFJFR05PLiAgVGhpcyBjb3VsZCBiZSBhIGNvbmRpdGlvbmFsIGV4cHJl c3Npb24KQEAgLTg2NCw3ICs4NzIsNyBAQCBhcmNfcmV0dXJuX2FkZHJfcnR4 KENPVU5ULEZSQU1FKQogICAgZm9yIGEgY2FsbCB0byBhIGZ1bmN0aW9uIHdo b3NlIGRhdGEgdHlwZSBpcyBGTlRZUEUuCiAgICBGb3IgYSBsaWJyYXJ5IGNh bGwsIEZOVFlQRSBpcyAwLiAgKi8KICNkZWZpbmUgSU5JVF9DVU1VTEFUSVZF X0FSR1MoQ1VNLEZOVFlQRSxMSUJOQU1FLElORElSRUNULE5fTkFNRURfQVJH UykgXAotKChDVU0pID0gMCkKKyAgKChDVU0pID0gMCkKIAogLyogVGhlIG51 bWJlciBvZiByZWdpc3RlcnMgdXNlZCBmb3IgcGFyYW1ldGVyIHBhc3Npbmcu ICBMb2NhbCB0byB0aGlzIGZpbGUuICAqLwogI2RlZmluZSBNQVhfQVJDX1BB Uk1fUkVHUyA4CkBAIC0xNjU2LDEyICsxNjY0LDEzIEBAIGV4dGVybiBlbnVt IGFyY19mdW5jdGlvbl90eXBlIGFyY19jb21wdXRlX2Z1bmN0aW9uX3R5cGUg KHN0cnVjdCBmdW5jdGlvbiAqKTsKICAgICYmIEdFVF9DT0RFIChQQVRURVJO IChYKSkgIT0gQ0xPQkJFUiBcCiAgICAmJiBnZXRfYXR0cl9pc18jI05BTUUg KFgpID09IElTXyMjTkFNRSMjX1lFUykgXAogCi0jZGVmaW5lIFJFVkVSU0Vf Q09ORElUSU9OKENPREUsTU9ERSkgXAotCSgoKE1PREUpID09IENDX0ZQX0dU bW9kZSB8fCAoTU9ERSkgPT0gQ0NfRlBfR0Vtb2RlIFwKLQkgIHx8IChNT0RF KSA9PSBDQ19GUF9VTkVRbW9kZSB8fCAoTU9ERSkgPT0gQ0NfRlBfT1JEbW9k ZSBcCi0JICB8fCAoTU9ERSkgPT0gQ0NfRlBYbW9kZSkgXAotCSA/IHJldmVy c2VfY29uZGl0aW9uX21heWJlX3Vub3JkZXJlZCAoKENPREUpKSBcCi0JIDog cmV2ZXJzZV9jb25kaXRpb24gKChDT0RFKSkpCisjZGVmaW5lIFJFVkVSU0Vf Q09ORElUSU9OKENPREUsTU9ERSkJCQkJIFwKKyAgKCgoTU9ERSkgPT0gQ0Nf RlBfR1Rtb2RlIHx8IChNT0RFKSA9PSBDQ19GUF9HRW1vZGUJCSBcCisgICAg fHwgKE1PREUpID09IENDX0ZQX1VORVFtb2RlIHx8IChNT0RFKSA9PSBDQ19G UF9PUkRtb2RlCSBcCisgICAgfHwgKE1PREUpID09IENDX0ZQWG1vZGUgfHwg KE1PREUpID09IENDX0ZQVV9VTkVRbW9kZQkgXAorICAgIHx8IChNT0RFKSA9 PSBDQ19GUFVtb2RlKQkJCQkJIFwKKyAgID8gcmV2ZXJzZV9jb25kaXRpb25f bWF5YmVfdW5vcmRlcmVkICgoQ09ERSkpCQkJIFwKKyAgIDogcmV2ZXJzZV9j b25kaXRpb24gKChDT0RFKSkpCiAKICNkZWZpbmUgQURKVVNUX0lOU05fTEVO R1RIKFgsIExFTkdUSCkgXAogICAoKExFTkdUSCkgXApAQCAtMTcyNCw0ICsx NzMzLDI2IEBAIGVudW0KICAgIGJlZW4gd3JpdHRlbiB0byBieSBhbiBvcmRp bmFyeSBpbnN0cnVjdGlvbi4gICovCiAjZGVmaW5lIFRBUkdFVF9MUF9XUl9J TlRFUkxPQ0sgKCFUQVJHRVRfQVJDNjAwX0ZBTUlMWSkKIAorLyogRlBVIGRl ZmluZXMuICAqLworLyogQW55IEZQVSBzdXBwb3J0LiAgKi8KKyNkZWZpbmUg VEFSR0VUX0hBUkRfRkxPQVQgKGFyY19mcHVfYnVpbGQgIT0gMCkKKy8qIFNp bmdsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3VwcG9ydC4gICovCisj ZGVmaW5lIFRBUkdFVF9GUF9TUF9CQVNFICAgKChhcmNfZnB1X2J1aWxkICYg RlBVX1NQKSAhPSAwKQorLyogRG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBw b2ludCBzdXBwb3J0LiAgKi8KKyNkZWZpbmUgVEFSR0VUX0ZQX0RQX0JBU0Ug ICAoKGFyY19mcHVfYnVpbGQgJiBGUFVfRFApICE9IDApCisvKiBTaW5nbGUg cHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHN1cHBvcnQgd2l0aCBmdXNlZCBv cGVyYXRpb24uICAqLworI2RlZmluZSBUQVJHRVRfRlBfU1BfRlVTRUQgICgo YXJjX2ZwdV9idWlsZCAmIEZQVV9TRikgIT0gMCkKKy8qIERvdWJsZSBwcmVj aXNpb24gZmxvYXRpbmcgcG9pbnQgc3VwcG9ydCB3aXRoIGZ1c2VkIG9wZXJh dGlvbi4gICovCisjZGVmaW5lIFRBUkdFVF9GUF9EUF9GVVNFRCAgKChhcmNf ZnB1X2J1aWxkICYgRlBVX0RGKSAhPSAwKQorLyogU2luZ2xlIHByZWNpc2lv biBmbG9hdGluZyBwb2ludCBjb252ZXJzaW9uIGluc3RydWN0aW9uIHN1cHBv cnQuICAqLworI2RlZmluZSBUQVJHRVRfRlBfU1BfQ09OViAgICgoYXJjX2Zw dV9idWlsZCAmIEZQVV9TQykgIT0gMCkKKy8qIERvdWJsZSBwcmVjaXNpb24g ZmxvYXRpbmcgcG9pbnQgY29udmVyc2lvbiBpbnN0cnVjdGlvbiBzdXBwb3J0 LiAgKi8KKyNkZWZpbmUgVEFSR0VUX0ZQX0RQX0NPTlYgICAoKGFyY19mcHVf YnVpbGQgJiBGUFVfREMpICE9IDApCisvKiBTaW5nbGUgcHJlY2lzaW9uIGZs b2F0aW5nIHBvaW50IFNRUlQvRElWIGluc3RydWN0aW9uIHN1cHBvcnQuICAq LworI2RlZmluZSBUQVJHRVRfRlBfU1BfU1FSVCAgICgoYXJjX2ZwdV9idWls ZCAmIEZQVV9TRCkgIT0gMCkKKy8qIERvdWJsZSBwcmVjaXNpb24gZmxvYXRp bmcgcG9pbnQgU1FSVC9ESVYgaW5zdHJ1Y3Rpb24gc3VwcG9ydC4gICovCisj ZGVmaW5lIFRBUkdFVF9GUF9EUF9TUVJUICAgKChhcmNfZnB1X2J1aWxkICYg RlBVX0REKSAhPSAwKQorLyogRG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBw b2ludCBhc3Npc3QgaW5zdHJ1Y3Rpb24gc3VwcG9ydC4gICovCisjZGVmaW5l IFRBUkdFVF9GUF9EUF9BWCAgICAgKChhcmNfZnB1X2J1aWxkICYgRlBYX0RQ KSAhPSAwKQorCiAjZW5kaWYgLyogR0NDX0FSQ19IICovCmRpZmYgLS1naXQg YS9nY2MvY29uZmlnL2FyYy9hcmMubWQgYi9nY2MvY29uZmlnL2FyYy9hcmMu bWQKaW5kZXggNjAyY2YwYi4uYmQ0ZTg1MCAxMDA2NDQKLS0tIGEvZ2NjL2Nv bmZpZy9hcmMvYXJjLm1kCisrKyBiL2djYy9jb25maWcvYXJjL2FyYy5tZApA QCAtMTc1LDYgKzE3NSw3IEBACiAgICAoSUxJTksyX1JFR05VTSAzMCkKICAg IChSRVRVUk5fQUREUl9SRUdOVU0gMzEpCiAgICAoTVVMNjRfT1VUX1JFRyA1 OCkKKyAgIChBUkNWMl9BQ0MgNTgpCiAKICAgIChMUF9DT1VOVCA2MCkKICAg IChDQ19SRUcgNjEpCkBAIC0yMDEsNyArMjAyLDggQEAKICAgIHNpbWRfdmFy aXRoX3dpdGhfYWNjLCBzaW1kX3Zsb2dpYywgc2ltZF92bG9naWNfd2l0aF9h Y2MsCiAgICBzaW1kX3Zjb21wYXJlLCBzaW1kX3ZwZXJtdXRlLCBzaW1kX3Zw YWNrLCBzaW1kX3ZwYWNrX3dpdGhfYWNjLAogICAgc2ltZF92YWxpZ24sIHNp bWRfdmFsaWduX3dpdGhfYWNjLCBzaW1kX3Zjb250cm9sLAotICAgc2ltZF92 c3BlY2lhbF8zY3ljbGUsIHNpbWRfdnNwZWNpYWxfNGN5Y2xlLCBzaW1kX2Rt YSwgbXVsMTZfZW0sIGRpdl9yZW0iCisgICBzaW1kX3ZzcGVjaWFsXzNjeWNs ZSwgc2ltZF92c3BlY2lhbF80Y3ljbGUsIHNpbWRfZG1hLCBtdWwxNl9lbSwg ZGl2X3JlbSwKKyAgIGZwdSIKICAgKGNvbmQgWyhlcV9hdHRyICJpc19zZnVu YyIgInllcyIpCiAJIChjb25kIFsobWF0Y2hfdGVzdCAiIVRBUkdFVF9MT05H X0NBTExTX1NFVCAmJiAoIVRBUkdFVF9NRURJVU1fQ0FMTFMgfHwgR0VUX0NP REUgKFBBVFRFUk4gKGluc24pKSAhPSBDT05EX0VYRUMpIikgKGNvbnN0X3N0 cmluZyAiY2FsbCIpCiAJCShtYXRjaF90ZXN0ICJmbGFnX3BpYyIpIChjb25z dF9zdHJpbmcgInNmdW5jIildCkBAIC0zMzY0LDcgKzMzNjYsOCBAQAogCiB9 KQogCi0oZGVmaW5lX21vZGVfaXRlcmF0b3IgU0RGIFtTRiBERl0pCisoZGVm aW5lX21vZGVfaXRlcmF0b3IgU0RGIFsoU0YgIlRBUkdFVF9GUF9TUF9CQVNF IHx8IFRBUkdFVF9PUFRGUEUiKQorCQkJICAgKERGICJUQVJHRVRfT1BURlBF IildKQogCiAoZGVmaW5lX2V4cGFuZCAiY3N0b3JlPG1vZGU+NCIKICAgWyhz ZXQgKHJlZzpDQyBDQ19SRUcpCkBAIC0zMzc0LDcgKzMzNzcsNyBAQAogCSht YXRjaF9vcGVyYXRvcjpTSSAxICJjb21wYXJpc29uX29wZXJhdG9yIiBbKHJl ZyBDQ19SRUcpCiAJCQkJCQkgICAgKGNvbnN0X2ludCAwKV0pKV0KIAotICAi VEFSR0VUX09QVEZQRSIKKyAgIlRBUkdFVF9GUF9TUF9CQVNFIHx8IFRBUkdF VF9PUFRGUEUiCiB7CiAgIGdjY19hc3NlcnQgKFhFWFAgKG9wZXJhbmRzWzFd LCAwKSA9PSBvcGVyYW5kc1syXSk7CiAgIGdjY19hc3NlcnQgKFhFWFAgKG9w ZXJhbmRzWzFdLCAxKSA9PSBvcGVyYW5kc1szXSk7CkBAIC01MTY3LDEyICs1 MTcwLDEyIEBACiAJCSAgICAobWF0Y2hfb3BlcmFuZDpTREYgMiAicmVnaXN0 ZXJfb3BlcmFuZCIgIiIpKSkKICAgIChzZXQgKHBjKQogCShpZl90aGVuX2Vs c2UKLQkgICAgICAobWF0Y2hfb3BlcmF0b3IgMCAiY29tcGFyaXNvbl9vcGVy YXRvciIgWyhyZWcgQ0NfUkVHKQotCQkJCQkJICAgICAgIChjb25zdF9pbnQg MCldKQotCSAgICAgIChsYWJlbF9yZWYgKG1hdGNoX29wZXJhbmQgMyAiIiAi IikpCi0JICAgICAgKHBjKSkpXQorCSAobWF0Y2hfb3BlcmF0b3IgMCAiY29t cGFyaXNvbl9vcGVyYXRvciIgWyhyZWcgQ0NfUkVHKQorCQkJCQkJICAgICAg KGNvbnN0X2ludCAwKV0pCisJIChsYWJlbF9yZWYgKG1hdGNoX29wZXJhbmQg MyAiIiAiIikpCisJIChwYykpKV0KIAotICAiVEFSR0VUX09QVEZQRSIKKyAg IlRBUkdFVF9GUF9TUF9CQVNFIHx8IFRBUkdFVF9PUFRGUEUiCiB7CiAgIGdj Y19hc3NlcnQgKFhFWFAgKG9wZXJhbmRzWzBdLCAwKSA9PSBvcGVyYW5kc1sx XSk7CiAgIGdjY19hc3NlcnQgKFhFWFAgKG9wZXJhbmRzWzBdLCAxKSA9PSBv cGVyYW5kc1syXSk7CkBAIC01NjI0LDkgKzU2MjcsMTU1IEBACiAgIFsoc2V0 X2F0dHIgImxlbmd0aCIgIjQiKQogICAgKHNldF9hdHRyICJ0eXBlIiAibWlz YyIpXSkKIAorCis7OyBGUFUvRlBYIGV4cGFuZHMKKworOzthZGQKKyhkZWZp bmVfZXhwYW5kICJhZGRzZjMiCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNG IDAgInJlZ2lzdGVyX29wZXJhbmQiICAgICAgICAgICAiIikKKwkocGx1czpT RiAobWF0Y2hfb3BlcmFuZDpTRiAxICJub25tZW1vcnlfb3BlcmFuZCIgIiIp CisJCSAobWF0Y2hfb3BlcmFuZDpTRiAyICJub25tZW1vcnlfb3BlcmFuZCIg IiIpKSldCisgICJUQVJHRVRfRlBfU1BfQkFTRSB8fCBUQVJHRVRfU1BGUCIK KyAgIgorICBpZiAoIXJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzFdLCBT Rm1vZGUpCisgICAgICAmJiAhcmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNb Ml0sIFNGbW9kZSkpCisgICAgb3BlcmFuZHNbMV0gPSBmb3JjZV9yZWcgKFNG bW9kZSwgb3BlcmFuZHNbMV0pOworICAiKQorCis7O3N1YgorKGRlZmluZV9l eHBhbmQgInN1YnNmMyIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0YgMCAi cmVnaXN0ZXJfb3BlcmFuZCIgICAgICAgICAgICAiIikKKwkobWludXM6U0Yg KG1hdGNoX29wZXJhbmQ6U0YgMSAibm9ubWVtb3J5X29wZXJhbmQiICIiKQor CQkgIChtYXRjaF9vcGVyYW5kOlNGIDIgIm5vbm1lbW9yeV9vcGVyYW5kIiAi IikpKV0KKyAgIlRBUkdFVF9GUF9TUF9CQVNFIHx8IFRBUkdFVF9TUEZQIgor ICAiCisgIGlmICghcmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNbMV0sIFNG bW9kZSkKKyAgICAgICYmICFyZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1sy XSwgU0Ztb2RlKSkKKyAgICBvcGVyYW5kc1sxXSA9IGZvcmNlX3JlZyAoU0Zt b2RlLCBvcGVyYW5kc1sxXSk7CisgICIpCisKKzs7bXVsCisoZGVmaW5lX2V4 cGFuZCAibXVsc2YzIgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTRiAwICJy ZWdpc3Rlcl9vcGVyYW5kIiAgICAgICAgICAgIiIpCisJKG11bHQ6U0YgKG1h dGNoX29wZXJhbmQ6U0YgMSAibm9ubWVtb3J5X29wZXJhbmQiICIiKQorCQkg KG1hdGNoX29wZXJhbmQ6U0YgMiAibm9ubWVtb3J5X29wZXJhbmQiICIiKSkp XQorICAiVEFSR0VUX0ZQX1NQX0JBU0UgfHwgVEFSR0VUX1NQRlAiCisgICIK KyAgaWYgKCFyZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1sxXSwgU0Ztb2Rl KQorICAgICAgJiYgIXJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzJdLCBT Rm1vZGUpKQorICAgIG9wZXJhbmRzWzFdID0gZm9yY2VfcmVnIChTRm1vZGUs IG9wZXJhbmRzWzFdKTsKKyAgIikKKworOzthZGQKKyhkZWZpbmVfZXhwYW5k ICJhZGRkZjMiCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImRvdWJs ZV9yZWdpc3Rlcl9vcGVyYW5kIiAgICAgICAgICAgIiIpCisJKHBsdXM6REYg KG1hdGNoX29wZXJhbmQ6REYgMSAiZG91YmxlX3JlZ2lzdGVyX29wZXJhbmQi ICAiIikKKwkJIChtYXRjaF9vcGVyYW5kOkRGIDIgIm5vbm1lbW9yeV9vcGVy YW5kIiAiIikpKV0KKyAiVEFSR0VUX0ZQX0RQX0JBU0UgfHwgVEFSR0VUX0RQ RlAiCisgIgorICBpZiAoVEFSR0VUX0RQRlApCisgICB7CisgICAgaWYgKEdF VF9DT0RFIChvcGVyYW5kc1syXSkgPT0gQ09OU1RfRE9VQkxFKQorICAgICB7 CisgICAgICAgIHJ0eCBoaWdoLCBsb3csIHRtcDsKKyAgICAgICAgc3BsaXRf ZG91YmxlIChvcGVyYW5kc1syXSwgJmxvdywgJmhpZ2gpOworICAgICAgICB0 bXAgPSBmb3JjZV9yZWcgKFNJbW9kZSwgaGlnaCk7CisgICAgICAgIGVtaXRf aW5zbiAoZ2VuX2FkZGRmM19pbnNuIChvcGVyYW5kc1swXSwgb3BlcmFuZHNb MV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVy YW5kc1syXSwgdG1wLCBjb25zdDBfcnR4KSk7CisgICAgIH0KKyAgICBlbHNl CisgICAgIGVtaXRfaW5zbiAoZ2VuX2FkZGRmM19pbnNuIChvcGVyYW5kc1sw XSwgb3BlcmFuZHNbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvcGVyYW5kc1syXSwgY29uc3QxX3J0eCwgY29uc3QxX3J0eCkpOwor ICAgRE9ORTsKKyAgfQorIGVsc2UgaWYgKFRBUkdFVF9GUF9EUF9CQVNFKQor ICB7CisgICBpZiAoIWV2ZW5fcmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNb Ml0sIERGbW9kZSkpCisgICAgICBvcGVyYW5kc1syXSA9IGZvcmNlX3JlZyAo REZtb2RlLCBvcGVyYW5kc1syXSk7CisKKyAgIGlmICghZXZlbl9yZWdpc3Rl cl9vcGVyYW5kIChvcGVyYW5kc1sxXSwgREZtb2RlKSkKKyAgICAgIG9wZXJh bmRzWzFdID0gZm9yY2VfcmVnIChERm1vZGUsIG9wZXJhbmRzWzFdKTsKKyAg fQorIGVsc2UKKyAgZ2NjX3VucmVhY2hhYmxlICgpOworICIpCisKKzs7c3Vi CisoZGVmaW5lX2V4cGFuZCAic3ViZGYzIgorICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpERiAwICJkb3VibGVfcmVnaXN0ZXJfb3BlcmFuZCIgICAgICAgICAg ICAiIikKKwkobWludXM6REYgKG1hdGNoX29wZXJhbmQ6REYgMSAibm9ubWVt b3J5X29wZXJhbmQiICIiKQorCQkgIChtYXRjaF9vcGVyYW5kOkRGIDIgIm5v bm1lbW9yeV9vcGVyYW5kIiAiIikpKV0KKyAgIlRBUkdFVF9GUF9EUF9CQVNF IHx8IFRBUkdFVF9EUEZQIgorICAiCisgICBpZiAoVEFSR0VUX0RQRlApCisg ICAgeworICAgICBpZiAoKEdFVF9DT0RFIChvcGVyYW5kc1sxXSkgPT0gQ09O U1RfRE9VQkxFKQorICAgICAgICAgIHx8IEdFVF9DT0RFIChvcGVyYW5kc1sy XSkgPT0gQ09OU1RfRE9VQkxFKQorICAgICAgeworICAgICAgICBydHggaGln aCwgbG93LCB0bXA7CisgICAgICAgIGludCBjb25zdF9pbmRleCA9ICgoR0VU X0NPREUgKG9wZXJhbmRzWzFdKSA9PSBDT05TVF9ET1VCTEUpID8gMSA6IDIp OworICAgICAgICBzcGxpdF9kb3VibGUgKG9wZXJhbmRzW2NvbnN0X2luZGV4 XSwgJmxvdywgJmhpZ2gpOworICAgICAgICB0bXAgPSBmb3JjZV9yZWcgKFNJ bW9kZSwgaGlnaCk7CisgICAgICAgIGVtaXRfaW5zbiAoZ2VuX3N1YmRmM19p bnNuIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvcGVyYW5kc1syXSwgdG1wLCBjb25z dDBfcnR4KSk7CisgICAgICB9CisgICAgZWxzZQorICAgICBlbWl0X2luc24g KGdlbl9zdWJkZjNfaW5zbiAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHNbMl0s IGNvbnN0MV9ydHgsIGNvbnN0MV9ydHgpKTsKKyAgICBET05FOworICAgfQor ICBlbHNlIGlmIChUQVJHRVRfRlBfRFBfQkFTRSkKKyAgIHsKKyAgICBpZiAo IWV2ZW5fcmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNbMl0sIERGbW9kZSkp CisgICAgICAgb3BlcmFuZHNbMl0gPSBmb3JjZV9yZWcgKERGbW9kZSwgb3Bl cmFuZHNbMl0pOworCisgICAgaWYgKCFldmVuX3JlZ2lzdGVyX29wZXJhbmQg KG9wZXJhbmRzWzFdLCBERm1vZGUpKQorICAgICAgIG9wZXJhbmRzWzFdID0g Zm9yY2VfcmVnIChERm1vZGUsIG9wZXJhbmRzWzFdKTsKKyAgIH0KKyAgZWxz ZQorICAgZ2NjX3VucmVhY2hhYmxlICgpOworICAiKQorCis7O211bAorKGRl ZmluZV9leHBhbmQgIm11bGRmMyIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 REYgMCAiZG91YmxlX3JlZ2lzdGVyX29wZXJhbmQiICAgICAgICAgICAiIikK KwkobXVsdDpERiAobWF0Y2hfb3BlcmFuZDpERiAxICJkb3VibGVfcmVnaXN0 ZXJfb3BlcmFuZCIgICIiKQorCQkgKG1hdGNoX29wZXJhbmQ6REYgMiAibm9u bWVtb3J5X29wZXJhbmQiICIiKSkpXQorICAiVEFSR0VUX0ZQX0RQX0JBU0Ug fHwgVEFSR0VUX0RQRlAiCisgICIKKyAgIGlmIChUQVJHRVRfRFBGUCkKKyAg ICB7CisgICAgIGlmIChHRVRfQ09ERSAob3BlcmFuZHNbMl0pID09IENPTlNU X0RPVUJMRSkKKyAgICAgIHsKKyAgICAgICAgcnR4IGhpZ2gsIGxvdywgdG1w OworICAgICAgICBzcGxpdF9kb3VibGUgKG9wZXJhbmRzWzJdLCAmbG93LCAm aGlnaCk7CisgICAgICAgIHRtcCA9IGZvcmNlX3JlZyAoU0ltb2RlLCBoaWdo KTsKKyAgICAgICAgZW1pdF9pbnNuIChnZW5fbXVsZGYzX2luc24gKG9wZXJh bmRzWzBdLCBvcGVyYW5kc1sxXSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG9wZXJhbmRzWzJdLCB0bXAsIGNvbnN0MF9ydHgpKTsK KyAgICAgIH0KKyAgICAgZWxzZQorICAgICAgZW1pdF9pbnNuIChnZW5fbXVs ZGYzX2luc24gKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYW5kc1syXSwgY29uc3Qx X3J0eCwgY29uc3QxX3J0eCkpOworICAgIERPTkU7CisgICB9CisgIGVsc2Ug aWYgKFRBUkdFVF9GUF9EUF9CQVNFKQorICAgeworICAgIGlmICghZXZlbl9y ZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1syXSwgREZtb2RlKSkKKyAgICAg ICBvcGVyYW5kc1syXSA9IGZvcmNlX3JlZyAoREZtb2RlLCBvcGVyYW5kc1sy XSk7CisKKyAgICBpZiAoIWV2ZW5fcmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFu ZHNbMV0sIERGbW9kZSkpCisgICAgICAgb3BlcmFuZHNbMV0gPSBmb3JjZV9y ZWcgKERGbW9kZSwgb3BlcmFuZHNbMV0pOworICAgfQorICBlbHNlCisgICBn Y2NfdW5yZWFjaGFibGUgKCk7CisgIikKKwogOzsgaW5jbHVkZSB0aGUgYXJj LUZQWCBpbnN0cnVjdGlvbnMKIChpbmNsdWRlICJmcHgubWQiKQogCis7OyBp bmNsdWRlIHRoZSBhcmMtRlBVIGluc3RydWN0aW9ucworKGluY2x1ZGUgImZw dS5tZCIpCisKIChpbmNsdWRlICJzaW1kZXh0Lm1kIikKIAogOzsgaW5jbHVk ZSBhdG9taWMgZXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9h cmMvYXJjLm9wdCBiL2djYy9jb25maWcvYXJjL2FyYy5vcHQKaW5kZXggMDBi OThkNS4uMjIyN2I3NSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hcmMvYXJj Lm9wdAorKysgYi9nY2MvY29uZmlnL2FyYy9hcmMub3B0CkBAIC00MTMsMyAr NDEzLDQ2IEBAIEVuYWJsZSBhdG9taWMgaW5zdHJ1Y3Rpb25zLgogbWxsNjQK IFRhcmdldCBSZXBvcnQgTWFzayhMTDY0KQogRW5hYmxlIGRvdWJsZSBsb2Fk L3N0b3JlIGluc3RydWN0aW9ucyBmb3IgQVJDIEhTLgorCittZnB1PQorVGFy Z2V0IFJlamVjdE5lZ2F0aXZlIEpvaW5lZCBFbnVtKGFyY19mcHUpIFZhcihh cmNfZnB1X2J1aWxkKSBJbml0KDApCitTcGVjaWZ5IHRoZSBuYW1lIG9mIHRo ZSB0YXJnZXQgZmxvYXRpbmcgcG9pbnQgY29uZmlndXJhdGlvbi4KKworRW51 bQorTmFtZShhcmNfZnB1KSBUeXBlKGludCkKKworRW51bVZhbHVlCitFbnVt KGFyY19mcHUpIFN0cmluZyhmcHVzKSBWYWx1ZShGUFVfU1AgfCBGUFVfU0Mp CisKK0VudW1WYWx1ZQorRW51bShhcmNfZnB1KSBTdHJpbmcoZnB1ZCkgVmFs dWUoRlBVX1NQIHwgRlBVX1NDIHwgRlBVX0RQIHwgRlBVX0RDKQorCitFbnVt VmFsdWUKK0VudW0oYXJjX2ZwdSkgU3RyaW5nKGZwdWRhKSBWYWx1ZShGUFVf U1AgfCBGUFVfU0MgfCBGUFhfRFApCisKK0VudW1WYWx1ZQorRW51bShhcmNf ZnB1KSBTdHJpbmcoZnB1ZGFfZGl2KSBWYWx1ZShGUFVfU1AgfCBGUFVfU0Mg fCBGUFVfU0QgfCBGUFhfRFApCisKK0VudW1WYWx1ZQorRW51bShhcmNfZnB1 KSBTdHJpbmcoZnB1ZGFfZm1hKSBWYWx1ZShGUFVfU1AgfCBGUFVfU0MgfCBG UFVfU0YgfCBGUFhfRFApCisKK0VudW1WYWx1ZQorRW51bShhcmNfZnB1KSBT dHJpbmcoZnB1ZGFfYWxsKSBWYWx1ZShGUFVfU1AgfCBGUFVfU0MgfCBGUFVf U0YgfCBGUFVfU0QgfCBGUFhfRFApCisKK0VudW1WYWx1ZQorRW51bShhcmNf ZnB1KSBTdHJpbmcoZnB1c19kaXYpIFZhbHVlKEZQVV9TUCB8IEZQVV9TQyB8 IEZQVV9TRCkKKworRW51bVZhbHVlCitFbnVtKGFyY19mcHUpIFN0cmluZyhm cHVkX2RpdikgVmFsdWUoRlBVX1NQIHwgRlBVX1NDIHwgRlBVX1NEIHwgRlBV X0RQIHwgRlBVX0RDIHwgRlBVX0REKQorCitFbnVtVmFsdWUKK0VudW0oYXJj X2ZwdSkgU3RyaW5nKGZwdXNfZm1hKSBWYWx1ZShGUFVfU1AgfCBGUFVfU0Mg fCBGUFVfU0YpCisKK0VudW1WYWx1ZQorRW51bShhcmNfZnB1KSBTdHJpbmco ZnB1ZF9mbWEpIFZhbHVlKEZQVV9TUCB8IEZQVV9TQyB8IEZQVV9TRiB8IEZQ VV9EUCB8IEZQVV9EQyB8IEZQVV9ERikKKworRW51bVZhbHVlCitFbnVtKGFy Y19mcHUpIFN0cmluZyhmcHVzX2FsbCkgVmFsdWUoRlBVX1NQIHwgRlBVX1ND IHwgRlBVX1NGIHwgRlBVX1NEKQorCitFbnVtVmFsdWUKK0VudW0oYXJjX2Zw dSkgU3RyaW5nKGZwdWRfYWxsKSBWYWx1ZShGUFVfU1AgfCBGUFVfU0MgfCBG UFVfU0YgfCBGUFVfU0QgfCBGUFVfRFAgfCBGUFVfREMgfCBGUFVfREYgfCBG UFVfREQpCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FyYy9mcHUubWQgYi9n Y2MvY29uZmlnL2FyYy9mcHUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMWI1MDIyYwotLS0gL2Rldi9udWxsCisrKyBiL2djYy9j b25maWcvYXJjL2ZwdS5tZApAQCAtMCwwICsxLDU2NiBAQAorOzsgOjo6Ojo6 Ojo6Ojo6Ojo6Ojo6OjoKKzs7IDo6Cis7OyA6OiAzMi1iaXQgZmxvYXRpbmcg cG9pbnQgYXJpdGhtZXRpYworOzsgOjoKKzs7IDo6Ojo6Ojo6Ojo6Ojo6Ojo6 Ojo6CisKKzs7IEFkZGl0aW9uCisoZGVmaW5lX2luc24gIiphZGRzZjNfZnB1 IgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTRiAwICJyZWdpc3Rlcl9vcGVy YW5kIiAgICAgICAgICAgIj1yLHIscixyLHIiKQorCShwbHVzOlNGIChtYXRj aF9vcGVyYW5kOlNGIDEgIm5vbm1lbW9yeV9vcGVyYW5kIiAiJTAsciwwLHIs RiIpCisJCSAobWF0Y2hfb3BlcmFuZDpTRiAyICJub25tZW1vcnlfb3BlcmFu ZCIgICJyLHIsRixGLHIiKSkpXQorICAiVEFSR0VUX0ZQX1NQX0JBU0UKKyAg ICYmIChyZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1sxXSwgU0Ztb2RlKQor ICAgICAgIHx8IHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzJdLCBTRm1v ZGUpKSIKKyAgImZzYWRkJT8gJTAsJTEsJTIiCisgIFsoc2V0X2F0dHIgImxl bmd0aCIgIjQsNCw4LDgsOCIpCisgICAoc2V0X2F0dHIgImlzY29tcGFjdCIg ImZhbHNlIikKKyAgIChzZXRfYXR0ciAidHlwZSIgImZwdSIpCisgICAoc2V0 X2F0dHIgInByZWRpY2FibGUiICJ5ZXMsbm8seWVzLG5vLG5vIikKKyAgIChz ZXRfYXR0ciAiY29uZCIgImNhbnVzZSxub2NvbmQsY2FudXNlX2xpbW0sbm9j b25kLG5vY29uZCIpCisgICBdKQorCis7OyBTdWJ0cmFjdGlvbgorKGRlZmlu ZV9pbnNuICIqc3Vic2YzX2ZwdSIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 U0YgMCAicmVnaXN0ZXJfb3BlcmFuZCIgICAgICAgICAgICI9cixyLHIscixy IikKKwkobWludXM6U0YgKG1hdGNoX29wZXJhbmQ6U0YgMSAibm9ubWVtb3J5 X29wZXJhbmQiICIwLHIsMCxyLEYiKQorCQkgIChtYXRjaF9vcGVyYW5kOlNG IDIgIm5vbm1lbW9yeV9vcGVyYW5kIiAicixyLEYsRixyIikpKV0KKyAgIlRB UkdFVF9GUF9TUF9CQVNFCisgICAmJiAocmVnaXN0ZXJfb3BlcmFuZCAob3Bl cmFuZHNbMV0sIFNGbW9kZSkKKyAgICAgICB8fCByZWdpc3Rlcl9vcGVyYW5k IChvcGVyYW5kc1syXSwgU0Ztb2RlKSkiCisgICJmc3N1YiU/ICUwLCUxLCUy IgorICBbKHNldF9hdHRyICJsZW5ndGgiICI0LDQsOCw4LDgiKQorICAgKHNl dF9hdHRyICJpc2NvbXBhY3QiICJmYWxzZSIpCisgICAoc2V0X2F0dHIgInR5 cGUiICJmcHUiKQorICAgKHNldF9hdHRyICJwcmVkaWNhYmxlIiAieWVzLG5v LHllcyxubyxubyIpCisgICAoc2V0X2F0dHIgImNvbmQiICJjYW51c2Usbm9j b25kLGNhbnVzZV9saW1tLG5vY29uZCxub2NvbmQiKQorICAgXSkKKworOzsg TXVsdGlwbGljYXRpb24KKyhkZWZpbmVfaW5zbiAiKm11bHNmM19mcHUiCisg IFsoc2V0IChtYXRjaF9vcGVyYW5kOlNGIDAgInJlZ2lzdGVyX29wZXJhbmQi ICAgICAgICAgICAiPXIscixyLHIsciIpCisJKG11bHQ6U0YgKG1hdGNoX29w ZXJhbmQ6U0YgMSAibm9ubWVtb3J5X29wZXJhbmQiICIlMCxyLDAscixGIikK KwkJIChtYXRjaF9vcGVyYW5kOlNGIDIgIm5vbm1lbW9yeV9vcGVyYW5kIiAg InIscixGLEYsciIpKSldCisgICJUQVJHRVRfRlBfU1BfQkFTRQorICAgJiYg KHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzFdLCBTRm1vZGUpCisgICAg ICAgfHwgcmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNbMl0sIFNGbW9kZSkp IgorICAiZnNtdWwlPyAlMCwlMSwlMiIKKyAgWyhzZXRfYXR0ciAibGVuZ3Ro IiAiNCw0LDgsOCw4IikKKyAgIChzZXRfYXR0ciAiaXNjb21wYWN0IiAiZmFs c2UiKQorICAgKHNldF9hdHRyICJ0eXBlIiAiZnB1IikKKyAgIChzZXRfYXR0 ciAicHJlZGljYWJsZSIgInllcyxubyx5ZXMsbm8sbm8iKQorICAgKHNldF9h dHRyICJjb25kIiAiY2FudXNlLG5vY29uZCxjYW51c2VfbGltbSxub2NvbmQs bm9jb25kIikKKyAgIF0pCisKKzs7IE11bHRpcGxpY2F0aW9uIHdpdGggYWRk aXRpb24vc3VidHJhY3Rpb24KKyhkZWZpbmVfZXhwYW5kICJmbWFzZjQiCisg IFsoc2V0IChtYXRjaF9vcGVyYW5kOlNGIDAgInJlZ2lzdGVyX29wZXJhbmQi ICIiKQorCShmbWE6U0YgKG1hdGNoX29wZXJhbmQ6U0YgMSAibm9ubWVtb3J5 X29wZXJhbmQiICIiKQorCQkobWF0Y2hfb3BlcmFuZDpTRiAyICJub25tZW1v cnlfb3BlcmFuZCIgIiIpCisJCShtYXRjaF9vcGVyYW5kOlNGIDMgIm5vbm1l bW9yeV9vcGVyYW5kIiAiIikpKV0KKyAgIlRBUkdFVF9GUF9TUF9GVVNFRCIK KyAgInsKKyAgIHJ0eCB0bXA7CisgICB0bXAgPSBnZW5fcnR4X1JFRyAoU0Zt b2RlLCBBQ0NMX1JFR05PKTsKKyAgIGVtaXRfbW92ZV9pbnNuICh0bXAsIG9w ZXJhbmRzWzNdKTsKKyAgIG9wZXJhbmRzWzNdID0gdG1wOworICAgfSIpCisK KyhkZWZpbmVfZXhwYW5kICJmbm1hc2Y0IgorICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpTRiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKKwkoZm1hOlNGIChu ZWc6U0YgKG1hdGNoX29wZXJhbmQ6U0YgMSAibm9ubWVtb3J5X29wZXJhbmQi ICIiKSkKKwkJKG1hdGNoX29wZXJhbmQ6U0YgMiAibm9ubWVtb3J5X29wZXJh bmQiICAgICAgICAgIiIpCisJCShtYXRjaF9vcGVyYW5kOlNGIDMgIm5vbm1l bW9yeV9vcGVyYW5kIiAgICAgICAgICIiKSkpXQorICAiVEFSR0VUX0ZQX1NQ X0ZVU0VEIgorICAieworICAgcnR4IHRtcDsKKyAgIHRtcCA9IGdlbl9ydHhf UkVHIChTRm1vZGUsIEFDQ0xfUkVHTk8pOworICAgZW1pdF9tb3ZlX2luc24g KHRtcCwgb3BlcmFuZHNbM10pOworICAgb3BlcmFuZHNbM10gPSB0bXA7Cit9 IikKKworKGRlZmluZV9pbnNuICJmbWFzZjRfZnB1IgorICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpTRiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAgICAgICAgICAi PXIscixyLHIsciIpCisJKGZtYTpTRiAobWF0Y2hfb3BlcmFuZDpTRiAxICJu b25tZW1vcnlfb3BlcmFuZCIgIiUwLHIsMCxyLEYiKQorCQkobWF0Y2hfb3Bl cmFuZDpTRiAyICJub25tZW1vcnlfb3BlcmFuZCIgICJyLHIsRixGLHIiKQor CQkobWF0Y2hfb3BlcmFuZDpTRiAzICJtbG9fb3BlcmFuZCIgIiIpKSldCisg ICJUQVJHRVRfRlBfU1BfRlVTRUQKKyAgICYmIChyZWdpc3Rlcl9vcGVyYW5k IChvcGVyYW5kc1sxXSwgU0Ztb2RlKQorICAgICAgIHx8IHJlZ2lzdGVyX29w ZXJhbmQgKG9wZXJhbmRzWzJdLCBTRm1vZGUpKSIKKyAgImZzbWFkZCU/ICUw LCUxLCUyIgorICBbKHNldF9hdHRyICJsZW5ndGgiICI0LDQsOCw4LDgiKQor ICAgKHNldF9hdHRyICJwcmVkaWNhYmxlIiAieWVzLG5vLHllcyxubyxubyIp CisgICAoc2V0X2F0dHIgImNvbmQiICJjYW51c2Usbm9jb25kLGNhbnVzZV9s aW1tLG5vY29uZCxub2NvbmQiKQorICAgKHNldF9hdHRyICJpc2NvbXBhY3Qi ICJmYWxzZSIpCisgICAoc2V0X2F0dHIgInR5cGUiICJmcHUiKV0pCisKKyhk ZWZpbmVfaW5zbiAiZm5tYXNmNF9mcHUiCisgIFsoc2V0IChtYXRjaF9vcGVy YW5kOlNGIDAgInJlZ2lzdGVyX29wZXJhbmQiICAgICAgICAgICAgICAgICAg Ij1yLHIscixyLHIiKQorCShmbWE6U0YgKG5lZzpTRiAobWF0Y2hfb3BlcmFu ZDpTRiAxICJub25tZW1vcnlfb3BlcmFuZCIgIiUwLHIsMCxyLEYiKSkKKwkJ KG1hdGNoX29wZXJhbmQ6U0YgMiAibm9ubWVtb3J5X29wZXJhbmQiICAgICAg ICAgICJyLHIsRixGLHIiKQorCQkobWF0Y2hfb3BlcmFuZDpTRiAzICJtbG9f b3BlcmFuZCIgIiIpKSldCisgICJUQVJHRVRfRlBfU1BfRlVTRUQKKyAgICYm IChyZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1sxXSwgU0Ztb2RlKQorICAg ICAgIHx8IHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzJdLCBTRm1vZGUp KSIKKyAgImZzbXN1YiU/ICUwLCUxLCUyIgorICBbKHNldF9hdHRyICJsZW5n dGgiICI0LDQsOCw4LDgiKQorICAgKHNldF9hdHRyICJwcmVkaWNhYmxlIiAi eWVzLG5vLHllcyxubyxubyIpCisgICAoc2V0X2F0dHIgImNvbmQiICJjYW51 c2Usbm9jb25kLGNhbnVzZV9saW1tLG5vY29uZCxub2NvbmQiKQorICAgKHNl dF9hdHRyICJpc2NvbXBhY3QiICJmYWxzZSIpCisgICAoc2V0X2F0dHIgInR5 cGUiICJmcHUiKV0pCisKKyhkZWZpbmVfZXhwYW5kICJmbWFkZjQiCisgIFso bWF0Y2hfb3BlcmFuZDpERiAwICJldmVuX3JlZ2lzdGVyX29wZXJhbmQiICIi KQorICAgKG1hdGNoX29wZXJhbmQ6REYgMSAiZXZlbl9yZWdpc3Rlcl9vcGVy YW5kIiAiIikKKyAgIChtYXRjaF9vcGVyYW5kOkRGIDIgImV2ZW5fcmVnaXN0 ZXJfb3BlcmFuZCIgIiIpCisgICAobWF0Y2hfb3BlcmFuZDpERiAzICJldmVu X3JlZ2lzdGVyX29wZXJhbmQiICIiKV0KKyAgIlRBUkdFVF9GUF9EUF9GVVNF RCIKKyAgInsKKyAgIGVtaXRfaW5zbiAoZ2VuX2ZtYWRmNF9zcGxpdCAob3Bl cmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSwgb3BlcmFuZHNb M10pKTsKKyAgIERPTkU7CisgICB9IikKKworKGRlZmluZV9pbnNuX2FuZF9z cGxpdCAiZm1hZGY0X3NwbGl0IgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpE RiAwICJldmVuX3JlZ2lzdGVyX29wZXJhbmQiICAgICAgICAiIikKKwkoZm1h OkRGIChtYXRjaF9vcGVyYW5kOkRGIDEgImV2ZW5fcmVnaXN0ZXJfb3BlcmFu ZCIgIiIpCisJCShtYXRjaF9vcGVyYW5kOkRGIDIgImV2ZW5fcmVnaXN0ZXJf b3BlcmFuZCIgIiIpCisJCShtYXRjaF9vcGVyYW5kOkRGIDMgImV2ZW5fcmVn aXN0ZXJfb3BlcmFuZCIgIiIpKSkKKyAgIChjbG9iYmVyIChyZWc6REYgQVJD VjJfQUNDKSldCisgICJUQVJHRVRfRlBfRFBfRlVTRUQiCisgICIjIgorICAi VEFSR0VUX0ZQX0RQX0ZVU0VEIgorICBbKGNvbnN0X2ludCAwKV0KKyAgInsK KyAgIHJ0eCBhY2NfcmVnID0gZ2VuX3J0eF9SRUcgKERGbW9kZSwgQUNDX1JF R19GSVJTVCk7CisgICBlbWl0X21vdmVfaW5zbiAoYWNjX3JlZywgb3BlcmFu ZHNbM10pOworICAgZW1pdF9pbnNuIChnZW5fZm1hZGY0X2ZwdSAob3BlcmFu ZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSkpOworICAgRE9ORTsK KyAgfSIKKykKKworKGRlZmluZV9leHBhbmQgImZubWFkZjQiCisgIFsobWF0 Y2hfb3BlcmFuZDpERiAwICJldmVuX3JlZ2lzdGVyX29wZXJhbmQiICIiKQor ICAgKG1hdGNoX29wZXJhbmQ6REYgMSAiZXZlbl9yZWdpc3Rlcl9vcGVyYW5k IiAiIikKKyAgIChtYXRjaF9vcGVyYW5kOkRGIDIgImV2ZW5fcmVnaXN0ZXJf b3BlcmFuZCIgIiIpCisgICAobWF0Y2hfb3BlcmFuZDpERiAzICJldmVuX3Jl Z2lzdGVyX29wZXJhbmQiICIiKV0KKyAgIlRBUkdFVF9GUF9EUF9GVVNFRCIK KyAgInsKKyAgIGVtaXRfaW5zbiAoZ2VuX2ZubWFkZjRfc3BsaXQgKG9wZXJh bmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0sIG9wZXJhbmRzWzNd KSk7CisgICBET05FOworICAgfSIpCisKKyhkZWZpbmVfaW5zbl9hbmRfc3Bs aXQgImZubWFkZjRfc3BsaXQiCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRG IDAgImV2ZW5fcmVnaXN0ZXJfb3BlcmFuZCIgICAgICAgICAgICAgICAgICIi KQorCShmbWE6REYgKG5lZzpERiAobWF0Y2hfb3BlcmFuZDpERiAxICJldmVu X3JlZ2lzdGVyX29wZXJhbmQiICIiKSkKKwkJKG1hdGNoX29wZXJhbmQ6REYg MiAiZXZlbl9yZWdpc3Rlcl9vcGVyYW5kIiAgICAgICAgICIiKQorCQkobWF0 Y2hfb3BlcmFuZDpERiAzICJldmVuX3JlZ2lzdGVyX29wZXJhbmQiICAgICAg ICAgIiIpKSkKKyAgIChjbG9iYmVyIChyZWc6REYgQVJDVjJfQUNDKSldCisg ICJUQVJHRVRfRlBfRFBfRlVTRUQiCisgICIjIgorICAiVEFSR0VUX0ZQX0RQ X0ZVU0VEIgorICBbKGNvbnN0X2ludCAwKV0KKyAgInsKKyAgIHJ0eCBhY2Nf cmVnID0gZ2VuX3J0eF9SRUcgKERGbW9kZSwgQUNDX1JFR19GSVJTVCk7Cisg ICBlbWl0X21vdmVfaW5zbiAoYWNjX3JlZywgb3BlcmFuZHNbM10pOworICAg ZW1pdF9pbnNuIChnZW5fZm5tYWRmNF9mcHUgKG9wZXJhbmRzWzBdLCBvcGVy YW5kc1sxXSwgb3BlcmFuZHNbMl0pKTsKKyAgIERPTkU7CisgIH0iKQorCiso ZGVmaW5lX2luc24gImZtYWRmNF9mcHUiCisgIFsoc2V0IChtYXRjaF9vcGVy YW5kOkRGIDAgImV2ZW5fcmVnaXN0ZXJfb3BlcmFuZCIgICAgICAgICAiPXIs ciIpCisJKGZtYTpERiAobWF0Y2hfb3BlcmFuZDpERiAxICJldmVuX3JlZ2lz dGVyX29wZXJhbmQiICIlMCxyIikKKwkJKG1hdGNoX29wZXJhbmQ6REYgMiAi ZXZlbl9yZWdpc3Rlcl9vcGVyYW5kIiAgInIsciIpCisJCShyZWc6REYgQVJD VjJfQUNDKSkpXQorICAiVEFSR0VUX0ZQX0RQX0ZVU0VEIgorICAiZmRtYWRk JT8gJTAsJTEsJTIiCisgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjQsNCIpCisg ICAoc2V0X2F0dHIgInByZWRpY2FibGUiICJ5ZXMsbm8iKQorICAgKHNldF9h dHRyICJjb25kIiAiY2FudXNlLG5vY29uZCIpCisgICAoc2V0X2F0dHIgImlz Y29tcGFjdCIgImZhbHNlIikKKyAgIChzZXRfYXR0ciAidHlwZSIgImZwdSIp XSkKKworKGRlZmluZV9pbnNuICJmbm1hZGY0X2ZwdSIKKyAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6REYgMCAiZXZlbl9yZWdpc3Rlcl9vcGVyYW5kIiAgICAg ICAgICAgICAgICAgIj1yLHIiKQorCShmbWE6REYgKG5lZzpERiAobWF0Y2hf b3BlcmFuZDpERiAxICJldmVuX3JlZ2lzdGVyX29wZXJhbmQiICIlMCxyIikp CisJCShtYXRjaF9vcGVyYW5kOkRGIDIgImV2ZW5fcmVnaXN0ZXJfb3BlcmFu ZCIgICAgICAgICAgInIsciIpCisJCShyZWc6REYgQVJDVjJfQUNDKSkpXQor ICAiVEFSR0VUX0ZQX0RQX0ZVU0VEIgorICAiZmRtc3ViJT8gJTAsJTEsJTIi CisgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjQsNCIpCisgICAoc2V0X2F0dHIg InByZWRpY2FibGUiICJ5ZXMsbm8iKQorICAgKHNldF9hdHRyICJjb25kIiAi Y2FudXNlLG5vY29uZCIpCisgICAoc2V0X2F0dHIgImlzY29tcGFjdCIgImZh bHNlIikKKyAgIChzZXRfYXR0ciAidHlwZSIgImZwdSIpXSkKKworOzsgRGl2 aXNpb24KKyhkZWZpbmVfaW5zbiAiZGl2c2YzIgorICBbKHNldCAobWF0Y2hf b3BlcmFuZDpTRiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAgICAgICAgICI9cixy LHIscixyIikKKwkoZGl2OlNGIChtYXRjaF9vcGVyYW5kOlNGIDEgIm5vbm1l bW9yeV9vcGVyYW5kIiAiMCxyLDAscixGIikKKwkJKG1hdGNoX29wZXJhbmQ6 U0YgMiAibm9ubWVtb3J5X29wZXJhbmQiICJyLHIsRixGLHIiKSkpXQorICAi VEFSR0VUX0ZQX1NQX1NRUlQiCisgICJmc2RpdiU/ICUwLCUxLCUyIgorICBb KHNldF9hdHRyICJsZW5ndGgiICI0LDQsOCw4LDgiKQorICAgKHNldF9hdHRy ICJpc2NvbXBhY3QiICJmYWxzZSIpCisgICAoc2V0X2F0dHIgInR5cGUiICJm cHUiKQorICAgKHNldF9hdHRyICJwcmVkaWNhYmxlIiAieWVzLG5vLHllcyxu byxubyIpCisgICAoc2V0X2F0dHIgImNvbmQiICJjYW51c2Usbm9jb25kLGNh bnVzZV9saW1tLG5vY29uZCxub2NvbmQiKQorICAgXSkKKworOzsgTmVnYXRp b24KKzs7IHNlZSBwYXR0ZXJuIGluIGFyYy5tZAorCis7OyBBYnNvbHV0ZSB2 YWx1ZQorOzsgc2VlIHBhdHRlcm4gaW4gYXJjLm1kCisKKzs7IFNxdWFyZSBy b290CisoZGVmaW5lX2luc24gInNxcnRzZjIiCisgIFsoc2V0IChtYXRjaF9v cGVyYW5kOlNGIDAgInJlZ2lzdGVyX29wZXJhbmQiICAgICAgICAgICAiPXIs ciIpCisJKHNxcnQ6U0YgKG1hdGNoX29wZXJhbmQ6U0YgMSAibm9ubWVtb3J5 X29wZXJhbmQiICAicixGIikpKV0KKyAgIlRBUkdFVF9GUF9TUF9TUVJUIgor ICAiZnNzcXJ0ICUwLCUxIgorICBbKHNldF9hdHRyICJsZW5ndGgiICI0LDgi KQorICAgKHNldF9hdHRyICJ0eXBlIiAiZnB1IildKQorCis7OyBDb21wYXJp c29uCisoZGVmaW5lX2luc24gIipjbXBzZl9mcHUiCisgIFsoc2V0IChyZWc6 Q0NfRlBVIENDX1JFRykKKwkoY29tcGFyZTpDQ19GUFUgKG1hdGNoX29wZXJh bmQ6U0YgMCAicmVnaXN0ZXJfb3BlcmFuZCIgICJyLHIiKQorCQkJKG1hdGNo X29wZXJhbmQ6U0YgMSAibm9ubWVtb3J5X29wZXJhbmQiICJyLEYiKSkpXQor ICAiVEFSR0VUX0ZQX1NQX0JBU0UiCisgICJmc2NtcCU/ICUwLCAlMSIKKyAg WyhzZXRfYXR0ciAibGVuZ3RoIiAiNCw4IikKKyAgIChzZXRfYXR0ciAiaXNj b21wYWN0IiAiZmFsc2UiKQorICAgKHNldF9hdHRyICJjb25kIiAic2V0IikK KyAgIChzZXRfYXR0ciAidHlwZSIgImZwdSIpCisgICAoc2V0X2F0dHIgInBy ZWRpY2FibGUiICJ5ZXMseWVzIildKQorCisoZGVmaW5lX2luc24gIipjbXBz Zl9mcHVfdW5lcSIKKyAgWyhzZXQgKHJlZzpDQ19GUFVfVU5FUSBDQ19SRUcp CisJKGNvbXBhcmU6Q0NfRlBVX1VORVEKKwkgKG1hdGNoX29wZXJhbmQ6U0Yg MCAicmVnaXN0ZXJfb3BlcmFuZCIgICJyLHIiKQorCSAobWF0Y2hfb3BlcmFu ZDpTRiAxICJub25tZW1vcnlfb3BlcmFuZCIgInIsRiIpKSldCisgICJUQVJH RVRfRlBfU1BfQkFTRSIKKyAgImZzY21wICUwLCAlMVxcblxcdG1vdi52LmYg MCwwXFx0O3NldCBaIGZsYWciCisgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjgs MTIiKQorICAgKHNldF9hdHRyICJpc2NvbXBhY3QiICJmYWxzZSIpCisgICAo c2V0X2F0dHIgImNvbmQiICJzZXQiKQorICAgKHNldF9hdHRyICJ0eXBlIiAi ZnB1IildKQorCis7OyA6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6OgorOzsgOjoKKzs7 IDo6IDY0LWJpdCBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljCis7OyA6Ogor OzsgOjo6Ojo6Ojo6Ojo6Ojo6Ojo6OjoKKworOzsgQWRkaXRpb24KKyhkZWZp bmVfaW5zbiAiKmFkZGRmM19mcHUiCisgIFsoc2V0IChtYXRjaF9vcGVyYW5k OkRGIDAgImV2ZW5fcmVnaXN0ZXJfb3BlcmFuZCIgICAgICAgICAgICI9cixy IikKKwkocGx1czpERiAobWF0Y2hfb3BlcmFuZDpERiAxICJldmVuX3JlZ2lz dGVyX29wZXJhbmQiICAiJTAsciIpCisJCSAobWF0Y2hfb3BlcmFuZDpERiAy ICJldmVuX3JlZ2lzdGVyX29wZXJhbmQiICAgInIsciIpKSldCisgICJUQVJH RVRfRlBfRFBfQkFTRSIKKyAgImZkYWRkJT8gJTAsJTEsJTIiCisgIFsoc2V0 X2F0dHIgImxlbmd0aCIgIjQsNCIpCisgICAoc2V0X2F0dHIgImlzY29tcGFj dCIgImZhbHNlIikKKyAgIChzZXRfYXR0ciAidHlwZSIgImZwdSIpCisgICAo c2V0X2F0dHIgInByZWRpY2FibGUiICJ5ZXMsbm8iKQorICAgKHNldF9hdHRy ICJjb25kIiAiY2FudXNlLG5vY29uZCIpCisgICBdKQorCisKKzs7IFN1YnRy YWN0aW9uCisoZGVmaW5lX2luc24gIipzdWJkZjNfZnB1IgorICBbKHNldCAo bWF0Y2hfb3BlcmFuZDpERiAwICJldmVuX3JlZ2lzdGVyX29wZXJhbmQiICAg ICAgICAgICAiPXIsciIpCisJKG1pbnVzOkRGIChtYXRjaF9vcGVyYW5kOkRG IDEgImV2ZW5fcmVnaXN0ZXJfb3BlcmFuZCIgICIwLHIiKQorCQkgIChtYXRj aF9vcGVyYW5kOkRGIDIgImV2ZW5fcmVnaXN0ZXJfb3BlcmFuZCIgICJyLHIi KSkpXQorICAiVEFSR0VUX0ZQX0RQX0JBU0UiCisgICJmZHN1YiU/ICUwLCUx LCUyIgorICBbKHNldF9hdHRyICJsZW5ndGgiICI0LDQiKQorICAgKHNldF9h dHRyICJpc2NvbXBhY3QiICJmYWxzZSIpCisgICAoc2V0X2F0dHIgInR5cGUi ICJmcHUiKQorICAgKHNldF9hdHRyICJwcmVkaWNhYmxlIiAieWVzLG5vIikK KyAgIChzZXRfYXR0ciAiY29uZCIgImNhbnVzZSxub2NvbmQiKQorICAgXSkK KworOzsgTXVsdGlwbGljYXRpb24KKyhkZWZpbmVfaW5zbiAiKm11bGRmM19m cHUiCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImV2ZW5fcmVnaXN0 ZXJfb3BlcmFuZCIgICAgICAgICAgICI9cixyIikKKwkobXVsdDpERiAobWF0 Y2hfb3BlcmFuZDpERiAxICJldmVuX3JlZ2lzdGVyX29wZXJhbmQiICAiJTAs ciIpCisJCSAobWF0Y2hfb3BlcmFuZDpERiAyICJldmVuX3JlZ2lzdGVyX29w ZXJhbmQiICAgInIsciIpKSldCisgICJUQVJHRVRfRlBfRFBfQkFTRSIKKyAg ImZkbXVsJT8gJTAsJTEsJTIiCisgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjQs NCIpCisgICAoc2V0X2F0dHIgImlzY29tcGFjdCIgImZhbHNlIikKKyAgIChz ZXRfYXR0ciAidHlwZSIgImZwdSIpCisgICAoc2V0X2F0dHIgInByZWRpY2Fi bGUiICJ5ZXMsbm8iKQorICAgKHNldF9hdHRyICJjb25kIiAiY2FudXNlLG5v Y29uZCIpCisgICBdKQorCis7OyBEaXZpc2lvbgorKGRlZmluZV9pbnNuICJk aXZkZjMiCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImV2ZW5fcmVn aXN0ZXJfb3BlcmFuZCIgICAgICAgICAiPXIsciIpCisJKGRpdjpERiAobWF0 Y2hfb3BlcmFuZDpERiAxICJldmVuX3JlZ2lzdGVyX29wZXJhbmQiICAiMCxy IikKKwkJKG1hdGNoX29wZXJhbmQ6REYgMiAiZXZlbl9yZWdpc3Rlcl9vcGVy YW5kIiAgInIsciIpKSldCisgICJUQVJHRVRfRlBfRFBfU1FSVCIKKyAgImZk ZGl2JT8gJTAsJTEsJTIiCisgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjQsNCIp CisgICAoc2V0X2F0dHIgImlzY29tcGFjdCIgImZhbHNlIikKKyAgIChzZXRf YXR0ciAidHlwZSIgImZwdSIpCisgICAoc2V0X2F0dHIgInByZWRpY2FibGUi ICJ5ZXMsbm8iKQorICAgKHNldF9hdHRyICJjb25kIiAiY2FudXNlLG5vY29u ZCIpCisgICBdKQorCis7OyBTcXVhcmUgcm9vdAorKGRlZmluZV9pbnNuICJz cXJ0ZGYyIgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJldmVuX3Jl Z2lzdGVyX29wZXJhbmQiICAgICAgICAgICI9ciIpCisJKHNxcnQ6REYgKG1h dGNoX29wZXJhbmQ6REYgMSAiZXZlbl9yZWdpc3Rlcl9vcGVyYW5kIiAgInIi KSkpXQorICAiVEFSR0VUX0ZQX0RQX1NRUlQiCisgICJmZHNxcnQgJTAsJTEi CisgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjQiKQorICAgKHNldF9hdHRyICJ0 eXBlIiAiZnB1IildKQorCis7OyBDb21wYXJpc29uCisoZGVmaW5lX2luc24g IipjbXBkZl9mcHUiCisgIFsoc2V0IChyZWc6Q0NfRlBVIENDX1JFRykKKwko Y29tcGFyZTpDQ19GUFUgKG1hdGNoX29wZXJhbmQ6REYgMCAiZXZlbl9yZWdp c3Rlcl9vcGVyYW5kIiAgInIiKQorCQkJKG1hdGNoX29wZXJhbmQ6REYgMSAi ZXZlbl9yZWdpc3Rlcl9vcGVyYW5kIiAgInIiKSkpXQorICAiVEFSR0VUX0ZQ X0RQX0JBU0UiCisgICJmZGNtcCU/ICUwLCAlMSIKKyAgWyhzZXRfYXR0ciAi bGVuZ3RoIiAiNCIpCisgICAoc2V0X2F0dHIgImlzY29tcGFjdCIgImZhbHNl IikKKyAgIChzZXRfYXR0ciAiY29uZCIgInNldCIpCisgICAoc2V0X2F0dHIg InR5cGUiICJmcHUiKQorICAgKHNldF9hdHRyICJwcmVkaWNhYmxlIiAieWVz IildKQorCisoZGVmaW5lX2luc24gIipjbXBzZl9mcHVfdW5lcSIKKyAgWyhz ZXQgKHJlZzpDQ19GUFVfVU5FUSBDQ19SRUcpCisJKGNvbXBhcmU6Q0NfRlBV X1VORVEKKwkgKG1hdGNoX29wZXJhbmQ6REYgMCAiZXZlbl9yZWdpc3Rlcl9v cGVyYW5kIiAgInIiKQorCSAobWF0Y2hfb3BlcmFuZDpERiAxICJldmVuX3Jl Z2lzdGVyX29wZXJhbmQiICAiciIpKSldCisgICJUQVJHRVRfRlBfRFBfQkFT RSIKKyAgImZkY21wICUwLCAlMVxcblxcdG1vdi52LmYgMCwwXFx0O3NldCBa IGZsYWciCisgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjgiKQorICAgKHNldF9h dHRyICJpc2NvbXBhY3QiICJmYWxzZSIpCisgICAoc2V0X2F0dHIgImNvbmQi ICJzZXQiKQorICAgKHNldF9hdHRyICJ0eXBlIiAiZnB1IildKQorCis7OyA6 Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6OgorOzsgOjoKKzs7IDo6IENvbnZlcnNpb24g cm91dGluZXMKKzs7IDo6Cis7OyA6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6OgorCis7 OyBTRi0+REYKKyhkZWZpbmVfaW5zbiAiZXh0ZW5kc2ZkZjIiCisgIFsoc2V0 IChtYXRjaF9vcGVyYW5kOkRGIDAgImV2ZW5fcmVnaXN0ZXJfb3BlcmFuZCIg ICAgICAgICAgICAgIj1yLHIiKQorCShmbG9hdF9leHRlbmQ6REYgKG1hdGNo X29wZXJhbmQ6U0YgMSAicmVnaXN0ZXJfb3BlcmFuZCIgICIwLHIiKSkpXQor ICAiVEFSR0VUX0ZQX0RQX0NPTlYiCisgICJmY3Z0MzJfNjQlPyAlMCwlMSww eDA0XFx0O2ZzMmQgJTAsJTEiCisgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjQs NCIpCisgICAoc2V0X2F0dHIgImlzY29tcGFjdCIgImZhbHNlIikKKyAgIChz ZXRfYXR0ciAidHlwZSIgImZwdSIpCisgICAoc2V0X2F0dHIgInByZWRpY2Fi bGUiICJ5ZXMsbm8iKV0KKykKKworOzsgU0ktPkRGCisoZGVmaW5lX2luc24g ImZsb2F0c2lkZjIiCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImV2 ZW5fcmVnaXN0ZXJfb3BlcmFuZCIgICAgICAiPXIsciIpCisJKGZsb2F0OkRG IChtYXRjaF9vcGVyYW5kOlNJIDEgInJlZ2lzdGVyX29wZXJhbmQiICAiMCxy IikpKV0KKyAgIlRBUkdFVF9GUF9EUF9DT05WIgorICAiZmN2dDMyXzY0JT8g JTAsJTEsMHgwMlxcdDtmaW50MmQgJTAsJTEiCisgIFsoc2V0X2F0dHIgImxl bmd0aCIgIjQsNCIpCisgICAoc2V0X2F0dHIgImlzY29tcGFjdCIgImZhbHNl IikKKyAgIChzZXRfYXR0ciAidHlwZSIgImZwdSIpCisgICAoc2V0X2F0dHIg InByZWRpY2FibGUiICJ5ZXMsbm8iKV0KKykKKworOzsgdVNJLT5ERgorKGRl ZmluZV9pbnNuICJmbG9hdHVuc3NpZGYyIgorICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpERiAwICJldmVuX3JlZ2lzdGVyX29wZXJhbmQiICAgICAgICAgICAg ICAgIj1yLHIiKQorCSh1bnNpZ25lZF9mbG9hdDpERiAobWF0Y2hfb3BlcmFu ZDpTSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAgIjAsciIpKSldCisgICJUQVJH RVRfRlBfRFBfQ09OViIKKyAgImZjdnQzMl82NCU/ICUwLCUxLDB4MDBcXHQ7 ZnVpbnQyZCAlMCwlMSIKKyAgWyhzZXRfYXR0ciAibGVuZ3RoIiAiNCw0IikK KyAgIChzZXRfYXR0ciAiaXNjb21wYWN0IiAiZmFsc2UiKQorICAgKHNldF9h dHRyICJ0eXBlIiAiZnB1IikKKyAgIChzZXRfYXR0ciAicHJlZGljYWJsZSIg InllcyxubyIpXQorKQorCis7OyBTRi0+dURJICh1c2luZyByb3VuZGluZyB0 b3dhcmRzIHplcm8pCisoZGVmaW5lX2luc24gImZpeHVuc190cnVuY3NmZGky IgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJldmVuX3JlZ2lzdGVy X29wZXJhbmQiICAgICAgICAgICAgICAgICAgICAiPXIsciIpCisJKHVuc2ln bmVkX2ZpeDpESSAoZml4OlNGIChtYXRjaF9vcGVyYW5kOlNGIDEgInJlZ2lz dGVyX29wZXJhbmQiICIwLHIiKSkpKV0KKyAgIlRBUkdFVF9GUF9EUF9DT05W IgorICAiZmN2dDMyXzY0JT8gJTAsJTEsMHgwOVxcdDtmczJ1bF9yeiAlMCwl MSIKKyAgWyhzZXRfYXR0ciAibGVuZ3RoIiAiNCw0IikKKyAgIChzZXRfYXR0 ciAiaXNjb21wYWN0IiAiZmFsc2UiKQorICAgKHNldF9hdHRyICJ0eXBlIiAi ZnB1IikKKyAgIChzZXRfYXR0ciAicHJlZGljYWJsZSIgInllcyxubyIpXQor KQorCis7OyBTRi0+REkgKHVzaW5nIHJvdW5kaW5nIHRvd2FyZHMgemVybykK KyhkZWZpbmVfaW5zbiAiZml4X3RydW5jc2ZkaTIiCisgIFsoc2V0IChtYXRj aF9vcGVyYW5kOkRJIDAgImV2ZW5fcmVnaXN0ZXJfb3BlcmFuZCIgICAgICAg ICAgICI9cixyIikKKwkoZml4OkRJIChmaXg6U0YgKG1hdGNoX29wZXJhbmQ6 U0YgMSAicmVnaXN0ZXJfb3BlcmFuZCIgIjAsciIpKSkpXQorICAiVEFSR0VU X0ZQX0RQX0NPTlYiCisgICJmY3Z0MzJfNjQlPyAlMCwlMSwweDBCXFx0O2Zz MmxfcnogJTAsJTEiCisgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjQsNCIpCisg ICAoc2V0X2F0dHIgImlzY29tcGFjdCIgImZhbHNlIikKKyAgIChzZXRfYXR0 ciAidHlwZSIgImZwdSIpCisgICAoc2V0X2F0dHIgInByZWRpY2FibGUiICJ5 ZXMsbm8iKV0KKykKKworOzsgU0ktPlNGCisoZGVmaW5lX2luc24gImZsb2F0 c2lzZjIiCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNGIDAgInJlZ2lzdGVy X29wZXJhbmQiICAgICAgICAgICAiPXIsciIpCisJKGZsb2F0OlNGIChtYXRj aF9vcGVyYW5kOlNJIDEgInJlZ2lzdGVyX29wZXJhbmQiICAiMCxyIikpKV0K KyAgIlRBUkdFVF9GUF9TUF9DT05WIgorICAiZmN2dDMyJT8gJTAsJTEsMHgw MlxcdDtmaW50MnMgJTAsJTEiCisgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjQs NCIpCisgICAoc2V0X2F0dHIgImlzY29tcGFjdCIgImZhbHNlIikKKyAgIChz ZXRfYXR0ciAidHlwZSIgImZwdSIpCisgICAoc2V0X2F0dHIgInByZWRpY2Fi bGUiICJ5ZXMsbm8iKV0KKykKKworOzsgdVNJLT5TRgorKGRlZmluZV9pbnNu ICJmbG9hdHVuc3Npc2YyIgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTRiAw ICJyZWdpc3Rlcl9vcGVyYW5kIiAgICAgICAgICAgICAgICAgICAgIj1yLHIi KQorCSh1bnNpZ25lZF9mbG9hdDpTRiAobWF0Y2hfb3BlcmFuZDpTSSAxICJy ZWdpc3Rlcl9vcGVyYW5kIiAgIjAsciIpKSldCisgICJUQVJHRVRfRlBfU1Bf Q09OViIKKyAgImZjdnQzMiU/ICUwLCUxLDB4MDBcXHQ7ZnVpbnQycyAlMCwl MSIKKyAgWyhzZXRfYXR0ciAibGVuZ3RoIiAiNCw0IikKKyAgIChzZXRfYXR0 ciAiaXNjb21wYWN0IiAiZmFsc2UiKQorICAgKHNldF9hdHRyICJ0eXBlIiAi ZnB1IikKKyAgIChzZXRfYXR0ciAicHJlZGljYWJsZSIgInllcyxubyIpXQor KQorCis7OyBTRi0+dVNJICh1c2luZyByb3VuZGluZyB0b3dhcmRzIHplcm8p CisoZGVmaW5lX2luc24gImZpeHVuc190cnVuY3Nmc2kyIgorICBbKHNldCAo bWF0Y2hfb3BlcmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAgICAgICAg ICAgICAgICAgICAgICAgICAiPXIsciIpCisJKHVuc2lnbmVkX2ZpeDpTSSAo Zml4OlNGIChtYXRjaF9vcGVyYW5kOlNGIDEgInJlZ2lzdGVyX29wZXJhbmQi ICIwLHIiKSkpKV0KKyAgIlRBUkdFVF9GUF9TUF9DT05WIgorICAiZmN2dDMy JT8gJTAsJTEsMHgwOVxcdDtmczJ1aW50X3J6ICUwLCUxIgorICBbKHNldF9h dHRyICJsZW5ndGgiICI0LDQiKQorICAgKHNldF9hdHRyICJpc2NvbXBhY3Qi ICJmYWxzZSIpCisgICAoc2V0X2F0dHIgInR5cGUiICJmcHUiKQorICAgKHNl dF9hdHRyICJwcmVkaWNhYmxlIiAieWVzLG5vIildCispCisKKzs7IFNGLT5T SSAodXNpbmcgcm91bmRpbmcgdG93YXJkcyB6ZXJvKQorKGRlZmluZV9pbnNu ICJmaXhfdHJ1bmNzZnNpMiIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0kg MCAicmVnaXN0ZXJfb3BlcmFuZCIgICAgICAgICAgICAgICAgIj1yLHIiKQor CShmaXg6U0kgKGZpeDpTRiAobWF0Y2hfb3BlcmFuZDpTRiAxICJyZWdpc3Rl cl9vcGVyYW5kIiAiMCxyIikpKSldCisgICJUQVJHRVRfRlBfU1BfQ09OViIK KyAgImZjdnQzMiU/ICUwLCUxLDB4MEJcXHQ7ZnMyaW50X3J6ICUwLCUxIgor ICBbKHNldF9hdHRyICJsZW5ndGgiICI0LDQiKQorICAgKHNldF9hdHRyICJp c2NvbXBhY3QiICJmYWxzZSIpCisgICAoc2V0X2F0dHIgInR5cGUiICJmcHUi KQorICAgKHNldF9hdHRyICJwcmVkaWNhYmxlIiAieWVzLG5vIildCispCisK Kzs7IERJLT5ERgorKGRlZmluZV9pbnNuICJmbG9hdGRpZGYyIgorICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpERiAwICJldmVuX3JlZ2lzdGVyX29wZXJhbmQi ICAgICAgICAgICI9cixyIikKKwkoZmxvYXQ6REYgKG1hdGNoX29wZXJhbmQ6 REkgMSAiZXZlbl9yZWdpc3Rlcl9vcGVyYW5kIiAiMCxyIikpKV0KKyAgIlRB UkdFVF9GUF9EUF9DT05WIgorICAiZmN2dDY0JT8gJTAsJTEsMHgwMlxcdDtm bDJkICUwLCUxIgorICBbKHNldF9hdHRyICJsZW5ndGgiICI0LDQiKQorICAg KHNldF9hdHRyICJpc2NvbXBhY3QiICJmYWxzZSIpCisgICAoc2V0X2F0dHIg InR5cGUiICJmcHUiKQorICAgKHNldF9hdHRyICJwcmVkaWNhYmxlIiAieWVz LG5vIildCispCisKKzs7IHVESS0+REYKKyhkZWZpbmVfaW5zbiAiZmxvYXR1 bnNkaWRmMiIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAiZXZlbl9y ZWdpc3Rlcl9vcGVyYW5kIiAgICAgICAgICAgICAgICAgICAiPXIsciIpCisJ KHVuc2lnbmVkX2Zsb2F0OkRGIChtYXRjaF9vcGVyYW5kOkRJIDEgImV2ZW5f cmVnaXN0ZXJfb3BlcmFuZCIgIjAsciIpKSldCisgICJUQVJHRVRfRlBfRFBf Q09OViIKKyAgImZjdnQ2NCU/ICUwLCUxLDB4MDBcXHQ7ZnVsMmQgJTAsJTEi CisgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjQsNCIpCisgICAoc2V0X2F0dHIg ImlzY29tcGFjdCIgImZhbHNlIikKKyAgIChzZXRfYXR0ciAidHlwZSIgImZw dSIpCisgICAoc2V0X2F0dHIgInByZWRpY2FibGUiICJ5ZXMsbm8iKV0KKykK KworOzsgREYtPnVESSAodXNpbmcgcm91bmRpbmcgdG93YXJkcyB6ZXJvKQor KGRlZmluZV9pbnNuICJmaXh1bnNfdHJ1bmNkZmRpMiIKKyAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6REkgMCAiZXZlbl9yZWdpc3Rlcl9vcGVyYW5kIiAgICAg ICAgICAgICAgICAgICAgICAgICAiPXIsciIpCisJKHVuc2lnbmVkX2ZpeDpE SSAoZml4OkRGIChtYXRjaF9vcGVyYW5kOkRGIDEgImV2ZW5fcmVnaXN0ZXJf b3BlcmFuZCIgIjAsciIpKSkpXQorICAiVEFSR0VUX0ZQX0RQX0NPTlYiCisg ICJmY3Z0NjQlPyAlMCwlMSwweDA5XFx0O2ZkMnVsX3J6ICUwLCUxIgorICBb KHNldF9hdHRyICJsZW5ndGgiICI0LDQiKQorICAgKHNldF9hdHRyICJpc2Nv bXBhY3QiICJmYWxzZSIpCisgICAoc2V0X2F0dHIgInR5cGUiICJmcHUiKQor ICAgKHNldF9hdHRyICJwcmVkaWNhYmxlIiAieWVzLG5vIildCispCisKKzs7 IERGLT5ESSAodXNpbmcgcm91bmRpbmcgdG93YXJkcyB6ZXJvKQorKGRlZmlu ZV9pbnNuICJmaXhfdHJ1bmNkZmRpMiIKKyAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6REkgMCAiZXZlbl9yZWdpc3Rlcl9vcGVyYW5kIiAgICAgICAgICAgICAg ICAiPXIsciIpCisJKGZpeDpESSAoZml4OkRGIChtYXRjaF9vcGVyYW5kOkRG IDEgImV2ZW5fcmVnaXN0ZXJfb3BlcmFuZCIgIjAsciIpKSkpXQorICAiVEFS R0VUX0ZQX0RQX0NPTlYiCisgICJmY3Z0NjQlPyAlMCwlMSwweDBCXFx0O2Zk MmxfcnogJTAsJTEiCisgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjQsNCIpCisg ICAoc2V0X2F0dHIgImlzY29tcGFjdCIgImZhbHNlIikKKyAgIChzZXRfYXR0 ciAidHlwZSIgImZwdSIpCisgICAoc2V0X2F0dHIgInByZWRpY2FibGUiICJ5 ZXMsbm8iKV0KKykKKworOzsgREYtPlNGCisoZGVmaW5lX2luc24gInRydW5j ZGZzZjIiCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNGIDAgInJlZ2lzdGVy X29wZXJhbmQiICAgICAgICAgICAgICAgICAgICAgICAgIj1yLHIiKQorCShm bG9hdF90cnVuY2F0ZTpTRiAobWF0Y2hfb3BlcmFuZDpERiAxICJldmVuX3Jl Z2lzdGVyX29wZXJhbmQiICIwLHIiKSkpXQorICAiVEFSR0VUX0ZQX0RQX0NP TlYiCisgICJmY3Z0NjRfMzIlPyAlMCwlMSwweDA0XFx0O2ZkMnMgJTAsJTEi CisgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjQsNCIpCisgICAoc2V0X2F0dHIg ImlzY29tcGFjdCIgImZhbHNlIikKKyAgIChzZXRfYXR0ciAidHlwZSIgImZw dSIpCisgICAoc2V0X2F0dHIgInByZWRpY2FibGUiICJ5ZXMsbm8iKV0KKykK KworOzsgREktPlNGCisoZGVmaW5lX2luc24gImZsb2F0ZGlzZjIiCisgIFso c2V0IChtYXRjaF9vcGVyYW5kOlNGIDAgInJlZ2lzdGVyX29wZXJhbmQiICAg ICAgICAgICAgICAgIj1yLHIiKQorCShmbG9hdDpTRiAobWF0Y2hfb3BlcmFu ZDpESSAxICJldmVuX3JlZ2lzdGVyX29wZXJhbmQiICIwLHIiKSkpXQorICAi VEFSR0VUX0ZQX0RQX0NPTlYiCisgICJmY3Z0NjRfMzIlPyAlMCwlMSwweDAy XFx0O2ZsMnMgJTAsJTEiCisgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjQsNCIp CisgICAoc2V0X2F0dHIgImlzY29tcGFjdCIgImZhbHNlIikKKyAgIChzZXRf YXR0ciAidHlwZSIgImZwdSIpCisgICAoc2V0X2F0dHIgInByZWRpY2FibGUi ICJ5ZXMsbm8iKV0KKykKKworOzsgdURJLT5TRgorKGRlZmluZV9pbnNuICJm bG9hdHVuc2Rpc2YyIgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTRiAwICJy ZWdpc3Rlcl9vcGVyYW5kIiAgICAgICAgICAgICAgICAgICAgICAgICI9cixy IikKKwkodW5zaWduZWRfZmxvYXQ6U0YgKG1hdGNoX29wZXJhbmQ6REkgMSAi ZXZlbl9yZWdpc3Rlcl9vcGVyYW5kIiAiMCxyIikpKV0KKyAgIlRBUkdFVF9G UF9EUF9DT05WIgorICAiZmN2dDY0XzMyJT8gJTAsJTEsMHgwMFxcdDtmdWwy cyAlMCwlMSIKKyAgWyhzZXRfYXR0ciAibGVuZ3RoIiAiNCw0IikKKyAgIChz ZXRfYXR0ciAiaXNjb21wYWN0IiAiZmFsc2UiKQorICAgKHNldF9hdHRyICJ0 eXBlIiAiZnB1IikKKyAgIChzZXRfYXR0ciAicHJlZGljYWJsZSIgInllcyxu byIpXQorKQorCis7OyBERi0+dVNJICh1c2luZyByb3VuZGluZyB0b3dhcmRz IHplcm8pCisoZGVmaW5lX2luc24gImZpeHVuc190cnVuY2Rmc2kyIgorICBb KHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICI9cixyIikKKwkodW5zaWdu ZWRfZml4OlNJIChmaXg6REYgKG1hdGNoX29wZXJhbmQ6REYgMSAiZXZlbl9y ZWdpc3Rlcl9vcGVyYW5kIiAiMCxyIikpKSldCisgICJUQVJHRVRfRlBfRFBf Q09OViIKKyAgImZjdnQ2NF8zMiU/ICUwLCUxLDB4MDlcXHQ7ZmQydWludF9y eiAlMCwlMSIKKyAgWyhzZXRfYXR0ciAibGVuZ3RoIiAiNCw0IikKKyAgIChz ZXRfYXR0ciAiaXNjb21wYWN0IiAiZmFsc2UiKQorICAgKHNldF9hdHRyICJ0 eXBlIiAiZnB1IikKKyAgIChzZXRfYXR0ciAicHJlZGljYWJsZSIgInllcyxu byIpXQorKQorCis7OyBERi0+U0kgKHVzaW5nIHJvdW5kaW5nIHRvd2FyZHMg emVybykKKyhkZWZpbmVfaW5zbiAiZml4X3RydW5jZGZzaTIiCisgIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICAgICAg ICAgICAgICAgICAgICAgIj1yLHIiKQorCShmaXg6U0kgKGZpeDpERiAobWF0 Y2hfb3BlcmFuZDpERiAxICJldmVuX3JlZ2lzdGVyX29wZXJhbmQiICIwLHIi KSkpKV0KKyAgIlRBUkdFVF9GUF9EUF9DT05WIgorICAiZmN2dDY0XzMyJT8g JTAsJTEsMHgwQlxcdDtmZDJpbnRfcnogJTAsJTEiCisgIFsoc2V0X2F0dHIg Imxlbmd0aCIgIjQsNCIpCisgICAoc2V0X2F0dHIgImlzY29tcGFjdCIgImZh bHNlIikKKyAgIChzZXRfYXR0ciAidHlwZSIgImZwdSIpCisgICAoc2V0X2F0 dHIgInByZWRpY2FibGUiICJ5ZXMsbm8iKV0KKykKZGlmZiAtLWdpdCBhL2dj Yy9jb25maWcvYXJjL2ZweC5tZCBiL2djYy9jb25maWcvYXJjL2ZweC5tZApp bmRleCBhNGVjYzRhLi5iNzkwNjAwIDEwMDY0NAotLS0gYS9nY2MvY29uZmln L2FyYy9mcHgubWQKKysrIGIvZ2NjL2NvbmZpZy9hcmMvZnB4Lm1kCkBAIC01 MCw3ICs1MCw3IEBACiAKIDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7CiAKLShkZWZp bmVfaW5zbiAiYWRkc2YzIgorKGRlZmluZV9pbnNuICIqYWRkc2YzX2ZweCIK ICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0YgMCAicmVnaXN0ZXJfb3BlcmFu ZCIgICAgICAgICAgIj1yLHIscixyLHIgIikKIAkocGx1czpTRiAobWF0Y2hf b3BlcmFuZDpTRiAxICJub25tZW1vcnlfb3BlcmFuZCIgIjAscixHQ2FsLHIs MCIpCiAJCSAobWF0Y2hfb3BlcmFuZDpTRiAyICJub25tZW1vcnlfb3BlcmFu ZCIgIkksckwscixHQ2FsLExyQ2FsIikpKV0KQEAgLTY1LDcgKzY1LDcgQEAK ICAgWyhzZXRfYXR0ciAidHlwZSIgInNwZnAiKQogICAoc2V0X2F0dHIgImxl bmd0aCIgIjQsNCw4LDgsOCIpXSkKIAotKGRlZmluZV9pbnNuICJzdWJzZjMi CisoZGVmaW5lX2luc24gIipzdWJzZjNfZnB4IgogICBbKHNldCAobWF0Y2hf b3BlcmFuZDpTRiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAgICAgICAgICAiPXIs cixyLHIsciAiKQogCShtaW51czpTRiAobWF0Y2hfb3BlcmFuZDpTRiAxICJu b25tZW1vcnlfb3BlcmFuZCIgInIsMCxHQ2FsLHIsMCIpCiAJCSAobWF0Y2hf b3BlcmFuZDpTRiAyICJub25tZW1vcnlfb3BlcmFuZCIgInJMLEkscixHQ2Fs LExyQ2FsIikpKV0KQEAgLTgwLDcgKzgwLDcgQEAKICAgWyhzZXRfYXR0ciAi dHlwZSIgInNwZnAiKQogICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsNCw4LDgs OCIpXSkKIAotKGRlZmluZV9pbnNuICJtdWxzZjMiCisoZGVmaW5lX2luc24g IiptdWxzZjNfZnB4IgogICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTRiAwICJy ZWdpc3Rlcl9vcGVyYW5kIiAgICAgICAgICAiPXIscixyLHIsciAiKQogCSht dWx0OlNGIChtYXRjaF9vcGVyYW5kOlNGIDEgIm5vbm1lbW9yeV9vcGVyYW5k IiAiciwwLEdDYWwsciwwIikKIAkJIChtYXRjaF9vcGVyYW5kOlNGIDIgIm5v bm1lbW9yeV9vcGVyYW5kIiAickwsSSxyLEdDYWwsTHJDYWwiKSkpXQpAQCAt MjI2LDI1ICsyMjYsNiBAQAogOzsgZGFkZGh7MH17MX0gMCwge3JlZ19wYWly fTIuaGksIHtyZWdfcGFpcn0yLmxvCiA7OyBPUgogOzsgZGFkZGh7MH17MX0g MCwgcmVnMywgbGltbTIubG8KLShkZWZpbmVfZXhwYW5kICJhZGRkZjMiCi0g IFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImFyY19kb3VibGVfcmVnaXN0 ZXJfb3BlcmFuZCIgICAgICAgICAgIiIpCi0JKHBsdXM6REYgKG1hdGNoX29w ZXJhbmQ6REYgMSAiYXJjX2RvdWJsZV9yZWdpc3Rlcl9vcGVyYW5kIiAiIikK LQkJIChtYXRjaF9vcGVyYW5kOkRGIDIgIm5vbm1lbW9yeV9vcGVyYW5kIiAi IikpKQotICAgICBdCi0gIlRBUkdFVF9EUEZQIgotICIgaWYgKEdFVF9DT0RF IChvcGVyYW5kc1syXSkgPT0gQ09OU1RfRE9VQkxFKQotICAgICB7Ci0gICAg ICAgIHJ0eCBoaWdoLCBsb3csIHRtcDsKLSAgICAgICAgc3BsaXRfZG91Ymxl IChvcGVyYW5kc1syXSwgJmxvdywgJmhpZ2gpOwotICAgICAgICB0bXAgPSBm b3JjZV9yZWcgKFNJbW9kZSwgaGlnaCk7Ci0gICAgICAgIGVtaXRfaW5zbihn ZW5fYWRkZGYzX2luc24ob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVy YW5kc1syXSx0bXAsY29uc3QwX3J0eCkpOwotICAgICB9Ci0gICBlbHNlCi0g ICAgIGVtaXRfaW5zbihnZW5fYWRkZGYzX2luc24ob3BlcmFuZHNbMF0sIG9w ZXJhbmRzWzFdLCBvcGVyYW5kc1syXSxjb25zdDFfcnR4LGNvbnN0MV9ydHgp KTsKLSAgICAgRE9ORTsKLSAiCi0pCi0KIDs7IGRhZGRoezB9ezF9IDAsIHty ZWdfcGFpcn0yLmhpLCB7cmVnX3BhaXJ9Mi5sbyAgLyogb3BlcmFuZCA0ID0g MSovCiA7OyBPUgogOzsgZGFkZGh7MH17MX0gMCwgcmVnMywgbGltbTIubG8g Lyogb3BlcmFuZCA0ID0gMCAqLwpAQCAtMjcwLDI1ICsyNTEsNiBAQAogOzsg ZG11bGh7MH17MX0gMCwge3JlZ19wYWlyfTIuaGksIHtyZWdfcGFpcn0yLmxv CiA7OyBPUgogOzsgZG11bGh7MH17MX0gMCwgcmVnMywgbGltbTIubG8KLShk ZWZpbmVfZXhwYW5kICJtdWxkZjMiCi0gIFsoc2V0IChtYXRjaF9vcGVyYW5k OkRGIDAgImFyY19kb3VibGVfcmVnaXN0ZXJfb3BlcmFuZCIgICAgICAgICAg IiIpCi0JKG11bHQ6REYgKG1hdGNoX29wZXJhbmQ6REYgMSAiYXJjX2RvdWJs ZV9yZWdpc3Rlcl9vcGVyYW5kIiAiIikKLQkJIChtYXRjaF9vcGVyYW5kOkRG IDIgIm5vbm1lbW9yeV9vcGVyYW5kIiAiIikpKV0KLSJUQVJHRVRfRFBGUCIK LSIgIGlmIChHRVRfQ09ERSAob3BlcmFuZHNbMl0pID09IENPTlNUX0RPVUJM RSkKLSAgICAgewotICAgICAgICBydHggaGlnaCwgbG93LCB0bXA7Ci0gICAg ICAgIHNwbGl0X2RvdWJsZSAob3BlcmFuZHNbMl0sICZsb3csICZoaWdoKTsK LSAgICAgICAgdG1wID0gZm9yY2VfcmVnIChTSW1vZGUsIGhpZ2gpOwotICAg ICAgICBlbWl0X2luc24oZ2VuX211bGRmM19pbnNuKG9wZXJhbmRzWzBdLCBv cGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0sdG1wLGNvbnN0MF9ydHgpKTsKLSAg ICAgfQotICAgZWxzZQotICAgICBlbWl0X2luc24oZ2VuX211bGRmM19pbnNu KG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0sY29uc3Qx X3J0eCxjb25zdDFfcnR4KSk7Ci0KLSAgRE9ORTsKLSAiKQotCi0KIDs7IGRt dWxoezB9ezF9IDAsIHtyZWdfcGFpcn0yLmhpLCB7cmVnX3BhaXJ9Mi5sbyAv KiBvcGVyYW5kIDQgPSAxKi8KIDs7IE9SCiA7OyBkbXVsaHswfXsxfSAwLCBy ZWczLCBsaW1tMi5sbyAvKiBvcGVyYW5kIDQgPSAwKi8KQEAgLTMxNywyNiAr Mjc5LDYgQEAKIDs7IGRyc3ViaHswfXsyfSAwLCB7cmVnX3BhaXJ9MS5oaSwg e3JlZ19wYWlyfTEubG8KIDs7IE9SCiA7OyBkcnN1Ymh7MH17Mn0gMCwgcmVn MywgbGltbTEubG8KLShkZWZpbmVfZXhwYW5kICJzdWJkZjMiCi0gIFsoc2V0 IChtYXRjaF9vcGVyYW5kOkRGIDAgImFyY19kb3VibGVfcmVnaXN0ZXJfb3Bl cmFuZCIgICAgICAgICAgIiIpCi0JCSAgICAobWludXM6REYgKG1hdGNoX29w ZXJhbmQ6REYgMSAibm9ubWVtb3J5X29wZXJhbmQiICIiKQotCQkJCSAgKG1h dGNoX29wZXJhbmQ6REYgMiAibm9ubWVtb3J5X29wZXJhbmQiICIiKSkpXQot IlRBUkdFVF9EUEZQIgotIiAgIGlmIChHRVRfQ09ERSAob3BlcmFuZHNbMV0p ID09IENPTlNUX0RPVUJMRSB8fCBHRVRfQ09ERSAob3BlcmFuZHNbMl0pID09 IENPTlNUX0RPVUJMRSkKLSAgICAgewotICAgICAgICBydHggaGlnaCwgbG93 LCB0bXA7Ci0gICAgICAgIGludCBjb25zdF9pbmRleCA9ICgoR0VUX0NPREUg KG9wZXJhbmRzWzFdKSA9PSBDT05TVF9ET1VCTEUpID8gMTogMik7Ci0gICAg ICAgIHNwbGl0X2RvdWJsZSAob3BlcmFuZHNbY29uc3RfaW5kZXhdLCAmbG93 LCAmaGlnaCk7Ci0gICAgICAgIHRtcCA9IGZvcmNlX3JlZyAoU0ltb2RlLCBo aWdoKTsKLSAgICAgICAgZW1pdF9pbnNuKGdlbl9zdWJkZjNfaW5zbihvcGVy YW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJdLHRtcCxjb25zdDBf cnR4KSk7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgZW1pdF9pbnNuKGdlbl9z dWJkZjNfaW5zbihvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRz WzJdLGNvbnN0MV9ydHgsY29uc3QxX3J0eCkpOwotCi0gICBET05FOwotICAi Ci0pCi0KIDs7IGRzdWJoezB9ezF9IDAsIHtyZWdfcGFpcn0yLmhpLCB7cmVn X3BhaXJ9Mi5sbyAvKiBvcGVyYW5kIDQgPSAxICovCiA7OyBPUgogOzsgZHN1 Ymh7MH17MX0gMCwgcmVnMywgbGltbTIubG8gLyogb3BlcmFuZCA0ID0gMCov CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FyYy9wcmVkaWNhdGVzLm1kIGIv Z2NjL2NvbmZpZy9hcmMvcHJlZGljYXRlcy5tZAppbmRleCBkMzg0ZDcwLi42 ODY4OTUyIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FyYy9wcmVkaWNhdGVz Lm1kCisrKyBiL2djYy9jb25maWcvYXJjL3ByZWRpY2F0ZXMubWQKQEAgLTUw NCw2ICs1MDQsMTEgQEAKICAgICAgIHJldHVybiAoY29kZSA9PSBFUSB8fCBj b2RlID09IE5FIHx8IGNvZGUgPT0gVU5FUSB8fCBjb2RlID09IExUR1QKIAkg ICAgICB8fCBjb2RlID09IE9SREVSRUQgfHwgY29kZSA9PSBVTk9SREVSRUQp OwogCisgICAgY2FzZSBDQ19GUFVtb2RlOgorICAgICAgcmV0dXJuICEoKGNv ZGUgPT0gTFRHVCkgfHwgKGNvZGUgPT0gVU5FUSkpOworICAgIGNhc2UgQ0Nf RlBVX1VORVFtb2RlOgorICAgICAgcmV0dXJuICgoY29kZSA9PSBMVEdUKSB8 fCAoY29kZSA9PSBVTkVRKSk7CisKICAgICBjYXNlIENDbW9kZToKICAgICBj YXNlIFNJbW9kZTogLyogVXNlZCBmb3IgQlJjYy4gICovCiAgICAgICByZXR1 cm4gMTsKQEAgLTc5NywzICs4MDIsNyBAQAogICAgcmV0dXJuIChSRUdfUCAo b3ApICYmICgoUkVHTk8gKG9wKSA+PSBGSVJTVF9QU0VVRE9fUkVHSVNURVIp CiAJCQkgIHx8ICgoUkVHTk8gKG9wKSAmIDEpID09IDApKSk7CiAgIH0pCisK KyhkZWZpbmVfcHJlZGljYXRlICJkb3VibGVfcmVnaXN0ZXJfb3BlcmFuZCIK KyAgKGlvciAobWF0Y2hfdGVzdCAiZXZlbl9yZWdpc3Rlcl9vcGVyYW5kIChv cCwgbW9kZSkiKQorICAgICAgIChtYXRjaF90ZXN0ICJhcmNfZG91YmxlX3Jl Z2lzdGVyX29wZXJhbmQgKG9wLCBtb2RlKSIpKSkKZGlmZiAtLWdpdCBhL2dj Yy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCmluZGV4 IGJhMGI0YjIuLjMzZjhhZDMgMTAwNjQ0Ci0tLSBhL2djYy9kb2MvaW52b2tl LnRleGkKKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQpAQCAtNTk5LDcgKzU5 OSw3IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrIERpYWxlY3Rz fS4KIC1tbWl4ZWQtY29kZSAtbXEtY2xhc3MgLW1SY3EgLW1SY3cgLW1zaXpl LWxldmVsPUB2YXJ7bGV2ZWx9IEBnb2wKIC1tdHVuZT1AdmFye2NwdX0gLW1t dWx0Y29zdD1AdmFye251bX0gQGdvbAogLW11bmFsaWduLXByb2ItdGhyZXNo b2xkPUB2YXJ7cHJvYmFiaWxpdHl9IC1tbXB5LW9wdGlvbj1AdmFye211bHRv fSBAZ29sCi0tbWRpdi1yZW0gLW1jb2RlLWRlbnNpdHkgLW1sbDY0fQorLW1k aXYtcmVtIC1tY29kZS1kZW5zaXR5IC1tbGw2NCAtbWZwdT1AdmFye2ZwdX19 CiAKIEBlbXBoe0FSTSBPcHRpb25zfQogQGdjY29wdGxpc3R7LW1hcGNzLWZy YW1lICAtbW5vLWFwY3MtZnJhbWUgQGdvbApAQCAtMTMzMTEsNiArMTMzMTEs ODggQEAgTVBZVSwgTVBZTSwgTVBZTVUsIGFuZCBNUFlfUy4KIAogVGhpcyBv cHRpb24gaXMgb25seSBhdmFpbGFibGUgZm9yIEFSQ3YyIGNvcmVzQC4KIAor QGl0ZW0gLW1mcHU9QHZhcntmcHV9CitAb3BpbmRleCBtZnB1CitFbmFibGVz IHNwZWNpZmljIGZsb2F0aW5nLXBvaW50IGhhcmR3YXJlIGV4dGVuc2lvbiBm b3IgQVJDdjIKK2NvcmUuICBTdXBwb3J0ZWQgdmFsdWVzIGZvciBAdmFye2Zw dX0gYXJlOgorCitAdGFibGUgQHNhbXAKKworQGl0ZW0gZnB1cworQG9waW5k ZXggZnB1cworRW5hYmxlcyBzdXBwb3J0IGZvciBzaW5nbGUgcHJlY2lzaW9u IGZsb2F0aW5nIHBvaW50IGhhcmR3YXJlCitleHRlbnNpb25zQC4KKworQGl0 ZW0gZnB1ZAorQG9waW5kZXggZnB1ZAorRW5hYmxlcyBzdXBwb3J0IGZvciBk b3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IGhhcmR3YXJlCitleHRl bnNpb25zLiAgVGhlIHNpbmdsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQg ZXh0ZW5zaW9uIGlzIGFsc28KK2VuYWJsZWQuICBOb3QgYXZhaWxhYmxlIGZv ciBBUkMgRU1ALgorCitAaXRlbSBmcHVkYQorQG9waW5kZXggZnB1ZGEKK0Vu YWJsZXMgc3VwcG9ydCBmb3IgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBw b2ludCBoYXJkd2FyZQorZXh0ZW5zaW9ucyB1c2luZyBkb3VibGUgcHJlY2lz aW9uIGFzc2lzdCBpbnN0cnVjdGlvbnMuICBUaGUgc2luZ2xlCitwcmVjaXNp b24gZmxvYXRpbmcgcG9pbnQgZXh0ZW5zaW9uIGlzIGFsc28gZW5hYmxlZC4g IFRoaXMgb3B0aW9uIGlzCitvbmx5IGF2YWlsYWJsZSBmb3IgQVJDIEVNQC4K KworQGl0ZW0gZnB1ZGFfZGl2CitAb3BpbmRleCBmcHVkYV9kaXYKK0VuYWJs ZXMgc3VwcG9ydCBmb3IgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2lu dCBoYXJkd2FyZQorZXh0ZW5zaW9ucyB1c2luZyBkb3VibGUgcHJlY2lzaW9u IGFzc2lzdCBpbnN0cnVjdGlvbnMsIGFuZCBzaW1wbGUKK3ByZWNpc2lvbiBz cXVhcmUtcm9vdCBhbmQgZGl2aWRlIGhhcmR3YXJlIGV4dGVuc2lvbnMuICBU aGUgc2luZ2xlCitwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgZXh0ZW5zaW9u IGlzIGFsc28gZW5hYmxlZC4gIFRoaXMgb3B0aW9uIGlzCitvbmx5IGF2YWls YWJsZSBmb3IgQVJDIEVNQC4KKworQGl0ZW0gZnB1ZGFfZm1hCitAb3BpbmRl eCBmcHVkYV9mbWEKK0VuYWJsZXMgc3VwcG9ydCBmb3IgZG91YmxlIHByZWNp c2lvbiBmbG9hdGluZyBwb2ludCBoYXJkd2FyZQorZXh0ZW5zaW9ucyB1c2lu ZyBkb3VibGUgcHJlY2lzaW9uIGFzc2lzdCBpbnN0cnVjdGlvbnMsIGFuZCBz aW1wbGUKK3ByZWNpc2lvbiBmdXNlZCBtdWx0aXBsZSBhbmQgYWRkIGhhcmR3 YXJlIGV4dGVuc2lvbi4gIFRoZSBzaW5nbGUKK3ByZWNpc2lvbiBmbG9hdGlu ZyBwb2ludCBleHRlbnNpb24gaXMgYWxzbyBlbmFibGVkLiAgVGhpcyBvcHRp b24gaXMKK29ubHkgYXZhaWxhYmxlIGZvciBBUkMgRU1ALgorCitAaXRlbSBm cHVkYV9hbGwKK0BvcGluZGV4IGZwdWRhX2FsbAorRW5hYmxlcyBzdXBwb3J0 IGZvciBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IGhhcmR3YXJl CitleHRlbnNpb25zIHVzaW5nIGRvdWJsZSBwcmVjaXNpb24gYXNzaXN0IGlu c3RydWN0aW9ucywgYW5kIGFsbCBzaW1wbGUKK3ByZWNpc2lvbiBoYXJkd2Fy ZSBleHRlbnNpb25zLiAgVGhlIHNpbmdsZSBwcmVjaXNpb24gZmxvYXRpbmcg cG9pbnQKK2V4dGVuc2lvbiBpcyBhbHNvIGVuYWJsZWQuICBUaGlzIG9wdGlv biBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgQVJDIEVNQC4KKworQGl0ZW0gZnB1 c19kaXYKK0BvcGluZGV4IGZwdXNfZGl2CitFbmFibGVzIHN1cHBvcnQgZm9y IHNpbmdsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQsIGFuZCBzaW5nbGUK K3ByZWNpc2lvbiBzcXVhcmUtcm9vdCBhbmQgZGl2aWRlIGhhcmR3YXJlIGV4 dGVuc2lvbnNALgorCitAaXRlbSBmcHVkX2RpdgorQG9waW5kZXggZnB1ZF9k aXYKK0VuYWJsZXMgc3VwcG9ydCBmb3IgZG91YmxlIHByZWNpc2lvbiBmbG9h dGluZyBwb2ludCwgYW5kIGRvdWJsZQorcHJlY2lzaW9uIHNxdWFyZS1yb290 IGFuZCBkaXZpZGUgaGFyZHdhcmUgZXh0ZW5zaW9ucy4gIFRoaXMgb3B0aW9u CitpbmNsdWRlcyBvcHRpb24gQHNhbXB7ZnB1c19kaXZ9LiBOb3QgYXZhaWxh YmxlIGZvciBBUkMgRU1ALgorCitAaXRlbSBmcHVzX2ZtYQorQG9waW5kZXgg ZnB1c19mbWEKK0VuYWJsZXMgc3VwcG9ydCBmb3Igc2luZ2xlIHByZWNpc2lv biBmbG9hdGluZyBwb2ludCwgYW5kIHNpbmdsZQorcHJlY2lzaW9uIGZ1c2Vk IG11bHRpcGxlIGFuZCBhZGQgaGFyZHdhcmUgZXh0ZW5zaW9uc0AuCisKK0Bp dGVtIGZwdWRfZm1hCitAb3BpbmRleCBmcHVkX2ZtYQorRW5hYmxlcyBzdXBw b3J0IGZvciBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50LCBhbmQg ZG91YmxlCitwcmVjaXNpb24gZnVzZWQgbXVsdGlwbGUgYW5kIGFkZCBoYXJk d2FyZSBleHRlbnNpb25zLiAgVGhpcyBvcHRpb24KK2luY2x1ZGVzIG9wdGlv biBAc2FtcHtmcHVzX2ZtYX0uICBOb3QgYXZhaWxhYmxlIGZvciBBUkMgRU1A LgorCitAaXRlbSBmcHVzX2FsbAorQG9waW5kZXggZnB1c19hbGwKK0VuYWJs ZXMgc3VwcG9ydCBmb3IgYWxsIHNpbmdsZSBwcmVjaXNpb24gZmxvYXRpbmcg cG9pbnQgaGFyZHdhcmUKK2V4dGVuc2lvbnNALgorCitAaXRlbSBmcHVkX2Fs bAorQG9waW5kZXggZnB1ZF9hbGwKK0VuYWJsZXMgc3VwcG9ydCBmb3IgYWxs IHNpbmdsZSBhbmQgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludAor aGFyZHdhcmUgZXh0ZW5zaW9ucy4gIE5vdCBhdmFpbGFibGUgZm9yIEFSQyBF TUAuCisKK0BlbmQgdGFibGUKKwogQGVuZCB0YWJsZQogCiBUaGUgZm9sbG93 aW5nIG9wdGlvbnMgYXJlIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBhc3NlbWJs ZXIsIGFuZCBhbHNvCi0tIAoxLjkuMQoK --_002_098ECE41A0A6114BB2A07F1EC238DE8966176790DE02WEMBXBinter_--