From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2070.outbound.protection.outlook.com [40.107.22.70]) by sourceware.org (Postfix) with ESMTPS id 2040C393C853 for ; Fri, 13 Nov 2020 16:48:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 2040C393C853 Received: from DB6PR0301CA0034.eurprd03.prod.outlook.com (2603:10a6:4:3e::44) by VI1PR08MB3903.eurprd08.prod.outlook.com (2603:10a6:803:c4::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3541.21; Fri, 13 Nov 2020 16:48:49 +0000 Received: from DB5EUR03FT045.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:3e:cafe::ac) by DB6PR0301CA0034.outlook.office365.com (2603:10a6:4:3e::44) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3541.21 via Frontend Transport; Fri, 13 Nov 2020 16:48:49 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT045.mail.protection.outlook.com (10.152.21.164) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3564.22 via Frontend Transport; Fri, 13 Nov 2020 16:48:49 +0000 Received: ("Tessian outbound 39167997cde8:v71"); Fri, 13 Nov 2020 16:48:49 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 4b8b048dfa5526cd X-CR-MTA-TID: 64aa7808 Received: from ebe67fd548a1.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 20287F1E-454D-42B8-982D-EB22478B4F3E.1; Fri, 13 Nov 2020 16:48:43 +0000 Received: from EUR01-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ebe67fd548a1.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 13 Nov 2020 16:48:43 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JhFidA9Qx8Ehk/s62WOXvN00ruB0pMoGXU+/yAKeqLxy4JSIKjWrkjWUR9wCLvND4YN2P4hteeklJnQdaAgKxYxd0I9yld9qF6h1eFJyiAepIKTzkeffusPs93rIKw3Pp4jdIEt5OLCcLvwVztKH1Kk9p35gnnTjpOY186kswn5o6sjQqzDtpbA+qPNyonu0H9/UgAKNhFMYYWa3GmGyS5ktoT7FVo9987qBoqAmc9dqLQqMswzuzRjK+I8OeRR9EUD5r1jgU0SZuCWTvXo1NRyurggEJCGzW1HF6VOBARPRTG3O13FVBTp4zKkJQUJZLuzTpV/M/Ce1g23bMXNeKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8d0uHqFpIFce9AuDGBAvDVisXWn5lZfjfnGPNr1b32E=; b=mH4c7kvBHb56pHUutP9FA5LKfcllrjmRizr/4CfVx6ShUN1kjUi3k7eOhJn0fhQgAsswjQKop9jgDYBjpIgmtM2gcYQ1pCiJl8WRAkG/ogunG3Ra+y3iQk4H22tG8aoitcGWiUE7kGmSqrLFxwPmkM8Rsol0ITOR038I6ZUpL65eEbvBVj0DlVBBkaZovDTTClhG5Ws3465lgSeCPEBWBaUJrOak4woZtTEe5aA/18Xm62HX8fCF79q4Io1NeMSoCpr2YBtuSFzO4MNnuX5z7VmK0QG9sGbAquLPmeN601ONga+t2hSh8gST1ov/oQVQ1G6Wv1E+Cb6tAPNB9X22wQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Received: from DB6PR0802MB2200.eurprd08.prod.outlook.com (10.172.226.148) by DBAPR08MB5557.eurprd08.prod.outlook.com (20.181.184.77) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3541.25; Fri, 13 Nov 2020 16:48:41 +0000 Received: from DB6PR0802MB2200.eurprd08.prod.outlook.com ([fe80::b473:7ab4:6809:9726]) by DB6PR0802MB2200.eurprd08.prod.outlook.com ([fe80::b473:7ab4:6809:9726%12]) with mapi id 15.20.3541.025; Fri, 13 Nov 2020 16:48:41 +0000 From: Joel Hutton To: Richard Sandiford , Joel Hutton via Gcc-patches CC: Richard Biener Subject: Re: [2/3][vect] Add widening add, subtract vect patterns Thread-Topic: [2/3][vect] Add widening add, subtract vect patterns Thread-Index: AQHWuQWFsqvsBkpNsk2bLpWO9RhUGanF++BPgABKbVQ= Date: Fri, 13 Nov 2020 16:48:41 +0000 Message-ID: References: , In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: yes X-MS-TNEF-Correlator: Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [217.140.99.251] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 5e2a81f8-584b-4c8b-713d-08d887f3fea7 x-ms-traffictypediagnostic: DBAPR08MB5557:|VI1PR08MB3903: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:9508;OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 3XDa2Dqefv54HVSzrgYmkE0bzZV9xNooGzV1sLA0hjbCFtTPzABtCm7paVfIZh9Ckrf2557SWBrggiDUQzhQ/CjV4NGXHleIKqj20Ut3w6XL5EPOZk9a6Vi+FWosXrzUAQxaY/cIRIhxYN86l/T0MVlzXJJWvZ63JMIBLm7IiTjBTCk974shgsobPhgRz7ybBby+MzkSuL1BEzGcgRniF/WYk7wN13Fa1C/9uw3ovCUtRH2e+ZCDY9Txi6r8dPNoY12/LJoAUXBi0F7JBX8jIbT4bDDjrUlATZDzcggka3qoqzx7eqm80SoB7+Simco+P9stpZCqjnRpkxhR5ofN6w== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB6PR0802MB2200.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(376002)(39860400002)(346002)(136003)(396003)(110136005)(52536014)(5660300002)(2906002)(26005)(4001150100001)(86362001)(6506007)(9686003)(8936002)(55016002)(8676002)(316002)(33656002)(186003)(4326008)(99936003)(64756008)(66446008)(66616009)(66476007)(66556008)(71200400001)(66946007)(76116006)(478600001)(83380400001)(7696005); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: HnxhH3sGp0GwP84Blq7R4lOPKtH4dRg4MkclKGMjR29KdpOVd8CEdlBWan2zB8XKahc1Y1TnO/P5/WHIYFqmauCmYaaQ13K6NkpSOIUOn3U+3cRk5RvV2FHpfvd6p9LbdVOjb5DyDEbvi2CXfUrlfF/AEbDJuQHWYRmP7ySUKwnaRbOckS+hCC+3G4DO0vJqQKyGZwxOFMFqC5FGVU04WTSGnKcN7mE++hSuwk8MCVdAzeSB5w1bgsASpKxgE0xV9z4N4tTfYi9xuOK5n/aZVYXfBFlECAPhIrqIHAr6A18uq+s3X+nFrqXS1nTSqpeuoIttZCN+689VQLI7xn8vzl02qMCniFJx2fpasAEMOjTGBqyq6PdOlmZPCZ7Iu3NtU/vBhJecw+G9AdUxZXciWsXXgyA/AXkCImdCt8+sbkIqTwQMosq+HB8MYhpXrQ3UqiPHzXwc3pqba4iv/DxPzh9uE0xBUV7Ey7lox2GTZ4ECpWX6WUAHplFXoEoeGXWe0W1oKzMm39IppyjTzOSWrznKiEITNg1HVXNT61sgU4k76sVDjJ7wMLJO0PkHr7xE7q2Fi5mUXWtRlCyu/F2vnUn0GZ0FCEnr8xIyVlrdAL9PsqXh85ldvPCJliFq1w5tAobt25gEi9A3jNnMZXNZqg== Content-Type: multipart/mixed; boundary="_002_DB6PR0802MB22005D7763AFCE5C687E4355F5E60DB6PR0802MB2200_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR08MB5557 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT045.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 0558e5c2-b926-451f-0f61-08d887f3fa15 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ho0AFaHisVKm3bBqpADZZwIJYBcVJf32DxjW7fNQH5ogiXdYspPNHb1ylLG0nyuQcSZWLqKbwMjt1eL00N0SBx4LgIOGYO36spEx09naNxpYViEYdGyr24f5m56CRK0GOz5z+IQqcqfdE1JviuIQctKQ+BjKls/FJDKjhfVPx0UXpGvamL59jCO21by/bKkQlaQAcPgg0BbLU77CgEv6Ms6I/Q2txkHA0cVFSH5WVhprHyogcARaj+IKoziMqRp4gjDl9kaee3KHvl3Ecf0VQmgc522EFCOPmuhT+VwA1C4zOM1ui0KEoCqytlNIT/eHXA5wo40PEz6SBSsVQ61F17F7FYl5tyZl2eybJcuY3o7A5SuC92rGF9YCUsSUDERtHGqfTRH6KZvyZ8lYmeVLEQ== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(136003)(396003)(376002)(39860400002)(346002)(46966005)(70586007)(8936002)(52536014)(86362001)(99936003)(316002)(47076004)(110136005)(6506007)(81166007)(33656002)(356005)(82740400003)(336012)(9686003)(5660300002)(7696005)(186003)(4001150100001)(8676002)(107886003)(83380400001)(55016002)(66616009)(478600001)(82310400003)(70206006)(2906002)(4326008)(26005)(235185007); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Nov 2020 16:48:49.2024 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5e2a81f8-584b-4c8b-713d-08d887f3fea7 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR03FT045.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3903 X-Spam-Status: No, score=-15.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Nov 2020 16:48:55 -0000 --_002_DB6PR0802MB22005D7763AFCE5C687E4355F5E60DB6PR0802MB2200_ Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable Tests are still running, but I believe I've addressed all the comments.=0A= =0A= > Like Richard said, the new patterns need to be documented in md.texi=0A= > and the new tree codes need to be documented in generic.texi.=0A= =0A= Done.=0A= =0A= > While we're using tree codes, I think we need to make the naming=0A= > consistent with other tree codes: WIDEN_PLUS_EXPR instead of=0A= > WIDEN_ADD_EXPR and WIDEN_MINUS_EXPR instead of WIDEN_SUB_EXPR.=0A= > Same idea for the VEC_* codes.=0A= =0A= Fixed.=0A= =0A= > > gcc/ChangeLog:=0A= > >=0A= > > 2020-11-12 Joel Hutton =0A= > >=0A= > > * expr.c (expand_expr_real_2): add widen_add,widen_subtract cas= es=0A= > =0A= > Not that I personally care about this stuff (would love to see changelogs= =0A= > go away :-)) but some nits:=0A= > =0A= > Each description is supposed to start with a capital letter and end with= =0A= > a full stop (even if it's not a complete sentence). Same for the rest=0A= =0A= Fixed.=0A= =0A= > > * optabs-tree.c (optab_for_tree_code): optabs for widening adds= ,subtracts=0A= > =0A= > The line limit for changelogs is 80 characters. The entry should say=0A= > what changed, so =93Handle =85=94 or =93Add case for =85=94 or something.= =0A= =0A= Fixed.=0A= =0A= > > * tree-vect-patterns.c (vect_recog_widen_add_pattern): New reco= g ptatern=0A= > =0A= > typo: pattern=0A= =0A= Fixed.=0A= =0A= > > Add widening add, subtract patterns to tree-vect-patterns.=0A= > > Add aarch64 tests for patterns.=0A= > >=0A= > > fix sad=0A= > =0A= > Would be good to expand on this for the final commit message.=0A= =0A= 'fix sad' was accidentally included when I squashed two commits. I've made = all the commit messages more descriptive.=0A= =0A= > > +=0A= > > + case VEC_WIDEN_SUB_HI_EXPR:=0A= > > + return (TYPE_UNSIGNED (type)=0A= > > + ? vec_widen_usubl_hi_optab : vec_widen_ssubl_hi_optab);=0A= > > +=0A= > > +=0A= > =0A= > Nits: excess blank line at the end and excess space before the =93:=94s.= =0A= =0A= Fixed.=0A= =0A= > > +OPTAB_D (vec_widen_usubl_lo_optab, "vec_widen_usubl_lo_$a")=0A= > > +OPTAB_D (vec_widen_uaddl_hi_optab, "vec_widen_uaddl_hi_$a")=0A= > > +OPTAB_D (vec_widen_uaddl_lo_optab, "vec_widen_uaddl_lo_$a")=0A= > > OPTAB_D (vec_widen_sshiftl_hi_optab, "vec_widen_sshiftl_hi_$a")=0A= > > OPTAB_D (vec_widen_sshiftl_lo_optab, "vec_widen_sshiftl_lo_$a")=0A= > > OPTAB_D (vec_widen_umult_even_optab, "vec_widen_umult_even_$a")=0A= > =0A= > Looks like the current code groups signed stuff together and=0A= > unsigned stuff together, so would be good to follow that.=0A= =0A= Fixed.=0A= =0A= > Same comments as the previous patch about having a "+nosve" pragma=0A= > and about the scan-assembler-times lines. Same for the sub test.=0A= =0A= Fixed.=0A= =0A= > I am missing documentation in md.texi for the new patterns. In=0A= > particular I wonder why you need singed and unsigned variants=0A= > for the add/subtract patterns.=0A= =0A= Fixed. Signed and unsigned variants because they correspond to signed and= =0A= unsigned instructions, (uaddl/uaddl2, saddl/saddl2).=0A= =0A= > The new functions should have comments before them. Can probably=0A= > just use the vect_recog_widen_mult_pattern comment as a template.=0A= =0A= Fixed.=0A= =0A= > > + case VEC_WIDEN_SUB_HI_EXPR:=0A= > > + case VEC_WIDEN_SUB_LO_EXPR:=0A= > > + case VEC_WIDEN_ADD_HI_EXPR:=0A= > > + case VEC_WIDEN_ADD_LO_EXPR:=0A= > > + return false;=0A= > > +=0A= >=0A= > I think these should get the same validity checking as=0A= > VEC_WIDEN_MULT_HI_EXPR etc.=0A= =0A= Fixed.=0A= =0A= > > --- a/gcc/tree-vect-patterns.c=0A= > > +++ b/gcc/tree-vect-patterns.c=0A= > > @@ -1086,8 +1086,10 @@ vect_recog_sad_pattern (vec_info *vinfo,=0A= > > of the above pattern. */=0A= > >=0A= > > tree plus_oprnd0, plus_oprnd1;=0A= > > - if (!vect_reassociating_reduction_p (vinfo, stmt_vinfo, PLUS_EXPR,= =0A= > > - &plus_oprnd0, &plus_oprnd1))=0A= > > + if (!(vect_reassociating_reduction_p (vinfo, stmt_vinfo, PLUS_EXPR,= =0A= > > + &plus_oprnd0, &plus_oprnd1)=0A= > > + || vect_reassociating_reduction_p (vinfo, stmt_vinfo, WIDEN_ADD_E= XPR,=0A= > > + &plus_oprnd0, &plus_oprnd1)))=0A= > > return NULL;=0A= > >=0A= > > tree sum_type =3D gimple_expr_type (last_stmt);=0A= >=0A= > I think we should make:=0A= >=0A= > /* Any non-truncating sequence of conversions is OK here, since=0A= > with a successful match, the result of the ABS(U) is known to fit=0A= > within the nonnegative range of the result type. (It cannot be the= =0A= > negative of the minimum signed value due to the range of the widenin= g=0A= > MINUS_EXPR.) */=0A= > vect_unpromoted_value unprom_abs;=0A= > plus_oprnd0 =3D vect_look_through_possible_promotion (vinfo, plus_oprnd= 0,=0A= > &unprom_abs);=0A= >=0A= > specific to the PLUS_EXPR case. If we look through promotions on=0A= > the operands of a WIDEN_ADD_EXPR, we could potentially have a mixture=0A= > of signednesses involved, one on the operands of the WIDEN_ADD_EXPR=0A= > and one on its inputs.=0A= =0A= Fixed.=0A= =0A= =0A= gcc/ChangeLog:=0A= =0A= 2020-11-13 Joel Hutton =0A= =0A= * expr.c (expand_expr_real_2): Add widen_add,widen_subtract cases.=0A= * optabs-tree.c (optab_for_tree_code): Add case for widening optabs.=0A= adds, subtracts.=0A= * optabs.def (OPTAB_D): Define vectorized widen add, subtracts.=0A= * tree-cfg.c (verify_gimple_assign_binary): Add case for widening adds,=0A= subtracts.=0A= * tree-inline.c (estimate_operator_cost): Add case for widening adds,=0A= subtracts.=0A= * tree-vect-generic.c (expand_vector_operations_1): Add case for=0A= widening adds, subtracts tree-vect-patterns.c=0A= * (vect_recog_widen_add_pattern): New recog pattern.=0A= (vect_recog_widen_sub_pattern): New recog pattern.=0A= (vect_recog_average_pattern): Update widened add code.=0A= (vect_recog_average_pattern): Update widened add code.=0A= * tree-vect-stmts.c (vectorizable_conversion): Add case for widened add,= =0A= subtract.=0A= (supportable_widening_operation): Add case for widened add, subtract.=0A= * tree.def=0A= (WIDEN_PLUS_EXPR): New tree code.=0A= (WIDEN_MINUS_EXPR): New tree code.=0A= (VEC_WIDEN_ADD_HI_EXPR): New tree code.=0A= (VEC_WIDEN_PLUS_LO_EXPR): New tree code.=0A= (VEC_WIDEN_MINUS_HI_EXPR): New tree code.=0A= (VEC_WIDEN_MINUS_LO_EXPR): New tree code.=0A= =0A= gcc/testsuite/ChangeLog:=0A= =0A= 2020-11-13 Joel Hutton =0A= =0A= * gcc.target/aarch64/vect-widen-add.c: New test.=0A= * gcc.target/aarch64/vect-widen-sub.c: New test.=0A= --_002_DB6PR0802MB22005D7763AFCE5C687E4355F5E60DB6PR0802MB2200_ Content-Type: text/x-patch; name="0002-vect-Add-widening-add-subtract-patterns.patch" Content-Description: 0002-vect-Add-widening-add-subtract-patterns.patch Content-Disposition: attachment; filename="0002-vect-Add-widening-add-subtract-patterns.patch"; size=21630; creation-date="Fri, 13 Nov 2020 16:48:35 GMT"; modification-date="Fri, 13 Nov 2020 16:48:35 GMT" Content-Transfer-Encoding: base64 RnJvbSBkNWUyMDQ4N2JiY2NkNjllOWI1YWM5NmZlZjZjOWRmODcxMGQwY2IwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2VsIEh1dHRvbiA8am9lbC5odXR0b25AYXJtLmNvbT4KRGF0 ZTogTW9uLCA5IE5vdiAyMDIwIDE1OjQ0OjE4ICswMDAwClN1YmplY3Q6IFtQQVRDSCAyLzNdIFt2 ZWN0XSBBZGQgd2lkZW5pbmcgYWRkLCBzdWJ0cmFjdCBwYXR0ZXJucwoKQWRkIHdpZGVuaW5nIGFk ZCwgc3VidHJhY3QgcGF0dGVybnMgdG8gdHJlZS12ZWN0LXBhdHRlcm5zLiBVcGRhdGUgdGhlCndp ZGVuZWQgY29kZSBvZiBwYXR0ZXJucyB0aGF0IGRldGVjdCBQTFVTX0VYUFIgdG8gYWxzbyBkZXRl Y3QKV0lERU5fUExVU19FWFBSLiBUaGVzZSBwYXR0ZXJucyB0YWtlIDIgdmVjdG9ycyB3aXRoIE4g ZWxlbWVudHMgb2Ygc2l6ZQpTIGFuZCBwZXJmb3JtIGFuIGFkZC9zdWJ0cmFjdCBvbiB0aGUgZWxl bWVudHMsIHN0b3JpbmcgdGhlIHJlc3VsdHMgYXMgTgplbGVtZW50cyBvZiBzaXplIDIqUyAoaW4g MiByZXN1bHQgdmVjdG9ycykuIFRoaXMgaXMgaW1wbGVtZW50ZWQgaW4gdGhlCmFhcmNoNjQgYmFj a2VuZCBhcyBhZGRsLGFkZGwyIGFuZCBzdWJsLHN1YmwyIHJlc3BlY3RpdmVseS4gQWRkIGFhcmNo NjQKdGVzdHMgZm9yIHBhdHRlcm5zLgotLS0KIGdjYy9kb2MvZ2VuZXJpYy50ZXhpICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDMxICsrKysrKysKIGdjYy9kb2MvbWQudGV4aSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDIyICsrKysrCiBnY2MvZXhwci5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgNiArKwogZ2NjL29wdGFicy10cmVlLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKwogZ2NjL29wdGFicy5kZWYgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDggKysKIC4uLi9nY2MudGFyZ2V0L2FhcmNoNjQvdmVjdC13 aWRlbi1hZGQuYyAgICAgICB8IDkyICsrKysrKysrKysrKysrKysrKysKIC4uLi9nY2MudGFyZ2V0 L2FhcmNoNjQvdmVjdC13aWRlbi1zdWIuYyAgICAgICB8IDkyICsrKysrKysrKysrKysrKysrKysK IGdjYy90cmVlLWNmZy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrCiBn Y2MvdHJlZS1pbmxpbmUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKwogZ2Nj L3RyZWUtdmVjdC1nZW5lcmljLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKwogZ2NjL3Ry ZWUtdmVjdC1wYXR0ZXJucy5jICAgICAgICAgICAgICAgICAgICAgIHwgMzEgKysrKysrLQogZ2Nj L3RyZWUtdmVjdC1zdG10cy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTUgKystCiBnY2Mv dHJlZS5kZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKwogMTMgZmls ZXMgY2hhbmdlZCwgMzMxIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvdmVjdC13aWRlbi1hZGQu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3Zl Y3Qtd2lkZW4tc3ViLmMKCmRpZmYgLS1naXQgYS9nY2MvZG9jL2dlbmVyaWMudGV4aSBiL2djYy9k b2MvZ2VuZXJpYy50ZXhpCmluZGV4IDczNzMyNjZjNjlmLi4zZDdkNGIwYjk0NyAxMDA2NDQKLS0t IGEvZ2NjL2RvYy9nZW5lcmljLnRleGkKKysrIGIvZ2NjL2RvYy9nZW5lcmljLnRleGkKQEAgLTE3 OTAsNiArMTc5MCwxMCBAQCBhIHZhbHVlIGZyb20gQGNvZGV7ZW51bSBhbm5vdF9leHByX2tpbmR9 LCB0aGUgdGhpcmQgaXMgYW4gQGNvZGV7SU5URUdFUl9DU1R9LgogQHRpbmRleCBWRUNfUlNISUZU X0VYUFIKIEB0aW5kZXggVkVDX1dJREVOX01VTFRfSElfRVhQUgogQHRpbmRleCBWRUNfV0lERU5f TVVMVF9MT19FWFBSCitAdGluZGV4IFZFQ19XSURFTl9QTFVTX0hJX0VYUFIKK0B0aW5kZXggVkVD X1dJREVOX1BMVVNfTE9fRVhQUgorQHRpbmRleCBWRUNfV0lERU5fTUlOVVNfSElfRVhQUgorQHRp bmRleCBWRUNfV0lERU5fTUlOVVNfTE9fRVhQUgogQHRpbmRleCBWRUNfVU5QQUNLX0hJX0VYUFIK IEB0aW5kZXggVkVDX1VOUEFDS19MT19FWFBSCiBAdGluZGV4IFZFQ19VTlBBQ0tfRkxPQVRfSElf RVhQUgpAQCAtMTgzNiw2ICsxODQwLDMzIEBAIHZlY3RvciBvZiBAY29kZXtOLzJ9IHByb2R1Y3Rz LiBJbiB0aGUgY2FzZSBvZiBAY29kZXtWRUNfV0lERU5fTVVMVF9MT19FWFBSfSB0aGUKIGxvdyBA Y29kZXtOLzJ9IGVsZW1lbnRzIG9mIHRoZSB0d28gdmVjdG9yIGFyZSBtdWx0aXBsaWVkIHRvIHBy b2R1Y2UgdGhlCiB2ZWN0b3Igb2YgQGNvZGV7Ti8yfSBwcm9kdWN0cy4KIAorQGl0ZW0gVkVDX1dJ REVOX1BMVVNfSElfRVhQUgorQGl0ZW14IFZFQ19XSURFTl9QTFVTX0xPX0VYUFIKK1RoZXNlIG5v ZGVzIHJlcHJlc2VudCB3aWRlbmluZyB2ZWN0b3IgYWRkaXRpb24gb2YgdGhlIGhpZ2ggYW5kIGxv dyBwYXJ0cyBvZgordGhlIHR3byBpbnB1dCB2ZWN0b3JzLCByZXNwZWN0aXZlbHkuICBUaGVpciBv cGVyYW5kcyBhcmUgdmVjdG9ycyB0aGF0IGNvbnRhaW4KK3RoZSBzYW1lIG51bWJlciBvZiBlbGVt ZW50cyAoQGNvZGV7Tn0pIG9mIHRoZSBzYW1lIGludGVncmFsIHR5cGUuIFRoZSByZXN1bHQKK2lz IGEgdmVjdG9yIHRoYXQgY29udGFpbnMgaGFsZiBhcyBtYW55IGVsZW1lbnRzLCBvZiBhbiBpbnRl Z3JhbCB0eXBlIHdob3NlIHNpemUKK2lzIHR3aWNlIGFzIHdpZGUuICBJbiB0aGUgY2FzZSBvZiBA Y29kZXtWRUNfV0lERU5fUExVU19ISV9FWFBSfSB0aGUgaGlnaAorQGNvZGV7Ti8yfSBlbGVtZW50 cyBvZiB0aGUgdHdvIHZlY3RvcnMgYXJlIGFkZGVkIHRvIHByb2R1Y2UgdGhlIHZlY3RvciBvZgor QGNvZGV7Ti8yfSBwcm9kdWN0cy4gIEluIHRoZSBjYXNlIG9mIEBjb2Rle1ZFQ19XSURFTl9QTFVT X0xPX0VYUFJ9IHRoZSBsb3cKK0Bjb2Rle04vMn0gZWxlbWVudHMgb2YgdGhlIHR3byB2ZWN0b3Jz IGFyZSBhZGRlZCB0byBwcm9kdWNlIHRoZSB2ZWN0b3Igb2YKK0Bjb2Rle04vMn0gcHJvZHVjdHMu CisKK0BpdGVtIFZFQ19XSURFTl9NSU5VU19ISV9FWFBSCitAaXRlbXggVkVDX1dJREVOX01JTlVT X0xPX0VYUFIKK1RoZXNlIG5vZGVzIHJlcHJlc2VudCB3aWRlbmluZyB2ZWN0b3Igc3VidHJhY3Rp b24gb2YgdGhlIGhpZ2ggYW5kIGxvdyBwYXJ0cyBvZgordGhlIHR3byBpbnB1dCB2ZWN0b3JzLCBy ZXNwZWN0aXZlbHkuICBUaGVpciBvcGVyYW5kcyBhcmUgdmVjdG9ycyB0aGF0IGNvbnRhaW4KK3Ro ZSBzYW1lIG51bWJlciBvZiBlbGVtZW50cyAoQGNvZGV7Tn0pIG9mIHRoZSBzYW1lIGludGVncmFs IHR5cGUuIFRoZSBoaWdoL2xvdworZWxlbWVudHMgb2YgdGhlIHNlY29uZCB2ZWN0b3IgYXJlIHN1 YnRyYWN0ZWQgZnJvbSB0aGUgaGlnaC9sb3cgZWxlbWVudHMgb2YgdGhlCitmaXJzdC4gVGhlIHJl c3VsdCBpcyBhIHZlY3RvciB0aGF0IGNvbnRhaW5zIGhhbGYgYXMgbWFueSBlbGVtZW50cywgb2Yg YW4KK2ludGVncmFsIHR5cGUgd2hvc2Ugc2l6ZSBpcyB0d2ljZSBhcyB3aWRlLiAgSW4gdGhlIGNh c2Ugb2YKK0Bjb2Rle1ZFQ19XSURFTl9NSU5VU19ISV9FWFBSfSB0aGUgaGlnaCBAY29kZXtOLzJ9 IGVsZW1lbnRzIG9mIHRoZSBzZWNvbmQKK3ZlY3RvciBhcmUgc3VidHJhY3RlZCBmcm9tIHRoZSBo aWdoIEBjb2Rle04vMn0gb2YgdGhlIGZpcnN0IHRvIHByb2R1Y2UgdGhlCit2ZWN0b3Igb2YgQGNv ZGV7Ti8yfSBwcm9kdWN0cy4gIEluIHRoZSBjYXNlIG9mCitAY29kZXtWRUNfV0lERU5fTUlOVVNf TE9fRVhQUn0gdGhlIGxvdyBAY29kZXtOLzJ9IGVsZW1lbnRzIG9mIHRoZSBzZWNvbmQKK3ZlY3Rv ciBhcmUgc3VidHJhY3RlZCBmcm9tIHRoZSBsb3cgQGNvZGV7Ti8yfSBvZiB0aGUgZmlyc3QgdG8g cHJvZHVjZSB0aGUKK3ZlY3RvciBvZiBAY29kZXtOLzJ9IHByb2R1Y3RzLgorCiBAaXRlbSBWRUNf VU5QQUNLX0hJX0VYUFIKIEBpdGVteCBWRUNfVU5QQUNLX0xPX0VYUFIKIFRoZXNlIG5vZGVzIHJl cHJlc2VudCB1bnBhY2tpbmcgb2YgdGhlIGhpZ2ggYW5kIGxvdyBwYXJ0cyBvZiB0aGUgaW5wdXQg dmVjdG9yLApkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9tZC50ZXhpIGIvZ2NjL2RvYy9tZC50ZXhpCmlu ZGV4IDgxMzg3NWI5NzNiLi5kYThjOWEyODNkZCAxMDA2NDQKLS0tIGEvZ2NjL2RvYy9tZC50ZXhp CisrKyBiL2djYy9kb2MvbWQudGV4aQpAQCAtNTYyNiw2ICs1NjI2LDI4IEBAIHdpdGggTiBzaWdu ZWQvdW5zaWduZWQgZWxlbWVudHMgb2Ygc2l6ZSBTQC4gIE9wZXJhbmQgMiBpcyBhIGNvbnN0YW50 LiAgU2hpZnQKIHRoZSBoaWdoL2xvdyBlbGVtZW50cyBvZiBvcGVyYW5kIDEsIGFuZCBwdXQgdGhl IE4vMiByZXN1bHRzIG9mIHNpemUgMipTIGluIHRoZQogb3V0cHV0IHZlY3RvciAob3BlcmFuZCAw KS4KIAorQGNpbmRleCBAY29kZXt2ZWNfd2lkZW5fc2FkZGxfaGlfQHZhcnttfX0gaW5zdHJ1Y3Rp b24gcGF0dGVybgorQGNpbmRleCBAY29kZXt2ZWNfd2lkZW5fc2FkZGxfbG9fQHZhcnttfX0gaW5z dHJ1Y3Rpb24gcGF0dGVybgorQGNpbmRleCBAY29kZXt2ZWNfd2lkZW5fdWFkZGxfaGlfQHZhcntt fX0gaW5zdHJ1Y3Rpb24gcGF0dGVybgorQGNpbmRleCBAY29kZXt2ZWNfd2lkZW5fdWFkZGxfbG9f QHZhcnttfX0gaW5zdHJ1Y3Rpb24gcGF0dGVybgorQGl0ZW0gQHNhbXB7dmVjX3dpZGVuX3VhZGRs X2hpX0B2YXJ7bX19LCBAc2FtcHt2ZWNfd2lkZW5fdWFkZGxfbG9fQHZhcnttfX0KK0BpdGVteCBA c2FtcHt2ZWNfd2lkZW5fc2FkZGxfaGlfQHZhcnttfX0sIEBzYW1we3ZlY193aWRlbl9zYWRkbF9s b19AdmFye219fQorU2lnbmVkL1Vuc2lnbmVkIHdpZGVuaW5nIGFkZCBsb25nLiAgT3BlcmFuZHMg MSBhbmQgMiBhcmUgdmVjdG9ycyB3aXRoIE4KK3NpZ25lZC91bnNpZ25lZCBlbGVtZW50cyBvZiBz aXplIFNALiAgQWRkIHRoZSBoaWdoL2xvdyBlbGVtZW50cyBvZiAxIGFuZCAyCit0b2dldGhlciwg d2lkZW4gdGhlIHJlc3VsdGluZyBlbGVtZW50cyBhbmQgcHV0IHRoZSBOLzIgcmVzdWx0cyBvZiBz aXplIDIqUyBpbgordGhlIG91dHB1dCB2ZWN0b3IgKG9wZXJhbmQgMCkuCisKK0BjaW5kZXggQGNv ZGV7dmVjX3dpZGVuX3NzdWJsX2hpX0B2YXJ7bX19IGluc3RydWN0aW9uIHBhdHRlcm4KK0BjaW5k ZXggQGNvZGV7dmVjX3dpZGVuX3NzdWJsX2xvX0B2YXJ7bX19IGluc3RydWN0aW9uIHBhdHRlcm4K K0BjaW5kZXggQGNvZGV7dmVjX3dpZGVuX3VzdWJsX2hpX0B2YXJ7bX19IGluc3RydWN0aW9uIHBh dHRlcm4KK0BjaW5kZXggQGNvZGV7dmVjX3dpZGVuX3VzdWJsX2xvX0B2YXJ7bX19IGluc3RydWN0 aW9uIHBhdHRlcm4KK0BpdGVtIEBzYW1we3ZlY193aWRlbl91c3VibF9oaV9AdmFye219fSwgQHNh bXB7dmVjX3dpZGVuX3VzdWJsX2xvX0B2YXJ7bX19CitAaXRlbXggQHNhbXB7dmVjX3dpZGVuX3Nz dWJsX2hpX0B2YXJ7bX19LCBAc2FtcHt2ZWNfd2lkZW5fc3N1YmxfbG9fQHZhcnttfX0KK1NpZ25l ZC9VbnNpZ25lZCB3aWRlbmluZyBzdWJ0cmFjdCBsb25nLiAgT3BlcmFuZHMgMSBhbmQgMiBhcmUg dmVjdG9ycyB3aXRoIE4KK3NpZ25lZC91bnNpZ25lZCBlbGVtZW50cyBvZiBzaXplIFNALiAgU3Vi dHJhY3QgdGhlIGhpZ2gvbG93IGVsZW1lbnRzIG9mIDIgZnJvbQorMSBhbmQgd2lkZW4gdGhlIHJl c3VsdGluZyBlbGVtZW50cy4gUHV0IHRoZSBOLzIgcmVzdWx0cyBvZiBzaXplIDIqUyBpbiB0aGUK K291dHB1dCB2ZWN0b3IgKG9wZXJhbmQgMCkuCisKIEBjaW5kZXggQGNvZGV7bXVsaGlzaTN9IGlu c3RydWN0aW9uIHBhdHRlcm4KIEBpdGVtIEBzYW1we211bGhpc2kzfQogTXVsdGlwbHkgb3BlcmFu ZHMgMSBhbmQgMiwgd2hpY2ggaGF2ZSBtb2RlIEBjb2Rle0hJbW9kZX0sIGFuZCBzdG9yZQpkaWZm IC0tZ2l0IGEvZ2NjL2V4cHIuYyBiL2djYy9leHByLmMKaW5kZXggYWUxNmYwNzc3NTguLjgzYWE2 M2M0MWI1IDEwMDY0NAotLS0gYS9nY2MvZXhwci5jCisrKyBiL2djYy9leHByLmMKQEAgLTkwMzQs NiArOTAzNCw4IEBAIGV4cGFuZF9leHByX3JlYWxfMiAoc2Vwb3BzIG9wcywgcnR4IHRhcmdldCwg bWFjaGluZV9tb2RlIHRtb2RlLAogCQkJCQkgIHRhcmdldCwgdW5zaWduZWRwKTsKICAgICAgIHJl dHVybiB0YXJnZXQ7CiAKKyAgICBjYXNlIFdJREVOX1BMVVNfRVhQUjoKKyAgICBjYXNlIFdJREVO X01JTlVTX0VYUFI6CiAgICAgY2FzZSBXSURFTl9NVUxUX0VYUFI6CiAgICAgICAvKiBJZiBmaXJz dCBvcGVyYW5kIGlzIGNvbnN0YW50LCBzd2FwIHRoZW0uCiAJIFRodXMgdGhlIGZvbGxvd2luZyBz cGVjaWFsIGNhc2UgY2hlY2tzIG5lZWQgb25seQpAQCAtOTc1NCw2ICs5NzU2LDEwIEBAIGV4cGFu ZF9leHByX3JlYWxfMiAoc2Vwb3BzIG9wcywgcnR4IHRhcmdldCwgbWFjaGluZV9tb2RlIHRtb2Rl LAogCXJldHVybiB0ZW1wOwogICAgICAgfQogCisgICAgY2FzZSBWRUNfV0lERU5fUExVU19ISV9F WFBSOgorICAgIGNhc2UgVkVDX1dJREVOX1BMVVNfTE9fRVhQUjoKKyAgICBjYXNlIFZFQ19XSURF Tl9NSU5VU19ISV9FWFBSOgorICAgIGNhc2UgVkVDX1dJREVOX01JTlVTX0xPX0VYUFI6CiAgICAg Y2FzZSBWRUNfV0lERU5fTVVMVF9ISV9FWFBSOgogICAgIGNhc2UgVkVDX1dJREVOX01VTFRfTE9f RVhQUjoKICAgICBjYXNlIFZFQ19XSURFTl9NVUxUX0VWRU5fRVhQUjoKZGlmZiAtLWdpdCBhL2dj Yy9vcHRhYnMtdHJlZS5jIGIvZ2NjL29wdGFicy10cmVlLmMKaW5kZXggNGRmZGE3NTY5MzIuLmI3 OTdkMDE4Yzg0IDEwMDY0NAotLS0gYS9nY2Mvb3B0YWJzLXRyZWUuYworKysgYi9nY2Mvb3B0YWJz LXRyZWUuYwpAQCAtMTcwLDYgKzE3MCwyMiBAQCBvcHRhYl9mb3JfdHJlZV9jb2RlIChlbnVtIHRy ZWVfY29kZSBjb2RlLCBjb25zdF90cmVlIHR5cGUsCiAgICAgICByZXR1cm4gKFRZUEVfVU5TSUdO RUQgKHR5cGUpCiAJICAgICAgPyB2ZWNfd2lkZW5fdXNoaWZ0bF9sb19vcHRhYiA6IHZlY193aWRl bl9zc2hpZnRsX2xvX29wdGFiKTsKIAorICAgIGNhc2UgVkVDX1dJREVOX1BMVVNfTE9fRVhQUjoK KyAgICAgIHJldHVybiAoVFlQRV9VTlNJR05FRCAodHlwZSkKKwkgICAgICA/IHZlY193aWRlbl91 YWRkbF9sb19vcHRhYiA6IHZlY193aWRlbl9zYWRkbF9sb19vcHRhYik7CisKKyAgICBjYXNlIFZF Q19XSURFTl9QTFVTX0hJX0VYUFI6CisgICAgICByZXR1cm4gKFRZUEVfVU5TSUdORUQgKHR5cGUp CisJICAgICAgPyB2ZWNfd2lkZW5fdWFkZGxfaGlfb3B0YWIgOiB2ZWNfd2lkZW5fc2FkZGxfaGlf b3B0YWIpOworCisgICAgY2FzZSBWRUNfV0lERU5fTUlOVVNfTE9fRVhQUjoKKyAgICAgIHJldHVy biAoVFlQRV9VTlNJR05FRCAodHlwZSkKKwkgICAgICA/IHZlY193aWRlbl91c3VibF9sb19vcHRh YiA6IHZlY193aWRlbl9zc3VibF9sb19vcHRhYik7CisKKyAgICBjYXNlIFZFQ19XSURFTl9NSU5V U19ISV9FWFBSOgorICAgICAgcmV0dXJuIChUWVBFX1VOU0lHTkVEICh0eXBlKQorCSAgICAgID8g dmVjX3dpZGVuX3VzdWJsX2hpX29wdGFiIDogdmVjX3dpZGVuX3NzdWJsX2hpX29wdGFiKTsKKwog ICAgIGNhc2UgVkVDX1VOUEFDS19ISV9FWFBSOgogICAgICAgcmV0dXJuIChUWVBFX1VOU0lHTkVE ICh0eXBlKQogCSAgICAgID8gdmVjX3VucGFja3VfaGlfb3B0YWIgOiB2ZWNfdW5wYWNrc19oaV9v cHRhYik7CmRpZmYgLS1naXQgYS9nY2Mvb3B0YWJzLmRlZiBiL2djYy9vcHRhYnMuZGVmCmluZGV4 IDc4NDA5YWExNDUzLi41NjA3ZjUxZTZiNCAxMDA2NDQKLS0tIGEvZ2NjL29wdGFicy5kZWYKKysr IGIvZ2NjL29wdGFicy5kZWYKQEAgLTM4Myw2ICszODMsMTAgQEAgT1BUQUJfRCAodmVjX3dpZGVu X3NtdWx0X2V2ZW5fb3B0YWIsICJ2ZWNfd2lkZW5fc211bHRfZXZlbl8kYSIpCiBPUFRBQl9EICh2 ZWNfd2lkZW5fc211bHRfaGlfb3B0YWIsICJ2ZWNfd2lkZW5fc211bHRfaGlfJGEiKQogT1BUQUJf RCAodmVjX3dpZGVuX3NtdWx0X2xvX29wdGFiLCAidmVjX3dpZGVuX3NtdWx0X2xvXyRhIikKIE9Q VEFCX0QgKHZlY193aWRlbl9zbXVsdF9vZGRfb3B0YWIsICJ2ZWNfd2lkZW5fc211bHRfb2RkXyRh IikKK09QVEFCX0QgKHZlY193aWRlbl9zc3VibF9oaV9vcHRhYiwgInZlY193aWRlbl9zc3VibF9o aV8kYSIpCitPUFRBQl9EICh2ZWNfd2lkZW5fc3N1YmxfbG9fb3B0YWIsICJ2ZWNfd2lkZW5fc3N1 YmxfbG9fJGEiKQorT1BUQUJfRCAodmVjX3dpZGVuX3NhZGRsX2hpX29wdGFiLCAidmVjX3dpZGVu X3NhZGRsX2hpXyRhIikKK09QVEFCX0QgKHZlY193aWRlbl9zYWRkbF9sb19vcHRhYiwgInZlY193 aWRlbl9zYWRkbF9sb18kYSIpCiBPUFRBQl9EICh2ZWNfd2lkZW5fc3NoaWZ0bF9oaV9vcHRhYiwg InZlY193aWRlbl9zc2hpZnRsX2hpXyRhIikKIE9QVEFCX0QgKHZlY193aWRlbl9zc2hpZnRsX2xv X29wdGFiLCAidmVjX3dpZGVuX3NzaGlmdGxfbG9fJGEiKQogT1BUQUJfRCAodmVjX3dpZGVuX3Vt dWx0X2V2ZW5fb3B0YWIsICJ2ZWNfd2lkZW5fdW11bHRfZXZlbl8kYSIpCkBAIC0zOTEsNiArMzk1 LDEwIEBAIE9QVEFCX0QgKHZlY193aWRlbl91bXVsdF9sb19vcHRhYiwgInZlY193aWRlbl91bXVs dF9sb18kYSIpCiBPUFRBQl9EICh2ZWNfd2lkZW5fdW11bHRfb2RkX29wdGFiLCAidmVjX3dpZGVu X3VtdWx0X29kZF8kYSIpCiBPUFRBQl9EICh2ZWNfd2lkZW5fdXNoaWZ0bF9oaV9vcHRhYiwgInZl Y193aWRlbl91c2hpZnRsX2hpXyRhIikKIE9QVEFCX0QgKHZlY193aWRlbl91c2hpZnRsX2xvX29w dGFiLCAidmVjX3dpZGVuX3VzaGlmdGxfbG9fJGEiKQorT1BUQUJfRCAodmVjX3dpZGVuX3VzdWJs X2hpX29wdGFiLCAidmVjX3dpZGVuX3VzdWJsX2hpXyRhIikKK09QVEFCX0QgKHZlY193aWRlbl91 c3VibF9sb19vcHRhYiwgInZlY193aWRlbl91c3VibF9sb18kYSIpCitPUFRBQl9EICh2ZWNfd2lk ZW5fdWFkZGxfaGlfb3B0YWIsICJ2ZWNfd2lkZW5fdWFkZGxfaGlfJGEiKQorT1BUQUJfRCAodmVj X3dpZGVuX3VhZGRsX2xvX29wdGFiLCAidmVjX3dpZGVuX3VhZGRsX2xvXyRhIikKIAogT1BUQUJf RCAoc3luY19hZGRfb3B0YWIsICJzeW5jX2FkZCRJJGEiKQogT1BUQUJfRCAoc3luY19hbmRfb3B0 YWIsICJzeW5jX2FuZCRJJGEiKQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2FhcmNoNjQvdmVjdC13aWRlbi1hZGQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L3ZlY3Qtd2lkZW4tYWRkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjIyMGJkOTM1MmE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FhcmNoNjQvdmVjdC13aWRlbi1hZGQuYwpAQCAtMCwwICsxLDkyIEBACisvKiB7IGRnLWRv IHJ1biB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMyAtc2F2ZS10ZW1wcyIgfSAqLworI2luY2x1 ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjcHJhZ21hIEdDQyB0YXJnZXQg Iitub3N2ZSIKKworI2RlZmluZSBBUlJfU0laRSAxMDI0CisKKy8qIFNob3VsZCBwcm9kdWNlIGFu IHVhZGRsICovCit2b2lkIHVhZGRfb3B0ICh1aW50MzJfdCAqZm9vLCB1aW50MTZfdCAqYSwgdWlu dDE2X3QgKmIpCit7CisgICAgZm9yKCBpbnQgaSA9IDA7IGkgPCBBUlJfU0laRSAtIDM7aT1pKzQp CisgICAgeworICAgICAgICBmb29baV0gICA9IGFbaV0gICArIGJbaV07CisgICAgICAgIGZvb1tp KzFdID0gYVtpKzFdICsgYltpKzFdOworICAgICAgICBmb29baSsyXSA9IGFbaSsyXSArIGJbaSsy XTsKKyAgICAgICAgZm9vW2krM10gPSBhW2krM10gKyBiW2krM107CisgICAgfQorfQorCitfX2F0 dHJpYnV0ZV9fKChvcHRpbWl6ZSAoMCkpKQordm9pZCB1YWRkX25vbm9wdCAodWludDMyX3QgKmZv bywgdWludDE2X3QgKmEsIHVpbnQxNl90ICpiKQoreworICAgIGZvciggaW50IGkgPSAwOyBpIDwg QVJSX1NJWkUgLSAzO2k9aSs0KQorICAgIHsKKyAgICAgICAgZm9vW2ldICAgPSBhW2ldICAgKyBi W2ldOworICAgICAgICBmb29baSsxXSA9IGFbaSsxXSArIGJbaSsxXTsKKyAgICAgICAgZm9vW2kr Ml0gPSBhW2krMl0gKyBiW2krMl07CisgICAgICAgIGZvb1tpKzNdID0gYVtpKzNdICsgYltpKzNd OworICAgIH0KK30KKworLyogU2hvdWxkIHByb2R1Y2UgYW4gc2FkZGwgKi8KK3ZvaWQgc2FkZF9v cHQgKGludDMyX3QgKmZvbywgaW50MTZfdCAqYSwgaW50MTZfdCAqYikKK3sKKyAgICBmb3IoIGlu dCBpID0gMDsgaSA8IEFSUl9TSVpFIC0gMztpPWkrNCkKKyAgICB7CisgICAgICAgIGZvb1tpXSAg ID0gYVtpXSAgICsgYltpXTsKKyAgICAgICAgZm9vW2krMV0gPSBhW2krMV0gKyBiW2krMV07Cisg ICAgICAgIGZvb1tpKzJdID0gYVtpKzJdICsgYltpKzJdOworICAgICAgICBmb29baSszXSA9IGFb aSszXSArIGJbaSszXTsKKyAgICB9Cit9CisKK19fYXR0cmlidXRlX18oKG9wdGltaXplICgwKSkp Cit2b2lkIHNhZGRfbm9ub3B0IChpbnQzMl90ICpmb28sIGludDE2X3QgKmEsIGludDE2X3QgKmIp Cit7CisgICAgZm9yKCBpbnQgaSA9IDA7IGkgPCBBUlJfU0laRSAtIDM7aT1pKzQpCisgICAgewor ICAgICAgICBmb29baV0gICA9IGFbaV0gICArIGJbaV07CisgICAgICAgIGZvb1tpKzFdID0gYVtp KzFdICsgYltpKzFdOworICAgICAgICBmb29baSsyXSA9IGFbaSsyXSArIGJbaSsyXTsKKyAgICAg ICAgZm9vW2krM10gPSBhW2krM10gKyBiW2krM107CisgICAgfQorfQorCisKK3ZvaWQgX19hdHRy aWJ1dGVfXygob3B0aW1pemUgKDApKSkKK2luaXQodWludDE2X3QgKmEsIHVpbnQxNl90ICpiKQor eworICAgIGZvciggaW50IGkgPSAwOyBpIDwgQVJSX1NJWkU7aSsrKQorICAgIHsKKyAgICAgIGFb aV0gPSBpOworICAgICAgYltpXSA9IDIqaTsKKyAgICB9Cit9CisKK2ludCBfX2F0dHJpYnV0ZV9f KChvcHRpbWl6ZSAoMCkpKQorbWFpbigpCit7CisgICAgdWludDMyX3QgZm9vX2FycltBUlJfU0la RV07CisgICAgdWludDMyX3QgYmFyX2FycltBUlJfU0laRV07CisgICAgdWludDE2X3QgYVtBUlJf U0laRV07CisgICAgdWludDE2X3QgYltBUlJfU0laRV07CisKKyAgICBpbml0KGEsIGIpOworICAg IHVhZGRfb3B0KGZvb19hcnIsIGEsIGIpOworICAgIHVhZGRfbm9ub3B0KGJhcl9hcnIsIGEsIGIp OworICAgIGlmIChtZW1jbXAoZm9vX2FyciwgYmFyX2FyciwgQVJSX1NJWkUpICE9IDApCisgICAg ICByZXR1cm4gMTsKKyAgICBzYWRkX29wdCgoaW50MzJfdCopIGZvb19hcnIsIChpbnQxNl90Kikg YSwgKGludDE2X3QqKSBiKTsKKyAgICBzYWRkX25vbm9wdCgoaW50MzJfdCopIGJhcl9hcnIsIChp bnQxNl90KikgYSwgKGludDE2X3QqKSBiKTsKKyAgICBpZiAobWVtY21wKGZvb19hcnIsIGJhcl9h cnIsIEFSUl9TSVpFKSAhPSAwKQorICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIDA7Cit9CisK Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHR1YWRkbFx0fSAxfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0dWFkZGwyXHR9IDF9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRzYWRkbFx0fSAxfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0c2FkZGwyXHR9IDF9 IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ZlY3Qt d2lkZW4tc3ViLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC92ZWN0LXdpZGVu LXN1Yi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hMmJlZDYzYWZm YgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3Zl Y3Qtd2lkZW4tc3ViLmMKQEAgLTAsMCArMSw5MiBAQAorLyogeyBkZy1kbyBydW4gfSAqLworLyog eyBkZy1vcHRpb25zICItTzMgLXNhdmUtdGVtcHMiIH0gKi8KKyNpbmNsdWRlIDxzdGRpbnQuaD4K KyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI3ByYWdtYSBHQ0MgdGFyZ2V0ICIrbm9zdmUiCisKKyNk ZWZpbmUgQVJSX1NJWkUgMTAyNAorCisvKiBTaG91bGQgcHJvZHVjZSBhbiB1c3VibCAqLwordm9p ZCB1c3ViX29wdCAodWludDMyX3QgKmZvbywgdWludDE2X3QgKmEsIHVpbnQxNl90ICpiKQorewor ICAgIGZvciggaW50IGkgPSAwOyBpIDwgQVJSX1NJWkUgLSAzO2k9aSs0KQorICAgIHsKKyAgICAg ICAgZm9vW2ldICAgPSBhW2ldICAgLSBiW2ldOworICAgICAgICBmb29baSsxXSA9IGFbaSsxXSAt IGJbaSsxXTsKKyAgICAgICAgZm9vW2krMl0gPSBhW2krMl0gLSBiW2krMl07CisgICAgICAgIGZv b1tpKzNdID0gYVtpKzNdIC0gYltpKzNdOworICAgIH0KK30KKworX19hdHRyaWJ1dGVfXygob3B0 aW1pemUgKDApKSkKK3ZvaWQgdXN1Yl9ub25vcHQgKHVpbnQzMl90ICpmb28sIHVpbnQxNl90ICph LCB1aW50MTZfdCAqYikKK3sKKyAgICBmb3IoIGludCBpID0gMDsgaSA8IEFSUl9TSVpFIC0gMztp PWkrNCkKKyAgICB7CisgICAgICAgIGZvb1tpXSAgID0gYVtpXSAgIC0gYltpXTsKKyAgICAgICAg Zm9vW2krMV0gPSBhW2krMV0gLSBiW2krMV07CisgICAgICAgIGZvb1tpKzJdID0gYVtpKzJdIC0g YltpKzJdOworICAgICAgICBmb29baSszXSA9IGFbaSszXSAtIGJbaSszXTsKKyAgICB9Cit9CisK Ky8qIFNob3VsZCBwcm9kdWNlIGFuIHNzdWJsICovCit2b2lkIHNzdWJfb3B0IChpbnQzMl90ICpm b28sIGludDE2X3QgKmEsIGludDE2X3QgKmIpCit7CisgICAgZm9yKCBpbnQgaSA9IDA7IGkgPCBB UlJfU0laRSAtIDM7aT1pKzQpCisgICAgeworICAgICAgICBmb29baV0gICA9IGFbaV0gICAtIGJb aV07CisgICAgICAgIGZvb1tpKzFdID0gYVtpKzFdIC0gYltpKzFdOworICAgICAgICBmb29baSsy XSA9IGFbaSsyXSAtIGJbaSsyXTsKKyAgICAgICAgZm9vW2krM10gPSBhW2krM10gLSBiW2krM107 CisgICAgfQorfQorCitfX2F0dHJpYnV0ZV9fKChvcHRpbWl6ZSAoMCkpKQordm9pZCBzc3ViX25v bm9wdCAoaW50MzJfdCAqZm9vLCBpbnQxNl90ICphLCBpbnQxNl90ICpiKQoreworICAgIGZvcigg aW50IGkgPSAwOyBpIDwgQVJSX1NJWkUgLSAzO2k9aSs0KQorICAgIHsKKyAgICAgICAgZm9vW2ld ICAgPSBhW2ldICAgLSBiW2ldOworICAgICAgICBmb29baSsxXSA9IGFbaSsxXSAtIGJbaSsxXTsK KyAgICAgICAgZm9vW2krMl0gPSBhW2krMl0gLSBiW2krMl07CisgICAgICAgIGZvb1tpKzNdID0g YVtpKzNdIC0gYltpKzNdOworICAgIH0KK30KKworCit2b2lkIF9fYXR0cmlidXRlX18oKG9wdGlt aXplICgwKSkpCitpbml0KHVpbnQxNl90ICphLCB1aW50MTZfdCAqYikKK3sKKyAgICBmb3IoIGlu dCBpID0gMDsgaSA8IEFSUl9TSVpFO2krKykKKyAgICB7CisgICAgICBhW2ldID0gaTsKKyAgICAg IGJbaV0gPSAyKmk7CisgICAgfQorfQorCitpbnQgX19hdHRyaWJ1dGVfXygob3B0aW1pemUgKDAp KSkKK21haW4oKQoreworICAgIHVpbnQzMl90IGZvb19hcnJbQVJSX1NJWkVdOworICAgIHVpbnQz Ml90IGJhcl9hcnJbQVJSX1NJWkVdOworICAgIHVpbnQxNl90IGFbQVJSX1NJWkVdOworICAgIHVp bnQxNl90IGJbQVJSX1NJWkVdOworCisgICAgaW5pdChhLCBiKTsKKyAgICB1c3ViX29wdChmb29f YXJyLCBhLCBiKTsKKyAgICB1c3ViX25vbm9wdChiYXJfYXJyLCBhLCBiKTsKKyAgICBpZiAobWVt Y21wKGZvb19hcnIsIGJhcl9hcnIsIEFSUl9TSVpFKSAhPSAwKQorICAgICAgcmV0dXJuIDE7Cisg ICAgc3N1Yl9vcHQoKGludDMyX3QqKSBmb29fYXJyLCAoaW50MTZfdCopIGEsIChpbnQxNl90Kikg Yik7CisgICAgc3N1Yl9ub25vcHQoKGludDMyX3QqKSBiYXJfYXJyLCAoaW50MTZfdCopIGEsIChp bnQxNl90KikgYik7CisgICAgaWYgKG1lbWNtcChmb29fYXJyLCBiYXJfYXJyLCBBUlJfU0laRSkg IT0gMCkKKyAgICAgIHJldHVybiAxOworICAgIHJldHVybiAwOworfQorCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0dXN1YmxcdH0gMX0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHVzdWJsMlx0fSAxfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0c3N1YmxcdH0gMX0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHNzdWJsMlx0fSAxfSB9ICovCmRpZmYgLS1n aXQgYS9nY2MvdHJlZS1jZmcuYyBiL2djYy90cmVlLWNmZy5jCmluZGV4IDUxMzlmMTExZmVjLi5h YWYzOTBiZGE0MiAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtY2ZnLmMKKysrIGIvZ2NjL3RyZWUtY2Zn LmMKQEAgLTM4ODUsNiArMzg4NSw4IEBAIHZlcmlmeV9naW1wbGVfYXNzaWduX2JpbmFyeSAoZ2Fz c2lnbiAqc3RtdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgfQogCisgICAgY2FzZSBX SURFTl9QTFVTX0VYUFI6CisgICAgY2FzZSBXSURFTl9NSU5VU19FWFBSOgogICAgIGNhc2UgUExV U19FWFBSOgogICAgIGNhc2UgTUlOVVNfRVhQUjoKICAgICAgIHsKQEAgLTQwMDUsNiArNDAwNywx MCBAQCB2ZXJpZnlfZ2ltcGxlX2Fzc2lnbl9iaW5hcnkgKGdhc3NpZ24gKnN0bXQpCiAgICAgICAg IHJldHVybiBmYWxzZTsKICAgICAgIH0KIAorICAgIGNhc2UgVkVDX1dJREVOX01JTlVTX0hJX0VY UFI6CisgICAgY2FzZSBWRUNfV0lERU5fTUlOVVNfTE9fRVhQUjoKKyAgICBjYXNlIFZFQ19XSURF Tl9QTFVTX0hJX0VYUFI6CisgICAgY2FzZSBWRUNfV0lERU5fUExVU19MT19FWFBSOgogICAgIGNh c2UgVkVDX1dJREVOX01VTFRfSElfRVhQUjoKICAgICBjYXNlIFZFQ19XSURFTl9NVUxUX0xPX0VY UFI6CiAgICAgY2FzZSBWRUNfV0lERU5fTVVMVF9FVkVOX0VYUFI6CmRpZmYgLS1naXQgYS9nY2Mv dHJlZS1pbmxpbmUuYyBiL2djYy90cmVlLWlubGluZS5jCmluZGV4IDMyNDI0YjE2OWM3Li5kOTgx NGJkMTBkMyAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtaW5saW5lLmMKKysrIGIvZ2NjL3RyZWUtaW5s aW5lLmMKQEAgLTQyMjQsNiArNDIyNCw4IEBAIGVzdGltYXRlX29wZXJhdG9yX2Nvc3QgKGVudW0g dHJlZV9jb2RlIGNvZGUsIGVuaV93ZWlnaHRzICp3ZWlnaHRzLAogCiAgICAgY2FzZSBSRUFMSUdO X0xPQURfRVhQUjoKIAorICAgIGNhc2UgV0lERU5fUExVU19FWFBSOgorICAgIGNhc2UgV0lERU5f TUlOVVNfRVhQUjoKICAgICBjYXNlIFdJREVOX1NVTV9FWFBSOgogICAgIGNhc2UgV0lERU5fTVVM VF9FWFBSOgogICAgIGNhc2UgRE9UX1BST0RfRVhQUjoKQEAgLTQyMzIsNiArNDIzNCwxMCBAQCBl c3RpbWF0ZV9vcGVyYXRvcl9jb3N0IChlbnVtIHRyZWVfY29kZSBjb2RlLCBlbmlfd2VpZ2h0cyAq d2VpZ2h0cywKICAgICBjYXNlIFdJREVOX01VTFRfTUlOVVNfRVhQUjoKICAgICBjYXNlIFdJREVO X0xTSElGVF9FWFBSOgogCisgICAgY2FzZSBWRUNfV0lERU5fUExVU19ISV9FWFBSOgorICAgIGNh c2UgVkVDX1dJREVOX1BMVVNfTE9fRVhQUjoKKyAgICBjYXNlIFZFQ19XSURFTl9NSU5VU19ISV9F WFBSOgorICAgIGNhc2UgVkVDX1dJREVOX01JTlVTX0xPX0VYUFI6CiAgICAgY2FzZSBWRUNfV0lE RU5fTVVMVF9ISV9FWFBSOgogICAgIGNhc2UgVkVDX1dJREVOX01VTFRfTE9fRVhQUjoKICAgICBj YXNlIFZFQ19XSURFTl9NVUxUX0VWRU5fRVhQUjoKZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3Qt Z2VuZXJpYy5jIGIvZ2NjL3RyZWUtdmVjdC1nZW5lcmljLmMKaW5kZXggZDdiYWZhNzcxMzQuLjIz YmMxY2IwNGI3IDEwMDY0NAotLS0gYS9nY2MvdHJlZS12ZWN0LWdlbmVyaWMuYworKysgYi9nY2Mv dHJlZS12ZWN0LWdlbmVyaWMuYwpAQCAtMjExOCw2ICsyMTE4LDEwIEBAIGV4cGFuZF92ZWN0b3Jf b3BlcmF0aW9uc18xIChnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3NpLAogICAgICBhcmd1bWVudHMs IG5vdCB0aGUgd2lkZW5lZCByZXN1bHQuICBWRUNfVU5QQUNLX0ZMT0FUXypfRVhQUiBpcwogICAg ICBjYWxjdWxhdGVkIGluIHRoZSBzYW1lIHdheSBhYm92ZS4gICovCiAgIGlmIChjb2RlID09IFdJ REVOX1NVTV9FWFBSCisgICAgICB8fCBjb2RlID09IFZFQ19XSURFTl9QTFVTX0hJX0VYUFIKKyAg ICAgIHx8IGNvZGUgPT0gVkVDX1dJREVOX1BMVVNfTE9fRVhQUgorICAgICAgfHwgY29kZSA9PSBW RUNfV0lERU5fTUlOVVNfSElfRVhQUgorICAgICAgfHwgY29kZSA9PSBWRUNfV0lERU5fTUlOVVNf TE9fRVhQUgogICAgICAgfHwgY29kZSA9PSBWRUNfV0lERU5fTVVMVF9ISV9FWFBSCiAgICAgICB8 fCBjb2RlID09IFZFQ19XSURFTl9NVUxUX0xPX0VYUFIKICAgICAgIHx8IGNvZGUgPT0gVkVDX1dJ REVOX01VTFRfRVZFTl9FWFBSCmRpZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0LXBhdHRlcm5zLmMg Yi9nY2MvdHJlZS12ZWN0LXBhdHRlcm5zLmMKaW5kZXggZjY4YTg3ZTA1ZWQuLjc5YjUyMWFhNDM2 IDEwMDY0NAotLS0gYS9nY2MvdHJlZS12ZWN0LXBhdHRlcm5zLmMKKysrIGIvZ2NjL3RyZWUtdmVj dC1wYXR0ZXJucy5jCkBAIC0xMTQ4LDcgKzExNDgsNyBAQCB2ZWN0X3JlY29nX3NhZF9wYXR0ZXJu ICh2ZWNfaW5mbyAqdmluZm8sCiAgIC8qIEZPUk5PVy4gIENhbiBjb250aW51ZSBhbmFseXppbmcg dGhlIGRlZi11c2UgY2hhaW4gd2hlbiB0aGlzIHN0bXQgaW4gYSBwaGkKICAgICAgaW5zaWRlIHRo ZSBsb29wIChpbiBjYXNlIHdlIGFyZSBhbmFseXppbmcgYW4gb3V0ZXItbG9vcCkuICAqLwogICB2 ZWN0X3VucHJvbW90ZWRfdmFsdWUgdW5wcm9tWzJdOwotICBpZiAoIXZlY3Rfd2lkZW5lZF9vcF90 cmVlICh2aW5mbywgZGlmZl9zdG10X3ZpbmZvLCBNSU5VU19FWFBSLCBNSU5VU19FWFBSLAorICBp ZiAoIXZlY3Rfd2lkZW5lZF9vcF90cmVlICh2aW5mbywgZGlmZl9zdG10X3ZpbmZvLCBNSU5VU19F WFBSLCBXSURFTl9NSU5VU19FWFBSLAogCQkJICAgICBmYWxzZSwgMiwgdW5wcm9tLCAmaGFsZl90 eXBlKSkKICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTI2Miw2ICsxMjYyLDI5IEBAIHZlY3RfcmVj b2dfd2lkZW5fbXVsdF9wYXR0ZXJuICh2ZWNfaW5mbyAqdmluZm8sIHN0bXRfdmVjX2luZm8gbGFz dF9zdG10X2luZm8sCiAJCQkJICAgICAgInZlY3RfcmVjb2dfd2lkZW5fbXVsdF9wYXR0ZXJuIik7 CiB9CiAKKy8qIFRyeSB0byBkZXRlY3QgYWRkaXRpb24gb24gd2lkZW5lZCBpbnB1dHMsIGNvbnZl cnRpbmcgUExVU19FWFBSCisgICB0byBXSURFTl9QTFVTX0VYUFIuICBTZWUgdmVjdF9yZWNvZ193 aWRlbl9vcF9wYXR0ZXJuIGZvciBkZXRhaWxzLiAgKi8KKworc3RhdGljIGdpbXBsZSAqCit2ZWN0 X3JlY29nX3dpZGVuX3BsdXNfcGF0dGVybiAodmVjX2luZm8gKnZpbmZvLCBzdG10X3ZlY19pbmZv IGxhc3Rfc3RtdF9pbmZvLAorCQkJICAgICAgIHRyZWUgKnR5cGVfb3V0KQoreworICByZXR1cm4g dmVjdF9yZWNvZ193aWRlbl9vcF9wYXR0ZXJuICh2aW5mbywgbGFzdF9zdG10X2luZm8sIHR5cGVf b3V0LAorCQkJCSAgICAgIFBMVVNfRVhQUiwgV0lERU5fUExVU19FWFBSLCBmYWxzZSwKKwkJCQkg ICAgICAidmVjdF9yZWNvZ193aWRlbl9wbHVzX3BhdHRlcm4iKTsKK30KKworLyogVHJ5IHRvIGRl dGVjdCBhZGRpdGlvbiBvbiB3aWRlbmVkIGlucHV0cywgY29udmVydGluZyBTVUJfRVhQUgorICAg dG8gV0lERU5fTUlOVVNfRVhQUi4gIFNlZSB2ZWN0X3JlY29nX3dpZGVuX29wX3BhdHRlcm4gZm9y IGRldGFpbHMuICAqLworc3RhdGljIGdpbXBsZSAqCit2ZWN0X3JlY29nX3dpZGVuX21pbnVzX3Bh dHRlcm4gKHZlY19pbmZvICp2aW5mbywgc3RtdF92ZWNfaW5mbyBsYXN0X3N0bXRfaW5mbywKKwkJ CSAgICAgICB0cmVlICp0eXBlX291dCkKK3sKKyAgcmV0dXJuIHZlY3RfcmVjb2dfd2lkZW5fb3Bf cGF0dGVybiAodmluZm8sIGxhc3Rfc3RtdF9pbmZvLCB0eXBlX291dCwKKwkJCQkgICAgICBNSU5V U19FWFBSLCBXSURFTl9NSU5VU19FWFBSLCBmYWxzZSwKKwkJCQkgICAgICAidmVjdF9yZWNvZ193 aWRlbl9taW51c19wYXR0ZXJuIik7Cit9CisKIC8qIEZ1bmN0aW9uIHZlY3RfcmVjb2dfcG93X3Bh dHRlcm4KIAogICAgVHJ5IHRvIGZpbmQgdGhlIGZvbGxvd2luZyBwYXR0ZXJuOgpAQCAtMTk3OCw3 ICsyMDAxLDcgQEAgdmVjdF9yZWNvZ19hdmVyYWdlX3BhdHRlcm4gKHZlY19pbmZvICp2aW5mbywK ICAgdmVjdF91bnByb21vdGVkX3ZhbHVlIHVucHJvbVszXTsKICAgdHJlZSBuZXdfdHlwZTsKICAg dW5zaWduZWQgaW50IG5vcHMgPSB2ZWN0X3dpZGVuZWRfb3BfdHJlZSAodmluZm8sIHBsdXNfc3Rt dF9pbmZvLCBQTFVTX0VYUFIsCi0JCQkJCSAgICBQTFVTX0VYUFIsIGZhbHNlLCAzLAorCQkJCQkg ICAgV0lERU5fUExVU19FWFBSLCBmYWxzZSwgMywKIAkJCQkJICAgIHVucHJvbSwgJm5ld190eXBl KTsKICAgaWYgKG5vcHMgPT0gMCkKICAgICByZXR1cm4gTlVMTDsKQEAgLTUyNDksNyArNTI3Miw5 IEBAIHN0YXRpYyB2ZWN0X3JlY29nX2Z1bmMgdmVjdF92ZWN0X3JlY29nX2Z1bmNfcHRyc1tdID0g ewogICAgICBvZiBtYXNrIGNvbnZlcnNpb24gdGhhdCBhcmUgbmVlZGVkIGZvciBnYXRoZXIgYW5k IHNjYXR0ZXIKICAgICAgaW50ZXJuYWwgZnVuY3Rpb25zLiAgKi8KICAgeyB2ZWN0X3JlY29nX2dh dGhlcl9zY2F0dGVyX3BhdHRlcm4sICJnYXRoZXJfc2NhdHRlciIgfSwKLSAgeyB2ZWN0X3JlY29n X21hc2tfY29udmVyc2lvbl9wYXR0ZXJuLCAibWFza19jb252ZXJzaW9uIiB9CisgIHsgdmVjdF9y ZWNvZ19tYXNrX2NvbnZlcnNpb25fcGF0dGVybiwgIm1hc2tfY29udmVyc2lvbiIgfSwKKyAgeyB2 ZWN0X3JlY29nX3dpZGVuX3BsdXNfcGF0dGVybiwgIndpZGVuX3BsdXMiIH0sCisgIHsgdmVjdF9y ZWNvZ193aWRlbl9taW51c19wYXR0ZXJuLCAid2lkZW5fbWludXMiIH0sCiB9OwogCiBjb25zdCB1 bnNpZ25lZCBpbnQgTlVNX1BBVFRFUk5TID0gQVJSQVlfU0laRSAodmVjdF92ZWN0X3JlY29nX2Z1 bmNfcHRycyk7CmRpZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0LXN0bXRzLmMgYi9nY2MvdHJlZS12 ZWN0LXN0bXRzLmMKaW5kZXggMmM3YThhNzA5MTMuLjI1YTg0NzRjNzc0IDEwMDY0NAotLS0gYS9n Y2MvdHJlZS12ZWN0LXN0bXRzLmMKKysrIGIvZ2NjL3RyZWUtdmVjdC1zdG10cy5jCkBAIC00NTcw LDYgKzQ1NzAsOCBAQCB2ZWN0b3JpemFibGVfY29udmVyc2lvbiAodmVjX2luZm8gKnZpbmZvLAog ICBpZiAoIUNPTlZFUlRfRVhQUl9DT0RFX1AgKGNvZGUpCiAgICAgICAmJiBjb2RlICE9IEZJWF9U UlVOQ19FWFBSCiAgICAgICAmJiBjb2RlICE9IEZMT0FUX0VYUFIKKyAgICAgICYmIGNvZGUgIT0g V0lERU5fUExVU19FWFBSCisgICAgICAmJiBjb2RlICE9IFdJREVOX01JTlVTX0VYUFIKICAgICAg ICYmIGNvZGUgIT0gV0lERU5fTVVMVF9FWFBSCiAgICAgICAmJiBjb2RlICE9IFdJREVOX0xTSElG VF9FWFBSKQogICAgIHJldHVybiBmYWxzZTsKQEAgLTQ2MTUsNyArNDYxNyw4IEBAIHZlY3Rvcml6 YWJsZV9jb252ZXJzaW9uICh2ZWNfaW5mbyAqdmluZm8sCiAKICAgaWYgKG9wX3R5cGUgPT0gYmlu YXJ5X29wKQogICAgIHsKLSAgICAgIGdjY19hc3NlcnQgKGNvZGUgPT0gV0lERU5fTVVMVF9FWFBS IHx8IGNvZGUgPT0gV0lERU5fTFNISUZUX0VYUFIpOworICAgICAgZ2NjX2Fzc2VydCAoY29kZSA9 PSBXSURFTl9NVUxUX0VYUFIgfHwgY29kZSA9PSBXSURFTl9MU0hJRlRfRVhQUgorCQkgIHx8IGNv ZGUgPT0gV0lERU5fUExVU19FWFBSIHx8IGNvZGUgPT0gV0lERU5fTUlOVVNfRVhQUik7CiAKICAg ICAgIG9wMSA9IGdpbXBsZV9hc3NpZ25fcmhzMiAoc3RtdCk7CiAgICAgICB0cmVlIHZlY3R5cGUx X2luOwpAQCAtMTE1MzQsNiArMTE1MzcsMTYgQEAgc3VwcG9ydGFibGVfd2lkZW5pbmdfb3BlcmF0 aW9uICh2ZWNfaW5mbyAqdmluZm8sCiAgICAgICBjMiA9IFZFQ19XSURFTl9MU0hJRlRfSElfRVhQ UjsKICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBXSURFTl9QTFVTX0VYUFI6CisgICAgICBjMSA9 IFZFQ19XSURFTl9QTFVTX0xPX0VYUFI7CisgICAgICBjMiA9IFZFQ19XSURFTl9QTFVTX0hJX0VY UFI7CisgICAgICBicmVhazsKKworICAgIGNhc2UgV0lERU5fTUlOVVNfRVhQUjoKKyAgICAgIGMx ID0gVkVDX1dJREVOX01JTlVTX0xPX0VYUFI7CisgICAgICBjMiA9IFZFQ19XSURFTl9NSU5VU19I SV9FWFBSOworICAgICAgYnJlYWs7CisKICAgICBDQVNFX0NPTlZFUlQ6CiAgICAgICBjMSA9IFZF Q19VTlBBQ0tfTE9fRVhQUjsKICAgICAgIGMyID0gVkVDX1VOUEFDS19ISV9FWFBSOwpkaWZmIC0t Z2l0IGEvZ2NjL3RyZWUuZGVmIGIvZ2NjL3RyZWUuZGVmCmluZGV4IDZjNTNmZTFiZjY3Li5mZmJl MDBjZjc5ZiAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUuZGVmCisrKyBiL2djYy90cmVlLmRlZgpAQCAt MTM1OSw2ICsxMzU5LDggQEAgREVGVFJFRUNPREUgKFdJREVOX01VTFRfTUlOVVNfRVhQUiwgIndp ZGVuX211bHRfbWludXNfZXhwciIsIHRjY19leHByZXNzaW9uLCAzKQogICAgdGhlIGZpcnN0IGFy Z3VtZW50IGZyb20gdHlwZSB0MSB0byB0eXBlIHQyLCBhbmQgdGhlbiBzaGlmdGluZyBpdAogICAg YnkgdGhlIHNlY29uZCBhcmd1bWVudC4gICovCiBERUZUUkVFQ09ERSAoV0lERU5fTFNISUZUX0VY UFIsICJ3aWRlbl9sc2hpZnRfZXhwciIsIHRjY19iaW5hcnksIDIpCitERUZUUkVFQ09ERSAoV0lE RU5fUExVU19FWFBSLCAid2lkZW5fcGx1c19leHByIiwgdGNjX2JpbmFyeSwgMikKK0RFRlRSRUVD T0RFIChXSURFTl9NSU5VU19FWFBSLCAid2lkZW5fbWludXNfZXhwciIsIHRjY19iaW5hcnksIDIp CiAKIC8qIFdpZGVuaW5nIHZlY3RvciBtdWx0aXBsaWNhdGlvbi4KICAgIFRoZSB0d28gb3BlcmFu ZHMgYXJlIHZlY3RvcnMgd2l0aCBOIGVsZW1lbnRzIG9mIHNpemUgUy4gTXVsdGlwbHlpbmcgdGhl CkBAIC0xNDIzLDYgKzE0MjUsMTAgQEAgREVGVFJFRUNPREUgKFZFQ19QQUNLX0ZMT0FUX0VYUFIs ICJ2ZWNfcGFja19mbG9hdF9leHByIiwgdGNjX2JpbmFyeSwgMikKICAqLwogREVGVFJFRUNPREUg KFZFQ19XSURFTl9MU0hJRlRfSElfRVhQUiwgIndpZGVuX2xzaGlmdF9oaV9leHByIiwgdGNjX2Jp bmFyeSwgMikKIERFRlRSRUVDT0RFIChWRUNfV0lERU5fTFNISUZUX0xPX0VYUFIsICJ3aWRlbl9s c2hpZnRfbG9fZXhwciIsIHRjY19iaW5hcnksIDIpCitERUZUUkVFQ09ERSAoVkVDX1dJREVOX1BM VVNfSElfRVhQUiwgIndpZGVuX3BsdXNfaGlfZXhwciIsIHRjY19iaW5hcnksIDIpCitERUZUUkVF Q09ERSAoVkVDX1dJREVOX1BMVVNfTE9fRVhQUiwgIndpZGVuX3BsdXNfbG9fZXhwciIsIHRjY19i aW5hcnksIDIpCitERUZUUkVFQ09ERSAoVkVDX1dJREVOX01JTlVTX0hJX0VYUFIsICJ3aWRlbl9t aW51c19oaV9leHByIiwgdGNjX2JpbmFyeSwgMikKK0RFRlRSRUVDT0RFIChWRUNfV0lERU5fTUlO VVNfTE9fRVhQUiwgIndpZGVuX21pbnVzX2xvX2V4cHIiLCB0Y2NfYmluYXJ5LCAyKQogCiAvKiBQ UkVESUNUX0VYUFIuICBTcGVjaWZ5IGhpbnQgZm9yIGJyYW5jaCBwcmVkaWN0aW9uLiAgVGhlCiAg ICBQUkVESUNUX0VYUFJfUFJFRElDVE9SIHNwZWNpZnkgcHJlZGljdG9yIGFuZCBQUkVESUNUX0VY UFJfT1VUQ09NRSB0aGUKLS0gCjIuMTcuMQoK --_002_DB6PR0802MB22005D7763AFCE5C687E4355F5E60DB6PR0802MB2200_--