From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id F0C05740039 for ; Tue, 26 Dec 2023 14:14:30 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=F1uNhl/A+Np+qqh5LgLL7G9EFesH8ACZK0qz3Q7vB58=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1703600069; v=1; b=M/25AbuIf29xMduO24b/bBHobscdst5FCK7e5/R0WsFvzP98x5d6K8kBeRRWYhM663hvcUxg SVfXPx8udDpCMuljVdAMP4mQRLSS9GoxUCTi0f27Uh3UPDY2t1f0yeqxHmYrCvpbTkeqphHUOPv a8QXNFWjuaJYQcpVbu5JGps4= X-Received: by 127.0.0.2 with SMTP id GHICYY7687511xaYZm38JO5e; Tue, 26 Dec 2023 06:14:29 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web11.56644.1703488497640309551 for ; Sun, 24 Dec 2023 23:14:57 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10934"; a="376411932" X-IronPort-AV: E=Sophos;i="6.04,302,1695711600"; d="scan'208";a="376411932" X-Received: from fmviesa001.fm.intel.com ([10.60.135.141]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Dec 2023 23:14:57 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.04,302,1695711600"; d="scan'208";a="19721309" X-Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmviesa001.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 24 Dec 2023 23:14:58 -0800 X-Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Sun, 24 Dec 2023 23:14:56 -0800 X-Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Sun, 24 Dec 2023 23:14:56 -0800 X-Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.100) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Sun, 24 Dec 2023 23:14:51 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=agdftaRyRYabuhJqaIiIHpFkliQU1TqBngNjpQUKYV/qCsKbon7HUY8gLtINyfl9m1C6B4i94NC5GWA8YPIs/ZxYeOqEFPynY7g+kk8P6YzP0Vqmjt9sGMs3U9l/eWkI/PVnyWbMIM59yLjdN2ehuMkK3HCDdLp3MNJ3mi4KDqXv2oW+uf47MhPHvZUztX6ZFYIRurTGPB5hGi+3Y7QsVWelSvwyo7zaeSMSawYrF1In95+ePGi1Pkp1Doff9IMw7jtvfHNDg+F9Fve6xMGUPgoVv8h1Vzun18mxH8VxTrhAaiEsQSffAzselZsiEQn5Bn1uzCq49QM2ybGeFjo7Pw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tMKyatDQIRO5x/y4o663al6MN8xSecvh0UxHSnmsxBQ=; b=FnomnOzX/VDpx7ZbxL4OWXAOJN+nTkC+ThmWJ0LOVXrQdNAGncsXwSNtSkTBePTbsQmPrmEOJ2QTZpizgj/gql8An6YENHJUuL6+7UNdzltfsidThE/5OFpejwQtJsegiOr4I5395Vf0bhyb4JXw5bqpCEmgsxIu5s6mXjo9ztUxW/pNqIKPy53LS5Hyr+venLoflY9dRRIgpJQJ8pee83IO6KW9GUadmpsgUTK0v1aXil9CIrWzIN4LUW0oVHFCOHnFiNY/lQYfeE1JZ8APueWmG58TP/Xc9qmr0x7csTT9bPGqNHKskZVTixbEmjnwV/S/uDGovH27+qxPlvX3Nw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none X-Received: from SN6PR11MB2815.namprd11.prod.outlook.com (2603:10b6:805:62::13) by MW4PR11MB5911.namprd11.prod.outlook.com (2603:10b6:303:16b::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7113.26; Mon, 25 Dec 2023 07:14:48 +0000 X-Received: from SN6PR11MB2815.namprd11.prod.outlook.com ([fe80::3d00:4419:2f45:9078]) by SN6PR11MB2815.namprd11.prod.outlook.com ([fe80::3d00:4419:2f45:9078%4]) with mapi id 15.20.7113.026; Mon, 25 Dec 2023 07:14:48 +0000 From: "Zhang, Zifeng" To: "Gao, Liming" , "Yang, Yuting2" CC: 'Rebecca Cran' , "Feng, Bob C" , "Chen, Arthur G" , "devel@edk2.groups.io" , "Chen, Christine" , "Guo, Gua" Subject: Re: [edk2-devel] [Patch V2] BaseTools: VfrCompiler Adds DefaultValueError Feature Thread-Topic: [Patch V2] BaseTools: VfrCompiler Adds DefaultValueError Feature Thread-Index: AQHaLNnMGjYrtcdNyUa0aNkUkL/J9rClWmeggAABsnCADe/wMIAF/CkAgABfRZA= Date: Mon, 25 Dec 2023 07:14:47 +0000 Message-ID: References: <20231212090119.1150-1-yuting2.yang@intel.com> <025c01da36d0$f37cc9b0$da765d10$@byosoft.com.cn> In-Reply-To: <025c01da36d0$f37cc9b0$da765d10$@byosoft.com.cn> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN6PR11MB2815:EE_|MW4PR11MB5911:EE_ x-ms-office365-filtering-correlation-id: 440c07d3-79e0-47ef-29b0-08dc05192da1 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: XhebskWmWq7R6AtbygQd70jWx1XOtbUyU5HUPYLdoH+DKzSb4h7xBcfHpDNm7OhTMEHDC7Lckmc+oUxwQs3CtFtByjNXEHtp9uuSt4ELNmKQLeqke+7BjOyJpzCss2wipX1/2wxUQB9LzyHHfcwA9HnEFLkGzqmza4rkfi6hrsR3Uifb1bMjoJZOrK62PAhG9KP/h92+ypbpBlLOBN06Z4ZelHIE80lfbAsi9BnBI03L2Reh0xSm2CFQnI+6aEep8oVV5bJ2LwWNBdHZjOyqCgIIvvwCPJnGW5yAoWCwghOoeeh3mnqXmu+B32dLus5hDmPyTLHI4jjPLf4Cfn3gezaRjsklR2KJRWw/RW2d6WHb1HSeHyAPQyUP0DqHzlvZMI6mKaA2uPCZJ6/fUFOlz5kfvEu6sg4HXdkH2Jpfj14O03hd8LPu39aAI0N0kXWgExLwqXqFZ3t6bjKdC+GV+psKI/YwyxaG8COlZ1zSxJPgFnCkI2a1GfII/TCg2drvJEJt6HUdKs4Et/sHpKLKxi+LbhhFrT0FDoQvFfhoiylXWj0lmJGjhW4ZKjOYyq1qXT0p10Aay8kn9DcEdPGtnERtFB7X4YPH8OedtikIrjaCaXVX8Eivu7t7wUx7cVC5jQz0DPHvSdhINIQnZqGigsCn4exFwd21XSUTgJ+ybzo= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?R2syQ1BOZytEaGMwUW0zSVpaSEtMWXhVUVNCamRKNHpQMS8vczZVNDB5OEpY?= =?utf-8?B?VzhNSFFyU3FudHFOa0E0bVdSemQxZ2lPVGFDMVk0U2lYSlBTVFBZbDVmR0Z5?= =?utf-8?B?NVdDWElva2lWZE9WWitEaXdZVjJuMVBmTnR4Ym5iT2JwaDA0Y25DMUlmWUJV?= =?utf-8?B?cTlXdjNqdGIwS2tRQUFSVC9Vd0R6VzR2SVF2eU5lU3lZOURSRjRuRDViYUhF?= =?utf-8?B?SUFrNXd6SUo1eGZkVUJvQXNYMjNsOUl3a1V0d3Q4ZlFjZjZOTTdtc3JRY01O?= =?utf-8?B?V01jRSsrUUlISkszZjFTUmh2U0QweVNGSFVBZHhYbHczYUpUaDhrSk4yQitU?= =?utf-8?B?NXY5VUg0TDE3bTBnYWhKaWdDMWVjZ20wN05mZW40TFF1VE9tQVN0Qkh1d0tn?= =?utf-8?B?VnpHdTFoQjNEM1BMci9veWNuTXY2NzZKTjFoYjh0bm9DRWxIL0VKdi93VTVD?= =?utf-8?B?eG15Nlkybk9lS3ZnUjdPUE02NVhiZ25yaEZOSnZGWUtoV2VPYUUxS0VueXZZ?= =?utf-8?B?NEVScjE0Zm8xczFNaHYyTlBwcG5YQzR4M1ZodUMvVU1oMEppeWhtWEhkMFZC?= =?utf-8?B?YnByVzFPdlF2emdQYUJOS2dCdjFOQlROSUN4TDhJbSt4TGJYbzJlZ2xaWXpX?= =?utf-8?B?VTRtWE03ZERuSExyZ0NJOVBtN253bGNYblh6UXhDM20wL2hKR2JSTnJhMFRJ?= =?utf-8?B?b3hubVo0Ym5laW5WaDRLdWR3bzYwWTFYQWYxK05aVFo5cVdtSkhoRTJUeExk?= =?utf-8?B?RUZFcVJnWE9HeE1abjVRbGhlZ2hRYzI1bTdIbnVCMWM0MmVDc29JL1g1d0or?= =?utf-8?B?ZXNLL01GUDFSUitLVEpYSzEyS21uVC9ZK2Fta1NQNERpeHRlM01SRUc0bGF3?= =?utf-8?B?aVlvaUFiN1o1dzZVTHJ5UE01YlJGR28raXBMcGI0OFpmbWptdng0MVpDQ0tq?= =?utf-8?B?NDhsVVpWMDdMSEQyMkZrZWFDQXBuQlRsZllJTnJaUmZBRDVBOVNTWk5wZ00z?= =?utf-8?B?cU5SR0FIajhNT3pBSlRkRks4OU92TDJ2d3N3ZisxSlFZV1NlL0wxTGU5TUdz?= =?utf-8?B?YjBNME5KT0IrbmhnK1hnUTRlaVlrYmJqbWV0OE1ZZlNTdmpZUkViQmNINnZD?= =?utf-8?B?ZytkMEV3NmRvTXk1aURydEozUE9NZGd4VWdCdTFVWVF3RWpxL242ZWxmNmtz?= =?utf-8?B?Rm9rMi8zNTJtQ3JQRmFMSmdnbDJSNGxUWkxISEtDenoxTnpWMTFQRHBTanZL?= =?utf-8?B?eFRrbTlTdXhOam1WdVQvRTkzSnlJMi9YRFJvMnN6MGtkeHNUcGFkR1ZKSWY0?= =?utf-8?B?VnhrSFdlZVpxWklSc0w3d2VMMitzd3N2R2l0dm1uTGZGa1NXSU5oNWdDT1ky?= =?utf-8?B?N3B0em81aTc5RjlsL2FLY1B1UVhtWHBOZS9ZZzZMM2lkcU53QzdRekpuSENn?= =?utf-8?B?ZVpyQ3Btak1TNkVMTDBLQk51ZzMzUGk2TGIxOTZ6ZFZJSnFSMVp3OHc2WW45?= =?utf-8?B?VVNYOFV5T0kvbTNtTWc0TU9xUy8zcitxVVNNZWQ1eGJoSFJwQi94QlZlOFlt?= =?utf-8?B?MWhMblpqWDlBNXpsMHRwUWVDOUNRc2h1RWt6SXRzU1REdHpRWUdFNEpTUHdu?= =?utf-8?B?QnR2NTI3cExQOXNUcVJQaG0rN1BqVWNQeEJXK2Fkenh4SkRjQ054Y1l0Q0N5?= =?utf-8?B?OFZvZXlmZGpzVk9DNzJoMXdoL0NCOVA1b3U3T2s3RUk1TU5lM2ZxVVAyMkVZ?= =?utf-8?B?TEp1K3ZZUGQxaTZVY3ZvM3M1SEcxV1hoN29hS2xCaWQ3RU5CRkdsVHFQQ3dX?= =?utf-8?B?WGtjU3VDK05XRVoxSnVPeS8xNlJBN3JFaTh3T3lYV3hoSjNUYXZISzJUZnVS?= =?utf-8?B?S3VieE1kOGpPTTMwZUNjR21HM1dhbXJYZTBRZ2kvWTZlaUJXMitVeG5OWE9W?= =?utf-8?B?ZDBmeTltTjFJWG0yU3FmaWV0ZlhDT0R3TUd3TlE2RXVxWkM4dlBoc0NIek1h?= =?utf-8?B?OE0wSElkS3pWNXJiRVRtdUpjYjE3ZVdpOXFlVkErSDhOWmV2UFhnbURJc0Y0?= =?utf-8?B?Q2I5Z3o3S1hGVkVQckhlRFcvaExtanBaSjRneVNhdmtBYjJmazBtaTlMRWdt?= =?utf-8?Q?Si+paW0RRbRHo3vYrBlDWqYj7?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB2815.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 440c07d3-79e0-47ef-29b0-08dc05192da1 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Dec 2023 07:14:47.7003 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: M/XPOwfJsfkTJpWeqAw1vqgn9rG9mwZja85WdrHyacLWrzk+zTHwRW68Lx367pG7c+/TtE+XUDuCRHOLbJazjA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR11MB5911 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,zifeng.zhang@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 3TqEpO5NsVUWyRqfzIRFG3Dox7686176AA= Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b="M/25AbuI"; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") SGkgTGltaW5nLA0KDQpUaGFua3MgZm9yIHNvbHV0aW9uLCBidXQgd2UgaGF2ZSBhIGNvbmNlcm4g Zm9yIGl0Lg0KQWRkIC0tY2F0Y2hfZGVmYXVsdCBvcHRpb24gaW4gSU5GIGZyb20gbW9kdWxlIGxl dmVsIHdpbGwgYnJpbmcgbXVjaCBlZmZvcnQgdG8gbWFpbnRhaW4sIHNpbmNlIHRoZSBudW1iZXIg b2YgbW9kdWxlcyBpbiBJbnRlbCBwYWNrYWdlIGlzIGJpZw0KYW5kIHdlIG5lZWQgdG8gdXBkYXRl IGZvciBuZXcgbW9kdWxlcyBpbiBmdXJ0aGVyIGNvZGUgY2hhbmdlLg0KU28gd2UgcHJlZmVyIHRv IHRyYW5zZmVyIGJ1aWxkIG9wdGlvbiBmcm9tIHBhY2thZ2UgbGV2ZWwuDQpXb3VsZCB5b3UgbGlr ZSB0byBzaGFyZSB5b3VyIG9waW5pb24/DQoNCkJlc3QgUmVnYXJkcywNClppZmVuZw0KDQotLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogZ2FvbGltaW5nIDxnYW9saW1pbmdAYnlvc29m dC5jb20uY24+IA0KU2VudDogTW9uZGF5LCBEZWNlbWJlciAyNSwgMjAyMyA5OjIzIEFNDQpUbzog WmhhbmcsIFppZmVuZyA8emlmZW5nLnpoYW5nQGludGVsLmNvbT47IFlhbmcsIFl1dGluZzIgPHl1 dGluZzIueWFuZ0BpbnRlbC5jb20+DQpDYzogJ1JlYmVjY2EgQ3JhbicgPHJlYmVjY2FAYnNkaW8u Y29tPjsgRmVuZywgQm9iIEMgPGJvYi5jLmZlbmdAaW50ZWwuY29tPjsgQ2hlbiwgQXJ0aHVyIEcg PGFydGh1ci5nLmNoZW5AaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87IENoZW4sIENo cmlzdGluZSA8eXV3ZWkuY2hlbkBpbnRlbC5jb20+DQpTdWJqZWN0OiDlm57lpI06IFtQYXRjaCBW Ml0gQmFzZVRvb2xzOiBWZnJDb21waWxlciBBZGRzIERlZmF1bHRWYWx1ZUVycm9yIEZlYXR1cmUN Cg0KWmlmZW5nOg0KIFZGUl9GTEFHUyBjYW4gYmUgc2V0IGluIHRoZSBtb2R1bGUgSU5GIGZvciB0 aGlzIG1vZHVsZSBvbmx5LiBTbywgeW91IGNhbiBzZXQgLS1jYXRjaF9kZWZhdWx0IG9wdGlvbiBp biB0aGUgbW9kdWxlcyB0aG9zZSB5b3Ugd2FudCB0byByZW1vdmUgdGhlIGRlZmF1bHQgb3Bjb2Rl IGZvci4gV2l0aCB0aGlzIHVzYWdlLCAtLWV4Y2VwdF9saXN0IG9wdGlvbiBpcyBub3QgcmVxdWly ZWQuIA0KDQogRm9yIGV4YW1wbGUsIG1vZHVsZSBJTkYgY2FuIGFkZCBiZWxvdyBzZWN0aW9uIHRv IGVuYWJsZSB0aGlzIG9wdGlvbi4gDQoNCiBbQnVpbGRPcHRpb25zXQ0KICpfKl8qX1ZGUl9GTEFH UyA9IC0tY2F0Y2hfZGVmYXVsdA0KDQpUaGFua3MNCkxpbWluZw0KPiAtLS0tLemCruS7tuWOn+S7 ti0tLS0tDQo+IOWPkeS7tuS6ujogWmhhbmcsIFppZmVuZyA8emlmZW5nLnpoYW5nQGludGVsLmNv bT4NCj4g5Y+R6YCB5pe26Ze0OiAyMDIz5bm0MTLmnIgyMeaXpSAxNDo0NA0KPiDmlLbku7bkuro6 IEdhbywgTGltaW5nIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBZYW5nLCBZdXRpbmcyIA0K PiA8eXV0aW5nMi55YW5nQGludGVsLmNvbT4NCj4g5oqE6YCBOiBSZWJlY2NhIENyYW4gPHJlYmVj Y2FAYnNkaW8uY29tPjsgRmVuZywgQm9iIEMgDQo+IDxib2IuYy5mZW5nQGludGVsLmNvbT47IENo ZW4sIEFydGh1ciBHIDxhcnRodXIuZy5jaGVuQGludGVsLmNvbT47IA0KPiBkZXZlbEBlZGsyLmdy b3Vwcy5pbzsgQ2hlbiwgQ2hyaXN0aW5lIDx5dXdlaS5jaGVuQGludGVsLmNvbT4NCj4g5Li76aKY OiBSRTogW1BhdGNoIFYyXSBCYXNlVG9vbHM6IFZmckNvbXBpbGVyIEFkZHMgRGVmYXVsdFZhbHVl RXJyb3IgDQo+IEZlYXR1cmUNCj4gDQo+IEhpIExpbWluZywNCj4gDQo+IFRoYW5rcyBmb3IgcmV2 aWV3aW5nLg0KPiBGb3IgYmFja2dyb3VuZCBvZiB0aGlzIGNoYW5nZSwgd2Ugd2lsbCByZW1vdmUg ZGVmYXVsdCBmbGFncyBpbiBWRlIvSEZSIA0KPiBpbiBuZXcgcGxhdGZvcm0uIFNvIHdlIG5lZWQg aGVscCBmcm9tIFZGUiBjb21wbGllciB0byBtYWtlIGEgZGVmYXVsdCANCj4gZmxhZyBjaGVjayB0 byBhdm9pZCBtYW51YWxseSBhZGRpbmcuDQo+IEBZYW5nLCBZdXRpbmcyLCBjb3VsZCB5b3UgaGVs cCB0byBjcmVhdGUgYSBCWiBmb3IgdGhpcyBmZWF0dXJlIGFuZCANCj4gc2hhcmUNCmluDQo+IG1h aWwgdGhyZWFkPw0KPiBUaGVuIGxldCBtZSBtYWtlIGEgY2xhcmlmaWNhdGlvbiBmb3IgeW91ciBx dWVzdGlvbnMuDQo+IA0KPiAjMTogVGhlIHB1cnBvc2Ugb2YgLS1jYXRjaF9kZWZhdWx0DQo+IFdl IHNlbmQgLS1jYXRjaF9kZWZhdWx0IGZsYWcgaW4gYnVpbGQgb3B0aW9uIHRvIGluZGljYXRlIHdo aWNoIA0KPiBwbGF0Zm9ybQ0Kc2hvdWxkDQo+IGNoZWNrIGRlZmF1bHQgZmxhZyBpbiBWRlIvSEZS Lg0KPiBBY3R1YWxseSBtYXliZSBzb21lIHBsYXRmb3JtcyB1c2VkIHNhbWUgRURLMiBkb3duc3Ry ZWFtIGJyYW5jaCwgc28gd2UgDQo+IG9ubHkgc2VuZCAtLWNhdGNoX2RlZmF1bHQgZmxhZyBmb3Ig dGhlIHBsYXRmb3JtcyB3aGljaCBuZWVkIHRoaXMgY2hlY2suDQo+IA0KPiAjMjogVGhlIHB1cnBv c2Ugb2YgLS1leGNlcHRfbGlzdA0KPiBWRlIgY29tcGlsZXIgd2lsbCByZWNlaXZlIFZGUi9IRlIg Y29uZmlndXJhdGlvbnMgZnJvbSBhbGwgZm9sZGVycw0KaW5jbHVkaW5nDQo+IEludGVsIGFuZCBF REsyLiBCdXQgaW4gb3VyIGV4cGVjdGF0aW9uIFZGUiBjb21waWxlciBvbmx5IGRvIHRoaXMgY2hl Y2sgDQo+IGluIEludGVsLg0KPiBTbyBXZSB1c2UgLS1leGNlcHRfbGlzdCB0byBkZWxpdmVyIHBh Y2thZ2UgbGlzdCBpbiBFREsyIHRvIGF2b2lkIHRoaXMNCmNoZWNrLg0KPiANCj4gQmVzdCBSZWdh cmRzLA0KPiBaaWZlbmcNCj4gDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206 IFlhbmcsIFl1dGluZzIgPHl1dGluZzIueWFuZ0BpbnRlbC5jb20+DQo+IFNlbnQ6IFR1ZXNkYXks IERlY2VtYmVyIDEyLCAyMDIzIDU6MTIgUE0NCj4gVG86IFpoYW5nLCBaaWZlbmcgPHppZmVuZy56 aGFuZ0BpbnRlbC5jb20+OyBDaGVuLCBBcnRodXIgRyANCj4gPGFydGh1ci5nLmNoZW5AaW50ZWwu Y29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gQ2M6IFJlYmVjY2EgQ3JhbiA8cmViZWNjYUBi c2Rpby5jb20+OyBHYW8sIExpbWluZyANCj4gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IEZl bmcsIEJvYiBDIDxib2IuYy5mZW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtQYXRjaCBW Ml0gQmFzZVRvb2xzOiBWZnJDb21waWxlciBBZGRzIERlZmF1bHRWYWx1ZUVycm9yIA0KPiBGZWF0 dXJlDQo+IA0KPiArQ2MgWmhhbmcsIFppZmVuZywgQ2hlbiwgQXJ0aHVyIEcNCj4gDQo+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IENoZW4sIENocmlzdGluZSA8eXV3ZWkuY2hl bkBpbnRlbC5jb20+DQo+IFNlbnQ6IFR1ZXNkYXksIERlY2VtYmVyIDEyLCAyMDIzIDU6MDQgUE0N Cj4gVG86IFlhbmcsIFl1dGluZzIgPHl1dGluZzIueWFuZ0BpbnRlbC5jb20+OyBkZXZlbEBlZGsy Lmdyb3Vwcy5pbw0KPiBDYzogUmViZWNjYSBDcmFuIDxyZWJlY2NhQGJzZGlvLmNvbT47IEdhbywg TGltaW5nIA0KPiA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgRmVuZywgQm9iIEMgPGJvYi5j LmZlbmdAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSRTogW1BhdGNoIFYyXSBCYXNlVG9vbHM6IFZm ckNvbXBpbGVyIEFkZHMgRGVmYXVsdFZhbHVlRXJyb3IgDQo+IEZlYXR1cmUNCj4gDQo+ICtDYyBZ YW5nLCBZdXRpbmcyDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJv bTogWWFuZywgWXV0aW5nMiA8eXV0aW5nMi55YW5nQGludGVsLmNvbT4NCj4gPiBTZW50OiBUdWVz ZGF5LCBEZWNlbWJlciAxMiwgMjAyMyA1OjAxIFBNDQo+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBz LmlvDQo+ID4gQ2M6IFJlYmVjY2EgQ3JhbiA8cmViZWNjYUBic2Rpby5jb20+OyBHYW8sIExpbWlu ZyANCj4gPiA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgRmVuZywgQm9iIEMgPGJvYi5jLmZl bmdAaW50ZWwuY29tPjsgDQo+ID4gQ2hlbiwgQ2hyaXN0aW5lIDx5dXdlaS5jaGVuQGludGVsLmNv bT4NCj4gPiBTdWJqZWN0OiBbUGF0Y2ggVjJdIEJhc2VUb29sczogVmZyQ29tcGlsZXIgQWRkcyBE ZWZhdWx0VmFsdWVFcnJvciANCj4gPiBGZWF0dXJlDQo+ID4NCj4gPiBBZGQgLS1jYXRjaF9kZWZh dWx0IG9wdGlvbg0KPiA+IFJhaXNlIGEgRGVmYXVsdFZhbHVlRXJyb3Igd2hlbiBlbmNvdW50ZXJp bmcgVkZSIGRlZmF1bHQgZGVmaW5pdGlvbnMgDQo+ID4gdG8gaGVscCByZW1vdmUgZGVmYXVsdCB2 YXJpYWJsZXMuDQo+ID4gQWRkIC0tZXhjZXB0X2xpc3Qgb3B0aW9uDQo+ID4gRXhjbHVkZSBwYWNr YWdlcyB0aGF0IGRvbid0IHJlcXVpcmUgZW5hYmxpbmcgdGhlIGNhdGNoX2RlZmF1bHQgZnVuY3Rp b24uDQo+ID4NCj4gPiBDYzogUmViZWNjYSBDcmFuIDxyZWJlY2NhQGJzZGlvLmNvbT4NCj4gPiBD YzogTGltaW5nIEdhbyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KPiA+IENjOiBCb2IgRmVu ZyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+DQo+ID4gQ2M6IENocmlzdGluZSBDaGVuIDx5dXdlaS5j aGVuQGludGVsLmNvbT4NCj4gPiBDYzogWXV0aW5nIFlhbmcgPHl1dGluZzIueWFuZ0BpbnRlbC5j b20+DQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBZdXRpbmcgWWFuZyA8eXV0aW5nMi55YW5nQGlu dGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZy Q29tcGlsZXIuY3BwIHwgIDQwICsrLQ0KPiA+ICBCYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGls ZS9WZnJDb21waWxlci5oICAgfCAgIDMgKw0KPiA+ICBCYXNlVG9vbHMvU291cmNlL0MvVmZyQ29t cGlsZS9WZnJFcnJvci5jcHAgICAgfCAgIDMgKy0NCj4gPiAgQmFzZVRvb2xzL1NvdXJjZS9DL1Zm ckNvbXBpbGUvVmZyRXJyb3IuaCAgICAgIHwgICAzICstDQo+ID4gIEJhc2VUb29scy9Tb3VyY2Uv Qy9WZnJDb21waWxlL1ZmckZvcm1Qa2cuaCAgICB8ICAgMSArDQo+ID4gIEJhc2VUb29scy9Tb3Vy Y2UvQy9WZnJDb21waWxlL1ZmclN5bnRheC5nICAgICB8IDIzOA0KPiArKysrKysrKysrLS0tLS0t LS0NCj4gPiAgNiBmaWxlcyBjaGFuZ2VkLCAxODQgaW5zZXJ0aW9ucygrKSwgMTA0IGRlbGV0aW9u cygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxl L1ZmckNvbXBpbGVyLmNwcA0KPiA+IGIvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZy Q29tcGlsZXIuY3BwDQo+ID4gaW5kZXggNWY0ZDI2MmQ4NS4uZTk3Y2ViZmY2NSAxMDA2NDQNCj4g PiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9WZnJDb21waWxlci5jcHANCj4g PiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9WZnJDb21waWxlci5jcHANCj4g PiBAQCAtNzgsNiArNzgsOSBAQCBDVmZyQ29tcGlsZXI6Ok9wdGlvbkluaXRpYWxpemF0aW9uICgN Cj4gPiAgICBtT3B0aW9ucy5XYXJuaW5nQXNFcnJvciAgICAgICAgICAgICAgICA9IEZBTFNFOw0K PiBtT3B0aW9ucy5BdXRvRGVmYXVsdA0KPiA+ID0gRkFMU0U7ICAgbU9wdGlvbnMuQ2hlY2tEZWZh dWx0ICAgICAgICAgICAgICAgICAgPSBGQUxTRTsrDQo+ID4gbU9wdGlvbnMuSXNDYXRjaERlZmF1 bHRFbmFibGUgICAgICAgICAgPSBGQUxTRTsrDQo+IG1PcHRpb25zLkV4Y2VwdGlvbkxpc3QNCj4g PiA9IE5VTEw7KyAgbU9wdGlvbnMuRXhjZXB0aW9uTGlzdFNpemUgICAgICAgICAgICAgPSAwOyAg IG1lbXNldA0KPiA+ICgmbU9wdGlvbnMuT3ZlcnJpZGVDbGFzc0d1aWQsIDAsIHNpemVvZiAoRUZJ X0dVSUQpKTsgICAgaWYgKEFyZ2MgPT0gMSkNCj4ge0BAIC0NCj4gPiA5NSw2ICs5OCwyMyBAQCBD VmZyQ29tcGlsZXI6Ok9wdGlvbkluaXRpYWxpemF0aW9uICgNCj4gPiAgICAgICAgVmVyc2lvbiAo KTsgICAgICAgU0VUX1JVTl9TVEFUVVMgKFNUQVRVU19ERUFEKTsNCj4gcmV0dXJuOysgICAgfSBl bHNlIGlmDQo+ID4gKHN0cmljbXAoQXJndltJbmRleF0sICItLWNhdGNoX2RlZmF1bHQiKSA9PSAw KXsrDQo+ID4gbU9wdGlvbnMuSXNDYXRjaERlZmF1bHRFbmFibGUgPSBUUlVFOysgICAgfSBlbHNl IGlmDQooc3RyaWNtcChBcmd2W0luZGV4XSwNCj4gIi0tDQo+ID4gZXhjZXB0X2xpc3QiKSA9PSAw KXsrICAgICAgSU5UMzIgU3RhcnQgPSArK0luZGV4OysgICAgICBpZiAoKFN0YXJ0ID49DQpBcmdj KQ0KPiB8fA0KPiA+IChBcmd2W1N0YXJ0XVswXSA9PSAnLScpKSB7KyAgICAgICAgRGVidWdFcnJv ciAoTlVMTCwgMCwgMTAwMSwgIk1pc3NpbmcNCj4gb3B0aW9uIiwgIi0NCj4gPiBleGNlcHRpb25f bGlzdCBtaXNzaW5nIGV4Y2VwdCBsaXN0Iik7KyAgICAgICAgZ290byBGYWlsOysgICAgICB9Kw0K PiB3aGlsZQ0KPiA+ICgoQXJndltJbmRleF1bMF0gIT0gJy0nKSAmJiAoSW5kZXggPCBBcmdjIC0g MSkpIHsrICAgICAgICBJbmRleCsrOysNCn0rDQo+IElOVDMyDQo+ID4gRW5kID0gSW5kZXgtLTsr ICAgICAgbU9wdGlvbnMuRXhjZXB0aW9uTGlzdFNpemUgPSBFbmQgLSBTdGFydDsrICAgICAgZm9y DQo+IChJTlQzMiBpID0NCj4gPiBTdGFydDsgaSA8IEVuZDsgaSsrKSB7KyAgICAgICAgbU9wdGlv bnMuRXhjZXB0aW9uTGlzdCA9IChDSEFSOCoqKQ0KPiA+IHJlYWxsb2MobU9wdGlvbnMuRXhjZXB0 aW9uTGlzdCwgKGkgLSBTdGFydCArIDEpICogc2l6ZW9mKENIQVI4KikpOysNCj4gPiBtT3B0aW9u cy5FeGNlcHRpb25MaXN0W2ktU3RhcnRdID0gQXJndltpXTsrICAgICAgfSAgICAgfSBlbHNlIGlm DQo+IChzdHJpY21wKEFyZ3ZbSW5kZXhdLA0KPiA+ICItbCIpID09IDApIHsgICAgICAgbU9wdGlv bnMuQ3JlYXRlUmVjb3JkTGlzdEZpbGUgPSBUUlVFOw0KPiA+IGdDSWZyUmVjb3JkSW5mb0RCLlR1 cm5PbiAoKTtAQCAtMTc5LDcgKzE5OSwxMSBAQCANCj4gPiBDVmZyQ29tcGlsZXI6Ok9wdGlvbklu aXRpYWxpemF0aW9uICgNCj4gPiAgICAgICAgZ290byBGYWlsOyAgICAgfSAgICAgc3RyY3B5ICht T3B0aW9ucy5WZnJGaWxlTmFtZSwNCj4gQXJndltJbmRleF0pOy0rICAgIGZvciAoaW50IGkgPQ0K PiA+IDA7IGkgPCBtT3B0aW9ucy5FeGNlcHRpb25MaXN0U2l6ZTsgaSsrKSB7KyAgICAgIGlmDQo+ IChzdHJzdHIobU9wdGlvbnMuVmZyRmlsZU5hbWUsDQo+ID4gbU9wdGlvbnMuRXhjZXB0aW9uTGlz dFtpXSkgIT0gTlVMTCkgeysNCj4gbU9wdGlvbnMuSXNDYXRjaERlZmF1bHRFbmFibGUgPQ0KPiA+ IEZBTFNFOysgICAgICB9KyAgICB9ICAgICBpZiAobU9wdGlvbnMuT3V0cHV0RGlyZWN0b3J5ID09 IE5VTEwpDQo+ID4geyAgICAgICBtT3B0aW9ucy5PdXRwdXREaXJlY3RvcnkgPSAoQ0hBUjggKikg bWFsbG9jICgxKTsgICAgICAgaWYNCj4gPiAobU9wdGlvbnMuT3V0cHV0RGlyZWN0b3J5ID09IE5V TEwpIHtAQCAtMjE3LDYgKzI0MSwxMSBAQCBGYWlsOg0KPiA+ICAgICAgZnJlZSAobU9wdGlvbnMu VmZyRmlsZU5hbWUpOyAgICAgbU9wdGlvbnMuVmZyRmlsZU5hbWUNCj4gPQ0KPiA+IE5VTEw7ICAg fSsgIGlmIChtT3B0aW9ucy5FeGNlcHRpb25MaXN0ICE9IE5VTEwpIHsrDQo+ID4gZnJlZShtT3B0 aW9ucy5FeGNlcHRpb25MaXN0KTsrICAgIG1PcHRpb25zLkV4Y2VwdGlvbkxpc3QNCj4gPSBOVUxM OysrICB9DQo+ID4gaWYgKG1PcHRpb25zLlZmckJhc2VGaWxlTmFtZSAhPSBOVUxMKSB7ICAgICBm cmVlDQo+IChtT3B0aW9ucy5WZnJCYXNlRmlsZU5hbWUpOw0KPiA+IG1PcHRpb25zLlZmckJhc2VG aWxlTmFtZSAgICAgICAgICAgICA9IE5VTEw7QEAgLTQ5Niw2ICs1MjUsMTENCj4gQEANCj4gPiBD VmZyQ29tcGlsZXI6On5DVmZyQ29tcGlsZXIgKA0KPiA+ICAgICAgbU9wdGlvbnMuVmZyQmFzZUZp bGVOYW1lID0gTlVMTDsgICB9ICsgIGlmDQo+IChtT3B0aW9ucy5FeGNlcHRpb25MaXN0ICE9DQo+ ID4gTlVMTCkgeysgICAgZnJlZSAobU9wdGlvbnMuRXhjZXB0aW9uTGlzdCk7KyAgICBtT3B0aW9u cy5FeGNlcHRpb25MaXN0ID0NCj4gPiBOVUxMOysgIH0rICAgaWYgKG1PcHRpb25zLk91dHB1dERp cmVjdG9yeSAhPSBOVUxMKSB7ICAgICBmcmVlDQo+ID4gKG1PcHRpb25zLk91dHB1dERpcmVjdG9y eSk7ICAgICBtT3B0aW9ucy5PdXRwdXREaXJlY3RvcnkgPSBOVUxMO0BADQo+IC02NzksNw0KPiA+ ICs3MTMsNyBAQCBDVmZyQ29tcGlsZXI6OkNvbXBpbGUgKA0KPiA+ICAgICAgRGVidWdFcnJvciAo TlVMTCwgMCwgMDAwMSwgIkVycm9yIG9wZW5pbmcgdGhlIGlucHV0IGZpbGUiLCAiJXMiLA0KPiA+ IEluRmlsZU5hbWUpOyAgICAgZ290byBGYWlsOyAgIH0tKyAgSW5wdXRJbmZvLklzQ2F0Y2hEZWZh dWx0RW5hYmxlID0NCj4gPiBtT3B0aW9ucy5Jc0NhdGNoRGVmYXVsdEVuYWJsZTsgICBpZiAobU9w dGlvbnMuSGFzT3ZlcnJpZGVDbGFzc0d1aWQpDQo+ID4geyAgICAgSW5wdXRJbmZvLk92ZXJyaWRl Q2xhc3NHdWlkID0gJm1PcHRpb25zLk92ZXJyaWRlQ2xhc3NHdWlkOyAgIH0NCj4gZWxzZQ0KPiA+ IHtAQCAtOTM3LDUgKzk3MSwzIEBAIG1haW4gKA0KPiA+ICAgICByZXR1cm4gR2V0VXRpbGl0eVN0 YXR1cyAoKTsgfS0tZGlmZiAtLWdpdCANCj4gPiBhL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21w aWxlL1ZmckNvbXBpbGVyLmgNCj4gPiBiL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1Zm ckNvbXBpbGVyLmgNCj4gPiBpbmRleCBiNmUyMDdkMmNlLi4zOWUwYTg5YTI5IDEwMDY0NA0KPiA+ IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1ZmckNvbXBpbGVyLmgNCj4gPiAr KysgYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9WZnJDb21waWxlci5oDQo+ID4gQEAg LTUyLDYgKzUyLDkgQEAgdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ICAgIEJPT0xFQU4gV2FybmluZ0Fz RXJyb3I7ICAgQk9PTEVBTiBBdXRvRGVmYXVsdDsgICBCT09MRUFODQo+ID4gQ2hlY2tEZWZhdWx0 OysgIEJPT0xFQU4gSXNDYXRjaERlZmF1bHRFbmFibGU7KyAgQ0hBUjgqKg0KPiBFeGNlcHRpb25M aXN0OysNCj4gPiBJTlQxNiAgICBFeGNlcHRpb25MaXN0U2l6ZTsgfSBPUFRJT05TOyAgdHlwZWRl ZiBlbnVtIHtkaWZmIC0tZ2l0DQo+ID4gYS9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9W ZnJFcnJvci5jcHANCj4gPiBiL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1ZmckVycm9y LmNwcA0KPiA+IGluZGV4IDY1YmI4ZTM0ZmQuLjhhNzA2ZjkyOWIgMTAwNjQ0DQo+ID4gLS0tIGEv QmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZyRXJyb3IuY3BwDQo+ID4gKysrIGIvQmFz ZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZyRXJyb3IuY3BwDQo+ID4gQEAgLTQ5LDcgKzQ5 LDggQEAgc3RhdGljIFNWRlJfV0FSTklOR19IQU5ETEUNCj4gVkZSX1dBUk5JTkdfSEFORExFX1RB QkxFDQo+ID4gW10gPSB7DQo+ID4gICAgeyBWRlJfV0FSTklOR19ERUZBVUxUX1ZBTFVFX1JFREVG SU5FRCwgIjogZGVmYXVsdCB2YWx1ZQ0KPiByZS1kZWZpbmVkDQo+ID4gd2l0aCBkaWZmZXJlbnQg dmFsdWUifSwgICB7IFZGUl9XQVJOSU5HX0FDVElPTl9XSVRIX1RFWFRfVFdPLCAiOg0KPiBBY3Rp b24NCj4gPiBvcGNvZGUgc2hvdWxkIG5vdCBoYXZlIFRleHRUd28gcGFydCJ9LCB7IA0KPiA+IFZG Ul9XQVJOSU5HX09CU09MRVRFRF9GUkFNRVdPUktfT1BDT0RFLCAiOiBOb3QgcmVjb21tZW5kIHRv DQo+IHVzZQ0KPiA+IG9ic29sZXRlZCBmcmFtZXdvcmsgb3Bjb2RlIn0sLSAgeyBWRlJfV0FSTklO R19DT0RFVU5ERUZJTkVELCAiOg0KPiA+IHVuZGVmaW5lZCBXYXJuaW5nIENvZGUiIH0rICB7IFZG Ul9XQVJOSU5HX0NPREVVTkRFRklORUQsICI6DQo+ID4gdW5kZWZpbmVkIFdhcm5pbmcgQ29kZSIg fSwrICB7IFZGUl9XQVJOSU5HX1VOU1VQUE9SVEVELCAiOiBwbHMNCj4gcmVtb3ZlDQo+ID4gdGhl IGRlZmF1bHQgdmFsdWVzIGlmIG5lY2Vzc2FyeSIgfSB9OyANCj4gPiBDVmZyRXJyb3JIYW5kbGU6 OkNWZnJFcnJvckhhbmRsZSAoZGlmZiAtLSBnaXQgDQo+ID4gYS9CYXNlVG9vbHMvU291cmNlL0Mv VmZyQ29tcGlsZS9WZnJFcnJvci5oDQo+ID4gYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGls ZS9WZnJFcnJvci5oDQo+ID4gaW5kZXggN2QxNmJkNWY3NC4uMWI0YmMxNzNkMiAxMDA2NDQNCj4g PiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9WZnJFcnJvci5oDQo+ID4gKysr IGIvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZyRXJyb3IuaA0KPiA+IEBAIC00Nyw3 ICs0Nyw4IEBAIHR5cGVkZWYgZW51bSB7DQo+ID4gICAgVkZSX1dBUk5JTkdfREVGQVVMVF9WQUxV RV9SRURFRklORUQgPSAwLCANCj4gPiBWRlJfV0FSTklOR19BQ1RJT05fV0lUSF9URVhUX1RXTywN Cj4gPiBWRlJfV0FSTklOR19PQlNPTEVURURfRlJBTUVXT1JLX09QQ09ERSwtDQo+ID4gVkZSX1dB Uk5JTkdfQ09ERVVOREVGSU5FRCsgIFZGUl9XQVJOSU5HX0NPREVVTkRFRklORUQsKyANCj4gPiBW RlJfV0FSTklOR19VTlNVUFBPUlRFRCB9IEVGSV9WRlJfV0FSTklOR19DT0RFOyAgdHlwZWRlZg0K PiBzdHJ1Y3QNCj4gPiBfU1ZGUl9FUlJPUl9IQU5ETEUge2RpZmYgLS1naXQNCj4gPiBhL0Jhc2VU b29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1ZmckZvcm1Qa2cuaA0KPiA+IGIvQmFzZVRvb2xzL1Nv dXJjZS9DL1ZmckNvbXBpbGUvVmZyRm9ybVBrZy5oDQo+ID4gaW5kZXggOWVmNmYwNzc4Ny4uZDhm YWRhM2JjYiAxMDA2NDQNCj4gPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9W ZnJGb3JtUGtnLmgNCj4gPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9WZnJG b3JtUGtnLmgNCj4gPiBAQCAtOTYsNiArOTYsNyBAQCBzdHJ1Y3QgU0J1ZmZlck5vZGUgew0KPiA+ ICAgdHlwZWRlZiBzdHJ1Y3QgeyAgIEVGSV9HVUlEICpPdmVycmlkZUNsYXNzR3VpZDsrICBCT09M RUFODQo+ID4gSXNDYXRjaERlZmF1bHRFbmFibGU7IH0gSU5QVVRfSU5GT19UT19TWU5UQVg7ICBj bGFzcyBDRm9ybVBrZyB7ZGlmZiANCj4gPiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJD b21waWxlL1ZmclN5bnRheC5nDQo+ID4gYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9W ZnJTeW50YXguZw0KPiA+IGluZGV4IDU1ZmQwNjdmOGEuLjVkYWYxYzQyM2MgMTAwNjQ0DQo+ID4g LS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZyU3ludGF4LmcNCj4gPiArKysg Yi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9WZnJTeW50YXguZw0KPiA+IEBAIC01MCw2 ICs1MCw3IEBAIFZmclBhcnNlclN0YXJ0ICgNCj4gPiAgeyAgIFBhcnNlckJsYWNrQm94PENWZnJE TEdMZXhlciwgRWZpVmZyUGFyc2VyLCBBTlRMUlRva2VuPg0KPiBWZnJQYXJzZXIoRmlsZSk7DQo+ ID4gVmZyUGFyc2VyLnBhcnNlcigpLT5TZXRPdmVycmlkZUNsYXNzR3VpZA0KPiA+IChJbnB1dElu Zm8tPk92ZXJyaWRlQ2xhc3NHdWlkKTsrDQo+ID4gVmZyUGFyc2VyLnBhcnNlcigpLT5TZXRJc0Nh dGNoRGVmYXVsdEVuYWJsZShJbnB1dEluZm8tDQo+ID4gPklzQ2F0Y2hEZWZhdWx0RW5hYmxlKTsg ICByZXR1cm4NCj4gVmZyUGFyc2VyLnBhcnNlcigpLT52ZnJQcm9ncmFtKCk7IH0gPj5AQCAtDQo+ ID4gMzg2LDggKzM4Nyw4IEBAIGRhdGFTdHJ1Y3RGaWVsZDMyIFtCT09MRUFOICBGaWVsZEluVW5p b25dOg0KPiA+ICAgIDsgIGRhdGFTdHJ1Y3RGaWVsZDE2IFtCT09MRUFOICBGaWVsZEluVW5pb25d Oi0gIDw8IC0gICAgVUlOVDMyDQo+IEFycmF5TnVtID0gMDsNCj4gPiArICA8PCsgICAgVUlOVDMy IEFycmF5TnVtID0gMDsgICA+PiAgICgiVUlOVDE2IiB8ICJDSEFSMTYiKQ0KPiA+IE46U3RyaW5n SWRlbnRpZmllckBAIC03MzcsNyArNzM4LDcgQEAgdmZyRm9ybVNldExpc3QgOg0KPiA+ICAgIDsg IHZmclN0YXRlbWVudEV4dGVuc2lvbjotICA8PCArICA8PCAgICAgIEVGSV9HVUlEIEd1aWQ7DQo+ IENJZnJHdWlkICpHdWlkT2JqDQo+ID4gPSBOVUxMOyAgICAgIENIQVI4ICAgICpUeXBlTmFtZSA9 IE5VTEw7QEAgLTc1MSw3ICs3NTIsNyBAQA0KPiA+IHZmclN0YXRlbWVudEV4dGVuc2lvbjoNCj4g PiAgICA+PiAgIEw6R3VpZE9wICAgVXVpZCAiPSIgZ3VpZERlZmluaXRpb25bR3VpZF0tICB7Iiwi IERhdGFUeXBlICI9IiArDQo+IHsiLCINCj4gPiBEYXRhVHlwZSAiPSIgICAgICggICAgICAgICBV NjQ6IlVJTlQ2NCIge09wZW5CcmFja2V0IEFOMTpOdW1iZXINCj4gQ2xvc2VCcmFja2V0DQo+ID4g PDxBcnJheU51bSA9IF9TVE9VMzIoQU4xLT5nZXRUZXh0KCksIEFOMS0+Z2V0TGluZSgpKTs+Pn0g PDwgVHlwZU5hbWUNCj4gPQ0KPiA+IFU2NC0+Z2V0VGV4dCgpOyBMaW5lTnVtID0gVTY0LT5nZXRM aW5lKCk7ID4+QEAgLTc3MCw3DQo+ID4gKzc3MSw3IEBAIHZmclN0YXRlbWVudEV4dGVuc2lvbjoN Cj4gPiAgICAgICAgfCBUOiJFRklfSElJX1RJTUUiIHtPcGVuQnJhY2tldCBBTjg6TnVtYmVyIENs b3NlQnJhY2tldCANCj4gPiA8PEFycmF5TnVtID0gX1NUT1UzMihBTjgtPmdldFRleHQoKSwgQU44 LT5nZXRMaW5lKCkpOz4+fSA8PCBUeXBlTmFtZSANCj4gPiA9IFQtPmdldFRleHQoKTsgTGluZU51 bSA9IFQtPmdldExpbmUoKTsgSXNTdHJ1Y3QgPSBUUlVFOz4+DQo+IHwNCj4gPiBSOiJFRklfSElJ X1JFRiIge09wZW5CcmFja2V0IEFOOTpOdW1iZXIgQ2xvc2VCcmFja2V0IDw8QXJyYXlOdW0gPSAN Cj4gPiBfU1RPVTMyKEFOOS0+Z2V0VGV4dCgpLCBBTjktPmdldExpbmUoKSk7Pj59LSA8PCBUeXBl TmFtZSA9DQo+ID4gUi0+Z2V0VGV4dCgpOyBMaW5lTnVtID0gUi0+Z2V0TGluZSgpOyBJc1N0cnVj dCA9IFRSVUU7Pj4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPDwNCj4gVHlwZU5hbWUgPQ0KPiA+ICsgUi0+Z2V0VGV4dCgpOyBMaW5l TnVtID0gUi0NCj4gPiA+Z2V0TGluZSgpOyBJc1N0cnVjdCA9IFRSVUU7Pj4gICAgICAgfCBUTjpT dHJpbmdJZGVudGlmaWVyIHtPcGVuQnJhY2tldA0KPiA+IEFOMTA6TnVtYmVyIENsb3NlQnJhY2tl dCA8PEFycmF5TnVtID0gX1NUT1UzMihBTjEwLT5nZXRUZXh0KCksDQo+IEFOMTAtDQo+ID4gPmdl dExpbmUoKSk7Pj59DQo+IDw8IFR5cGVOYW1lID0gVE4tPmdldFRleHQoKTsNCj4gPiBMaW5lTnVt ID0gVE4tPmdldExpbmUoKTsgSXNTdHJ1Y3QgPSBUUlVFOz4+ICAgICApQEAgLTg3NSwxOSArODc2 LDE5DQo+IEBADQo+ID4gdmZyRXh0ZW5zaW9uRGF0YVtVSU5UOCAqRGF0YUJ1ZmYsIFVJTlQzMiBT aXplLCBDSEFSOCAqVHlwZU5hbWUsDQo+IFVJTlQzMg0KPiA+IFR5cGVTaXplLA0KPiA+ICAgICAg ICAgICAgICAgICAgbWVtY3B5IChCeXRlT2Zmc2V0LCAmRGF0YV9VNjQsDQo+IFR5cGVTaXplKTsg ICAgICAgICAgICAgICB9ZWxzZSBpZiAoc3RyY21wDQo+ID4gKCJVSU5UMzIiLCBUeXBlTmFtZSkg PT0gMCkgeyAgICAgICAgICAgICAgICAgRGF0YV9VMzIgPQ0KPiBfU1RPVTMyKFJELT5nZXRUZXh0 KCksDQo+ID4gUkQtPmdldExpbmUoKSk7LSAgICAgICAgICAgICAgICBtZW1jcHkgKEJ5dGVPZmZz ZXQsICZEYXRhX1UzMiwNCj4gVHlwZVNpemUpOw0KPiA+ICsgICAgICAgICAgICAgICAgbWVtY3B5 IChCeXRlT2Zmc2V0LCAmRGF0YV9VMzIsDQo+IFR5cGVTaXplKTsgICAgICAgICAgICAgICB9ZWxz ZSBpZiAoc3RyY21wDQo+ID4gKCJVSU5UMTYiLCBUeXBlTmFtZSkgPT0gMCkgeyAgICAgICAgICAg ICAgICAgRGF0YV9VMTYgPQ0KPiBfU1RPVTE2KFJELT5nZXRUZXh0KCksDQo+ID4gUkQtPmdldExp bmUoKSk7LSAgICAgICAgICAgICAgICBtZW1jcHkgKEJ5dGVPZmZzZXQsICZEYXRhX1UxNiwNCj4g VHlwZVNpemUpOw0KPiA+ICsgICAgICAgICAgICAgICAgbWVtY3B5IChCeXRlT2Zmc2V0LCAmRGF0 YV9VMTYsDQo+IFR5cGVTaXplKTsgICAgICAgICAgICAgICB9ZWxzZSBpZiAoc3RyY21wDQo+ID4g KCJVSU5UOCIsIFR5cGVOYW1lKSA9PSAwKSB7ICAgICAgICAgICAgICAgICBEYXRhX1U4ID0NCj4g X1NUT1U4KFJELT5nZXRUZXh0KCksIFJELQ0KPiA+ID5nZXRMaW5lKCkpOy0gICAgICAgICAgICAg ICAgbWVtY3B5IChCeXRlT2Zmc2V0LCAmRGF0YV9VOCwgVHlwZVNpemUpOw0KPiA+ICsgICAgICAg ICAgICAgICAgbWVtY3B5IChCeXRlT2Zmc2V0LCAmRGF0YV9VOCwNCj4gVHlwZVNpemUpOyAgICAg ICAgICAgICAgIH1lbHNlIGlmIChzdHJjbXANCj4gPiAoIkJPT0xFQU4iLCBUeXBlTmFtZSk9PSAw KSB7ICAgICAgICAgICAgICAgICBEYXRhX0JMID0NCj4gX1NUT1U4KFJELT5nZXRUZXh0KCksDQo+ ID4gUkQtPmdldExpbmUoKSk7LSAgICAgICAgICAgICAgICBtZW1jcHkgKEJ5dGVPZmZzZXQsICZE YXRhX0JMLA0KPiBUeXBlU2l6ZSk7DQo+ID4gKyAgICAgICAgICAgICAgICBtZW1jcHkgKEJ5dGVP ZmZzZXQsICZEYXRhX0JMLA0KPiBUeXBlU2l6ZSk7ICAgICAgICAgICAgICAgfWVsc2UgaWYgKHN0 cmNtcA0KPiA+ICgiRUZJX1NUUklOR19JRCIsIFR5cGVOYW1lKSA9PSAwKSB7ICAgICAgICAgICAg ICAgICBEYXRhX1NJRCA9DQo+IF9TVE9TSUQoUkQtDQo+ID4gPmdldFRleHQoKSwgUkQtPmdldExp bmUoKSk7LSAgICAgICAgICAgICAgICBtZW1jcHkgKEJ5dGVPZmZzZXQsDQo+ICZEYXRhX1NJRCwN Cj4gPiBUeXBlU2l6ZSk7DQo+ICsgICAgICAgICAgICAgICAgbWVtY3B5IChCeXRlT2Zmc2V0LA0K PiA+ICZEYXRhX1NJRCwgVHlwZVNpemUpOyAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgfSBl bHNlDQo+ID4geyAgICAgICAgICAgICAgIGdDVmZyVmFyRGF0YVR5cGVEQi5HZXREYXRhRmllbGRJ bmZvKFRGTmFtZSwNCj4gRmllbGRPZmZzZXQsDQo+ID4gRmllbGRUeXBlLCBGaWVsZFNpemUsIEJp dEZpZWxkKTtAQCAtOTc1LDcgKzk3NiwxNSBAQA0KPiA+IHZmckV4dGVuc2lvbkRhdGFbVUlOVDgg KkRhdGFCdWZmLCBVSU5UMzIgU2l6ZSwgQ0hBUjggKlR5cGVOYW1lLA0KPiBVSU5UMzINCj4gPiBU eXBlU2l6ZSwNCj4gPiAgIHZmclN0YXRlbWVudERlZmF1bHRTdG9yZSA6ICAgPDwgVUlOVDE2ICBE ZWZhdWx0SWQgPQ0KPiA+IEVGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFOREFSRDsgPj4tICBEOkRl ZmF1bHRTdG9yZQ0KPiBOOlN0cmluZ0lkZW50aWZpZXINCj4gPiAiLCIrICBEOkRlZmF1bHRTdG9y ZSBOOlN0cmluZ0lkZW50aWZpZXIgIiwiICAgICAgICAgICAgIDw8Kw0KPiA+IGlmIChtSXNDYXRj aERlZmF1bHRFbmFibGUpIHsrDQo+ID4gZ0NWZnJFcnJvckhhbmRsZS5IYW5kbGVXYXJuaW5nICgr DQo+ID4gVkZSX1dBUk5JTkdfVU5TVVBQT1JURUQsKw0KPiBELQ0KPiA+ID5nZXRMaW5lKCksKw0K PiBELQ0KPiA+ID5nZXRUZXh0KCkrDQo+ICAgICAgICApOysNCj4gIH0rDQo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+DQo+IFByb21wdCAi PSIgIlNUUklOR19UT0tFTiIgIlwoIiBTOk51bWJlcg0KPiA+ICJcKSIgICB7ICAgICAiLCIgQXR0 cmlidXRlICI9IiBBOk51bWJlciAgICAgICAgICAgICAgICAgICAgICA8PA0KPiBEZWZhdWx0SWQg PSBfU1RPVTE2KEEtDQo+ID4gPmdldFRleHQoKSwgQS0+Z2V0TGluZSgpKTsgPj5AQCAtMTA3NCw3 ICsxMDgzLDcgQEANCj4gPiB2ZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaSA6DQo+ID4gICAgICB8IFU2 NDoiVUlOVDY0IiAiLCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PA0KPiBUeXBlTmFt ZSA9IFU2NC0+Z2V0VGV4dCgpOw0KPiA+IExpbmVOdW0gPSBVNjQtPmdldExpbmUoKTsgPj4gICAg IHwgRDoiRUZJX0hJSV9EQVRFIiAiLCINCj4gPDwNCj4gPiBUeXBlTmFtZSA9IEQtPmdldFRleHQo KTsgTGluZU51bSA9IEQtPmdldExpbmUoKTsgPj4gICAgIHwNCj4gVDoiRUZJX0hJSV9USU1FIg0K PiA+ICIsIiAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgVHlwZU5hbWUgPSBULT5nZXRUZXh0 KCk7IExpbmVOdW0gPQ0KPiBULT5nZXRMaW5lKCk7ID4+LSAgICB8DQo+ID4gUjoiRUZJX0hJSV9S RUYiICIsIiAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IFR5cGVOYW1lID0NCj4gUi0+Z2V0 VGV4dCgpOyBMaW5lTnVtID0gUi0NCj4gPiA+Z2V0TGluZSgpOyA+PiAgICArICAgIHwgUjoiRUZJ X0hJSV9SRUYiICIsIg0KPiA8PCBUeXBlTmFtZSA9IFItDQo+ID4gPmdldFRleHQoKTsgTGluZU51 bSA9IFItPmdldExpbmUoKTsgPj4gICApICAgeyAgICAgVmFySWQgIj0iIElEOk51bWJlcg0KPiAi LCINCj4gPiA8PEBAIC0xMDkyLDggKzExMDEsOCBAQCB2ZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaSA6 DQo+ID4gICAgKCAgICAgTmFtZSAgICAiPSIgU046U3RyaW5nSWRlbnRpZmllciAiLCIgICAgICAg ICAgICAgPDwNCj4gU3RvcmVOYW1lID0gU04tDQo+ID4gPmdldFRleHQoKTsgICA+PiAgICB8LSAg ICBOYW1lICAgICI9IiAiU1RSSU5HX1RPS0VOIiAiXCgiDQo+IFZOOk51bWJlciAiXCkiICIsIiAg LQ0KPiA+IFZhclNpemUgIj0iIE46TnVtYmVyICIsIiAgICAgICAgICAgICAgICAgICAgICAgIDw8 ICsgICAgTmFtZQ0KPiAiPSIgIlNUUklOR19UT0tFTiINCj4gPiAiXCgiIFZOOk51bWJlciAiXCki ICIsIisgICAgVmFyU2l6ZSAiPSIgTjpOdW1iZXIgIiwiDQo+IDw8DQo+ID4gSXNVRUZJMjNFZmlW YXJzdG9yZSA9IEZBTFNFOw0KPiBTdG9yZU5hbWUgPQ0KPiA+IGdDVmZyU3RyaW5nREIuR2V0VmFy U3RvcmVOYW1lRm9ybVN0cmluZ0lkKF9TVE9TSUQoVk4tPmdldFRleHQoKSwgVk4tDQo+ID4gPmdl dExpbmUoKSkpOw0KPiBpZiAoU3RvcmVOYW1lID09IE5VTEwpIHtAQCAtDQo+ID4gMTExNiw3ICsx MTI1LDcgQEAgdmZyU3RhdGVtZW50VmFyU3RvcmVFZmkgOg0KPiA+DQo+IGJyZWFrOw0KPiBjYXNl IDg6DQo+ID4gVHlwZU5hbWUgPSAoQ0hBUjggKikgIlVJTlQ2NCI7LQ0KPiBicmVhazsgKw0KPiA+ IGJyZWFrOw0KPiBkZWZhdWx0Og0KPiA+IF9QQ0FUQ0ggKFZGUl9SRVRVUk5fVU5TVVBQT1JURUQs IE4pOyBicmVhaztAQCAtMTEyNCw3ICsxMTMzLDcgQEAgDQo+ID4gdmZyU3RhdGVtZW50VmFyU3Rv cmVFZmkgOg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPj4gICApIC0NCj4gVXVpZCAiPSIgZ3VpZERlZmluaXRpb25bR3VpZF0NCj4gPiA8 PCArICBVdWlkICI9IiBndWlkRGVmaW5pdGlvbltHdWlkXSAgICAgICAgICAgICAgICAgICAgIDw8 DQo+ID4gaWYgKElzVUVGSTIzRWZpVmFyc3RvcmUpDQo+ID4NCj4geyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1BDQVQNCj4gQ0goZ0NWZnJE YXRhU3RvcmFnZS5EZWNsYXJlQnVmZmVyVmFyUw0KPiA+IHRvcmUNCj4gKA0KPiAgICAgICAgICAg ICAgICAgICAgICAgICBTdG9yZU5hbWUsQEAgLTExNTAsNw0KPiA+ICsxMTU5LDcgQEAgdmZyU3Rh dGVtZW50VmFyU3RvcmVFZmkgOg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfSANCj4gPiBWU0VPYmouU2V0R3VpZCAoJkd1aWQpOw0K PiBWU0VPYmouU2V0VmFyU3RvcmVJZA0KPiA+IChWYXJTdG9yZUlkKTstDQo+ICsNCj4gPiBWU0VP YmouU2V0U2l6ZSAoKFVJTlQxNikgU2l6ZSk7DQo+ID4gVlNFT2JqLlNldE5hbWUgKFN0b3JlTmFt ZSk7DQo+IGlmDQo+ID4gKElzVUVGSTIzRWZpVmFyc3RvcmUgPT0gRkFMU0UgJiYgU3RvcmVOYW1l ICE9IE5VTEwpIHtAQCAtMTE4NCw3DQo+ID4gKzExOTMsNyBAQCB2ZnJTdGF0ZW1lbnRWYXJTdG9y ZU5hbWVWYWx1ZSA6DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA+PiAgIH0NCj4gKC0gICAgTmFtZSAiPSIgIlNUUklOR19UT0tFTiIgIlwo Ig0KPiA+IE46TnVtYmVyICJcKSIgIiwiICA8PCArICAgIE5hbWUgIj0iICJTVFJJTkdfVE9LRU4i ICJcKCIgTjpOdW1iZXINCj4gIlwpIiAiLCINCj4gPiA8PCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYNCj4gKCFDcmVhdGVkKQ0KPiA+DQo+ IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgX1BDDQo+IEFUQ0goZ0NWZnJEYXRhU3RvcmFnZS5EZWNsYXJlTmFtZVZhcg0KPiA+IFN0b3Jl QmVnaW4gKFNOLT5nZXRUZXh0KCksIFZhclN0b3JlSWQpLCBTTik7IENyZWF0ZWQgPSBUUlVFO0BA DQo+ID4gLTEyNDUsMTIgKzEyNTQsMTIgQEAgdmZyU3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldCA6 DQo+ID4gIHZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0IDogICA8PCBDSWZyU3VwcHJlc3NJ ZiBTSU9iajs+Pg0KPiBMOlN1cHByZXNzSWYNCj4gPiA8PC0NCj4gU0lPYmouU2V0TGluZU5vKEwt PmdldExpbmUoKSk7ICsNCj4gPg0KPiBTSU9iai5TZXRMaW5lTm8oTC0+Z2V0TGluZSgpKTsNCj4g ICAgICAgICAgICAgICAgICAgPj4gICB7IEZMQUdTICI9Ig0KPiA+IGZsYWdzRmllbGQgKCAiXHwi IGZsYWdzRmllbGQgKSogIiwiIH0gICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uWzBdICI7Ig0KPiA+ IHZmckZvcm1TZXRMaXN0LSAgRTogRW5kSWYgKyAgRTogRW5kSWYgICAiOyINCj4gPDwNCj4gPiBD UlRfRU5EX09QIChFKTsgPj4gICA7IEBAIC0xNDkxLDcgKzE1MDAsNyBAQA0KPiB2ZnJRdWVzdGlv bkRhdGFGaWVsZE5hbWUNCj4gPiBbRUZJX1FVRVNUSU9OX0lEICZRSWQsIFVJTlQzMiAmTWFzaywg Q0hBUjggKiZWYXJJZFN0ciwNCj4gPiAgICAoICAgICBTTjI6U3RyaW5nSWRlbnRpZmllciAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8PA0KPiBfU1RSQ0FUICgmVmFySWRTdHIsIFNOMi0NCj4g PiA+Z2V0VGV4dCgpKTsgTGluZU5vID0gU04yLT5nZXRMaW5lKCk7ID4+ICAgICAoLSAgICAgICIu Ig0KPiA8PCArDQo+ID4gIi4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDw8DQo+IF9TVFJDQVQNCj4gPiAoJlZhcklkU3RyLCAiLiIpOw0KPiBpZg0KPiA+IChtQ29u c3RhbnRPbmx5SW5FeHByZXNzaW9uKQ0KPiA+DQo+IHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1BDDQo+IEFUQ0goVkZSX1JFVFVSTl9D T05TVEFOVF9PTkxZLA0KPiA+IExpbmVObyk7QEAgLTE1MTgsNyArMTUyNyw3IEBAIHZmclF1ZXN0 aW9uRGF0YUZpZWxkTmFtZSANCj4gPiBbRUZJX1FVRVNUSU9OX0lEICZRSWQsIFVJTlQzMiAmTWFz aywgQ0hBUjggKiZWYXJJZFN0ciwNCj4gPiAgICA7ICB2ZnJDb25zdGFudFZhbHVlRmllbGRbVUlO VDggVHlwZSwgRUZJX0lGUl9UWVBFX1ZBTFVFICZWYWx1ZSwNCj4gPiBCT09MRUFOICZMaXN0VHlw ZV0gOi0gIDw8ICArICA8PCAgICAgRUZJX0dVSUQgICAgR3VpZDsNCj4gQk9PTEVBTiAgICAgTmVn YXRpdmUgPQ0KPiA+IEZBTFNFOyAgICAgQk9PTEVBTiAgICAgSW50RGVjU3R5bGUgPSBGQUxTRTtA QCAtMTYzNCwxMSArMTY0MywxMQ0KPiBAQA0KPiA+IHZmckNvbnN0YW50VmFsdWVGaWVsZFtVSU5U OCBUeXBlLCBFRklfSUZSX1RZUEVfVkFMVUUgJlZhbHVlLA0KPiBCT09MRUFODQo+ID4gJkxpc3RU eXBlXQ0KPiA+ICAgIHwgWjpaZXJvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPDwNCj4gJFZhbHVlLnU4ICAgICA9IF9TVE9VOChaLT5nZXRUZXh0KCksIFotDQo+ID4g PmdldExpbmUoKSk7ID4+ICAgfCBIT1VSOk51bWJlciAiOiIgTUlOVVRFOk51bWJlciAiOiINCj4g U0VDT05EOk51bWJlciA8PA0KPiA+ICRWYWx1ZS50aW1lICAgPSBfU1RPVChIT1VSLT5nZXRUZXh0 KCksIE1JTlVURS0+Z2V0VGV4dCgpLFNFQ09ORC0NCj4gPiA+Z2V0VGV4dCgpLCBIT1VSLT5nZXRM aW5lKCkpOyA+PiAgIHwgWUVBUjpOdW1iZXIgIi8iIE1PTlRIOk51bWJlcg0KPiAiLyINCj4gPiBE QVk6TnVtYmVyICAgICA8PCAkVmFsdWUuZGF0ZSAgID0gX1NUT0QoWUVBUi0+Z2V0VGV4dCgpLA0K PiBNT05USC0+Z2V0VGV4dCgpLA0KPiA+IERBWS0+Z2V0VGV4dCgpLCBZRUFSLT5nZXRMaW5lKCkp OyA+Pi0gIHwgUUk6TnVtYmVyIjsiIEZJOk51bWJlciI7Ig0KPiA+IGd1aWREZWZpbml0aW9uW0d1 aWRdICI7IiAiU1RSSU5HX1RPS0VOIiAiXCgiIERQOk51bWJlciAiXCkiICsgIHwgDQo+ID4gUUk6 TnVtYmVyIjsiIEZJOk51bWJlciI7IiBndWlkRGVmaW5pdGlvbltHdWlkXSAiOyIgIlNUUklOR19U T0tFTiIgIlwoIg0KPiA+IERQOk51bWJlciAiXCkiDQo+IDw8ICRWYWx1ZS5yZWYgICAgPSBfU1RP UihRSS0NCj4gPiA+Z2V0VGV4dCgpLCBGSS0+Z2V0VGV4dCgpLCAmR3VpZCwgRFAtPmdldFRleHQo KSwgUUktPmdldExpbmUoKSk7ID4+ICAgfA0KPiA+ICJTVFJJTkdfVE9LRU4iICJcKCIgUzE6TnVt YmVyICJcKSIgICAgICAgICAgICAgIDw8ICRWYWx1ZS5zdHJpbmcgPQ0KPiBfU1RPU0lEKFMxLQ0K PiA+ID5nZXRUZXh0KCksIFMxLT5nZXRMaW5lKCkpOyA+PiAgIHwgIlx7Ig0KPiA8PCBMaXN0VHlw ZSA9DQo+ID4gVFJVRTsgPj4tICAgICAgTDE6TnVtYmVyDQo+IDw8ICsgICAgICBMMTpOdW1iZXIN Cj4gPiA8PA0KPiBzd2l0Y2ggKFR5cGUpDQo+ID4NCj4geyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlDQo+IEVGSV9JRlJfVFlQRV9O VU1fU0laRV84IDoNCj4gPiBUeXBlOFtJbmRleF0gID0gX1NUT1U4KEwxLT5nZXRUZXh0KCksIEwx LT5nZXRMaW5lKCkpO0BAIC0xNjU4LDgNCj4gPiArMTY2Nyw4IEBAIHZmckNvbnN0YW50VmFsdWVG aWVsZFtVSU5UOCBUeXBlLCBFRklfSUZSX1RZUEVfVkFMVUUNCj4gPiAmVmFsdWUsIEJPT0xFQU4g Jkxpc3RUeXBlXQ0KPiA+DQo+IEluZGV4Kys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA+Pg0KPiAoLQ0KPiA+ICIsIiAtICAgICAgICBMMjpOdW1i ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICsNCj4gIiwiKyAgICAgICAg TDI6TnVtYmVyDQo+ID4gPDwNCj4gc3dpdGNoIChUeXBlKQ0KPiA+DQo+IHsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZQ0KPiBFRklf SUZSX1RZUEVfTlVNX1NJWkVfOCA6DQo+ID4gVHlwZThbSW5kZXhdICA9IF9TVE9VOChMMi0+Z2V0 VGV4dCgpLCBMMi0+Z2V0TGluZSgpKTtAQCAtMTY3OSw3DQo+ID4gKzE2ODgsNyBAQCB2ZnJDb25z dGFudFZhbHVlRmllbGRbVUlOVDggVHlwZSwgRUZJX0lGUl9UWVBFX1ZBTFVFDQo+ID4gJlZhbHVl LCBCT09MRUFOICZMaXN0VHlwZV0NCj4gPg0KPiA+DQo+IEluZGV4Kys7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Pg0KPiAgICAgICAgKSotICAg ICJcfSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKw0KPiA+ICJc fSIgICA7DQo+ID4NCj4gLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioNCj4gKioNCj4gPiAqKioqKioqKioqKioqKipAQCAtMTcxNCw3 ICsxNzIzLDcgQEAgdmZyRm9ybURlZmluaXRpb24gOg0KPiA+ICAgIDsgIHZmckZvcm1NYXBEZWZp bml0aW9uIDotICA8PCArICA8PCAgICAgQ0lmckZvcm1NYXAgKkZNYXBPYmogPQ0KPiBOVUxMOw0K PiA+IFVJTlQzMiAgICAgIEZvcm1NYXBNZXRob2ROdW1iZXIgPSAwOyAgICAgRUZJX0dVSUQgICAg R3VpZDtAQA0KPiAtMTc3NSwxMQ0KPiA+ICsxNzg0LDE1IEBAIHZmclN0YXRlbWVudERlZmF1bHQg Og0KPiA+ICAgICAgIENJZnJOdW1lcmljICAgICAgICAgICAqTnVtZXJpY1FzdCAgID0gTlVMTDsg ICAgPj4tDQo+IEQ6RGVmYXVsdA0KPiA+ICsgIEQ6RGVmYXVsdCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPDwrDQo+IGlmDQo+ID4gKG1Jc0NhdGNoRGVmYXVsdEVuYWJs ZSkgeysNCj4gPiBEZWZhdWx0VmFsdWVFcnJvcihWRlJfUkVUVVJOX1VOU1VQUE9SVEVELCBELQ0K PiA+ID5nZXRMaW5lKCkpOysNCj4gICAgICAgfSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPj4NCj4gPiAoICAgICAoLSAgICAgICI9IiB2ZnJDb25z dGFudFZhbHVlRmllbGRbX0dFVF9DVVJSUUVTVF9EQVRBVFlQRSgpLA0KPiAqVmFsLA0KPiA+IEFy cmF5VHlwZV0gIiwiICAtDQo+IDw8ICsgICAgICAiPSINCj4gPiB2ZnJDb25zdGFudFZhbHVlRmll bGRbX0dFVF9DVVJSUUVTVF9EQVRBVFlQRSgpLCAqVmFsLCBBcnJheVR5cGVdICIsIisNCj4gPiA8 PCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmDQo+IChnQ3VycmVudE1pbk1heERhdGEgIT0gTlVMTCAmJg0KPiA+IGdDdXJyZW50TWluTWF4 RGF0YS0+SXNOdW1lcmljT3Bjb2RlKCkpDQo+ID4NCj4geyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jDQo+IGhlY2sgZGVmYXVsdCB2 YWx1ZSBpcyB2YWxpZCBmb3IgTnVtZXJpYw0KPiA+IE9wY29kZQ0KPiBOdW1lcmljUXN0ID0gKENJ ZnJOdW1lcmljICopDQo+ID4gZ0N1cnJlbnRRdWVzdGlvbjtAQCAtMTg4OCwxNCArMTkwMSwxNCBA QCB2ZnJTdGF0ZW1lbnREZWZhdWx0IDoNCj4gPiAgICAgICAgICB2ZnJTdGF0ZW1lbnRWYWx1ZSAi LCIgICAgICAgICAgICAgICAgICAgICAgIDw8IENJZnJFbmQNCj4gRW5kT2JqMTsNCj4gPiBFbmRP YmoxLlNldExpbmVObyhELT5nZXRMaW5lKCkpOyA+PiAgICAgKSAgICAgey0gICAgICBEZWZhdWx0 U3RvcmUgIj0iDQo+ID4gU046U3RyaW5nSWRlbnRpZmllciAiLCIgICAgICA8PCArICAgICAgRGVm YXVsdFN0b3JlICI9Ig0KU046U3RyaW5nSWRlbnRpZmllcg0KPiAiLCIgICAgICA8PA0KPiA+IF9Q Q0FUQ0goZ0NWZnJEZWZhdWx0U3RvcmUuR2V0RGVmYXVsdElkIChTTi0+Z2V0VGV4dCgpLCAmRGVm YXVsdElkKSwgDQo+ID4gU04pOyBpZiAoRE9iaiAhPSBOVUxMKSB7LQ0KPiBET2JqLT5TZXREZWZh dWx0SWQNCj4gPiAoRGVmYXVsdElkKTsNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSArDQo+ID4gRE9iai0+U2V0RGVmYXVsdElkDQo+ IChEZWZhdWx0SWQpOysNCj4gICAgIH0NCj4gPiBpZiAoRE9iajIgIT0gTlVMTCkgey0NCj4gRE9i ajItPlNldERlZmF1bHRJZA0KPiA+IChEZWZhdWx0SWQpOyArDQo+IERPYmoyLT5TZXREZWZhdWx0 SWQNCj4gPg0KPiAoRGVmYXVsdElkKTsNCj4gICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+DQo+ID4gIH1AQCAtMTkxNyw4ICsxOTMwLDgg QEAgdmZyU3RhdGVtZW50RGVmYXVsdCA6DQo+ID4NCj4gICAgICAgICApOw0KPiAgICAgIH0NCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LQ0KPiBpZiAo RE9iaiAgIT0gTlVMTCkNCj4gPiB7ZGVsZXRlIERPYmo7fSAtDQo+IGlmIChET2JqMiAhPSBOVUxM KSB7ZGVsZXRlDQo+ID4gRE9iajI7fSArDQo+IGlmIChET2JqICAhPSBOVUxMKSB7ZGVsZXRlIERP Ymo7fSsNCj4gPiBpZiAoRE9iajIgIT0gTlVMTCkge2RlbGV0ZQ0KPiBET2JqMjt9ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Pg0KPiAgICkgICA7 QEAgLQ0KPiA+IDE5NzAsMTEgKzE5ODMsMTUgQEAgdmZyU3RhdGVtZW50SW52YWxpZCA6DQo+ID4g ICAgOyAgZmxhZ3NGaWVsZCA6LSAgTnVtYmVyIC0gIHwgSW50ZXJhY3RpdmVGbGFnIC0gIHwgDQo+ ID4gTWFudWZhY3R1cmluZ0ZsYWcgLSAgfCBEZWZhdWx0RmxhZyAtICB8IFJlc2V0UmVxdWlyZWRG bGFnICsgIE51bWJlcisNCj4gPiB8IEludGVyYWN0aXZlRmxhZysgIHwNCj4gPiBNYW51ZmFjdHVy aW5nRmxhZysgIHwgRDpEZWZhdWx0RmxhZw0KPiA8PCsNCj4gPiBpZiAobUlzQ2F0Y2hEZWZhdWx0 RW5hYmxlKSB7Kw0KPiA+IERlZmF1bHRWYWx1ZUVycm9yKFZGUl9SRVRVUk5fVU5TVVBQT1JURUQs IEQtDQo+ID4gPmdldExpbmUoKSk7Kw0KPiAgICAgICAgIH0rDQo+ID4gPj4rICB8IFJlc2V0UmVx dWlyZWRGbGFnICAgfCBSZWNvbm5lY3RSZXF1aXJlZEZsYWcgICB8DQo+IE46TlZBY2Nlc3NGbGFn DQo+ID4gPDwNCj4gZ0NWZnJFcnJvckhhbmRsZS5IYW5kbGVXYXJuaW5nIChAQCAtDQo+ID4gMTk4 OSw3ICsyMDA2LDcgQEAgZmxhZ3NGaWVsZCA6DQo+ID4NCj4gPiBMLT5nZXRMaW5lKCksDQo+ID4N Cj4gTC0+Z2V0VGV4dCgpDQo+ICAgICAgICAgICk7LQ0KPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Pg0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+ICAgOw0KPiA+IHZmclN0 YXRlbWVudFZhbHVlIDpAQCAtMjAwMSwxMyArMjAxOCwxMyBAQCB2ZnJTdGF0ZW1lbnRWYWx1ZSA6 DQo+ID4gIHZmclN0YXRlbWVudFJlYWQgOiAgIDw8IENJZnJSZWFkIFJPYmo7ID4+ICAgUjpSZWFk DQo+ID4gPDwgUk9iai5TZXRMaW5lTm8oUi0+Z2V0TGluZSgpKTsgPj4tICB2ZnJTdGF0ZW1lbnRF eHByZXNzaW9uWzBdICI7IiArDQo+ID4gdmZyU3RhdGVtZW50RXhwcmVzc2lvblswXSAiOyIgICA7 ICB2ZnJTdGF0ZW1lbnRXcml0ZSA6ICAgPDwgQ0lmcldyaXRlDQo+IFdPYmo7ID4+DQo+ID4gVzpX cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PA0KPiBX T2JqLlNldExpbmVObyhXLT5nZXRMaW5lKCkpOyA+Pi0NCj4gPiB2ZnJTdGF0ZW1lbnRFeHByZXNz aW9uWzBdICI7IiArICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uWzBdICI7IiAgIDsNCj4gPiB2ZnJT dGF0ZW1lbnRTdWJUaXRsZSA6QEAgLTIxNDAsNyArMjE1Nyw3IEBAIHZmclN0YXRlbWVudEdvdG8g Og0KPiA+ICAgICAgICBGb3JtSWQgIj0iIEYzOk51bWJlciAiLCIgICAgICAgICAgICAgICAgICAg ICAgICAgPDwNCj4gUmVmVHlwZSA9IDI7IEZJZCA9IF9TVE9GSUQoRjMtDQo+ID4gPmdldFRleHQo KSwgRjMtPmdldExpbmUoKSk7ID4+ICAgICAgIFF1ZXN0aW9uICI9IiAgICAgICAoLQ0KPiBRTjM6 U3RyaW5nSWRlbnRpZmllcg0KPiA+ICIsIiAgICAgICAgICAgICAgICAgICAgIDw8ICsgICAgICAg ICAgUU4zOlN0cmluZ0lkZW50aWZpZXIgIiwiDQo+IDw8DQo+ID4gbUNWZnJRdWVzdGlvbkRCLkdl dFF1ZXN0aW9uSWQgKFFOMy0+Z2V0VGV4dCAoKSwgTlVMTCwgUUlkLCBCaXRNYXNrKTsgDQo+ID4g aWYgKFFJZCA9PSBFRklfUVVFU1RJT05fSURfSU5WQUxJRCkNCj4gPg0KPiB7DQo+IF9QQ0FUQ0go VkZSX1JFVFVSTl9VTkRFRklORUQsDQo+ID4gUU4zKTtAQCAtMjIyMiw3ICsyMjM5LDcgQEAgdmZy U3RhdGVtZW50R290byA6DQo+ID4gICAgICAiLCIgS2V5ICI9IiBLTjpOdW1iZXIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8PA0KPiBBc3NpZ25RdWVzdGlvbktleSAoKlFIT2JqLA0KPiA+ IEtOKTsgPj4gICB9ICAgey0gICAgRToiLCIgKyAgICBFOiIsIg0KPiB2ZnJTdGF0ZW1lbnRRdWVz dGlvbk9wdGlvbkxpc3QgICAgICAgICAgICAgICAgICAgPDwNCj4gPiBPSE9iai0+U2V0U2NvcGUo MSk7IENSVF9FTkRfT1AgKEUpOz4+ICAgfSAgICI7Ig0KPiA+IDw8IGlmIChSMU9iaiAhPSBOVUxM KSB7ZGVsZXRlIFIxT2JqO30gaWYgKFIyT2JqICE9IE5VTEwpIHtkZWxldGUgDQo+ID4gUjJPYmo7 fSBpZiAoUjNPYmogIT0gTlVMTCkge2RlbGV0ZSBSM09iajt9IGlmIChSNE9iaiAhPSBOVUxMKSAN Cj4gPiB7ZGVsZXRlIFI0T2JqO30gaWYgKFI1T2JqICE9DQo+ID4gTlVMTCkge2RlbGV0ZSBSNU9i ajt9Pj5AQCAtMjUxMSwyMCArMjUyOCwyMCBAQCANCj4gPiBtaW5NYXhEYXRlU3RlcERlZmF1bHRb RUZJX0hJSV9EQVRFICYgRCwgVUlOVDggS2V5VmFsdWVdIDoNCj4gPiAgICB7ICAgICAiZGVmYXVs dCIgIj0iIE46TnVtYmVyICIsIiAgICAgICAgICAgICAgICAgICAgICAgICA8PA0KPiA+IHN3aXRj aCAoS2V5VmFsdWUpIHstDQo+IGNhc2UgMDogKw0KPiA+IGNhc2UgMDoNCj4gRC5ZZWFyICA9IF9T VE9VMTYoTi0+Z2V0VGV4dCgpLCBOLQ0KPiA+ID5nZXRMaW5lKCkpOw0KPiBpZiAoRC5ZZWFyIDwg X1NUT1UxNiAoTWluTi0NCj4gPiA+Z2V0VGV4dCgpLCBNaW5OLT5nZXRMaW5lKCkpIHx8IEQuWWVh ciA+IF9TVE9VMTYgKE1heE4tPmdldFRleHQoKSwgDQo+ID4gPk1heE4tDQo+ID4gPmdldExpbmUo KSkpDQo+IHsNCj4gICBfUENBVENIDQo+ID4gKFZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIs IE4tPmdldExpbmUoKSwgIlllYXIgZGVmYXVsdCB2YWx1ZQ0KPiBtdXN0DQo+ID4gYmUgYmV0d2Vl biBNaW4geWVhciBhbmQgTWF4DQo+IHllYXIuIik7DQo+ICAgICAgfQ0KPiA+IGJyZWFrOy0NCj4g Y2FzZSAxOiAtDQo+ID4gRC5Nb250aCA9IF9TVE9VOChOLT5nZXRUZXh0KCksIE4tPmdldExpbmUo KSk7ICsgY2FzZSAxOisNCj4gRC5Nb250aCA9IF9TVE9VOChOLT5nZXRUZXh0KCksIE4tDQo+ID4g PmdldExpbmUoKSk7DQo+IGlmIChELk1vbnRoIDwgMSB8fCBELk1vbnRoID4gMTIpDQo+ID4NCj4g ew0KPiAgIF9QQ0FUQ0gNCj4gPiAoVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgTi0+Z2V0 TGluZSgpLCAiTW9udGggZGVmYXVsdCB2YWx1ZSANCj4gPiBtdXN0IGJlIGJldHdlZW4gMSBhbmQN Cj4gMTIuIik7DQo+ICAgICB9DQo+ID4gYnJlYWs7LQ0KPiBjYXNlIDI6IC0NCj4gPiBELkRheSA9 IF9TVE9VOChOLT5nZXRUZXh0KCksIE4tPmdldExpbmUoKSk7ICsgY2FzZSAyOisNCj4gRC5EYXkg PSBfU1RPVTgoTi0+Z2V0VGV4dCgpLCBOLQ0KPiA+ID5nZXRMaW5lKCkpOw0KPiBpZiAoRC5EYXkg PCAxIHx8IEQuRGF5ID4gMzEpDQo+ID4NCj4gew0KPiAgIF9QQ0FUQ0gNCj4gPiAoVkZSX1JFVFVS Tl9JTlZBTElEX1BBUkFNRVRFUiwgTi0+Z2V0TGluZSgpLCAiRGF5IGRlZmF1bHQgdmFsdWUNCj4g bXVzdA0KPiA+IGJlIGJldHdlZW4gMSBhbmQNCj4gMzEuIik7DQo+ICAgICB9QEAgLTI1NzAsNw0K PiA+ICsyNTg3LDcgQEAgdmZyU2V0TWluTWF4U3RlcFtDSWZyTWluTWF4U3RlcERhdGEgJiBNTVNE T2JqXSA6DQo+ID4gICAgICAgQk9PTEVBTiBNaW5OZWdhdGl2ZSA9IEZBTFNFOyAgICAgIEJPT0xF QU4gTWF4TmVnYXRpdmUgPQ0KPiBGQUxTRTsgICA+Pi0NCj4gPiBNaW5pbXVtICAgIj0iICsgIE1p bmltdW0gICAiPSIgICB7ICAgICAiXC0iDQo+IDw8DQo+ID4gTWluTmVnYXRpdmUgPSBUUlVFOyA+ PiAgIH1AQCAtMjY1OSw4ICsyNjc2LDggQEANCj4gPiB2ZnJTZXRNaW5NYXhTdGVwW0NJZnJNaW5N YXhTdGVwRGF0YSAmIE1NU0RPYmpdIDoNCj4gPg0KPiAgfSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPj4tICBNYXhpbXVtICAgIj0iIC0NCj4geyArICBNYXhp bXVtICAgIj0iKyAgeyAgICAgIlwtIg0KPiA+IDw8IE1heE5lZ2F0aXZlID0gVFJVRTsgPj4gICB9 ICAgQTpOdW1iZXIgIiwiDQo+IDw8QEAgLQ0KPiA+IDI4ODksNyArMjkwNiw3IEBAIHZmclN0YXRl bWVudE51bWVyaWMgOg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgID4+DQo+ID4gdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRp b25MaXN0LSAgRTpFbmROdW1lcmljDQo+IDw8ICsNCj4gPiBFOkVuZE51bWVyaWMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8DQo+ID4gQ1JUX0VORF9PUCAoRSk7DQo+ IGlmIChHdWlkT2JqICE9IE5VTEwpDQo+ID4NCj4gew0KPiBHdWlkT2JqLT5TZXRTY29wZSgxKTtA QCAtMzEzMSw3DQo+ID4gKzMxNDgsNyBAQCB2ZnJTdGF0ZW1lbnRTdHJpbmcgOg0KPiA+ICAgIHsg ICAgIEtleSAiPSIgS046TnVtYmVyICIsIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8 DQo+IEFzc2lnblF1ZXN0aW9uS2V5IChTT2JqLA0KPiA+IEtOKTsgPj4gICB9LSAgTWluU2l6ZSAi PSIgTUlOOk51bWJlciAiLCINCj4gPDwgKyAgTWluU2l6ZSAiPSINCj4gPiBNSU46TnVtYmVyICIs IiAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8DQo+ID4gVmFyQXJyYXlTaXplID0gX0dFVF9D VVJSUUVTVF9BUlJBWV9TSVpFKCk7IFN0cmluZ01pblNpemUgPSANCj4gPiBfU1RPVTgoTUlOLT5n ZXRUZXh0KCksIE1JTi0+Z2V0TGluZSgpKTsgaWYgKF9TVE9VNjQoTUlOLT5nZXRUZXh0KCksDQo+ ID4gTUlOLT5nZXRMaW5lKCkpID4gU3RyaW5nTWluU2l6ZSkge0BAIC0zMTQxLDcNCj4gPiArMzE1 OCw3IEBAIHZmclN0YXRlbWVudFN0cmluZyA6DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IA0KPiA+IFNPYmouU2V0TWluU2l6 ZQ0KPiAoU3RyaW5nTWluU2l6ZSk7DQo+ICAgICAgICA+Pi0gIE1heFNpemUNCj4gPiAiPSIgTUFY Ok51bWJlciAiLCIgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCArICBNYXhTaXplICI9Ig0K PiBNQVg6TnVtYmVyICIsIg0KPiA+IDw8DQo+IFN0cmluZ01heFNpemUgPSBfU1RPVTgoTUFYLT5n ZXRUZXh0KCksDQo+ID4gTUFYLT5nZXRMaW5lKCkpOw0KPiBpZiAoX1NUT1U2NChNQVgtDQo+ID4g PmdldFRleHQoKSwgTUFYLT5nZXRMaW5lKCkpID4gU3RyaW5nTWF4U2l6ZSkNCj4gPg0KPiB7DQo+ IF9QQ0FUQ0gNCj4gPiAoVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgTUFYLT5nZXRMaW5l KCksICJTdHJpbmcgTWF4U2l6ZQ0KPiB0YWtlcw0KPiA+IG9ubHkgb25lIGJ5dGUsIHdoaWNoIGNh bid0IGJlIGxhcmdlciB0aGFuIDB4RkYuIik7QEAgLTMxODUsNyArMzIwMiw3IA0KPiA+IEBAIHZm clN0YXRlbWVudFBhc3N3b3JkIDoNCj4gPiAgICB7ICAgICBLZXkgIj0iIEtOOk51bWJlciAiLCIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PA0KPiBBc3NpZ25RdWVzdGlvbktleSAoUE9i aiwNCj4gPiBLTik7ID4+ICAgfS0gIE1pblNpemUgIj0iIE1JTjpOdW1iZXIgIiwiDQo+IDw8ICsg IE1pblNpemUgIj0iDQo+ID4gTUlOOk51bWJlciAiLCIgICAgICAgICAgICAgICAgICAgICAgICAg ICA8PA0KPiA+IFZhckFycmF5U2l6ZSA9IF9HRVRfQ1VSUlFFU1RfQVJSQVlfU0laRSgpOyBQYXNz d29yZE1pblNpemUgPSANCj4gPiBfU1RPVTE2KE1JTi0+Z2V0VGV4dCgpLCBNSU4tPmdldExpbmUo KSk7IGlmIChfU1RPVTY0KE1JTi0+Z2V0VGV4dCgpLA0KPiA+IE1JTi0+Z2V0TGluZSgpKSA+IFBh c3N3b3JkTWluU2l6ZSkge0BAIC0NCj4gPiAzMTk1LDcgKzMyMTIsNyBAQCB2ZnJTdGF0ZW1lbnRQ YXNzd29yZCA6DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9IA0KPiA+IFBPYmouU2V0TWluU2l6ZQ0KPiAoUGFzc3dvcmRNaW5T aXplKTsNCj4gICAgICAgICAgID4+LQ0KPiA+IE1heFNpemUgIj0iIE1BWDpOdW1iZXIgIiwiICAg ICAgICAgICAgICAgICAgICAgICAgICAgPDwgKw0KPiBNYXhTaXplICI9IiBNQVg6TnVtYmVyDQo+ ID4gIiwiICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwNCj4gUGFzc3dvcmRNYXhTaXplID0N Cj4gPiBfU1RPVTE2KE1BWC0+Z2V0VGV4dCgpLCBNQVgtPmdldExpbmUoKSk7DQo+IGlmDQo+ID4g KF9TVE9VNjQoTUFYLT5nZXRUZXh0KCksIE1BWC0+Z2V0TGluZSgpKSA+IFBhc3N3b3JkTWF4U2l6 ZSkNCj4gPg0KPiB7DQo+IF9QQ0FUQ0gNCj4gPiAoVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRF UiwgTUFYLT5nZXRMaW5lKCksICJQYXNzd29yZCBNYXhTaXplDQo+IHRha2VzDQo+ID4gb25seSB0 d28gYnl0ZSwgd2hpY2ggY2FuJ3QgYmUgbGFyZ2VyIHRoYW4gMHhGRkZGLiIpO0BAIC0zMjMwLDEy DQo+ID4gKzMyNDcsMTIgQEAgdmZyU3RhdGVtZW50T3JkZXJlZExpc3QgOg0KPiA+ICAgID4+ICAg TDpPcmRlcmVkTGlzdA0KPiA8PCBPTE9iai5TZXRMaW5lTm8oTC0+Z2V0TGluZSgpKTsNCj4gPiBn SXNPcmRlcmVkTGlzdCA9IFRSVUU7Pj4gICB2ZnJRdWVzdGlvbkhlYWRlcltPTE9ial0gIiwiLQ0K PiA+IDw8ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPDwNCj4gPiBWYXJBcnJheVNpemUgPSBfR0VUX0NVUlJRRVNUX0FSUkFZX1NJWkUoKTsg T0xPYmouU2V0TWF4Q29udGFpbmVycw0KPiA+ICgoVUlOVDgpIChWYXJBcnJheVNpemUgPiAweEZG ID8gMHhGRiA6DQo+ID4NCj4gVmFyQXJyYXlTaXplKSk7DQo+ICAgICAgID4+ICAgey0gICAgTWF4 Q29udGFpbmVycyAiPSINCj4gPiBNOk51bWJlciAiLCIgICAgICAgICAgICAgICAgICAgICA8PCAr ICAgIE1heENvbnRhaW5lcnMgIj0iDQo+IE06TnVtYmVyICIsIg0KPiA+IDw8DQo+IGlmIChfU1RP VTY0KE0tPmdldFRleHQoKSwgTS0+Z2V0TGluZSgpKSA+DQo+ID4gX1NUT1U4KE0tPmdldFRleHQo KSwgTS0+Z2V0TGluZSgpKSkNCj4gPg0KPiB7DQo+IF9QQ0FUQ0gNCj4gPiAoVkZSX1JFVFVSTl9J TlZBTElEX1BBUkFNRVRFUiwgTS0+Z2V0TGluZSgpLCAiT3JkZXJlZExpc3QgDQo+ID4gTWF4Q29u dGFpbmVycyB0YWtlcyBvbmx5IG9uZSBieXRlLCB3aGljaCBjYW4ndCBiZSBsYXJnZXIgdGhhbg0K PiA+DQo+IDB4RkYuIik7DQo+ICAgIH0gZWxzZSBpZiAoVmFyQXJyYXlTaXplICE9IDAgJiYNCj4g PiBfU1RPVTgoTS0+Z2V0VGV4dCgpLCBNLT5nZXRMaW5lKCkpID4gVmFyQXJyYXlTaXplKSB7QEAg LTMzMjgsMTkNCj4gPiArMzM0NSwxOSBAQCBtaW5NYXhUaW1lU3RlcERlZmF1bHRbRUZJX0hJSV9U SU1FICYgVCwgVUlOVDgNCj4gS2V5VmFsdWVdIDoNCj4gPiAgICB7ICAgICAiZGVmYXVsdCIgIj0i IE46TnVtYmVyICIsIiAgICAgICAgICAgICAgICAgICAgICAgICA8PA0KPiA+IHN3aXRjaCAoS2V5 VmFsdWUpIHstDQo+IGNhc2UgMDogLQ0KPiA+IFQuSG91ciAgID0gX1NUT1U4KE4tPmdldFRleHQo KSwgTi0+Z2V0TGluZSgpKTsgKw0KPiA+IGNhc2UgMDorDQo+IFQuSG91ciAgID0gX1NUT1U4KE4t PmdldFRleHQoKSwgTi0NCj4gPiA+Z2V0TGluZSgpKTsNCj4gaWYgKFQuSG91ciA+IDIzKQ0KPiA+ DQo+IHsNCj4gICBfUENBVENIDQo+ID4gKFZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIE4t PmdldExpbmUoKSwgIkhvdXIgZGVmYXVsdCB2YWx1ZQ0KPiBtdXN0DQo+ID4gYmUgYmV0d2VlbiAw IGFuZA0KPiAyMy4iKTsNCj4gICAgIH0NCj4gPiBicmVhazstDQo+IGNhc2UgMTogLQ0KPiA+IFQu TWludXRlID0gX1NUT1U4KE4tPmdldFRleHQoKSwgTi0+Z2V0TGluZSgpKTsgKyBjYXNlIDE6Kw0K PiBULk1pbnV0ZSA9IF9TVE9VOChOLT5nZXRUZXh0KCksIE4tDQo+ID4gPmdldExpbmUoKSk7DQo+ IGlmIChULk1pbnV0ZSA+IDU5KQ0KPiA+DQo+IHsNCj4gICBfUENBVENIDQo+ID4gKFZGUl9SRVRV Uk5fSU5WQUxJRF9QQVJBTUVURVIsIE4tPmdldExpbmUoKSwgIk1pbnV0ZSBkZWZhdWx0IHZhbHVl IA0KPiA+IG11c3QgYmUgYmV0d2VlbiAwIGFuZA0KPiA1OS4iKTsNCj4gICAgIH0NCj4gPiBicmVh azstDQo+IGNhc2UgMjogKw0KPiA+IGNhc2UgMjoNCj4gVC5TZWNvbmQgPSBfU1RPVTgoTi0+Z2V0 VGV4dCgpLCBOLQ0KPiA+ID5nZXRMaW5lKCkpOw0KPiBpZiAoVC5TZWNvbmQgPiA1OSkNCj4gPg0K PiB7DQo+ICAgX1BDQVRDSA0KPiA+IChWRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBOLT5n ZXRMaW5lKCksICJTZWNvbmQgZGVmYXVsdCB2YWx1ZSANCj4gPiBtdXN0IGJlIGJldHdlZW4gMCBh bmQgNTkuIik7QEAgLTM0MTksMTEgKzM0MzYsMTEgQEAgDQo+ID4gdmZyU3RhdGVtZW50U3RhdExp c3RPbGQgOg0KPiA+ICAgIDsgIHZmclN0YXRlbWVudERpc2FibGVJZlN0YXQgOi0gIDw8IC0gICAg Q0lmckRpc2FibGVJZiBESU9iajsgKyAgPDwrDQo+ID4gQ0lmckRpc2FibGVJZiBESU9iajsgICA+ PiAgIEw6RGlzYWJsZUlmDQo+IDw8DQo+ID4gRElPYmouU2V0TGluZU5vKEwtPmdldExpbmUoKSk7 ID4+LSAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblswXSAiOyIgKw0KPiA+IHZmclN0YXRlbWVudEV4 cHJlc3Npb25bMF0gIjsiICAgKCB2ZnJTdGF0ZW1lbnRTdGF0TGlzdCApKiAgIEU6RW5kSWYNCj4g PiA8PCBDUlRfRU5EX09QIChFKTsgPj4gICAiOyJAQCAtMzU0OCw4ICszNTY1LDggQEANCj4gPiB2 ZnJTdGF0ZW1lbnRXYXJuaW5nSWYgOg0KPiA+ICAgIDsgIHZmclN0YXRlbWVudERpc2FibGVJZlF1 ZXN0IDotICA8PCAtICAgIENJZnJEaXNhYmxlSWYgRElPYmo7ICsNCj4gPDwrDQo+ID4gQ0lmckRp c2FibGVJZiBESU9iajsgICA+PiAgIEw6RGlzYWJsZUlmDQo+IDw8DQo+ID4gRElPYmouU2V0TGlu ZU5vKEwtPmdldExpbmUoKSk7ID4+ICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblswXSAiOyJAQCAt DQo+ID4gMzYxNiwxNSArMzYzMywxNSBAQCB2ZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbiA6DQo+ID4g ICAgICAgVUlOVDMyICAgICAgICAgICAgICpUeXBlMzIgICAgICAgPSAoVUlOVDMyICopIFZhbHVl TGlzdDsNCj4gVUlOVDY0DQo+ID4gKlR5cGU2NCAgICAgICA9IChVSU5UNjQgKikgVmFsdWVMaXN0 OyAgID4+LSAgTDpPcHRpb24NCj4gPDwNCj4gPiArICBMOk9wdGlvbiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8DQo+IGlmDQo+ID4gKF9HRVRfQ1VSUlFFU1Rf REFUQVRZUEUoKSA9PSBFRklfSUZSX1RZUEVfT1RIRVIpDQo+ID4NCj4gew0KPiBfUENBVENIIChW RlJfUkVUVVJOX0ZBVEFMX0VSUk9SLCBMLQ0KPiA+ID5nZXRMaW5lKCksICJHZXQgZGF0YSB0eXBl DQo+ID4NCj4gZXJyb3IuIik7DQo+ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA+DQo+ID4tDQo+ID4gVGV4dCAgIj0iICJTVFJJTkdf VE9LRU4iICJcKCIgUzpOdW1iZXIgIlwpIiAiLCIgICAgICArICBUZXh0ICAiPSINCj4gPiAiU1RS SU5HX1RPS0VOIiAiXCgiIFM6TnVtYmVyICJcKSIgIiwiICAgVmFsdWUgIj0iDQo+ID4gdmZyQ29u c3RhbnRWYWx1ZUZpZWxkW19HRVRfQ1VSUlFFU1RfREFUQVRZUEUoKSwgKlZhbCwgQXJyYXlUeXBl XSAiLCItDQo+ID4gPDwgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8PA0KPiBpZg0KPiA+IChnQ3VycmVudE1pbk1heERhdGEgIT0gTlVMTCkN Cj4gew0KPiAvL3NldA0KPiA+IG1pbi9tYXggdmFsdWUgZm9yIG9uZW9mIG9wY29kZQ0KPiBVSU5U NjQNCj4gPiBTdGVwID0gZ0N1cnJlbnRNaW5NYXhEYXRhLT5HZXRTdGVwRGF0YShfR0VUX0NVUlJR RVNUX0RBVEFUWVBFKCksDQo+ID4gX0dFVF9DVVJSUUVTVF9WQVJUSU5GTygpLm1Jc0JpdFZhcik7 QEAgLTM2OTYsNyArMzcxMyw3IEBAIA0KPiA+IHZmclN0YXRlbWVudE9uZU9mT3B0aW9uIDoNCj4g Pg0KPiBTaXplICs9IE9GRlNFVF9PRg0KPiA+IChFRklfSUZSX09ORV9PRl9PUFRJT04sIFZhbHVl KTsNCj4gT09PT2JqID0NCj4gPiBuZXcgQ0lmck9uZU9mT3B0aW9uKChVSU5UOClTaXplKTsNCj4g T09PT2JqLQ0KPiA+ID5TZXRMaW5lTm8oTC0+Z2V0TGluZSgpKTstDQo+IE9PT09iai0NCj4gPiA+ U2V0T3B0aW9uIChfU1RPU0lEKFMtPmdldFRleHQoKSwgUy0+Z2V0TGluZSgpKSk7ICsNCj4gPiBP T09PYmotPlNldE9wdGlvbiAoX1NUT1NJRChTLT5nZXRUZXh0KCksIFMtPmdldExpbmUoKSkpOw0K PiA+IGlmIChBcnJheVR5cGUpDQo+IHsNCj4gT09PT2JqLT5TZXRUeXBlDQo+ID4NCj4gKEVGSV9J RlJfVFlQRV9CVUZGRVIpOw0KPiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7QEAgLTM3MDYsNw0K PiA+ICszNzIzLDcgQEAgdmZyU3RhdGVtZW50T25lT2ZPcHRpb24gOg0KPiA+DQo+IE9PT09iai0+ U2V0VHlwZQ0KPiA+DQo+IChfR0VUX0NVUlJRRVNUX0RBVEFUWVBFKCkpOw0KPiAgICAgICAgICAg ICAgICAgICAgICAgICAgfQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfS0NCj4gT09PT2JqLT5TZXRWYWx1ZQ0KPiA+ICgqVmFsKTsgKw0KPiBPT09PYmotPlNldFZh bHVlDQo+ID4NCj4gKCpWYWwpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPj4NCj4gRjpGTEFHUyAiPSINCj4gPiB2ZnJPbmVPZk9wdGlvbkZs YWdzWypPT09PYmosIEYtPmdldExpbmUoKV0gPDxAQCAtMzc5MCw3ICszODA3LDEyIEBAIA0KPiA+ IG9uZW9mb3B0aW9uRmxhZ3NGaWVsZCBbVUlOVDggJiBIRmxhZ3MsIFVJTlQ4ICYgTEZsYWdzXSA6 DQo+ID4gICAgfCBSZXN0U3R5bGVGbGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8PA0KPiAkSEZsYWdzIHw9IDB4MjA7ID4+ICAgfA0KPiA+IFJlY29ubmVjdFJlcXVpcmVk RmxhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICRIRmxhZ3MgfD0NCj4gMHg0MDsg Pj4gICB8DQo+ID4gTWFudWZhY3R1cmluZ0ZsYWcgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPDwgJExGbGFncyB8PQ0KPiAweDIwOyA+Pi0gIHwgRGVmYXVsdEZsYWcNCj4gPiA8PCAk TEZsYWdzIHw9IDB4MTA7ID4+KyAgfCBEOkRlZmF1bHRGbGFnDQo+IDw8Kw0KPiA+ICRMRmxhZ3Mg fD0gMHgxMDsrDQo+IGlmIChtSXNDYXRjaERlZmF1bHRFbmFibGUpDQo+ID4geysNCj4gPiBEZWZh dWx0VmFsdWVFcnJvcihWRlJfUkVUVVJOX1VOU1VQUE9SVEVELCBELQ0KPiA+ID5nZXRMaW5lKCkp OysNCj4gICAgICAgICAgIH0rDQo+ID4gID4+ICAgfCBBOk5WQWNjZXNzRmxhZyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8PA0KPiA+IGdDVmZyRXJyb3JIYW5kbGUuSGFuZGxl V2FybmluZw0KPiA+DQo+ICgNCj4gVkZSX1dBUk5JTkdfT0JTT0xFVEVEX0ZSQU1FV09SSw0KPiA+ IF9PUENPREUsQEAgLTM5NjMsNyArMzk4NSw3IEBAIHZmclN0YXRlbWVudEV4cHJlc3Npb24gW1VJ TlQzMiANCj4gPiBSb290TGV2ZWwsIFVJTlQzMiBFeHBPcENvdW50ID0gMF0gOg0KPiA+DQo+ICAg IH0NCj4gICAgfQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0tDQo+ICsNCj4gPiBpZiAoJFJvb3RMZXZlbCA9PSAwKQ0KPiB7DQo+IF9DTEVBUl9TQVZF RF9PUEhEUg0KPiA+ICgpOw0KPiBtQ0lmck9wSGRySW5kZXggLS07QEAgLTQ0MDUsMTANCj4gPiAr NDQyNywxMCBAQCBpZGVxdmFsbGlzdEV4cFtVSU5UMzIgJiBSb290TGV2ZWwsIFVJTlQzMiAmIEV4 cE9wQ291bnRdIDoNCj4gPg0KPiBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBMaXN0TGVuOyBJbmRl eCsrKQ0KPiA+DQo+IHsNCj4gICBFSUxPYmouU2V0VmFsdWVMaXN0IChJbmRleCwNCj4gPg0KPiBW YWx1ZUxpc3RbSW5kZXhdKTsNCj4gICAgICAgICAgICAgIH0tDQo+ID4gKw0KPiA+ICsgRUlMT2Jq LlVwZGF0ZUlmckJ1ZmZlcigpOy0NCj4gPiBfU0FWRV9PUEhEUl9DT05EIChFSUxPYmosICgkRXhw T3BDb3VudCA9PSAwKSwgTC0+Z2V0TGluZSgpKTsNCj4gPiAtDQo+ICsNCj4gPiBfU0FWRV9PUEhE Ul9DT05EIChFSUxPYmosICgkRXhwT3BDb3VudCA9PSAwKSwgTC0+Z2V0TGluZSgpKTsrIGlmIA0K PiA+IChRSWQgPT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQpDQo+ID4NCj4gew0KPiAgIEVJTE9i ai5TZXRRdWVzdGlvbklkIChRSWQsIFZhcklkU3RyLA0KPiA+DQo+IExpbmVObyk7DQo+ICAgICAg IH1AQCAtNDQ1OCw5ICs0NDgwLDkgQEANCj4gPiBzdHJpbmdyZWYxRXhwW1VJTlQzMiAmIFJvb3RM ZXZlbCwgVUlOVDMyICYgRXhwT3BDb3VudF0gOg0KPiA+ICAgID4+ICAgTDpTdHJpbmdSZWYgICAi XCgiLSAgICAgICggKw0KPiAoICAgICAgICAgIlNUUklOR19UT0tFTiItICAgICAgICAiXCgiICsg ICAgICAgICJcKCINCj4gPiBTOk51bWJlciA8PCBSZWZTdHJpbmdJZCA9IF9TVE9TSUQoUy0+Z2V0 VGV4dCgpLCBTLT5nZXRMaW5lKCkpOyA+Pg0KPiAiXCkiDQo+ID4gfCBJOk51bWJlciA8PCBSZWZT dHJpbmdJZCA9IF9TVE9TSUQoSS0+Z2V0VGV4dCgpLCBJLT5nZXRMaW5lKCkpOyANCj4gPiB8ID4+ QEANCj4gPiB8IC0NCj4gPiA0NDk5LDEwICs0NTIxLDEwIEBAIGdldEV4cFtVSU5UMzIgJiBSb290 TGV2ZWwsIFVJTlQzMiAmDQo+IEV4cE9wQ291bnRdIDoNCj4gPiAgICAgICBJbmZvLm1WYXJTdG9y ZUlkID0gMDsgICA+PiAgIEw6R2V0LSAgIlwoIiArICAiXCgiDQo+IHZmclN0b3JhZ2VWYXJJZFtJ bmZvLA0KPiA+IFZhcklkU3RyLCBGQUxTRV0gICAgICAgeyJcfCIgRkxBR1MgIj0iIG51bWVyaWNW YXJTdG9yZVR5cGUgW1ZhclR5cGVdIH0tDQo+ICJcKSINCj4gPiA8PCArICAiXCkiICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8DQo+ID4NCj4geyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp DQo+IGYgKEluZm8ubVZhclN0b3JlSWQgPT0gMCkNCj4gPg0KPiB7DQo+ICAgLy8gc3VwcG9ydCBE YXRlL1RpbWUgcXVlc3Rpb25AQCAtDQo+ID4gNDU0OSw5ICs0NTcxLDkgQEAgZ2V0RXhwW1VJTlQz MiAmIFJvb3RMZXZlbCwgVUlOVDMyICYgRXhwT3BDb3VudF0gOg0KPiA+DQo+ID4gX1BDQVRDSChW RlJfUkVUVVJOX1VOU1VQUE9SVEVELCBMLQ0KPiA+ID5nZXRMaW5lKCksICJHZXQvU2V0IG9wY29k ZSBkb24ndCBzdXBwb3J0IGRhdGENCj4gPg0KPiBhcnJheSIpOw0KPiAgICAgICAgfQ0KPiAgICAg ICAgfQ0KPiA+IC0NCj4gQ0lmckdldCBHT2JqKEwtPmdldExpbmUoKSk7IC0NCj4gPiBfU0FWRV9P UEhEUl9DT05EIChHT2JqLCAoJEV4cE9wQ291bnQgPT0gMCksIEwtPmdldExpbmUoKSk7IC0gDQo+ ID4gR09iai5TZXRWYXJJbmZvICgmSW5mbyk7ICsNCj4gQ0lmckdldCBHT2JqKEwtDQo+ID4gPmdl dExpbmUoKSk7Kw0KPiBfU0FWRV9PUEhEUl9DT05EIChHT2JqLA0KPiA+ICgkRXhwT3BDb3VudCA9 PSAwKSwgTC0+Z2V0TGluZSgpKTsrDQo+ID4gR09iai5TZXRWYXJJbmZvICgmSW5mbyk7DQo+IGRl bGV0ZVtdIFZhcklkU3RyOw0KPiA+DQo+ICRFeHBPcENvdW50Kys7DQo+ICAgICAgICAgICAgfUBA IC00NjA4LDcgKzQ2MzAsNyBAQA0KPiA+IHF1ZXN0aW9uMjNyZWZFeHBbVUlOVDMyICYgUm9vdExl dmVsLCBVSU5UMzIgJiBFeHBPcENvdW50XSA6DQo+ID4gICAgICAgIHsgICAgICAgICBVdWlkICI9 IiBndWlkRGVmaW5pdGlvbltHdWlkXSAiLCINCj4gPDwgVHlwZSA9IDB4MzsgPj4gICAgICAgfS0N Cj4gPiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViWyRSb290TGV2ZWwgKyAxLCAkRXhwT3BDb3Vu dF0gKw0KPiA+IHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbJFJvb3RMZXZlbCArIDEsICRFeHBP cENvdW50XSAgICJcKSINCj4gPiA8PA0KPiBzd2l0Y2ggKFR5cGUpIHtAQCAtNDY3NSw5ICs0Njk3 LDkgQEANCj4gPiBzZXRFeHBbVUlOVDMyICYgUm9vdExldmVsLCBVSU5UMzIgJiBFeHBPcENvdW50 XSA6DQo+ID4gICAgIlwoIiAgICAgIHZmclN0b3JhZ2VWYXJJZFtJbmZvLCBWYXJJZFN0ciwgRkFM U0VdICAgICAgeyJcfCIgRkxBRyAiPSINCj4gPiBudW1lcmljVmFyU3RvcmVUeXBlIFtWYXJUeXBl XSB9LSAgICAgIiwiDQo+ID4gdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YlskUm9vdExldmVsICsg MSwgJEV4cE9wQ291bnRdICsgICAgICIsIg0KPiA+IHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJb JFJvb3RMZXZlbCArIDEsICRFeHBPcENvdW50XSAgICJcKSItDQo+ID4gPDwgKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PA0KPiA+DQo+IHsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaQ0KPiBmIChJbmZvLm1WYXJTdG9yZUlkID09IDApDQo+ID4NCj4gew0KPiAgIC8vIHN1cHBv cnQgRGF0ZS9UaW1lIHF1ZXN0aW9uQEAgLQ0KPiA+IDQ3MjQsOCArNDc0Niw4IEBAIHNldEV4cFtV SU5UMzIgJiBSb290TGV2ZWwsIFVJTlQzMiAmIEV4cE9wQ291bnRdIDoNCj4gPg0KPiA+IF9QQ0FU Q0goVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwgTC0NCj4gPiA+Z2V0TGluZSgpLCAiR2V0L1NldCBv cGNvZGUgZG9uJ3Qgc3VwcG9ydCBkYXRhDQo+ID4NCj4gYXJyYXkiKTsNCj4gICAgICAgIH0NCj4g ICAgICAgIH0NCj4gPiAtDQo+IENJZnJTZXQgVFNPYmooTC0+Z2V0TGluZSgpKTsgLQ0KPiA+IFRT T2JqLlNldFZhckluZm8gKCZJbmZvKTsgKw0KPiBDSWZyU2V0IFRTT2JqKEwtDQo+ID4gPmdldExp bmUoKSk7Kw0KPiBUU09iai5TZXRWYXJJbmZvICgmSW5mbyk7DQo+ID4gZGVsZXRlW10gVmFySWRT dHI7DQo+ID4NCj4gJEV4cE9wQ291bnQrKzsNCj4gICAgICAgICAgICB9QEAgLTQ4MDgsOSArNDgz MCw5IEBADQo+ID4gc3BhbkV4cFtVSU5UMzIgJiBSb290TGV2ZWwsIFVJTlQzMiAmIEV4cE9wQ291 bnRdIDoNCj4gPiAgICA7ICB2ZnJFeHByZXNzaW9uTWFwIFtVSU5UMzIgJiBSb290TGV2ZWwsIFVJ TlQzMiAmIEV4cE9wQ291bnRdOi0gDQo+ID4gTDpNYXANCj4gPiAtICAiXCgiIC0gIHZmclN0YXRl bWVudEV4cHJlc3Npb25TdWJbJFJvb3RMZXZlbCArIDEsICRFeHBPcENvdW50XSAgKw0KPiBMOk1h cCsNCj4gPiAiXCgiKyAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YlskUm9vdExldmVsICsgMSwg JEV4cE9wQ291bnRdICAgIjoiDQo+ID4gPDwgeyBDSWZyTWFwIE1PYmooTC0+Z2V0TGluZSgpKTsg fSA+Pg0KPiAoICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uWzBdQEAgLQ0KPiA+IDQ4MzcsNiAr NDg1OSw3IEBAIHNwYW5GbGFncyBbVUlOVDggJiBGbGFnc10gOg0KPiA+ICBjbGFzcyBFZmlWZnJQ YXJzZXIgeyA8PCBwcml2YXRlOisgIEJPT0xFQU4NCj4gbUlzQ2F0Y2hEZWZhdWx0RW5hYmxlOw0K PiA+IFVJTlQ4ICAgICAgICAgICAgICAgbVBhcnNlclN0YXR1czsgICBCT09MRUFODQo+IG1Db25z dGFudE9ubHlJbkV4cHJlc3Npb247DQo+ID4gQEAgLTQ4ODAsNiArNDkwMyw3IEBAIHB1YmxpYzoN Cj4gPiAgICBWT0lEICAgICAgICAgICAgICAgIF9QQ0FUQ0ggKElOIEVGSV9WRlJfUkVUVVJOX0NP REUsIElODQo+IEFOVExSVG9rZW5QdHIpOw0KPiA+IFZPSUQgICAgICAgICAgICAgICAgX1BDQVRD SCAoSU4gRUZJX1ZGUl9SRVRVUk5fQ09ERSwgSU4gVUlOVDMyKTsNCj4gVk9JRA0KPiA+IF9QQ0FU Q0ggKElOIEVGSV9WRlJfUkVUVVJOX0NPREUsIElOIFVJTlQzMiwgSU4gQ09OU1QgQ0hBUjggKik7 Kw0KPiBWT0lEDQo+ID4gRGVmYXVsdFZhbHVlRXJyb3IgKElOIEVGSV9WRlJfUkVUVVJOX0NPREUs IElOIFVJTlQzMik7ICAgIFZPSUQNCj4gPiBzeW4gICAgIChBTlRMUkFic3RyYWN0VG9rZW4gICos IEFOVExSQ2hhciAqLCBTZXRXb3JkVHlwZSAqLA0KPiA+IEFOVExSVG9rZW5UeXBlLCBJTlQzMik7 IEBAIC00OTA5LDYgKzQ5MzMsNyBAQCBwdWJsaWM6DQo+ID4gICAgVk9JRCAgICAgICAgICAgICAg ICBJZEVxSWREb1NwZWNpYWwgICAgICAgKElOIFVJTlQzMiAmLCBJTg0KPiBVSU5UMzIsIElODQo+ ID4gRUZJX1FVRVNUSU9OX0lELCBJTiBDSEFSOCAqLCBJTiBVSU5UMzIsIElOIEVGSV9RVUVTVElP Tl9JRCwgSU4NCj4gQ0hBUjggKiwNCj4gPiBJTiBVSU5UMzIsIElOIEVGSV9DT01QQVJFX1RZUEUp OyAgIFZPSUQNCj4gSWRFcUxpc3REb1NwZWNpYWwgICAgIChJTg0KPiA+IFVJTlQzMiAmLCBJTiBV SU5UMzIsIElOIEVGSV9RVUVTVElPTl9JRCwgSU4gQ0hBUjggKiwgSU4gVUlOVDMyLCBJTg0KPiA+ IFVJTlQxNiwgSU4gVUlOVDE2ICopOyAgIFZPSUQgICAgICAgICAgICAgICAgU2V0T3ZlcnJpZGVD bGFzc0d1aWQNCj4gKElOIEVGSV9HVUlEICopOysNCj4gPiBWT0lEICAgICAgICAgICAgICAgIFNl dElzQ2F0Y2hEZWZhdWx0RW5hYmxlIChCT09MRUFODQo+IElzQ2F0Y2hEZWZhdWx0RW5hYmxlKTsg Pj4gfQ0KPiA+IEBAIC01MDg2LDYgKzUxMTEsMTcgQEAgRWZpVmZyUGFyc2VyOjpfUENBVENIICgN Cj4gPiAgICBtUGFyc2VyU3RhdHVzID0gbVBhcnNlclN0YXR1cyArIGdDVmZyRXJyb3JIYW5kbGUu SGFuZGxlRXJyb3IgDQo+ID4gKFJldHVybkNvZGUsIExpbmVOdW0sIChDSEFSOCAqKSBFcnJvck1z Zyk7IH0NCj4gPiArVk9JRCtFZmlWZnJQYXJzZXI6OkRlZmF1bHRWYWx1ZUVycm9yICgrICBJTiBF RklfVkZSX1JFVFVSTl9DT0RFDQo+ID4gUmV0dXJuQ29kZSwrICBJTiBVSU5UMzIgICAgICAgICAg ICAgIExpbmVOdW0rICApK3srICBDSEFSOA0KPiBFcnJvck1zZ1sxMDBdOysNCj4gPiBzcHJpbnRm KEVycm9yTXNnLCAicGxlYXNlIHJlbW92ZSB0aGUgZGVmYXVsdCB2YWx1ZSAvIGRlZmF1bHRzdG9y ZSBpbiANCj4gPiBsaW5lICVkIiwgTGluZU51bSk7KyAgbVBhcnNlclN0YXR1cyA9IG1QYXJzZXJT dGF0dXMgKyANCj4gPiBnQ1ZmckVycm9ySGFuZGxlLkhhbmRsZUVycm9yIChSZXR1cm5Db2RlLCBM aW5lTnVtLCBFcnJvck1zZyk7K30rIA0KPiA+IFZPSUQNCj4gRWZpVmZyUGFyc2VyOjpzeW4NCj4g PiAoICAgQU5UTFJBYnN0cmFjdFRva2VuICAqVG9rLEBAIC01NjgyLDEyICs1NzE4LDE4IEBADQo+ ID4gRWZpVmZyUGFyc2VyOjpJZEVxTGlzdERvU3BlY2lhbCAoDQo+ID4gICAgfSB9IC1WT0lEICtW T0lEIEVmaVZmclBhcnNlcjo6U2V0T3ZlcnJpZGVDbGFzc0d1aWQgKElOIEVGSV9HVUlEDQo+ID4g Kk92ZXJyaWRlQ2xhc3NHdWlkKSB7ICAgbU92ZXJyaWRlQ2xhc3NHdWlkID0gT3ZlcnJpZGVDbGFz c0d1aWQ7IH0NCj4gPiArVk9JRCtFZmlWZnJQYXJzZXI6OlNldElzQ2F0Y2hEZWZhdWx0RW5hYmxl IChCT09MRUFODQo+ID4gSXNDYXRjaERlZmF1bHRFbmFibGUpK3srICBtSXNDYXRjaERlZmF1bHRF bmFibGUgPQ0KPiBJc0NhdGNoRGVmYXVsdEVuYWJsZTsrfSsNCj4gPiBWT0lEIEVmaVZmclBhcnNl cjo6Q2hlY2tEdXBsaWNhdGVEZWZhdWx0VmFsdWUgKCAgIElOIEVGSV9ERUZBVUxUX0lEDQo+ID4g RGVmYXVsdElkLC0tDQo+ID4gMi4yNi4yLndpbmRvd3MuMQ0KDQoNCg0KDQoNCgotPS09LT0tPS09 LT0tPS09LT0tPS09LQpHcm91cHMuaW8gTGlua3M6IFlvdSByZWNlaXZlIGFsbCBtZXNzYWdlcyBz ZW50IHRvIHRoaXMgZ3JvdXAuClZpZXcvUmVwbHkgT25saW5lICgjMTEyOTIyKTogaHR0cHM6Ly9l ZGsyLmdyb3Vwcy5pby9nL2RldmVsL21lc3NhZ2UvMTEyOTIyCk11dGUgVGhpcyBUb3BpYzogaHR0 cHM6Ly9ncm91cHMuaW8vbXQvMTAzMzY5NjE5Lzc2ODYxNzYKR3JvdXAgT3duZXI6IGRldmVsK293 bmVyQGVkazIuZ3JvdXBzLmlvClVuc3Vic2NyaWJlOiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cv ZGV2ZWwvdW5zdWIgW3JlYmVjY2FAb3BlbmZ3LmlvXQotPS09LT0tPS09LT0tPS09LT0tPS09LQoK DQo=