From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by sourceware.org (Postfix) with ESMTPS id 03ECB3858C54 for ; Wed, 7 Jun 2023 06:07:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 03ECB3858C54 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1686118064; x=1717654064; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=pZaaTz7aUcfp0eJOfn1A+oLR1WFixvLUl/veGX1K2I8=; b=Onxf/mePgUnCObSoEsT48IhIkyn0NID8xyFdgDaaTLr92+a7mei/S25v Zwa5FdC/bpUOV7QJdA3uRCDqdvQLzLlXoi0Q5GIpdBjk8mpfOum3alxFZ E7KiZmZ+1X6oY48ML39YBCElq2F2eUB5PbMSWNCYZD3XB9Nvo8vQbTNKy ArR5wNB+wreZ+1B8RGKv+sJoBr3t8iTPnNcaqTguG2I/bvUgNBxOkJAfT aWvJ2uSTvihvYJJ7hpRko7BW1PfqQhX0pp+W59p77uFh22t/hfQu44czD QGZvakvx+s5ucQedyOt+f/a9/JT6UWNPZuvHadoVKkR6JeaLdvDsfPy7W Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10733"; a="341550836" X-IronPort-AV: E=Sophos;i="6.00,223,1681196400"; d="scan'208,217";a="341550836" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Jun 2023 23:07:39 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10733"; a="686801298" X-IronPort-AV: E=Sophos;i="6.00,223,1681196400"; d="scan'208,217";a="686801298" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga006.jf.intel.com with ESMTP; 06 Jun 2023 23:07:39 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) 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.23; Tue, 6 Jun 2023 23:07:38 -0700 Received: from orsmsx602.amr.corp.intel.com (10.22.229.15) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Tue, 6 Jun 2023 23:07:37 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Tue, 6 Jun 2023 23:07:37 -0700 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (104.47.51.49) 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.23; Tue, 6 Jun 2023 23:07:36 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TYdsyMzNbBcd3Dzn6d9ZeNC2xmZg7FiF0qba5aACDHaYOkgJZmWovjE50B4xO5SmeA8qOiaWQRwn5dJ79CHrasCaf2lgRNck8+4YtBlI2yuwUqO1YWcL77PE8dgA0Elro9FZSOpMje9SrwJPmiMEUhXagenXz9l1rmpArb7dovkYU5rPpcx5RLgDBMqwuBNntymv6KV/5iQYnSDoV8gf+ea/IM1f/lPdF8jaPkNgmpRfJap0w5vwHG1lpVKjKF8DvSzmCc9y4V+z8/qb57TOFFFZd53zQXxwD8o0JDsqnVk6JEVl3BBII634oyD2/VMC8kDnUb4EkE0tzNnn8nbE6A== 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=pZaaTz7aUcfp0eJOfn1A+oLR1WFixvLUl/veGX1K2I8=; b=AvO/P/T4dLZk/vRXIJbAIv7dLr9IgTpXCaNbN9+jnUV8k9ImZphCfcV4oarQQQEa+ONLS+zHyomxuStzJ+CqVfOrSceq4PTH6BZ0A1NSBLrdWzszGGBn6jWbYF2z1sYg+6RoXxri2nl4nfbV8tx2ZorCPKhokZAN0q9bZskwuheRzYHNtgujkuytQeFBO94U3mpJd9InB1X3cZ7Gysi4oDdEGxaALUm7BCjBOyIjxOe83QaQJMmT1VUCGoZUr+BeKe28YHdXlT8dL4bDhxpKg/t9qKyvKdU3tO0TihNxXuKf3m8bx4WhlLM5AsIqZeUSeKyryRF78iNAziZFhq+lMQ== 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 Received: from MW5PR11MB5908.namprd11.prod.outlook.com (2603:10b6:303:194::10) by SA2PR11MB4778.namprd11.prod.outlook.com (2603:10b6:806:119::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.32; Wed, 7 Jun 2023 06:07:25 +0000 Received: from MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::127c:f4cc:e699:8f73]) by MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::127c:f4cc:e699:8f73%5]) with mapi id 15.20.6455.030; Wed, 7 Jun 2023 06:07:25 +0000 From: "Li, Pan2" To: "juzhe.zhong@rivai.ai" , kito.cheng CC: gcc-patches , Kito.cheng , palmer , palmer , jeffreyalaw , Robin Dapp Subject: RE: Re: [PATCH] RISC-V: Support RVV VLA SLP auto-vectorization Thread-Topic: Re: [PATCH] RISC-V: Support RVV VLA SLP auto-vectorization Thread-Index: AQHZmDTgLkftGIy+90qG3fp7CU20WK9+kB4cgAARqACAABsCwIAAH2eQ Date: Wed, 7 Jun 2023 06:07:25 +0000 Message-ID: References: <20230606041635.226494-1-juzhe.zhong@rivai.ai>, , <54319C8CB30D0916+20230607112052488018100@rivai.ai> In-Reply-To: <54319C8CB30D0916+20230607112052488018100@rivai.ai> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW5PR11MB5908:EE_|SA2PR11MB4778:EE_ x-ms-office365-filtering-correlation-id: 00763f46-5bdb-44c0-b55c-08db671d770f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 7pLB9u0Z/TkzS4FxM2jSHUucAa7Xshs0RTBRo/N4oE+SYFfAc4mHHrgRouW6LIpY3MXs5qrAPieWOdrI6hW2+HTvDdEH7p5Faj6E/r3KYgmmwWHac+4F4OjwilFyB9NR04BaVd+QxXdEaZFYlzzQDwHzmhYL4eaG3I5FXOPFvF6HjFvuHdOK1snIosc6Y5C3Mc/j7Xdu6HVTW8DSZybzAC2vzI2+zAzKRqYmSW9AYdf6IibL6I6uqbGr+O08DDzLwWdOycjbjbNQU3iSv07OMyN9w44XJM84ngFkUSfB77uUNTyO/grvSybVZg9ViYvLJKi33FhoLH5lruM/nOupfZJdQ+9FbOsxHB5Cwi4xluHjL1iBExLg5WZDxP+0HYz28tef6A9eyjd5UQ8E8xYnLB5YItJtoSeEVonikeHvNICZrRVg4xbCalzErGXSsOjHUg+lBJFcx3QgjcAQRqTKQtIb805acoq7zKZeTaoj18PUbp45KC51AABVAccF4pjsgp5HB7117yymYBlgCMdPOwxkcshR89dHPz8oFF5VDuPlxjMJCmxU/sDtMTmHAT/KUZR4G63EqQtUngROh70UU8dMWkBe3OjbW4C8WkmW+9Y= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW5PR11MB5908.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(366004)(346002)(136003)(376002)(39860400002)(396003)(451199021)(8676002)(8936002)(7696005)(478600001)(54906003)(110136005)(84970400001)(55016003)(41300700001)(52536014)(6506007)(5660300002)(316002)(26005)(66446008)(4326008)(66476007)(66556008)(76116006)(71200400001)(64756008)(66946007)(9686003)(53546011)(186003)(83380400001)(2906002)(30864003)(122000001)(38100700002)(82960400001)(33656002)(86362001)(38070700005)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YnFhN0FRYmloVHRtODB1RWk2SGpobXc5RGx2ZzJOcnlUSitNdHZKQlE0N050?= =?utf-8?B?RUhZaCtMMU5Femo2QzNWVDZ0cEF0K01BczBLU1ZGNm5zYklPT2hOMlZqZHRt?= =?utf-8?B?dFhMbHNGWFVBbFArb1U1b1d5L0IwWFJNTXVCVzRkK2NlL2xma3JxMHdBejg0?= =?utf-8?B?UVpuMzRSNis1c3M5UlB2UllLWDRSOTdGZUZjSzcxMHNwQkZuSjY4bkJTTFhh?= =?utf-8?B?ZlJDNHBvT3FLRlpyZU5KRzN4dWlDc0tzTVpmcjRhQjg5OHJUN0E0TS9jOWpU?= =?utf-8?B?bHBpU216TWFxamhEUi9PR2FkQWQxK0sxUUNXL3lvRTI2TDFxUHNHeDhWcnda?= =?utf-8?B?bjZEUVU4L1RLeGVZVTZaVmFQMVVkeGpBR1hjUEoyaFhGM25yQzN5UWFEL0Vu?= =?utf-8?B?d2xRZThkeW4ydUVveEZWTkJLakcvZ242emdqeUNYYTlOQ0t1UmNWU2x0VUt2?= =?utf-8?B?cVN6aHhPLzNNeTJuVksxbDVSWkJaRzMyNklpTXJObkRBWGtXTWRyTzNIR3dt?= =?utf-8?B?aHZYODNxOFl1TTdVeUExYVhDU2sySkM1bTM4bmV2TElWVkhsajFyOTUwWUVs?= =?utf-8?B?NGhqSDh3YWV6bDlibUxJNGZiZWZPTFNVZzN5K2hSUmZaL3B0bUdMbzVmU2Vh?= =?utf-8?B?K0JTbVM3czdNUGZrcGNUNVF1T21YVGlKNXhseFpSczh4SmZLbWhHd08wZVNQ?= =?utf-8?B?Z0c0RlFxZXJTRlBKVVZRM0JkMHM4M2dUUFpBM3dGWEJoT1RoTUhYdFVsMFZH?= =?utf-8?B?emgxdEpoVW9sU25QRGhaTWdWYlVRK1d1SWlrYkprSXdCOWxmOS9QVUljdEtG?= =?utf-8?B?SVpzNFV1TmZPWkkxak14ZFVMRzVqSFEwdms2dEZqMDNxUlpRT0lqWG1mWGhZ?= =?utf-8?B?cUNSVWM3ZHJMM2ZFTmdmZVZMQjJPdkJIb1EzQndtNGc1Z2lsNHJQWGZ4MDlR?= =?utf-8?B?dlVxYjBhazJrSU1jWmRIQ0E4bEEzOGc2MHZyN2tOMGtHYTJZSWVDYW9XR1Ni?= =?utf-8?B?MWEvMVVLR1Q5cm5idjdYa0xtMGEyK2ZXQ2lnS1ZnM2NJQjdyYyswMEVpR0F1?= =?utf-8?B?djBwTk5tKy9lemkzTVhWcm51Mm1TV2IvNjk5UXNmVUFtTHoxVkE1TGlDQlU4?= =?utf-8?B?bFdMT0djUzhZY29ieVdVWDUyMVBlMVZsOGc0N2dWR3lCWEs4N1VtdlBDV3NS?= =?utf-8?B?MVpKYVY4S3YzQ1FIT0w4cFliOEFuSStOQXdmbWRhV0NYRHlQLzFKcGttNXZz?= =?utf-8?B?WCtjNWQ1RlVPYjU4WXlaWEtzYzFodDgvMXBQbHNpTzNIamNiZUM1NFZQMHBT?= =?utf-8?B?MVFzRTVSN1dqbm1ZZG9iWkpYd045Y3hWOUZaMGVseW9vZm5ROTZYekZhbVJp?= =?utf-8?B?bncvMDg3S3o0RVJrcVpNQU5Ja01rUUsraHhkcDBhUnBmbUpacHZ4UzNOZ0l4?= =?utf-8?B?QXJlQVFmNHlhb2xrT0FyZHVOWnZEcFJ6MUlVV3VoYWpaUVVWYXQrOUorQ2Uz?= =?utf-8?B?S1lrcElzZTJMcGNqb3RYSVVsdnJ4REpXRFRsNVRQSUUzYStpYmRjV1AzSkNG?= =?utf-8?B?d2pHZjNYc210VHBoNjhqTTBRNXNRYnhPeVV6RTIvcE5CZ3JLdzZBWFU2eGQx?= =?utf-8?B?ZnRIOHU3Q1g4QTl5MnZkTEhnY1RHdmZaTmVxbzVMVUYyUml0WnVjSmgvZ0Qv?= =?utf-8?B?TVlMcFlNM250TndZNzJsaFJUNEE3blZPNDB3Uy9ZUkpwLzhxci9DaGhMN3ZU?= =?utf-8?B?b0lIb3FLekwxbDRabHk4VkRMaWd1Z3hIUVJ5dUxhdTlZOVdVNXg0ZEhhQXg5?= =?utf-8?B?YzUwajQ2NkFETzRiVEk1SHlYNHN2NXBqZjZjWW9kV3ZJLytoK1lXN0czWWlt?= =?utf-8?B?LzVPeTNDSWZ0NmxJYzFtQ3FJRlNrTVNOZVRjSU1pZlJPN1k2NzJHSlNPZnRp?= =?utf-8?B?WmJtVWZYdUw5Nmh2R2xZa1dhbjluVzhaQzdyYTdLTU9LNTcxRWJ4Sjc0QXlG?= =?utf-8?B?a1h0R1ZoeEIwRWxNSkxSMzlCTEdhVXdYUkxkUmNLQlVNOUQ5YzVjekg0WjdX?= =?utf-8?B?YVE4emwwL2c3czU0Z05EaHhVUy9YM0x3bHkyNnl0c3FyQ3dvdjdvUkozMmJJ?= =?utf-8?Q?uEc0XWuN/1TP3UETzNT55VJ3V?= Content-Type: multipart/alternative; boundary="_000_MW5PR11MB59083224FB0DF1B68826455FA953AMW5PR11MB5908namp_" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW5PR11MB5908.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 00763f46-5bdb-44c0-b55c-08db671d770f X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jun 2023 06:07:25.2044 (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: ZS8JFkgG4dQ/D4eGRpPSk9JVWM/hqj1uZYSh33HgyJIvb6HWJDUGXLg/C1asJjhapAwzpSaHa7a0uCM9n+SBqQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB4778 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-10.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,HTML_MESSAGE,KAM_SHORT,SCC_10_SHORT_WORD_LINES,SCC_20_SHORT_WORD_LINES,SCC_5_SHORT_WORD_LINES,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_000_MW5PR11MB59083224FB0DF1B68826455FA953AMW5PR11MB5908namp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Q29tbWl0dGVkLCB0aGFua3MgS2l0by4NCg0KUGFuDQoNCkZyb206IGp1emhl Lnpob25nQHJpdmFpLmFpIDxqdXpoZS56aG9uZ0ByaXZhaS5haT4NClNlbnQ6 IFdlZG5lc2RheSwgSnVuZSA3LCAyMDIzIDExOjIxIEFNDQpUbzoga2l0by5j aGVuZyA8a2l0by5jaGVuZ0BnbWFpbC5jb20+DQpDYzogZ2NjLXBhdGNoZXMg PGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnPjsgS2l0by5jaGVuZyA8a2l0by5j aGVuZ0BzaWZpdmUuY29tPjsgcGFsbWVyIDxwYWxtZXJAZGFiYmVsdC5jb20+ OyBwYWxtZXIgPHBhbG1lckByaXZvc2luYy5jb20+OyBqZWZmcmV5YWxhdyA8 amVmZnJleWFsYXdAZ21haWwuY29tPjsgUm9iaW4gRGFwcCA8cmRhcHAuZ2Nj QGdtYWlsLmNvbT47IExpLCBQYW4yIDxwYW4yLmxpQGludGVsLmNvbT4NClN1 YmplY3Q6IFJlOiBSZTogW1BBVENIXSBSSVNDLVY6IFN1cHBvcnQgUlZWIFZM QSBTTFAgYXV0by12ZWN0b3JpemF0aW9uDQoNCkhpLCBUaGFua3Mga2l0by4u DQoNCkkgaGF2ZSBhZGRlZCBjb21tZW50cyBhcyB5b3Ugc3VnZ2VzdGVkLg0K DQo+PiBEbyB3ZSBoYXZlIGNoZWNrIGJ1aWxkZXIubnBhdHRlcm5zICgpIG11 c3QgYmUgcG93ZXIgb2YgMiBpbiBzb21ld2hlcmU/DQpJIGFsc28gYWRkZWQ6 DQogIC8qIFdlIGRvbid0IGVuYWJsZSBTTFAgZm9yIG5vbi1wb3dlciBvZiAy IE5QQVRURVJOUy4gICovDQogIGlmICghcG93MnBfaHdpIChkLT5wZXJtLmVu Y29kaW5nKCkubnBhdHRlcm5zICgpKSkNCiAgICByZXR1cm4gZmFsc2U7DQoN CnRvby4NCg0KVG8gbWFrZSBzdXJlIHdlIHdvbid0IGJyZWFrIGFuZCBjYXVz ZSBJQ0UuDQoNCkNvbW1pdHRlZCBzb29uLg0KX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18NCmp1emhlLnpob25nQHJpdmFpLmFpPG1haWx0bzpq dXpoZS56aG9uZ0ByaXZhaS5haT4NCg0KRnJvbTogS2l0byBDaGVuZzxtYWls dG86a2l0by5jaGVuZ0BnbWFpbC5jb20+DQpEYXRlOiAyMDIzLTA2LTA3IDEw OjM4DQpUbzoganV6aGUuemhvbmdAcml2YWkuYWk8bWFpbHRvOmp1emhlLnpo b25nQHJpdmFpLmFpPg0KQ0M6IGdjYy1wYXRjaGVzPG1haWx0bzpnY2MtcGF0 Y2hlc0BnY2MuZ251Lm9yZz47IEtpdG8uY2hlbmc8bWFpbHRvOmtpdG8uY2hl bmdAc2lmaXZlLmNvbT47IHBhbG1lcjxtYWlsdG86cGFsbWVyQGRhYmJlbHQu Y29tPjsgcGFsbWVyPG1haWx0bzpwYWxtZXJAcml2b3NpbmMuY29tPjsgamVm ZnJleWFsYXc8bWFpbHRvOmplZmZyZXlhbGF3QGdtYWlsLmNvbT47IFJvYmlu IERhcHA8bWFpbHRvOnJkYXBwLmdjY0BnbWFpbC5jb20+OyBwYW4yLmxpPG1h aWx0bzpwYW4yLmxpQGludGVsLmNvbT4NClN1YmplY3Q6IFJlOiBbUEFUQ0hd IFJJU0MtVjogU3VwcG9ydCBSVlYgVkxBIFNMUCBhdXRvLXZlY3Rvcml6YXRp b24NCkZldyBjb21tZW50cywgYnV0IGFsbCBjb21tZW50cyBhcmUgYXNraW5n IGFkZGluZyBtb3JlIGNvbW1lbnQgOlANCg0KPiBAQCAtMzk4LDYgKzQxMCw0 OCBAQCBydnZfYnVpbGRlcjo6Z2V0X21lcmdlX3NjYWxhcl9tYXNrICh1bnNp Z25lZCBpbnQgaW5kZXhfaW5fcGF0dGVybikgY29uc3QNCj4gICAgcmV0dXJu IGdlbl9pbnRfbW9kZSAobWFzaywgaW5uZXJfaW50X21vZGUgKCkpOw0KPiAg fQ0KPg0KPiArLyogUmV0dXJuIHRydWUgaWYgdGhlIHZhcmlhYmxlLWxlbmd0 aCB2ZWN0b3IgaXMgc2luZ2xlIHN0ZXAuICAqLw0KPiArYm9vbA0KPiArcnZ2 X2J1aWxkZXI6OnNpbmdsZV9zdGVwX25wYXR0ZXJuc19wICgpIGNvbnN0DQoN CndoYXQgaXMgc2luZ2xlX3N0ZXBfbnBhdHRlcm5zPyBjb3VsZCB5b3UgaGF2 ZSBtb3JlIGNvbW1lbnQ/DQoNCj4gK3sNCj4gKyAgaWYgKG5lbHRzX3Blcl9w YXR0ZXJuICgpICE9IDMpDQo+ICsgICAgcmV0dXJuIGZhbHNlOw0KPiArDQo+ ICsgIHBvbHlfaW50NjQgc3RlcA0KPiArICAgID0gcnR4X3RvX3BvbHlfaW50 NjQgKGVsdCAobnBhdHRlcm5zICgpKSkgLSBydHhfdG9fcG9seV9pbnQ2NCAo ZWx0ICgwKSk7DQo+ICsgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg bnBhdHRlcm5zICgpOyBpKyspDQo+ICsgICAgew0KPiArICAgICAgcG9seV9p bnQ2NCBlbGUwID0gcnR4X3RvX3BvbHlfaW50NjQgKGVsdCAoaSkpOw0KPiAr ICAgICAgcG9seV9pbnQ2NCBlbGUxID0gcnR4X3RvX3BvbHlfaW50NjQgKGVs dCAobnBhdHRlcm5zICgpICsgaSkpOw0KPiArICAgICAgcG9seV9pbnQ2NCBl bGUyID0gcnR4X3RvX3BvbHlfaW50NjQgKGVsdCAobnBhdHRlcm5zICgpICog MiArIGkpKTsNCj4gKyAgICAgIHBvbHlfaW50NjQgZGlmZjEgPSBlbGUxIC0g ZWxlMDsNCj4gKyAgICAgIHBvbHlfaW50NjQgZGlmZjIgPSBlbGUyIC0gZWxl MTsNCj4gKyAgICAgIGlmIChtYXliZV9uZSAoc3RlcCwgZGlmZjEpIHx8IG1h eWJlX25lIChzdGVwLCBkaWZmMikpDQo+ICsgICAgICAgcmV0dXJuIGZhbHNl Ow0KPiArICAgIH0NCj4gKyAgcmV0dXJuIHRydWU7DQo+ICt9DQo+ICsNCj4g Ky8qIFJldHVybiB0cnVlIGlmIGFsbCBlbGVtZW50cyBvZiBOUEFUVEVSTlMg YXJlIGVxdWFsLg0KPiArDQo+ICsgICBFLmcuIE5QQVRURVJOUyA9IDQ6DQo+ ICsgICAgIHsgMiwgMiwgMiwgMiwgNCwgNCwgNCwgNCwgOCwgOCwgOCwgOCwg MTYsIDE2LCAxNiwgMTYsIC4uLiB9DQo+ICsgICBFLmcuIE5QQVRURVJOUyA9 IDg6DQo+ICsgICAgIHsgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOCwgOCwg OCwgOCwgOCwgOCwgOCwgOCwgLi4uIH0NCj4gKyovDQo+ICtib29sDQo+ICty dnZfYnVpbGRlcjo6bnBhdHRlcm5zX2FsbF9lcXVhbF9wICgpIGNvbnN0DQo+ ICt7DQo+ICsgIHBvbHlfaW50NjQgZWxlMCA9IHJ0eF90b19wb2x5X2ludDY0 IChlbHQgKDApKTsNCj4gKyAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDE7IGkg PCBucGF0dGVybnMgKCk7IGkrKykNCj4gKyAgICB7DQo+ICsgICAgICBwb2x5 X2ludDY0IGVsZSA9IHJ0eF90b19wb2x5X2ludDY0IChlbHQgKGkpKTsNCj4g KyAgICAgIGlmICgha25vd25fZXEgKGVsZSwgZWxlMCkpDQo+ICsgICAgICAg cmV0dXJuIGZhbHNlOw0KPiArICAgIH0NCj4gKyAgcmV0dXJuIHRydWU7DQo+ ICt9DQo+ICsNCj4gIHN0YXRpYyB1bnNpZ25lZA0KPiAgZ2V0X3NldyAobWFj aGluZV9tb2RlIG1vZGUpDQo+ICB7DQo+IEBAIC00MjUsNyArNDc5LDcgQEAg Y29uc3RfdmVjX2FsbF9zYW1lX2luX3JhbmdlX3AgKHJ0eCB4LCBIT1NUX1dJ REVfSU5UIG1pbnZhbCwNCj4gICAgIGZ1dHVyZS4gICovDQo+DQo+ICBzdGF0 aWMgYm9vbA0KPiAtY29uc3RfdmVjX2FsbF9pbl9yYW5nZV9wIChydHggdmVj LCBIT1NUX1dJREVfSU5UIG1pbnZhbCwgSE9TVF9XSURFX0lOVCBtYXh2YWwp DQo+ICtjb25zdF92ZWNfYWxsX2luX3JhbmdlX3AgKHJ0eCB2ZWMsIHBvbHlf aW50NjQgbWludmFsLCBwb2x5X2ludDY0IG1heHZhbCkNCj4gIHsNCj4gICAg aWYgKCFDT05TVF9WRUNUT1JfUCAodmVjKQ0KPiAgICAgICAgfHwgR0VUX01P REVfQ0xBU1MgKEdFVF9NT0RFICh2ZWMpKSAhPSBNT0RFX1ZFQ1RPUl9JTlQp DQo+IEBAIC00NDAsOCArNDk0LDEwIEBAIGNvbnN0X3ZlY19hbGxfaW5fcmFu Z2VfcCAocnR4IHZlYywgSE9TVF9XSURFX0lOVCBtaW52YWwsIEhPU1RfV0lE RV9JTlQgbWF4dmFsKQ0KPiAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bml0 czsgaSsrKQ0KPiAgICAgIHsNCj4gICAgICAgIHJ0eCB2ZWNfZWxlbSA9IENP TlNUX1ZFQ1RPUl9FTFQgKHZlYywgaSk7DQo+IC0gICAgICBpZiAoIUNPTlNU X0lOVF9QICh2ZWNfZWxlbSkNCj4gLSAgICAgICAgIHx8ICFJTl9SQU5HRSAo SU5UVkFMICh2ZWNfZWxlbSksIG1pbnZhbCwgbWF4dmFsKSkNCj4gKyAgICAg IHBvbHlfaW50NjQgdmFsdWU7DQo+ICsgICAgICBpZiAoIXBvbHlfaW50X3J0 eF9wICh2ZWNfZWxlbSwgJnZhbHVlKQ0KPiArICAgICAgICAgfHwgbWF5YmVf bHQgKHZhbHVlLCBtaW52YWwpDQo+ICsgICAgICAgICB8fCBtYXliZV9ndCAo dmFsdWUsIG1heHZhbCkpDQo+ICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiAg ICAgIH0NCj4gICAgcmV0dXJuIHRydWU7DQo+IEBAIC00NTMsNyArNTA5LDcg QEAgY29uc3RfdmVjX2FsbF9pbl9yYW5nZV9wIChydHggdmVjLCBIT1NUX1dJ REVfSU5UIG1pbnZhbCwgSE9TVF9XSURFX0lOVCBtYXh2YWwpDQo+ICAgICBm dXR1cmUuICAqLw0KPg0KPiAgc3RhdGljIHJ0eA0KPiAtZ2VuX2NvbnN0X3Zl Y3Rvcl9kdXAgKG1hY2hpbmVfbW9kZSBtb2RlLCBIT1NUX1dJREVfSU5UIHZh bCkNCj4gK2dlbl9jb25zdF92ZWN0b3JfZHVwIChtYWNoaW5lX21vZGUgbW9k ZSwgcG9seV9pbnQ2NCB2YWwpDQo+ICB7DQo+ICAgIHJ0eCBjID0gZ2VuX2lu dF9tb2RlICh2YWwsIEdFVF9NT0RFX0lOTkVSIChtb2RlKSk7DQo+ICAgIHJl dHVybiBnZW5fY29uc3RfdmVjX2R1cGxpY2F0ZSAobW9kZSwgYyk7DQo+IEBA IC03MjcsNyArNzgzLDEwIEBAIGVtaXRfdmxtYXhfZ2F0aGVyX2luc24gKHJ0 eCB0YXJnZXQsIHJ0eCBvcCwgcnR4IHNlbCkNCj4gICAgcnR4IGVsdDsNCj4g ICAgaW5zbl9jb2RlIGljb2RlOw0KPiAgICBtYWNoaW5lX21vZGUgZGF0YV9t b2RlID0gR0VUX01PREUgKHRhcmdldCk7DQo+IC0gIGlmIChjb25zdF92ZWNf ZHVwbGljYXRlX3AgKHNlbCwgJmVsdCkpDQo+ICsgIG1hY2hpbmVfbW9kZSBz ZWxfbW9kZSA9IEdFVF9NT0RFIChzZWwpOw0KPiArICBpZiAobWF5YmVfbmUg KEdFVF9NT0RFX1NJWkUgKGRhdGFfbW9kZSksIEdFVF9NT0RFX1NJWkUgKHNl bF9tb2RlKSkpDQo+ICsgICAgaWNvZGUgPSBjb2RlX2Zvcl9wcmVkX2dhdGhl cmVpMTYgKGRhdGFfbW9kZSk7DQo+ICsgIGVsc2UgaWYgKGNvbnN0X3ZlY19k dXBsaWNhdGVfcCAoc2VsLCAmZWx0KSkNCj4gICAgICB7DQo+ICAgICAgICBp Y29kZSA9IGNvZGVfZm9yX3ByZWRfZ2F0aGVyX3NjYWxhciAoZGF0YV9tb2Rl KTsNCj4gICAgICAgIHNlbCA9IGVsdDsNCj4gQEAgLTc0NCw3ICs4MDMsMTAg QEAgZW1pdF92bG1heF9tYXNrZWRfZ2F0aGVyX211X2luc24gKHJ0eCB0YXJn ZXQsIHJ0eCBvcCwgcnR4IHNlbCwgcnR4IG1hc2spDQo+ICAgIHJ0eCBlbHQ7 DQo+ICAgIGluc25fY29kZSBpY29kZTsNCj4gICAgbWFjaGluZV9tb2RlIGRh dGFfbW9kZSA9IEdFVF9NT0RFICh0YXJnZXQpOw0KPiAtICBpZiAoY29uc3Rf dmVjX2R1cGxpY2F0ZV9wIChzZWwsICZlbHQpKQ0KPiArICBtYWNoaW5lX21v ZGUgc2VsX21vZGUgPSBHRVRfTU9ERSAoc2VsKTsNCj4gKyAgaWYgKG1heWJl X25lIChHRVRfTU9ERV9TSVpFIChkYXRhX21vZGUpLCBHRVRfTU9ERV9TSVpF IChzZWxfbW9kZSkpKQ0KPiArICAgIGljb2RlID0gY29kZV9mb3JfcHJlZF9n YXRoZXJlaTE2IChkYXRhX21vZGUpOw0KPiArICBlbHNlIGlmIChjb25zdF92 ZWNfZHVwbGljYXRlX3AgKHNlbCwgJmVsdCkpDQo+ICAgICAgew0KPiAgICAg ICAgaWNvZGUgPSBjb2RlX2Zvcl9wcmVkX2dhdGhlcl9zY2FsYXIgKGRhdGFf bW9kZSk7DQo+ICAgICAgICBzZWwgPSBlbHQ7DQo+IEBAIC04OTUsMTEgKzk1 NywxMzAgQEAgZXhwYW5kX2NvbnN0X3ZlY3RvciAocnR4IHRhcmdldCwgcnR4 IHNyYykNCj4gICAgICAgIHJldHVybjsNCj4gICAgICB9DQo+DQo+IC0gIC8q IFRPRE86IFdlIG9ubHkgc3VwcG9ydCBjb25zdCBkdXBsaWNhdGUgdmVjdG9y IGZvciBub3cuIE1vcmUgY2FzZXMNCj4gLSAgICAgd2lsbCBiZSBzdXBwb3J0 ZWQgd2hlbiB3ZSBzdXBwb3J0IGF1dG8tdmVjdG9yaXphdGlvbjoNCj4gKyAg LyogSGFuZGxlIHZhcmlhYmxlLWxlbmd0aCB2ZWN0b3IuICAqLw0KPiArICB1 bnNpZ25lZCBpbnQgbmVsdHNfcGVyX3BhdHRlcm4gPSBDT05TVF9WRUNUT1Jf TkVMVFNfUEVSX1BBVFRFUk4gKHNyYyk7DQo+ICsgIHVuc2lnbmVkIGludCBu cGF0dGVybnMgPSBDT05TVF9WRUNUT1JfTlBBVFRFUk5TIChzcmMpOw0KPiAr ICBydnZfYnVpbGRlciBidWlsZGVyIChtb2RlLCBucGF0dGVybnMsIG5lbHRz X3Blcl9wYXR0ZXJuKTsNCj4gKyAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7 IGkgPCBuZWx0c19wZXJfcGF0dGVybjsgaSsrKQ0KPiArICAgIHsNCj4gKyAg ICAgIGZvciAodW5zaWduZWQgaW50IGogPSAwOyBqIDwgbnBhdHRlcm5zOyBq KyspDQo+ICsgICAgICAgYnVpbGRlci5xdWlja19wdXNoIChDT05TVF9WRUNU T1JfRUxUIChzcmMsIGkgKiBucGF0dGVybnMgKyBqKSk7DQo+ICsgICAgfQ0K PiArICBidWlsZGVyLmZpbmFsaXplICgpOw0KPg0KPiAtICAgICAgIDEuIG11 bHRpcGxlIGVsdHMgZHVwbGljYXRlIHZlY3Rvci4NCj4gLSAgICAgICAyLiBt dWx0aXBsZSBwYXR0ZXJucyB3aXRoIG11bHRpcGxlIGVsdHMuICAqLw0KPiAr ICBpZiAoQ09OU1RfVkVDVE9SX0RVUExJQ0FURV9QIChzcmMpKQ0KDQoNCkkg dGhvdWdodCBpdCdzIGEgcHJlZGljYXRvciBmb3IgYSB2ZWN0b3Igd2l0aCBz YW1lIHZhbHVlIGxpa2UgW2EsIGEsDQphLCBhLC4uLl0gd2hlbiBJIHJlYWQg dGhlIGNoZWNrDQpidXQgc2VlbXMgbGlrZSBub3Q/IHNvIGNvdWxkIHlvdSBh ZGQgbW9yZSBjb21tZW50IGZvciB0aGF0Pw0KDQo+ICsgICAgew0KPiArICAg ICAgaWYgKGJ1aWxkZXIuY2FuX2R1cGxpY2F0ZV9yZXBlYXRpbmdfc2VxdWVu Y2VfcCAoKSkNCg0KQWxzbyBtb3JlIGNvbW1lbnQgYWJvdXQgdGhpcw0KDQo+ ICsgICAgICAgew0KPiArICAgICAgICAgcnR4IGVsZSA9IGJ1aWxkZXIuZ2V0 X21lcmdlZF9yZXBlYXRpbmdfc2VxdWVuY2UgKCk7DQo+ICsgICAgICAgICBy dHggZHVwID0gZXhwYW5kX3ZlY3Rvcl9icm9hZGNhc3QgKGJ1aWxkZXIubmV3 X21vZGUgKCksIGVsZSk7DQo+ICsgICAgICAgICBlbWl0X21vdmVfaW5zbiAo dGFyZ2V0LCBnZW5fbG93cGFydCAobW9kZSwgZHVwKSk7DQo+ICsgICAgICAg fQ0KPiArICAgICAgZWxzZQ0KDQphbmQgdGhpcy4NCg0KPiArICAgICAgIHsN Cj4gKyAgICAgICAgIHVuc2lnbmVkIGludCBuYml0cyA9IG5wYXR0ZXJucyAt IDE7DQo+ICsNCj4gKyAgICAgICAgIC8qIEdlbmVyYXRlIHZpZCA9IHsgMCwg MSwgMiwgMywgNCwgNSwgNiwgNywgLi4uIH0uICAqLw0KPiArICAgICAgICAg cnR4IHZpZCA9IGdlbl9yZWdfcnR4IChidWlsZGVyLmludF9tb2RlICgpKTsN Cj4gKyAgICAgICAgIHJ0eCBvcFtdID0ge3ZpZH07DQo+ICsgICAgICAgICBl bWl0X3ZsbWF4X2luc24gKGNvZGVfZm9yX3ByZWRfc2VyaWVzIChidWlsZGVy LmludF9tb2RlICgpKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg UlZWX01JU0NfT1AsIG9wKTsNCj4gKw0KPiArICAgICAgICAgLyogR2VuZXJh dGUgdmlkX3JlcGVhdCA9IHsgMCwgMSwgLi4uIG5iaXRzLCAuLi4gfSAgKi8N Cj4gKyAgICAgICAgIHJ0eCB2aWRfcmVwZWF0ID0gZ2VuX3JlZ19ydHggKGJ1 aWxkZXIuaW50X21vZGUgKCkpOw0KPiArICAgICAgICAgcnR4IGFuZF9vcHNb XSA9IHt2aWRfcmVwZWF0LCB2aWQsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgIGdlbl9pbnRfbW9kZSAobmJpdHMsIGJ1aWxkZXIuaW5uZXJfaW50 X21vZGUgKCkpfTsNCj4gKyAgICAgICAgIGVtaXRfdmxtYXhfaW5zbiAoY29k ZV9mb3JfcHJlZF9zY2FsYXIgKEFORCwgYnVpbGRlci5pbnRfbW9kZSAoKSks DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIFJWVl9CSU5PUCwgYW5k X29wcyk7DQo+ICsNCj4gKyAgICAgICAgIHJ0eCB0bXAgPSBnZW5fcmVnX3J0 eCAoYnVpbGRlci5tb2RlICgpKTsNCj4gKyAgICAgICAgIHJ0eCBkdXBfb3Bz W10gPSB7dG1wLCBidWlsZGVyLmVsdCAoMCl9Ow0KPiArICAgICAgICAgZW1p dF92bG1heF9pbnNuIChjb2RlX2Zvcl9wcmVkX2Jyb2FkY2FzdCAoYnVpbGRl ci5tb2RlICgpKSwgUlZWX1VOT1AsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgIGR1cF9vcHMpOw0KPiArICAgICAgICAgZm9yICh1bnNpZ25lZCBp bnQgaSA9IDE7IGkgPCBidWlsZGVyLm5wYXR0ZXJucyAoKTsgaSsrKQ0KPiAr ICAgICAgICAgICB7DQo+ICsgICAgICAgICAgICAgLyogR2VuZXJhdGUgbWFz ayBhY2NvcmRpbmcgdG8gaS4gICovDQo+ICsgICAgICAgICAgICAgcnR4IG1h c2sgPSBnZW5fcmVnX3J0eCAoYnVpbGRlci5tYXNrX21vZGUgKCkpOw0KPiAr ICAgICAgICAgICAgIHJ0eCBjb25zdF92ZWMgPSBnZW5fY29uc3RfdmVjdG9y X2R1cCAoYnVpbGRlci5pbnRfbW9kZSAoKSwgaSk7DQo+ICsgICAgICAgICAg ICAgZXhwYW5kX3ZlY19jbXAgKG1hc2ssIEVRLCB2aWRfcmVwZWF0LCBjb25z dF92ZWMpOw0KPiArDQo+ICsgICAgICAgICAgICAgLyogTWVyZ2Ugc2NhbGFy IHRvIGVhY2ggaS4gICovDQo+ICsgICAgICAgICAgICAgcnR4IHRtcDIgPSBn ZW5fcmVnX3J0eCAoYnVpbGRlci5tb2RlICgpKTsNCj4gKyAgICAgICAgICAg ICBydHggbWVyZ2Vfb3BzW10gPSB7dG1wMiwgdG1wLCBidWlsZGVyLmVsdCAo aSksIG1hc2t9Ow0KPiArICAgICAgICAgICAgIGluc25fY29kZSBpY29kZSA9 IGNvZGVfZm9yX3ByZWRfbWVyZ2Vfc2NhbGFyIChidWlsZGVyLm1vZGUgKCkp Ow0KPiArICAgICAgICAgICAgIGVtaXRfdmxtYXhfbWVyZ2VfaW5zbiAoaWNv ZGUsIFJWVl9NRVJHRV9PUCwgbWVyZ2Vfb3BzKTsNCj4gKyAgICAgICAgICAg ICB0bXAgPSB0bXAyOw0KPiArICAgICAgICAgICB9DQo+ICsgICAgICAgICBl bWl0X21vdmVfaW5zbiAodGFyZ2V0LCB0bXApOw0KPiArICAgICAgIH0NCj4g KyAgICAgIHJldHVybjsNCj4gKyAgICB9DQo+ICsgIGVsc2UgaWYgKENPTlNU X1ZFQ1RPUl9TVEVQUEVEX1AgKHNyYykpDQo+ICsgICAgew0KPiArICAgICAg Z2NjX2Fzc2VydCAoR0VUX01PREVfQ0xBU1MgKG1vZGUpID09IE1PREVfVkVD VE9SX0lOVCk7DQo+ICsgICAgICBpZiAoYnVpbGRlci5zaW5nbGVfc3RlcF9u cGF0dGVybnNfcCAoKSkNCj4gKyAgICAgICB7DQo+ICsgICAgICAgICAvKiBE ZXNjcmliZSB0aGUgY2FzZSBieSBjaG9vc2luZyBOUEFUVEVSTlMgPSA0IGFz IGFuIGV4YW1wbGUuICAqLw0KPiArICAgICAgICAgcnR4IGJhc2UsIHN0ZXA7 DQo+ICsgICAgICAgICBpZiAoYnVpbGRlci5ucGF0dGVybnNfYWxsX2VxdWFs X3AgKCkpDQo+ICsgICAgICAgICAgIHsNCj4gKyAgICAgICAgICAgICAvKiBH ZW5lcmF0ZSB0aGUgdmFyaWFibGUtbGVuZ3RoIHZlY3RvciBhcyBiZWxvdzoN Cj4gKyAgICAgICAgICAgICAgICBFLmcuIHsgMCwgMCwgMCwgMCwgOCwgOCwg OCwgOCwgMTYsIDE2LCAxNiwgMTYsIC4uLiB9ICovDQoNCkFkZCBtb3JlIGNv bW1lbnQgbGlrZToNCnsgYSwgYSwgYSwgYSwgYSArIHN0ZXAsIGEgKyBzdGVw LCBhICsgc3RlcCwgYSArIHN0ZXAsIGEgKyBzdGVwICogMiwgYQ0KKyBzdGVw ICogMiwsIGEgKyBzdGVwICogMiwsIGEgKyBzdGVwICogMiwgLi4ufQ0KDQo+ ICsgICAgICAgICAgICAgLyogU3RlcCAxOiBHZW5lcmF0ZSBiYXNlID0geyAw LCAwLCAwLCAwLCAwLCAwLCAwLCAuLi4gfS4gICovDQo+ICsgICAgICAgICAg ICAgYmFzZSA9IGV4cGFuZF92ZWN0b3JfYnJvYWRjYXN0IChidWlsZGVyLm1v ZGUgKCksIGJ1aWxkZXIuZWx0ICgwKSk7DQo+ICsgICAgICAgICAgIH0NCj4g KyAgICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAgew0KPiArICAgICAgICAg ICAgIC8qIEdlbmVyYXRlIHRoZSB2YXJpYWJsZS1sZW5ndGggdmVjdG9yIGFz IGJlbG93Og0KPiArICAgICAgICAgICAgICAgIEUuZy4geyAwLCA2LCAwLCA2 LCA4LCAxNCwgOCwgMTQsIDE2LCAyMiwgMTYsIDIyLCAuLi4gfSAqLw0KDQpB ZGQgbW9yZSBjb21tZW50IGxpa2U6DQp7IGEsIGIsIGEsIGIsIGEgKyBzdGVw LCBiICsgc3RlcCwgYSArIHN0ZXAgKjIsIGIgKyBzdGVwICoyLCAuLi59DQoN Cj4gKyAgICAgICAgICAgICAvKiBTdGVwIDE6IEdlbmVyYXRlIGJhc2UgPSB7 IDAsIDYsIDAsIDYsIC4uLiB9LiAgKi8NCj4gKyAgICAgICAgICAgICBydnZf YnVpbGRlciBuZXdfYnVpbGRlciAoYnVpbGRlci5tb2RlICgpLCBidWlsZGVy Lm5wYXR0ZXJucyAoKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMSk7DQo+ICsgICAgICAgICAgICAgZm9yICh1bnNpZ25l ZCBpbnQgaSA9IDA7IGkgPCBidWlsZGVyLm5wYXR0ZXJucyAoKTsgKytpKQ0K PiArICAgICAgICAgICAgICAgbmV3X2J1aWxkZXIucXVpY2tfcHVzaCAoYnVp bGRlci5lbHQgKGkpKTsNCj4gKyAgICAgICAgICAgICBydHggbmV3X3ZlYyA9 IG5ld19idWlsZGVyLmJ1aWxkICgpOw0KPiArICAgICAgICAgICAgIGJhc2Ug PSBnZW5fcmVnX3J0eCAoYnVpbGRlci5tb2RlICgpKTsNCj4gKyAgICAgICAg ICAgICBlbWl0X21vdmVfaW5zbiAoYmFzZSwgbmV3X3ZlYyk7DQo+ICsgICAg ICAgICAgIH0NCj4gKw0KPiArICAgICAgICAgLyogU3RlcCAyOiBHZW5lcmF0 ZSBzdGVwID0gZ2VuX2ludF9tb2RlIChkaWZmLCBtb2RlKS4gICovDQo+ICsg ICAgICAgICBwb2x5X2ludDY0IHZhbHVlMSA9IHJ0eF90b19wb2x5X2ludDY0 IChidWlsZGVyLmVsdCAoMCkpOw0KPiArICAgICAgICAgcG9seV9pbnQ2NCB2 YWx1ZTINCj4gKyAgICAgICAgICAgPSBydHhfdG9fcG9seV9pbnQ2NCAoYnVp bGRlci5lbHQgKGJ1aWxkZXIubnBhdHRlcm5zICgpKSk7DQo+ICsgICAgICAg ICBwb2x5X2ludDY0IGRpZmYgPSB2YWx1ZTIgLSB2YWx1ZTE7DQo+ICsgICAg ICAgICBzdGVwID0gZ2VuX2ludF9tb2RlIChkaWZmLCBidWlsZGVyLmlubmVy X21vZGUgKCkpOw0KPiArDQo+ICsgICAgICAgICAvKiBTdGVwIDM6IEdlbmVy YXRlIHZpZCA9IHsgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgLi4uIH0uICAq Lw0KPiArICAgICAgICAgcnR4IHZpZCA9IGdlbl9yZWdfcnR4IChidWlsZGVy Lm1vZGUgKCkpOw0KPiArICAgICAgICAgcnR4IG9wW10gPSB7dmlkfTsNCj4g KyAgICAgICAgIGVtaXRfdmxtYXhfaW5zbiAoY29kZV9mb3JfcHJlZF9zZXJp ZXMgKGJ1aWxkZXIubW9kZSAoKSksIFJWVl9NSVNDX09QLA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICBvcCk7DQo+ICsNCj4gKyAgICAgICAgIC8q IFN0ZXAgNDogR2VuZXJhdGUgZmFjdG9yID0geyAwLCAwLCAwLCAwLCAxLCAx LCAxLCAxLCAuLi4gfS4gICovDQo+ICsgICAgICAgICBydHggZmFjdG9yID0g Z2VuX3JlZ19ydHggKGJ1aWxkZXIubW9kZSAoKSk7DQo+ICsgICAgICAgICBy dHggc2hpZnRfb3BzW10NCj4gKyAgICAgICAgICAgPSB7ZmFjdG9yLCB2aWQs DQo+ICsgICAgICAgICAgICAgIGdlbl9pbnRfbW9kZSAoZXhhY3RfbG9nMiAo YnVpbGRlci5ucGF0dGVybnMgKCkpLCBQbW9kZSl9Ow0KDQpEbyB3ZSBoYXZl IGNoZWNrIGJ1aWxkZXIubnBhdHRlcm5zICgpIG11c3QgYmUgcG93ZXIgb2Yg MiBpbiBzb21ld2hlcmU/DQoNCj4gKyAgICAgICAgIGVtaXRfdmxtYXhfaW5z biAoY29kZV9mb3JfcHJlZF9zY2FsYXIgKExTSElGVFJULCBidWlsZGVyLm1v ZGUgKCkpLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBSVlZfQklO T1AsIHNoaWZ0X29wcyk7DQo+ICsNCj4gKyAgICAgICAgIC8qIFN0ZXAgNTog R2VuZXJhdGUgYWRqdXN0ZWQgc3RlcCA9IHsgMCwgMCwgMCwgMCwgZGlmZiwg ZGlmZiwgLi4uIH0gKi8NCj4gKyAgICAgICAgIHJ0eCBhZGp1c3RlZF9zdGVw ID0gZ2VuX3JlZ19ydHggKGJ1aWxkZXIubW9kZSAoKSk7DQo+ICsgICAgICAg ICBydHggbXVsX29wc1tdID0ge2FkanVzdGVkX3N0ZXAsIGZhY3Rvciwgc3Rl cH07DQo+ICsgICAgICAgICBlbWl0X3ZsbWF4X2luc24gKGNvZGVfZm9yX3By ZWRfc2NhbGFyIChNVUxULCBidWlsZGVyLm1vZGUgKCkpLA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICBSVlZfQklOT1AsIG11bF9vcHMpOw0KPiAr DQo+ICsgICAgICAgICAvKiBTdGVwIDY6IEdlbmVyYXRlIHRoZSBmaW5hbCBy ZXN1bHQuICAqLw0KPiArICAgICAgICAgcnR4IGFkZF9vcHNbXSA9IHt0YXJn ZXQsIGJhc2UsIGFkanVzdGVkX3N0ZXB9Ow0KPiArICAgICAgICAgZW1pdF92 bG1heF9pbnNuIChjb2RlX2Zvcl9wcmVkIChQTFVTLCBidWlsZGVyLm1vZGUg KCkpLCBSVlZfQklOT1AsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg IGFkZF9vcHMpOw0KPiArICAgICAgIH0NCj4gKyAgICAgIGVsc2UNCj4gKyAg ICAgICAvKiBUT0RPOiBXZSB3aWxsIGVuYWJsZSBtb3JlIHZhcmlhYmxlLWxl bmd0aCB2ZWN0b3IgaW4gdGhlIGZ1dHVyZS4gICovDQo+ICsgICAgICAgZ2Nj X3VucmVhY2hhYmxlICgpOw0KPiArICAgIH0NCj4gKyAgZWxzZQ0KPiArICAg IGdjY191bnJlYWNoYWJsZSAoKTsNCj4gIH0NCj4NCj4gIC8qIEV4cGFuZCBh IHByZS1SQSBSVlYgZGF0YSBtb3ZlIGZyb20gU1JDIHRvIERFU1QuDQoNCk9u IFdlZCwgSnVuIDcsIDIwMjMgYXQgODozOeKAr0FNIGp1emhlLnpob25nQHJp dmFpLmFpPG1haWx0bzpqdXpoZS56aG9uZ0ByaXZhaS5haT4NCjxqdXpoZS56 aG9uZ0ByaXZhaS5haTxtYWlsdG86anV6aGUuemhvbmdAcml2YWkuYWk+PiB3 cm90ZToNCj4NCj4gUGluZyB0aGlzIHBhdGNoLiBPayBmb3IgdHJ1bmsgPw0K PiBTaW5jZSBmb2xsb3dpbmcgcGF0Y2hlcyBhcmUgYmxvY2tlZCBieSB0aGlz Lg0KPg0KPg0KPg0KPiBqdXpoZS56aG9uZ0ByaXZhaS5haTxtYWlsdG86anV6 aGUuemhvbmdAcml2YWkuYWk+DQo+DQo+IEZyb206IGp1emhlLnpob25nDQo+ IERhdGU6IDIwMjMtMDYtMDYgMTI6MTYNCj4gVG86IGdjYy1wYXRjaGVzDQo+ IENDOiBraXRvLmNoZW5nOyBraXRvLmNoZW5nOyBwYWxtZXI7IHBhbG1lcjsg amVmZnJleWFsYXc7IHJkYXBwLmdjYzsgcGFuMi5saTsgSnV6aGUtWmhvbmcN Cj4gU3ViamVjdDogW1BBVENIXSBSSVNDLVY6IFN1cHBvcnQgUlZWIFZMQSBT TFAgYXV0by12ZWN0b3JpemF0aW9uDQo+IEZyb206IEp1emhlLVpob25nIDxq dXpoZS56aG9uZ0ByaXZhaS5haTxtYWlsdG86anV6aGUuemhvbmdAcml2YWku YWk+Pg0KPg0KPiBUaGlzIHBhdGNoIGVuYWJsZXMgYmFzaWMgVkxBIFNMUCBh dXRvLXZlY3Rvcml6YXRpb24uDQo+IENvbnNpZGVyIHRoaXMgZm9sbG93aW5n IGNhc2U6DQo+IHZvaWQNCj4gZiAodWludDhfdCAqcmVzdHJpY3QgYSwgdWlu dDhfdCAqcmVzdHJpY3QgYikNCj4gew0KPiAgIGZvciAoaW50IGkgPSAwOyBp IDwgMTAwOyArK2kpDQo+ICAgICB7DQo+ICAgICAgIGFbaSAqIDggKyAwXSA9 IGJbaSAqIDggKyA3XSArIDE7DQo+ICAgICAgIGFbaSAqIDggKyAxXSA9IGJb aSAqIDggKyA3XSArIDI7DQo+ICAgICAgIGFbaSAqIDggKyAyXSA9IGJbaSAq IDggKyA3XSArIDg7DQo+ICAgICAgIGFbaSAqIDggKyAzXSA9IGJbaSAqIDgg KyA3XSArIDQ7DQo+ICAgICAgIGFbaSAqIDggKyA0XSA9IGJbaSAqIDggKyA3 XSArIDU7DQo+ICAgICAgIGFbaSAqIDggKyA1XSA9IGJbaSAqIDggKyA3XSAr IDY7DQo+ICAgICAgIGFbaSAqIDggKyA2XSA9IGJbaSAqIDggKyA3XSArIDc7 DQo+ICAgICAgIGFbaSAqIDggKyA3XSA9IGJbaSAqIDggKyA3XSArIDM7DQo+ ICAgICB9DQo+IH0NCj4NCj4gVG8gZW5hYmxlIFZMQSBTTFAgYXV0by12ZWN0 b3JpemF0aW9uLCB3ZSBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgdGhpcyBm b2xsb3dpbmcgY29uc3QgdmVjdG9yOg0KPg0KPiAxLiBOUEFUVEVSTlMgPSA4 LCBORUxUU19QRVJfUEFUVEVSTiA9IDMuDQo+IHsgMCwgMCwgMCwgMCwgMCwg MCwgMCwgMCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgMTYsIDE2LCAxNiwg MTYsIDE2LCAxNiwgMTYsIDE2LCAuLi4gfQ0KPg0KPiAyLiBOUEFUVEVSTlMg PSA4LCBORUxUU19QRVJfUEFUVEVSTiA9IDEuDQo+IHsgMSwgMiwgOCwgNCwg NSwgNiwgNywgMywgLi4uIH0NCj4NCj4gQW5kIHRoZXNlIHZlY3RvciBjYW4g YmUgZ2VuZXJhdGVkIGF0IHByb2xvZ3VlLg0KPg0KPiBBZnRlciB0aGlzIHBh dGNoLCB3ZSBlbmQgdXAgd2l0aCB0aGlzIGZvbGxvd2luZyBjb2RlZ2VuOg0K Pg0KPiBQcm9sb2d1ZToNCj4gLi4uDQo+ICAgICAgICAgdnNldHZsaSBhNyx6 ZXJvLGUxNixtMix0YSxtYQ0KPiAgICAgICAgIHZpZC52ICAgdjQNCj4gICAg ICAgICB2c3JsLnZpIHY0LHY0LDMNCj4gICAgICAgICBsaSAgICAgIGEzLDgN Cj4gICAgICAgICB2bXVsLnZ4IHY0LHY0LGEzICA9PT0+IHY0ID0geyAwLCAw LCAwLCAwLCAwLCAwLCAwLCAwLCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCAx NiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIC4uLiB9DQo+IC4uLg0K PiAgICAgICAgIGxpICAgICAgdDEsNjc2MzMxNTINCj4gICAgICAgICBhZGRp ICAgIHQxLHQxLDUxMw0KPiAgICAgICAgIGxpICAgICAgYTMsNTA3OTA0MDAN Cj4gICAgICAgICBhZGRpICAgIGEzLGEzLDE1NDENCj4gICAgICAgICBzbGxp ICAgIGEzLGEzLDMyDQo+ICAgICAgICAgYWRkICAgICBhMyxhMyx0MQ0KPiAg ICAgICAgIHZzZXR2bGkgdDEsemVybyxlNjQsbTEsdGEsbWENCj4gICAgICAg ICB2bXYudi54IHYzLGEzICAgPT09PiB2MyA9IHsgMSwgMiwgOCwgNCwgNSwg NiwgNywgMywgLi4uIH0NCj4gLi4uDQo+IExvb3BCb2R5Og0KPiAuLi4NCj4g ICAgICAgICBtaW4gICAgIGEzLC4uLg0KPiAgICAgICAgIHZzZXR2bGkgemVy byxhMyxlOCxtMSx0YSxtYQ0KPiAgICAgICAgIHZsZTgudiAgdjIsMChhNikN Cj4gICAgICAgICB2c2V0dmxpIGE3LHplcm8sZTgsbTEsdGEsbWENCj4gICAg ICAgICB2cmdhdGhlcmVpMTYudnYgdjEsdjIsdjQNCj4gICAgICAgICB2YWRk LnZ2IHYxLHYxLHYzDQo+ICAgICAgICAgdnNldHZsaSB6ZXJvLGEzLGU4LG0x LHRhLG1hDQo+ICAgICAgICAgdnNlOC52ICB2MSwwKGEyKQ0KPiAgICAgICAg IGFkZCAgICAgYTYsYTYsYTQNCj4gICAgICAgICBhZGQgICAgIGEyLGEyLGE0 DQo+ICAgICAgICAgbXYgICAgICBhMyxhNQ0KPiAgICAgICAgIGFkZCAgICAg YTUsYTUsdDENCj4gICAgICAgICBiZ3R1ICAgIGEzLGE0LC5MMw0KPiAuLi4N Cj4NCj4gTm90ZTogd2UgbmVlZCB0byB1c2UgInZyZ2F0aGVyZWkxNi52diIg aW5zdGVhZCBvZiAidnJnYXRoZXIudnYiIGZvciBTRVcgPSA4IHNpbmNlICJ2 cmdhdGhlcmVpMTYudnYiIGNhbiBjb3ZlciBsYXJnZXINCj4gICAgICAgcmFu Z2UgdGhhbiAidnJnYXRoZXIudnYiICh3aGljaCBvbmx5IGNhbiBtYXhpbXVt IGVsZW1lbnQgaW5kZXggPSAyNTUpLg0KPiBFcGlsb2d1ZToNCj4gICAgICAg ICBsYnUgICAgIGE1LDc5OShhMSkNCj4gICAgICAgICBhZGRpdyAgIGE0LGE1 LDENCj4gICAgICAgICBzYiAgICAgIGE0LDc5MihhMCkNCj4gICAgICAgICBh ZGRpdyAgIGE0LGE1LDINCj4gICAgICAgICBzYiAgICAgIGE0LDc5MyhhMCkN Cj4gICAgICAgICBhZGRpdyAgIGE0LGE1LDgNCj4gICAgICAgICBzYiAgICAg IGE0LDc5NChhMCkNCj4gICAgICAgICBhZGRpdyAgIGE0LGE1LDQNCj4gICAg ICAgICBzYiAgICAgIGE0LDc5NShhMCkNCj4gICAgICAgICBhZGRpdyAgIGE0 LGE1LDUNCj4gICAgICAgICBzYiAgICAgIGE0LDc5NihhMCkNCj4gICAgICAg ICBhZGRpdyAgIGE0LGE1LDYNCj4gICAgICAgICBzYiAgICAgIGE0LDc5Nyhh MCkNCj4gICAgICAgICBhZGRpdyAgIGE0LGE1LDcNCj4gICAgICAgICBzYiAg ICAgIGE0LDc5OChhMCkNCj4gICAgICAgICBhZGRpdyAgIGE1LGE1LDMNCj4g ICAgICAgICBzYiAgICAgIGE1LDc5OShhMCkNCj4gICAgICAgICByZXQNCj4N Cj4gVGhlcmUgaXMgb25lIG1vcmUgbGFzdCB0aGluZyB3ZSBuZWVkIHRvIGRv IGlzIHRoZSAiRXBpbG9ndWUgYXV0by12ZWN0b3JpemF0aW9uIiB3aGljaCBu ZWVkcyBWTFMgbW9kZXMgc3VwcG9ydC4NCj4gSSB3aWxsIHN1cHBvcnQgVkxT IG1vZGVzIGZvciAiRXBpbG9ndWUgYXV0by12ZWN0b3JpemF0aW9uIiBpbiB0 aGUgZnV0dXJlLg0KPg0KPiBnY2MvQ2hhbmdlTG9nOg0KPg0KPiAgICAgICAg ICogY29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5oIChleHBhbmRfdmVjX3Bl cm1fY29uc3QpOiBOZXcgZnVuY3Rpb24uDQo+ICAgICAgICAgKiBjb25maWcv cmlzY3YvcmlzY3Ytdi5jYyAocnZ2X2J1aWxkZXI6OmNhbl9kdXBsaWNhdGVf cmVwZWF0aW5nX3NlcXVlbmNlX3ApOiBTdXBwb3J0IFBPTFkgaGFuZGxpbmcu DQo+ICAgICAgICAgKHJ2dl9idWlsZGVyOjpzaW5nbGVfc3RlcF9ucGF0dGVy bnNfcCk6IE5ldyBmdW5jdGlvbi4NCj4gICAgICAgICAocnZ2X2J1aWxkZXI6 Om5wYXR0ZXJuc19hbGxfZXF1YWxfcCk6IERpdHRvLg0KPiAgICAgICAgIChj b25zdF92ZWNfYWxsX2luX3JhbmdlX3ApOiBTdXBwb3J0IFBPTFkgaGFuZGxp bmcuDQo+ICAgICAgICAgKGdlbl9jb25zdF92ZWN0b3JfZHVwKTogRGl0dG8u DQo+ICAgICAgICAgKGVtaXRfdmxtYXhfZ2F0aGVyX2luc24pOiBBZGQgdnJn YXRoZXJlaTE2Lg0KPiAgICAgICAgIChlbWl0X3ZsbWF4X21hc2tlZF9nYXRo ZXJfbXVfaW5zbik6IERpdHRvLg0KPiAgICAgICAgIChleHBhbmRfY29uc3Rf dmVjdG9yKTogQWRkIFZMQSBTTFAgY29uc3QgdmVjdG9yIHN1cHBvcnQuDQo+ ICAgICAgICAgKGV4cGFuZF92ZWNfcGVybSk6IFN1cHBvcnQgUE9MWS4NCj4g ICAgICAgICAoc3RydWN0IGV4cGFuZF92ZWNfcGVybV9kKTogTmV3IHN0cnVj dC4NCj4gICAgICAgICAoc2h1ZmZsZV9nZW5lcmljX3BhdHRlcm5zKTogTmV3 IGZ1bmN0aW9uLg0KPiAgICAgICAgIChleHBhbmRfdmVjX3Blcm1fY29uc3Rf MSk6IERpdHRvLg0KPiAgICAgICAgIChleHBhbmRfdmVjX3Blcm1fY29uc3Qp OiBEaXR0by4NCj4gICAgICAgICAqIGNvbmZpZy9yaXNjdi9yaXNjdi5jYyAo cmlzY3ZfdmVjdG9yaXplX3ZlY19wZXJtX2NvbnN0KTogRGl0dG8uDQo+ICAg ICAgICAgKFRBUkdFVF9WRUNUT1JJWkVfVkVDX1BFUk1fQ09OU1QpOiBOZXcg dGFyZ2V0aG9vay4NCj4NCj4gZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6DQo+ DQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Nj YWxhYmxlLTEuYzogQWRhcHQgdGVzdGNhc2UgZm9yIFZMQSB2ZWN0b3JpemVy Lg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy92 LTEuYzogRGl0dG8uDQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2 di9hdXRvdmVjL3p2ZTMyZl96dmwxMjhiLTEuYzogRGl0dG8uDQo+ICAgICAg ICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTMyeF96dmwx MjhiLTEuYzogRGl0dG8uDQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2 L3J2di9hdXRvdmVjL3p2ZTY0ZC0xLmM6IERpdHRvLg0KPiAgICAgICAgICog Z2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96dmU2NGRfenZsMTI4Yi0x LmM6IERpdHRvLg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYv YXV0b3ZlYy96dmU2NGYtMS5jOiBEaXR0by4NCj4gICAgICAgICAqIGdjYy50 YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvenZlNjRmX3p2bDEyOGItMS5jOiBE aXR0by4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92 ZWMvenZlNjR4X3p2bDEyOGItMS5jOiBEaXR0by4NCj4gICAgICAgICAqIGdj Yy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAtMS5jOiBO ZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvcGFydGlhbC9zbHAtMi5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAq IGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAtMy5j OiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2 L2F1dG92ZWMvcGFydGlhbC9zbHAtNC5jOiBOZXcgdGVzdC4NCj4gICAgICAg ICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAt NS5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3Yv cnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAtNi5jOiBOZXcgdGVzdC4NCj4gICAg ICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9z bHAtNy5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlz Y3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHBfcnVuLTEuYzogTmV3IHRlc3Qu DQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Bh cnRpYWwvc2xwX3J1bi0yLmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2Nj LnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tMy5j OiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2 L2F1dG92ZWMvcGFydGlhbC9zbHBfcnVuLTQuYzogTmV3IHRlc3QuDQo+ICAg ICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwv c2xwX3J1bi01LmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tNi5jOiBOZXcg dGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92 ZWMvcGFydGlhbC9zbHBfcnVuLTcuYzogTmV3IHRlc3QuDQo+DQo+IC0tLQ0K PiBnY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5oICAgICAgICAgICAg ICAgfCAgIDIgKw0KPiBnY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXYuY2MgICAg ICAgICAgICAgICAgICAgfCAzNTIgKysrKysrKysrKysrKysrKy0tDQo+IGdj Yy9jb25maWcvcmlzY3YvcmlzY3YuY2MgICAgICAgICAgICAgICAgICAgICB8 ICAxNiArDQo+IC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC0x LmMgICAgICAgICB8ICAyMiArKw0KPiAuLi4vcmlzY3YvcnZ2L2F1dG92ZWMv cGFydGlhbC9zbHAtMi5jICAgICAgICAgfCAgMjIgKysNCj4gLi4uL3Jpc2N2 L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTMuYyAgICAgICAgIHwgIDIyICsr DQo+IC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC00LmMgICAg ICAgICB8ICAyMiArKw0KPiAuLi4vcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlh bC9zbHAtNS5jICAgICAgICAgfCAgMjIgKysNCj4gLi4uL3Jpc2N2L3J2di9h dXRvdmVjL3BhcnRpYWwvc2xwLTYuYyAgICAgICAgIHwgIDIzICsrDQo+IC4u Li9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC03LmMgICAgICAgICB8 ICAxNSArDQo+IC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9y dW4tMS5jICAgICB8ICA2NiArKysrDQo+IC4uLi9yaXNjdi9ydnYvYXV0b3Zl Yy9wYXJ0aWFsL3NscF9ydW4tMi5jICAgICB8ICA2NyArKysrDQo+IC4uLi9y aXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tMy5jICAgICB8ICA2 NyArKysrDQo+IC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9y dW4tNC5jICAgICB8ICA2NyArKysrDQo+IC4uLi9yaXNjdi9ydnYvYXV0b3Zl Yy9wYXJ0aWFsL3NscF9ydW4tNS5jICAgICB8ICA2NyArKysrDQo+IC4uLi9y aXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tNi5jICAgICB8ICA2 NyArKysrDQo+IC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9y dW4tNy5jICAgICB8ICA1OCArKysNCj4gLi4uL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2F1dG92ZWMvc2NhbGFibGUtMS5jIHwgICAyICstDQo+IC4uLi9nY2Mu dGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3YtMS5jICAgICAgICB8ICAgNyAr LQ0KPiAuLi4vcmlzY3YvcnZ2L2F1dG92ZWMvenZlMzJmX3p2bDEyOGItMS5j ICAgICAgfCAgIDIgKy0NCj4gLi4uL3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTMy eF96dmwxMjhiLTEuYyAgICAgIHwgICAyICstDQo+IC4uLi9nY2MudGFyZ2V0 L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTY0ZC0xLmMgICB8ICAgMiArLQ0KPiAu Li4vcmlzY3YvcnZ2L2F1dG92ZWMvenZlNjRkX3p2bDEyOGItMS5jICAgICAg fCAgIDIgKy0NCj4gLi4uL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMv enZlNjRmLTEuYyAgIHwgICAyICstDQo+IC4uLi9yaXNjdi9ydnYvYXV0b3Zl Yy96dmU2NGZfenZsMTI4Yi0xLmMgICAgICB8ICAgMiArLQ0KPiAuLi4vcmlz Y3YvcnZ2L2F1dG92ZWMvenZlNjR4X3p2bDEyOGItMS5jICAgICAgfCAgIDIg Ky0NCj4gMjYgZmlsZXMgY2hhbmdlZCwgOTYzIGluc2VydGlvbnMoKyksIDM3 IGRlbGV0aW9ucygtKQ0KPiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xw LTEuYw0KPiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTIuYw0KPiBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jp c2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTMuYw0KPiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9h dXRvdmVjL3BhcnRpYWwvc2xwLTQuYw0KPiBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Bh cnRpYWwvc2xwLTUuYw0KPiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xw LTYuYw0KPiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTcuYw0KPiBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jp c2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwX3J1bi0xLmMNCj4gY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9y dnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tMi5jDQo+IGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvcGFydGlhbC9zbHBfcnVuLTMuYw0KPiBjcmVhdGUgbW9kZSAxMDA2 NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVj L3BhcnRpYWwvc2xwX3J1bi00LmMNCj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGdj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0 aWFsL3NscF9ydW4tNS5jDQo+IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9z bHBfcnVuLTYuYw0KPiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwX3J1 bi03LmMNCj4NCj4gZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3Yvcmlz Y3YtcHJvdG9zLmggYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5o DQo+IGluZGV4IGQ3NzBlNWU4MjZlLi4yN2VjZDE2ZTQ5NiAxMDA2NDQNCj4g LS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1wcm90b3MuaA0KPiArKysg Yi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5oDQo+IEBAIC0xNjgs NiArMTY4LDggQEAgdm9pZCBpbml0X2J1aWx0aW5zICh2b2lkKTsNCj4gY29u c3QgY2hhciAqbWFuZ2xlX2J1aWx0aW5fdHlwZSAoY29uc3RfdHJlZSk7DQo+ ICNpZmRlZiBHQ0NfVEFSR0VUX0gNCj4gYm9vbCB2ZXJpZnlfdHlwZV9jb250 ZXh0IChsb2NhdGlvbl90LCB0eXBlX2NvbnRleHRfa2luZCwgY29uc3RfdHJl ZSwgYm9vbCk7DQo+ICtib29sIGV4cGFuZF92ZWNfcGVybV9jb25zdCAobWFj aGluZV9tb2RlLCBtYWNoaW5lX21vZGUsIHJ0eCwgcnR4LCBydHgsDQo+ICsg ICAgIGNvbnN0IHZlY19wZXJtX2luZGljZXMgJik7DQo+ICNlbmRpZg0KPiB2 b2lkIGhhbmRsZV9wcmFnbWFfdmVjdG9yICh2b2lkKTsNCj4gdHJlZSBidWls dGluX2RlY2wgKHVuc2lnbmVkLCBib29sKTsNCj4gZGlmZiAtLWdpdCBhL2dj Yy9jb25maWcvcmlzY3YvcmlzY3Ytdi5jYyBiL2djYy9jb25maWcvcmlzY3Yv cmlzY3Ytdi5jYw0KPiBpbmRleCA4MzI3N2ZjMmMwNS4uNDg2NDQyOWVkMDYg MTAwNjQ0DQo+IC0tLSBhL2djYy9jb25maWcvcmlzY3YvcmlzY3Ytdi5jYw0K PiArKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXYuY2MNCj4gQEAgLTI1 MSw5ICsyNTEsMTIgQEAgcHVibGljOg0KPiAgICAgIG1faW5uZXJfbW9kZSA9 IEdFVF9NT0RFX0lOTkVSIChtb2RlKTsNCj4gICAgICBtX2lubmVyX2JpdHNf c2l6ZSA9IEdFVF9NT0RFX0JJVFNJWkUgKG1faW5uZXJfbW9kZSk7DQo+ICAg ICAgbV9pbm5lcl9ieXRlc19zaXplID0gR0VUX01PREVfU0laRSAobV9pbm5l cl9tb2RlKTsNCj4gKyAgICBtX21hc2tfbW9kZSA9IGdldF9tYXNrX21vZGUg KG1vZGUpLnJlcXVpcmUgKCk7DQo+ICAgICAgZ2NjX2Fzc2VydCAoDQo+ICAg ICAgICBpbnRfbW9kZV9mb3Jfc2l6ZSAoaW5uZXJfYml0c19zaXplICgpLCAw KS5leGlzdHMgKCZtX2lubmVyX2ludF9tb2RlKSk7DQo+ICsgICAgbV9pbnRf bW9kZQ0KPiArICAgICAgPSBnZXRfdmVjdG9yX21vZGUgKG1faW5uZXJfaW50 X21vZGUsIEdFVF9NT0RFX05VTklUUyAobW9kZSkpLnJlcXVpcmUgKCk7DQo+ ICAgIH0NCj4gICAgYm9vbCBjYW5fZHVwbGljYXRlX3JlcGVhdGluZ19zZXF1 ZW5jZV9wICgpOw0KPiBAQCAtMjYyLDkgKzI2NSwxNCBAQCBwdWJsaWM6DQo+ ICAgIGJvb2wgcmVwZWF0aW5nX3NlcXVlbmNlX3VzZV9tZXJnZV9wcm9maXRh YmxlX3AgKCk7DQo+ICAgIHJ0eCBnZXRfbWVyZ2Vfc2NhbGFyX21hc2sgKHVu c2lnbmVkIGludCkgY29uc3Q7DQo+ICsgIGJvb2wgc2luZ2xlX3N0ZXBfbnBh dHRlcm5zX3AgKCkgY29uc3Q7DQo+ICsgIGJvb2wgbnBhdHRlcm5zX2FsbF9l cXVhbF9wICgpIGNvbnN0Ow0KPiArDQo+ICAgIG1hY2hpbmVfbW9kZSBuZXdf bW9kZSAoKSBjb25zdCB7IHJldHVybiBtX25ld19tb2RlOyB9DQo+ICAgIHNj YWxhcl9tb2RlIGlubmVyX21vZGUgKCkgY29uc3QgeyByZXR1cm4gbV9pbm5l cl9tb2RlOyB9DQo+ICAgIHNjYWxhcl9pbnRfbW9kZSBpbm5lcl9pbnRfbW9k ZSAoKSBjb25zdCB7IHJldHVybiBtX2lubmVyX2ludF9tb2RlOyB9DQo+ICsg IG1hY2hpbmVfbW9kZSBtYXNrX21vZGUgKCkgY29uc3QgeyByZXR1cm4gbV9t YXNrX21vZGU7IH0NCj4gKyAgbWFjaGluZV9tb2RlIGludF9tb2RlICgpIGNv bnN0IHsgcmV0dXJuIG1faW50X21vZGU7IH0NCj4gICAgdW5zaWduZWQgaW50 IGlubmVyX2JpdHNfc2l6ZSAoKSBjb25zdCB7IHJldHVybiBtX2lubmVyX2Jp dHNfc2l6ZTsgfQ0KPiAgICB1bnNpZ25lZCBpbnQgaW5uZXJfYnl0ZXNfc2l6 ZSAoKSBjb25zdCB7IHJldHVybiBtX2lubmVyX2J5dGVzX3NpemU7IH0NCj4g QEAgLTI3Myw2ICsyODEsOCBAQCBwcml2YXRlOg0KPiAgICBzY2FsYXJfaW50 X21vZGUgbV9pbm5lcl9pbnRfbW9kZTsNCj4gICAgbWFjaGluZV9tb2RlIG1f bmV3X21vZGU7DQo+ICAgIHNjYWxhcl9pbnRfbW9kZSBtX25ld19pbm5lcl9t b2RlOw0KPiArICBtYWNoaW5lX21vZGUgbV9tYXNrX21vZGU7DQo+ICsgIG1h Y2hpbmVfbW9kZSBtX2ludF9tb2RlOw0KPiAgICB1bnNpZ25lZCBpbnQgbV9p bm5lcl9iaXRzX3NpemU7DQo+ICAgIHVuc2lnbmVkIGludCBtX2lubmVyX2J5 dGVzX3NpemU7DQo+IH07DQo+IEBAIC0yOTAsNyArMzAwLDkgQEAgcnZ2X2J1 aWxkZXI6OmNhbl9kdXBsaWNhdGVfcmVwZWF0aW5nX3NlcXVlbmNlX3AgKCkN Cj4gICAgICAgIHx8IEdFVF9NT0RFX1NJWkUgKG1fbmV3X2lubmVyX21vZGUp ID4gVU5JVFNfUEVSX1dPUkQNCj4gICAgICAgIHx8ICFnZXRfdmVjdG9yX21v ZGUgKG1fbmV3X2lubmVyX21vZGUsIG5ld19zaXplKS5leGlzdHMgKCZtX25l d19tb2RlKSkNCj4gICAgICByZXR1cm4gZmFsc2U7DQo+IC0gIHJldHVybiBy ZXBlYXRpbmdfc2VxdWVuY2VfcCAoMCwgZnVsbF9uZWx0cyAoKS50b19jb25z dGFudCAoKSwgbnBhdHRlcm5zICgpKTsNCj4gKyAgaWYgKGZ1bGxfbmVsdHMg KCkuaXNfY29uc3RhbnQgKCkpDQo+ICsgICAgcmV0dXJuIHJlcGVhdGluZ19z ZXF1ZW5jZV9wICgwLCBmdWxsX25lbHRzICgpLnRvX2NvbnN0YW50ICgpLCBu cGF0dGVybnMgKCkpOw0KPiArICByZXR1cm4gbmVsdHNfcGVyX3BhdHRlcm4g KCkgPT0gMTsNCj4gfQ0KPiAvKiBSZXR1cm4gdHJ1ZSBpZiBpdCBpcyBhIHJl cGVhdGluZyBzZXF1ZW5jZSB0aGF0IHVzaW5nDQo+IEBAIC0zOTgsNiArNDEw LDQ4IEBAIHJ2dl9idWlsZGVyOjpnZXRfbWVyZ2Vfc2NhbGFyX21hc2sgKHVu c2lnbmVkIGludCBpbmRleF9pbl9wYXR0ZXJuKSBjb25zdA0KPiAgICByZXR1 cm4gZ2VuX2ludF9tb2RlIChtYXNrLCBpbm5lcl9pbnRfbW9kZSAoKSk7DQo+ IH0NCj4gKy8qIFJldHVybiB0cnVlIGlmIHRoZSB2YXJpYWJsZS1sZW5ndGgg dmVjdG9yIGlzIHNpbmdsZSBzdGVwLiAgKi8NCj4gK2Jvb2wNCj4gK3J2dl9i dWlsZGVyOjpzaW5nbGVfc3RlcF9ucGF0dGVybnNfcCAoKSBjb25zdA0KPiAr ew0KPiArICBpZiAobmVsdHNfcGVyX3BhdHRlcm4gKCkgIT0gMykNCj4gKyAg ICByZXR1cm4gZmFsc2U7DQo+ICsNCj4gKyAgcG9seV9pbnQ2NCBzdGVwDQo+ ICsgICAgPSBydHhfdG9fcG9seV9pbnQ2NCAoZWx0IChucGF0dGVybnMgKCkp KSAtIHJ0eF90b19wb2x5X2ludDY0IChlbHQgKDApKTsNCj4gKyAgZm9yICh1 bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBucGF0dGVybnMgKCk7IGkrKykNCj4g KyAgICB7DQo+ICsgICAgICBwb2x5X2ludDY0IGVsZTAgPSBydHhfdG9fcG9s eV9pbnQ2NCAoZWx0IChpKSk7DQo+ICsgICAgICBwb2x5X2ludDY0IGVsZTEg PSBydHhfdG9fcG9seV9pbnQ2NCAoZWx0IChucGF0dGVybnMgKCkgKyBpKSk7 DQo+ICsgICAgICBwb2x5X2ludDY0IGVsZTIgPSBydHhfdG9fcG9seV9pbnQ2 NCAoZWx0IChucGF0dGVybnMgKCkgKiAyICsgaSkpOw0KPiArICAgICAgcG9s eV9pbnQ2NCBkaWZmMSA9IGVsZTEgLSBlbGUwOw0KPiArICAgICAgcG9seV9p bnQ2NCBkaWZmMiA9IGVsZTIgLSBlbGUxOw0KPiArICAgICAgaWYgKG1heWJl X25lIChzdGVwLCBkaWZmMSkgfHwgbWF5YmVfbmUgKHN0ZXAsIGRpZmYyKSkN Cj4gKyByZXR1cm4gZmFsc2U7DQo+ICsgICAgfQ0KPiArICByZXR1cm4gdHJ1 ZTsNCj4gK30NCj4gKw0KPiArLyogUmV0dXJuIHRydWUgaWYgYWxsIGVsZW1l bnRzIG9mIE5QQVRURVJOUyBhcmUgZXF1YWwuDQo+ICsNCj4gKyAgIEUuZy4g TlBBVFRFUk5TID0gNDoNCj4gKyAgICAgeyAyLCAyLCAyLCAyLCA0LCA0LCA0 LCA0LCA4LCA4LCA4LCA4LCAxNiwgMTYsIDE2LCAxNiwgLi4uIH0NCj4gKyAg IEUuZy4gTlBBVFRFUk5TID0gODoNCj4gKyAgICAgeyAyLCAyLCAyLCAyLCAy LCAyLCAyLCAyLCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCAuLi4gfQ0KPiAr Ki8NCj4gK2Jvb2wNCj4gK3J2dl9idWlsZGVyOjpucGF0dGVybnNfYWxsX2Vx dWFsX3AgKCkgY29uc3QNCj4gK3sNCj4gKyAgcG9seV9pbnQ2NCBlbGUwID0g cnR4X3RvX3BvbHlfaW50NjQgKGVsdCAoMCkpOw0KPiArICBmb3IgKHVuc2ln bmVkIGludCBpID0gMTsgaSA8IG5wYXR0ZXJucyAoKTsgaSsrKQ0KPiArICAg IHsNCj4gKyAgICAgIHBvbHlfaW50NjQgZWxlID0gcnR4X3RvX3BvbHlfaW50 NjQgKGVsdCAoaSkpOw0KPiArICAgICAgaWYgKCFrbm93bl9lcSAoZWxlLCBl bGUwKSkNCj4gKyByZXR1cm4gZmFsc2U7DQo+ICsgICAgfQ0KPiArICByZXR1 cm4gdHJ1ZTsNCj4gK30NCj4gKw0KPiBzdGF0aWMgdW5zaWduZWQNCj4gZ2V0 X3NldyAobWFjaGluZV9tb2RlIG1vZGUpDQo+IHsNCj4gQEAgLTQyNSw3ICs0 NzksNyBAQCBjb25zdF92ZWNfYWxsX3NhbWVfaW5fcmFuZ2VfcCAocnR4IHgs IEhPU1RfV0lERV9JTlQgbWludmFsLA0KPiAgICAgZnV0dXJlLiAgKi8NCj4g c3RhdGljIGJvb2wNCj4gLWNvbnN0X3ZlY19hbGxfaW5fcmFuZ2VfcCAocnR4 IHZlYywgSE9TVF9XSURFX0lOVCBtaW52YWwsIEhPU1RfV0lERV9JTlQgbWF4 dmFsKQ0KPiArY29uc3RfdmVjX2FsbF9pbl9yYW5nZV9wIChydHggdmVjLCBw b2x5X2ludDY0IG1pbnZhbCwgcG9seV9pbnQ2NCBtYXh2YWwpDQo+IHsNCj4g ICAgaWYgKCFDT05TVF9WRUNUT1JfUCAodmVjKQ0KPiAgICAgICAgfHwgR0VU X01PREVfQ0xBU1MgKEdFVF9NT0RFICh2ZWMpKSAhPSBNT0RFX1ZFQ1RPUl9J TlQpDQo+IEBAIC00NDAsOCArNDk0LDEwIEBAIGNvbnN0X3ZlY19hbGxfaW5f cmFuZ2VfcCAocnR4IHZlYywgSE9TVF9XSURFX0lOVCBtaW52YWwsIEhPU1Rf V0lERV9JTlQgbWF4dmFsKQ0KPiAgICBmb3IgKGludCBpID0gMDsgaSA8IG51 bml0czsgaSsrKQ0KPiAgICAgIHsNCj4gICAgICAgIHJ0eCB2ZWNfZWxlbSA9 IENPTlNUX1ZFQ1RPUl9FTFQgKHZlYywgaSk7DQo+IC0gICAgICBpZiAoIUNP TlNUX0lOVF9QICh2ZWNfZWxlbSkNCj4gLSAgIHx8ICFJTl9SQU5HRSAoSU5U VkFMICh2ZWNfZWxlbSksIG1pbnZhbCwgbWF4dmFsKSkNCj4gKyAgICAgIHBv bHlfaW50NjQgdmFsdWU7DQo+ICsgICAgICBpZiAoIXBvbHlfaW50X3J0eF9w ICh2ZWNfZWxlbSwgJnZhbHVlKQ0KPiArICAgfHwgbWF5YmVfbHQgKHZhbHVl LCBtaW52YWwpDQo+ICsgICB8fCBtYXliZV9ndCAodmFsdWUsIG1heHZhbCkp DQo+IHJldHVybiBmYWxzZTsNCj4gICAgICB9DQo+ICAgIHJldHVybiB0cnVl Ow0KPiBAQCAtNDUzLDcgKzUwOSw3IEBAIGNvbnN0X3ZlY19hbGxfaW5fcmFu Z2VfcCAocnR4IHZlYywgSE9TVF9XSURFX0lOVCBtaW52YWwsIEhPU1RfV0lE RV9JTlQgbWF4dmFsKQ0KPiAgICAgZnV0dXJlLiAgKi8NCj4gc3RhdGljIHJ0 eA0KPiAtZ2VuX2NvbnN0X3ZlY3Rvcl9kdXAgKG1hY2hpbmVfbW9kZSBtb2Rl LCBIT1NUX1dJREVfSU5UIHZhbCkNCj4gK2dlbl9jb25zdF92ZWN0b3JfZHVw IChtYWNoaW5lX21vZGUgbW9kZSwgcG9seV9pbnQ2NCB2YWwpDQo+IHsNCj4g ICAgcnR4IGMgPSBnZW5faW50X21vZGUgKHZhbCwgR0VUX01PREVfSU5ORVIg KG1vZGUpKTsNCj4gICAgcmV0dXJuIGdlbl9jb25zdF92ZWNfZHVwbGljYXRl IChtb2RlLCBjKTsNCj4gQEAgLTcyNyw3ICs3ODMsMTAgQEAgZW1pdF92bG1h eF9nYXRoZXJfaW5zbiAocnR4IHRhcmdldCwgcnR4IG9wLCBydHggc2VsKQ0K PiAgICBydHggZWx0Ow0KPiAgICBpbnNuX2NvZGUgaWNvZGU7DQo+ICAgIG1h Y2hpbmVfbW9kZSBkYXRhX21vZGUgPSBHRVRfTU9ERSAodGFyZ2V0KTsNCj4g LSAgaWYgKGNvbnN0X3ZlY19kdXBsaWNhdGVfcCAoc2VsLCAmZWx0KSkNCj4g KyAgbWFjaGluZV9tb2RlIHNlbF9tb2RlID0gR0VUX01PREUgKHNlbCk7DQo+ ICsgIGlmIChtYXliZV9uZSAoR0VUX01PREVfU0laRSAoZGF0YV9tb2RlKSwg R0VUX01PREVfU0laRSAoc2VsX21vZGUpKSkNCj4gKyAgICBpY29kZSA9IGNv ZGVfZm9yX3ByZWRfZ2F0aGVyZWkxNiAoZGF0YV9tb2RlKTsNCj4gKyAgZWxz ZSBpZiAoY29uc3RfdmVjX2R1cGxpY2F0ZV9wIChzZWwsICZlbHQpKQ0KPiAg ICAgIHsNCj4gICAgICAgIGljb2RlID0gY29kZV9mb3JfcHJlZF9nYXRoZXJf c2NhbGFyIChkYXRhX21vZGUpOw0KPiAgICAgICAgc2VsID0gZWx0Ow0KPiBA QCAtNzQ0LDcgKzgwMywxMCBAQCBlbWl0X3ZsbWF4X21hc2tlZF9nYXRoZXJf bXVfaW5zbiAocnR4IHRhcmdldCwgcnR4IG9wLCBydHggc2VsLCBydHggbWFz aykNCj4gICAgcnR4IGVsdDsNCj4gICAgaW5zbl9jb2RlIGljb2RlOw0KPiAg ICBtYWNoaW5lX21vZGUgZGF0YV9tb2RlID0gR0VUX01PREUgKHRhcmdldCk7 DQo+IC0gIGlmIChjb25zdF92ZWNfZHVwbGljYXRlX3AgKHNlbCwgJmVsdCkp DQo+ICsgIG1hY2hpbmVfbW9kZSBzZWxfbW9kZSA9IEdFVF9NT0RFIChzZWwp Ow0KPiArICBpZiAobWF5YmVfbmUgKEdFVF9NT0RFX1NJWkUgKGRhdGFfbW9k ZSksIEdFVF9NT0RFX1NJWkUgKHNlbF9tb2RlKSkpDQo+ICsgICAgaWNvZGUg PSBjb2RlX2Zvcl9wcmVkX2dhdGhlcmVpMTYgKGRhdGFfbW9kZSk7DQo+ICsg IGVsc2UgaWYgKGNvbnN0X3ZlY19kdXBsaWNhdGVfcCAoc2VsLCAmZWx0KSkN Cj4gICAgICB7DQo+ICAgICAgICBpY29kZSA9IGNvZGVfZm9yX3ByZWRfZ2F0 aGVyX3NjYWxhciAoZGF0YV9tb2RlKTsNCj4gICAgICAgIHNlbCA9IGVsdDsN Cj4gQEAgLTg5NSwxMSArOTU3LDEzMCBAQCBleHBhbmRfY29uc3RfdmVjdG9y IChydHggdGFyZ2V0LCBydHggc3JjKQ0KPiAgICAgICAgcmV0dXJuOw0KPiAg ICAgIH0NCj4gLSAgLyogVE9ETzogV2Ugb25seSBzdXBwb3J0IGNvbnN0IGR1 cGxpY2F0ZSB2ZWN0b3IgZm9yIG5vdy4gTW9yZSBjYXNlcw0KPiAtICAgICB3 aWxsIGJlIHN1cHBvcnRlZCB3aGVuIHdlIHN1cHBvcnQgYXV0by12ZWN0b3Jp emF0aW9uOg0KPiArICAvKiBIYW5kbGUgdmFyaWFibGUtbGVuZ3RoIHZlY3Rv ci4gICovDQo+ICsgIHVuc2lnbmVkIGludCBuZWx0c19wZXJfcGF0dGVybiA9 IENPTlNUX1ZFQ1RPUl9ORUxUU19QRVJfUEFUVEVSTiAoc3JjKTsNCj4gKyAg dW5zaWduZWQgaW50IG5wYXR0ZXJucyA9IENPTlNUX1ZFQ1RPUl9OUEFUVEVS TlMgKHNyYyk7DQo+ICsgIHJ2dl9idWlsZGVyIGJ1aWxkZXIgKG1vZGUsIG5w YXR0ZXJucywgbmVsdHNfcGVyX3BhdHRlcm4pOw0KPiArICBmb3IgKHVuc2ln bmVkIGludCBpID0gMDsgaSA8IG5lbHRzX3Blcl9wYXR0ZXJuOyBpKyspDQo+ ICsgICAgew0KPiArICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaiA9IDA7IGog PCBucGF0dGVybnM7IGorKykNCj4gKyBidWlsZGVyLnF1aWNrX3B1c2ggKENP TlNUX1ZFQ1RPUl9FTFQgKHNyYywgaSAqIG5wYXR0ZXJucyArIGopKTsNCj4g KyAgICB9DQo+ICsgIGJ1aWxkZXIuZmluYWxpemUgKCk7DQo+IC0gICAgICAg MS4gbXVsdGlwbGUgZWx0cyBkdXBsaWNhdGUgdmVjdG9yLg0KPiAtICAgICAg IDIuIG11bHRpcGxlIHBhdHRlcm5zIHdpdGggbXVsdGlwbGUgZWx0cy4gICov DQo+ICsgIGlmIChDT05TVF9WRUNUT1JfRFVQTElDQVRFX1AgKHNyYykpDQo+ ICsgICAgew0KPiArICAgICAgaWYgKGJ1aWxkZXIuY2FuX2R1cGxpY2F0ZV9y ZXBlYXRpbmdfc2VxdWVuY2VfcCAoKSkNCj4gKyB7DQo+ICsgICBydHggZWxl ID0gYnVpbGRlci5nZXRfbWVyZ2VkX3JlcGVhdGluZ19zZXF1ZW5jZSAoKTsN Cj4gKyAgIHJ0eCBkdXAgPSBleHBhbmRfdmVjdG9yX2Jyb2FkY2FzdCAoYnVp bGRlci5uZXdfbW9kZSAoKSwgZWxlKTsNCj4gKyAgIGVtaXRfbW92ZV9pbnNu ICh0YXJnZXQsIGdlbl9sb3dwYXJ0IChtb2RlLCBkdXApKTsNCj4gKyB9DQo+ ICsgICAgICBlbHNlDQo+ICsgew0KPiArICAgdW5zaWduZWQgaW50IG5iaXRz ID0gbnBhdHRlcm5zIC0gMTsNCj4gKw0KPiArICAgLyogR2VuZXJhdGUgdmlk ID0geyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCAuLi4gfS4gICovDQo+ICsg ICBydHggdmlkID0gZ2VuX3JlZ19ydHggKGJ1aWxkZXIuaW50X21vZGUgKCkp Ow0KPiArICAgcnR4IG9wW10gPSB7dmlkfTsNCj4gKyAgIGVtaXRfdmxtYXhf aW5zbiAoY29kZV9mb3JfcHJlZF9zZXJpZXMgKGJ1aWxkZXIuaW50X21vZGUg KCkpLA0KPiArICAgIFJWVl9NSVNDX09QLCBvcCk7DQo+ICsNCj4gKyAgIC8q IEdlbmVyYXRlIHZpZF9yZXBlYXQgPSB7IDAsIDEsIC4uLiBuYml0cywgLi4u IH0gICovDQo+ICsgICBydHggdmlkX3JlcGVhdCA9IGdlbl9yZWdfcnR4IChi dWlsZGVyLmludF9tb2RlICgpKTsNCj4gKyAgIHJ0eCBhbmRfb3BzW10gPSB7 dmlkX3JlcGVhdCwgdmlkLA0KPiArICAgIGdlbl9pbnRfbW9kZSAobmJpdHMs IGJ1aWxkZXIuaW5uZXJfaW50X21vZGUgKCkpfTsNCj4gKyAgIGVtaXRfdmxt YXhfaW5zbiAoY29kZV9mb3JfcHJlZF9zY2FsYXIgKEFORCwgYnVpbGRlci5p bnRfbW9kZSAoKSksDQo+ICsgICAgUlZWX0JJTk9QLCBhbmRfb3BzKTsNCj4g Kw0KPiArICAgcnR4IHRtcCA9IGdlbl9yZWdfcnR4IChidWlsZGVyLm1vZGUg KCkpOw0KPiArICAgcnR4IGR1cF9vcHNbXSA9IHt0bXAsIGJ1aWxkZXIuZWx0 ICgwKX07DQo+ICsgICBlbWl0X3ZsbWF4X2luc24gKGNvZGVfZm9yX3ByZWRf YnJvYWRjYXN0IChidWlsZGVyLm1vZGUgKCkpLCBSVlZfVU5PUCwNCj4gKyAg ICBkdXBfb3BzKTsNCj4gKyAgIGZvciAodW5zaWduZWQgaW50IGkgPSAxOyBp IDwgYnVpbGRlci5ucGF0dGVybnMgKCk7IGkrKykNCj4gKyAgICAgew0KPiAr ICAgICAgIC8qIEdlbmVyYXRlIG1hc2sgYWNjb3JkaW5nIHRvIGkuICAqLw0K PiArICAgICAgIHJ0eCBtYXNrID0gZ2VuX3JlZ19ydHggKGJ1aWxkZXIubWFz a19tb2RlICgpKTsNCj4gKyAgICAgICBydHggY29uc3RfdmVjID0gZ2VuX2Nv bnN0X3ZlY3Rvcl9kdXAgKGJ1aWxkZXIuaW50X21vZGUgKCksIGkpOw0KPiAr ICAgICAgIGV4cGFuZF92ZWNfY21wIChtYXNrLCBFUSwgdmlkX3JlcGVhdCwg Y29uc3RfdmVjKTsNCj4gKw0KPiArICAgICAgIC8qIE1lcmdlIHNjYWxhciB0 byBlYWNoIGkuICAqLw0KPiArICAgICAgIHJ0eCB0bXAyID0gZ2VuX3JlZ19y dHggKGJ1aWxkZXIubW9kZSAoKSk7DQo+ICsgICAgICAgcnR4IG1lcmdlX29w c1tdID0ge3RtcDIsIHRtcCwgYnVpbGRlci5lbHQgKGkpLCBtYXNrfTsNCj4g KyAgICAgICBpbnNuX2NvZGUgaWNvZGUgPSBjb2RlX2Zvcl9wcmVkX21lcmdl X3NjYWxhciAoYnVpbGRlci5tb2RlICgpKTsNCj4gKyAgICAgICBlbWl0X3Zs bWF4X21lcmdlX2luc24gKGljb2RlLCBSVlZfTUVSR0VfT1AsIG1lcmdlX29w cyk7DQo+ICsgICAgICAgdG1wID0gdG1wMjsNCj4gKyAgICAgfQ0KPiArICAg ZW1pdF9tb3ZlX2luc24gKHRhcmdldCwgdG1wKTsNCj4gKyB9DQo+ICsgICAg ICByZXR1cm47DQo+ICsgICAgfQ0KPiArICBlbHNlIGlmIChDT05TVF9WRUNU T1JfU1RFUFBFRF9QIChzcmMpKQ0KPiArICAgIHsNCj4gKyAgICAgIGdjY19h c3NlcnQgKEdFVF9NT0RFX0NMQVNTIChtb2RlKSA9PSBNT0RFX1ZFQ1RPUl9J TlQpOw0KPiArICAgICAgaWYgKGJ1aWxkZXIuc2luZ2xlX3N0ZXBfbnBhdHRl cm5zX3AgKCkpDQo+ICsgew0KPiArICAgLyogRGVzY3JpYmUgdGhlIGNhc2Ug YnkgY2hvb3NpbmcgTlBBVFRFUk5TID0gNCBhcyBhbiBleGFtcGxlLiAgKi8N Cj4gKyAgIHJ0eCBiYXNlLCBzdGVwOw0KPiArICAgaWYgKGJ1aWxkZXIubnBh dHRlcm5zX2FsbF9lcXVhbF9wICgpKQ0KPiArICAgICB7DQo+ICsgICAgICAg LyogR2VuZXJhdGUgdGhlIHZhcmlhYmxlLWxlbmd0aCB2ZWN0b3IgYXMgYmVs b3c6DQo+ICsgRS5nLiB7IDAsIDAsIDAsIDAsIDgsIDgsIDgsIDgsIDE2LCAx NiwgMTYsIDE2LCAuLi4gfSAqLw0KPiArICAgICAgIC8qIFN0ZXAgMTogR2Vu ZXJhdGUgYmFzZSA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgLi4uIH0uICAq Lw0KPiArICAgICAgIGJhc2UgPSBleHBhbmRfdmVjdG9yX2Jyb2FkY2FzdCAo YnVpbGRlci5tb2RlICgpLCBidWlsZGVyLmVsdCAoMCkpOw0KPiArICAgICB9 DQo+ICsgICBlbHNlDQo+ICsgICAgIHsNCj4gKyAgICAgICAvKiBHZW5lcmF0 ZSB0aGUgdmFyaWFibGUtbGVuZ3RoIHZlY3RvciBhcyBiZWxvdzoNCj4gKyBF LmcuIHsgMCwgNiwgMCwgNiwgOCwgMTQsIDgsIDE0LCAxNiwgMjIsIDE2LCAy MiwgLi4uIH0gKi8NCj4gKyAgICAgICAvKiBTdGVwIDE6IEdlbmVyYXRlIGJh c2UgPSB7IDAsIDYsIDAsIDYsIC4uLiB9LiAgKi8NCj4gKyAgICAgICBydnZf YnVpbGRlciBuZXdfYnVpbGRlciAoYnVpbGRlci5tb2RlICgpLCBidWlsZGVy Lm5wYXR0ZXJucyAoKSwNCj4gKyAgICAgICAgMSk7DQo+ICsgICAgICAgZm9y ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBidWlsZGVyLm5wYXR0ZXJucyAo KTsgKytpKQ0KPiArIG5ld19idWlsZGVyLnF1aWNrX3B1c2ggKGJ1aWxkZXIu ZWx0IChpKSk7DQo+ICsgICAgICAgcnR4IG5ld192ZWMgPSBuZXdfYnVpbGRl ci5idWlsZCAoKTsNCj4gKyAgICAgICBiYXNlID0gZ2VuX3JlZ19ydHggKGJ1 aWxkZXIubW9kZSAoKSk7DQo+ICsgICAgICAgZW1pdF9tb3ZlX2luc24gKGJh c2UsIG5ld192ZWMpOw0KPiArICAgICB9DQo+ICsNCj4gKyAgIC8qIFN0ZXAg MjogR2VuZXJhdGUgc3RlcCA9IGdlbl9pbnRfbW9kZSAoZGlmZiwgbW9kZSku ICAqLw0KPiArICAgcG9seV9pbnQ2NCB2YWx1ZTEgPSBydHhfdG9fcG9seV9p bnQ2NCAoYnVpbGRlci5lbHQgKDApKTsNCj4gKyAgIHBvbHlfaW50NjQgdmFs dWUyDQo+ICsgICAgID0gcnR4X3RvX3BvbHlfaW50NjQgKGJ1aWxkZXIuZWx0 IChidWlsZGVyLm5wYXR0ZXJucyAoKSkpOw0KPiArICAgcG9seV9pbnQ2NCBk aWZmID0gdmFsdWUyIC0gdmFsdWUxOw0KPiArICAgc3RlcCA9IGdlbl9pbnRf bW9kZSAoZGlmZiwgYnVpbGRlci5pbm5lcl9tb2RlICgpKTsNCj4gKw0KPiAr ICAgLyogU3RlcCAzOiBHZW5lcmF0ZSB2aWQgPSB7IDAsIDEsIDIsIDMsIDQs IDUsIDYsIDcsIC4uLiB9LiAgKi8NCj4gKyAgIHJ0eCB2aWQgPSBnZW5fcmVn X3J0eCAoYnVpbGRlci5tb2RlICgpKTsNCj4gKyAgIHJ0eCBvcFtdID0ge3Zp ZH07DQo+ICsgICBlbWl0X3ZsbWF4X2luc24gKGNvZGVfZm9yX3ByZWRfc2Vy aWVzIChidWlsZGVyLm1vZGUgKCkpLCBSVlZfTUlTQ19PUCwNCj4gKyAgICBv cCk7DQo+ICsNCj4gKyAgIC8qIFN0ZXAgNDogR2VuZXJhdGUgZmFjdG9yID0g eyAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAuLi4gfS4gICovDQo+ICsgICBy dHggZmFjdG9yID0gZ2VuX3JlZ19ydHggKGJ1aWxkZXIubW9kZSAoKSk7DQo+ ICsgICBydHggc2hpZnRfb3BzW10NCj4gKyAgICAgPSB7ZmFjdG9yLCB2aWQs DQo+ICsgICAgICAgIGdlbl9pbnRfbW9kZSAoZXhhY3RfbG9nMiAoYnVpbGRl ci5ucGF0dGVybnMgKCkpLCBQbW9kZSl9Ow0KPiArICAgZW1pdF92bG1heF9p bnNuIChjb2RlX2Zvcl9wcmVkX3NjYWxhciAoTFNISUZUUlQsIGJ1aWxkZXIu bW9kZSAoKSksDQo+ICsgICAgUlZWX0JJTk9QLCBzaGlmdF9vcHMpOw0KPiAr DQo+ICsgICAvKiBTdGVwIDU6IEdlbmVyYXRlIGFkanVzdGVkIHN0ZXAgPSB7 IDAsIDAsIDAsIDAsIGRpZmYsIGRpZmYsIC4uLiB9ICovDQo+ICsgICBydHgg YWRqdXN0ZWRfc3RlcCA9IGdlbl9yZWdfcnR4IChidWlsZGVyLm1vZGUgKCkp Ow0KPiArICAgcnR4IG11bF9vcHNbXSA9IHthZGp1c3RlZF9zdGVwLCBmYWN0 b3IsIHN0ZXB9Ow0KPiArICAgZW1pdF92bG1heF9pbnNuIChjb2RlX2Zvcl9w cmVkX3NjYWxhciAoTVVMVCwgYnVpbGRlci5tb2RlICgpKSwNCj4gKyAgICBS VlZfQklOT1AsIG11bF9vcHMpOw0KPiArDQo+ICsgICAvKiBTdGVwIDY6IEdl bmVyYXRlIHRoZSBmaW5hbCByZXN1bHQuICAqLw0KPiArICAgcnR4IGFkZF9v cHNbXSA9IHt0YXJnZXQsIGJhc2UsIGFkanVzdGVkX3N0ZXB9Ow0KPiArICAg ZW1pdF92bG1heF9pbnNuIChjb2RlX2Zvcl9wcmVkIChQTFVTLCBidWlsZGVy Lm1vZGUgKCkpLCBSVlZfQklOT1AsDQo+ICsgICAgYWRkX29wcyk7DQo+ICsg fQ0KPiArICAgICAgZWxzZQ0KPiArIC8qIFRPRE86IFdlIHdpbGwgZW5hYmxl IG1vcmUgdmFyaWFibGUtbGVuZ3RoIHZlY3RvciBpbiB0aGUgZnV0dXJlLiAg Ki8NCj4gKyBnY2NfdW5yZWFjaGFibGUgKCk7DQo+ICsgICAgfQ0KPiArICBl bHNlDQo+ICsgICAgZ2NjX3VucmVhY2hhYmxlICgpOw0KPiB9DQo+IC8qIEV4 cGFuZCBhIHByZS1SQSBSVlYgZGF0YSBtb3ZlIGZyb20gU1JDIHRvIERFU1Qu DQo+IEBAIC0yMDI5LDE0ICsyMjEwLDEzIEBAIGV4cGFuZF92ZWNfcGVybSAo cnR4IHRhcmdldCwgcnR4IG9wMCwgcnR4IG9wMSwgcnR4IHNlbCkNCj4gew0K PiAgICBtYWNoaW5lX21vZGUgZGF0YV9tb2RlID0gR0VUX01PREUgKHRhcmdl dCk7DQo+ICAgIG1hY2hpbmVfbW9kZSBzZWxfbW9kZSA9IEdFVF9NT0RFIChz ZWwpOw0KPiAtDQo+IC0gIC8qIEVuZm9yY2VkIGJ5IHRoZSBwYXR0ZXJuIGNv bmRpdGlvbi4gICovDQo+IC0gIGludCBudW5pdHMgPSBHRVRfTU9ERV9OVU5J VFMgKHNlbF9tb2RlKS50b19jb25zdGFudCAoKTsNCj4gKyAgcG9seV91aW50 NjQgbnVuaXRzID0gR0VUX01PREVfTlVOSVRTIChzZWxfbW9kZSk7DQo+ICAg IC8qIENoZWNrIGlmIHRoZSBzZWwgb25seSByZWZlcmVuY2VzIHRoZSBmaXJz dCB2YWx1ZXMgdmVjdG9yLiBJZiBlYWNoIHNlbGVjdA0KPiAgICAgICBpbmRl eCBpcyBpbiByYW5nZSBvZiBbMCwgbnVuaXRzIC0gMV0uIEEgc2luZ2xlIHZy Z2F0aGVyIGluc3RydWN0aW9ucyBpcw0KPiAtICAgICBlbm91Z2guICAqLw0K PiAtICBpZiAoY29uc3RfdmVjX2FsbF9pbl9yYW5nZV9wIChzZWwsIDAsIG51 bml0cyAtIDEpKQ0KPiArICAgICBlbm91Z2guIFNpbmNlIHdlIHdpbGwgdXNl IHZyZ2F0aGVyZWkxNi52diBmb3IgdmFyaWFibGUtbGVuZ3RoIHZlY3RvciwN Cj4gKyAgICAgaXQgaXMgbmV2ZXIgb3V0IG9mIHJhbmdlIGFuZCB3ZSBkb24n dCBuZWVkIHRvIG1vZHVsbyB0aGUgaW5kZXguICAqLw0KPiArICBpZiAoIW51 bml0cy5pc19jb25zdGFudCAoKSB8fCBjb25zdF92ZWNfYWxsX2luX3Jhbmdl X3AgKHNlbCwgMCwgbnVuaXRzIC0gMSkpDQo+ICAgICAgew0KPiAgICAgICAg ZW1pdF92bG1heF9nYXRoZXJfaW5zbiAodGFyZ2V0LCBvcDAsIHNlbCk7DQo+ ICAgICAgICByZXR1cm47DQo+IEBAIC0yMDU3LDE0ICsyMjM3LDIwIEBAIGV4 cGFuZF92ZWNfcGVybSAocnR4IHRhcmdldCwgcnR4IG9wMCwgcnR4IG9wMSwg cnR4IHNlbCkNCj4gICAgICAgIHJldHVybjsNCj4gICAgICB9DQo+IC0gIC8q IE5vdGU6IHZlY19wZXJtIGluZGljZXMgYXJlIHN1cHBvc2VkIHRvIHdyYXAg d2hlbiB0aGV5IGdvIGJleW9uZCB0aGUNCj4gLSAgICAgc2l6ZSBvZiB0aGUg dHdvIHZhbHVlIHZlY3RvcnMsIGkuZS4gdGhlIHVwcGVyIGJpdHMgb2YgdGhl IGluZGljZXMNCj4gLSAgICAgYXJlIGVmZmVjdGl2ZWx5IGlnbm9yZWQuICBS VlYgdnJnYXRoZXIgaW5zdGVhZCBwcm9kdWNlcyAwIGZvciBhbnkNCj4gLSAg ICAgb3V0LW9mLXJhbmdlIGluZGljZXMsIHNvIHdlIG5lZWQgdG8gbW9kdWxv IGFsbCB0aGUgdmVjX3Blcm0gaW5kaWNlcw0KPiAtICAgICB0byBlbnN1cmUg dGhleSBhcmUgYWxsIGluIHJhbmdlIG9mIFswLCAyICogbnVuaXRzIC0gMV0u ICAqLw0KPiArICBydHggc2VsX21vZCA9IHNlbDsNCj4gICAgcnR4IG1heF9z ZWwgPSBnZW5fY29uc3RfdmVjdG9yX2R1cCAoc2VsX21vZGUsIDIgKiBudW5p dHMgLSAxKTsNCj4gLSAgcnR4IHNlbF9tb2QNCj4gLSAgICA9IGV4cGFuZF9z aW1wbGVfYmlub3AgKHNlbF9tb2RlLCBBTkQsIHNlbCwgbWF4X3NlbCwgTlVM TCwgMCwgT1BUQUJfRElSRUNUKTsNCj4gKyAgLyogV2UgZG9uJ3QgbmVlZCB0 byBtb2R1bG8gaW5kaWNlcyBmb3IgVkxBIHZlY3Rvci4NCj4gKyAgICAgU2lu Y2Ugd2Ugc2hvdWxkIGd1cmFudGVlIHRoZXkgYXJlbid0IG91dCBvZiByYW5n ZSBiZWZvcmUuICAqLw0KPiArICBpZiAobnVuaXRzLmlzX2NvbnN0YW50ICgp KQ0KPiArICAgIHsNCj4gKyAgICAgIC8qIE5vdGU6IHZlY19wZXJtIGluZGlj ZXMgYXJlIHN1cHBvc2VkIHRvIHdyYXAgd2hlbiB0aGV5IGdvIGJleW9uZCB0 aGUNCj4gKyBzaXplIG9mIHRoZSB0d28gdmFsdWUgdmVjdG9ycywgaS5lLiB0 aGUgdXBwZXIgYml0cyBvZiB0aGUgaW5kaWNlcw0KPiArIGFyZSBlZmZlY3Rp dmVseSBpZ25vcmVkLiAgUlZWIHZyZ2F0aGVyIGluc3RlYWQgcHJvZHVjZXMg MCBmb3IgYW55DQo+ICsgb3V0LW9mLXJhbmdlIGluZGljZXMsIHNvIHdlIG5l ZWQgdG8gbW9kdWxvIGFsbCB0aGUgdmVjX3Blcm0gaW5kaWNlcw0KPiArIHRv IGVuc3VyZSB0aGV5IGFyZSBhbGwgaW4gcmFuZ2Ugb2YgWzAsIDIgKiBudW5p dHMgLSAxXS4gICovDQo+ICsgICAgICBzZWxfbW9kID0gZXhwYW5kX3NpbXBs ZV9iaW5vcCAoc2VsX21vZGUsIEFORCwgc2VsLCBtYXhfc2VsLCBOVUxMLCAw LA0KPiArICAgICAgT1BUQUJfRElSRUNUKTsNCj4gKyAgICB9DQo+ICAgIC8q IFRoaXMgZm9sbG93aW5nIHNlcXVlbmNlIGlzIGhhbmRsaW5nIHRoZSBjYXNl IHRoYXQ6DQo+ICAgICAgIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yICh2ZWMx LCB2ZWMyLCBpbmRleC4uLiksIHRoZSBpbmRleCBjYW4gYmUgYW55DQo+IEBA IC0yMDk0LDQgKzIyODAsMTI0IEBAIGV4cGFuZF92ZWNfcGVybSAocnR4IHRh cmdldCwgcnR4IG9wMCwgcnR4IG9wMSwgcnR4IHNlbCkNCj4gICAgZW1pdF92 bG1heF9tYXNrZWRfZ2F0aGVyX211X2luc24gKHRhcmdldCwgb3AxLCB0bXAs IG1hc2spOw0KPiB9DQo+ICsvKiBJbXBsZW1lbnQgVEFSR0VUX1ZFQ1RPUkla RV9WRUNfUEVSTV9DT05TVCBmb3IgUlZWLiAgKi8NCj4gKw0KPiArLyogdmVj X3Blcm0gc3VwcG9ydC4gICovDQo+ICsNCj4gK3N0cnVjdCBleHBhbmRfdmVj X3Blcm1fZA0KPiArew0KPiArICBydHggdGFyZ2V0LCBvcDAsIG9wMTsNCj4g KyAgdmVjX3Blcm1faW5kaWNlcyBwZXJtOw0KPiArICBtYWNoaW5lX21vZGUg dm1vZGU7DQo+ICsgIG1hY2hpbmVfbW9kZSBvcF9tb2RlOw0KPiArICBib29s IG9uZV92ZWN0b3JfcDsNCj4gKyAgYm9vbCB0ZXN0aW5nX3A7DQo+ICt9Ow0K PiArDQo+ICsvKiBSZWNvZ25pemUgdGhlIHBhdHRlcm4gdGhhdCBjYW4gYmUg c2h1ZmZsZWQgYnkgZ2VuZXJpYyBhcHByb2FjaC4gICovDQo+ICsNCj4gK3N0 YXRpYyBib29sDQo+ICtzaHVmZmxlX2dlbmVyaWNfcGF0dGVybnMgKHN0cnVj dCBleHBhbmRfdmVjX3Blcm1fZCAqZCkNCj4gK3sNCj4gKyAgbWFjaGluZV9t b2RlIHNlbF9tb2RlID0gcmVsYXRlZF9pbnRfdmVjdG9yX21vZGUgKGQtPnZt b2RlKS5yZXF1aXJlICgpOw0KPiArICBwb2x5X3VpbnQ2NCBudW5pdHMgPSBH RVRfTU9ERV9OVU5JVFMgKGQtPnZtb2RlKTsNCj4gKw0KPiArICAvKiBGb3Ig Y29uc3RhbnQgc2l6ZSBpbmRpY2VzLCB3ZSBkb250J3QgbmVlZCB0byBoYW5k bGUgaXQgaGVyZS4NCj4gKyAgICAgSnVzdCBsZWF2ZSBpdCB0byB2ZWNfcGVy bTxtb2RlPi4gICovDQo+ICsgIGlmIChkLT5wZXJtLmxlbmd0aCAoKS5pc19j b25zdGFudCAoKSkNCj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ICsNCj4gKyAg LyogUGVybXV0aW5nIHR3byBTRVc4IHZhcmlhYmxlLWxlbmd0aCB2ZWN0b3Jz IG5lZWQgdnJnYXRoZXJlaTE2LnZ2Lg0KPiArICAgICBPdGhlcndpc2UsIGl0 IGNvdWxkIG92ZXJmbG93IHRoZSBpbmRleCByYW5nZS4gICovDQo+ICsgIGlm IChHRVRfTU9ERV9JTk5FUiAoZC0+dm1vZGUpID09IFFJbW9kZQ0KPiArICAg ICAgJiYgIWdldF92ZWN0b3JfbW9kZSAoSEltb2RlLCBudW5pdHMpLmV4aXN0 cyAoJnNlbF9tb2RlKSkNCj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ICsNCj4g KyAgLyogU3VjY2VzcyEgKi8NCj4gKyAgaWYgKGQtPnRlc3RpbmdfcCkNCj4g KyAgICByZXR1cm4gdHJ1ZTsNCj4gKw0KPiArICBydHggc2VsID0gdmVjX3Bl cm1faW5kaWNlc190b19ydHggKHNlbF9tb2RlLCBkLT5wZXJtKTsNCj4gKyAg ZXhwYW5kX3ZlY19wZXJtIChkLT50YXJnZXQsIGQtPm9wMCwgZC0+b3AxLCBm b3JjZV9yZWcgKHNlbF9tb2RlLCBzZWwpKTsNCj4gKyAgcmV0dXJuIHRydWU7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBib29sDQo+ICtleHBhbmRfdmVjX3Bl cm1fY29uc3RfMSAoc3RydWN0IGV4cGFuZF92ZWNfcGVybV9kICpkKQ0KPiAr ew0KPiArICBnY2NfYXNzZXJ0IChkLT5vcF9tb2RlICE9IEVfVk9JRG1vZGUp Ow0KPiArDQo+ICsgIC8qIFRoZSBwYXR0ZXJuIG1hdGNoaW5nIGZ1bmN0aW9u cyBhYm92ZSBhcmUgd3JpdHRlbiB0byBsb29rIGZvciBhIHNtYWxsDQo+ICsg ICAgIG51bWJlciB0byBiZWdpbiB0aGUgc2VxdWVuY2UgKDAsIDEsIE4vMiku ICBJZiB3ZSBiZWdpbiB3aXRoIGFuIGluZGV4DQo+ICsgICAgIGZyb20gdGhl IHNlY29uZCBvcGVyYW5kLCB3ZSBjYW4gc3dhcCB0aGUgb3BlcmFuZHMuICAq Lw0KPiArICBwb2x5X2ludDY0IG5lbHQgPSBkLT5wZXJtLmxlbmd0aCAoKTsN Cj4gKyAgaWYgKGtub3duX2dlIChkLT5wZXJtWzBdLCBuZWx0KSkNCj4gKyAg ICB7DQo+ICsgICAgICBkLT5wZXJtLnJvdGF0ZV9pbnB1dHMgKDEpOw0KPiAr ICAgICAgc3RkOjpzd2FwIChkLT5vcDAsIGQtPm9wMSk7DQo+ICsgICAgfQ0K PiArDQo+ICsgIGlmIChrbm93bl9ndCAobmVsdCwgMSkpDQo+ICsgICAgew0K PiArICAgICAgaWYgKGQtPnZtb2RlID09IGQtPm9wX21vZGUpDQo+ICsgew0K PiArICAgaWYgKHNodWZmbGVfZ2VuZXJpY19wYXR0ZXJucyAoZCkpDQo+ICsg ICAgIHJldHVybiB0cnVlOw0KPiArICAgcmV0dXJuIGZhbHNlOw0KPiArIH0N Cj4gKyAgICAgIGVsc2UNCj4gKyByZXR1cm4gZmFsc2U7DQo+ICsgICAgfQ0K PiArICByZXR1cm4gZmFsc2U7DQo+ICt9DQo+ICsNCj4gK2Jvb2wNCj4gK2V4 cGFuZF92ZWNfcGVybV9jb25zdCAobWFjaGluZV9tb2RlIHZtb2RlLCBtYWNo aW5lX21vZGUgb3BfbW9kZSwgcnR4IHRhcmdldCwNCj4gKyAgICAgICAgcnR4 IG9wMCwgcnR4IG9wMSwgY29uc3QgdmVjX3Blcm1faW5kaWNlcyAmc2VsKQ0K PiArew0KPiArICAvKiBSVlYgZG9lc24ndCBoYXZlIE1hc2sgdHlwZSBwYWNr L3VucGFjayBpbnN0cnVjdGlvbnMgYW5kIHdlIGRvbid0IHVzZQ0KPiArICAg ICBtYXNrIHRvIGRvIHRoZSBpdGVyYXRpb24gbG9vcCBjb250cm9sLiBKdXN0 IGRpc2FibGUgaXQgZGlyZWN0bHkuICAqLw0KPiArICBpZiAoR0VUX01PREVf Q0xBU1MgKHZtb2RlKSA9PSBNT0RFX1ZFQ1RPUl9CT09MKQ0KPiArICAgIHJl dHVybiBmYWxzZTsNCj4gKw0KPiArICBzdHJ1Y3QgZXhwYW5kX3ZlY19wZXJt X2QgZDsNCj4gKw0KPiArICAvKiBDaGVjayB3aGV0aGVyIHRoZSBtYXNrIGNh biBiZSBhcHBsaWVkIHRvIGEgc2luZ2xlIHZlY3Rvci4gICovDQo+ICsgIGlm IChzZWwubmlucHV0cyAoKSA9PSAxIHx8IChvcDAgJiYgcnR4X2VxdWFsX3Ag KG9wMCwgb3AxKSkpDQo+ICsgICAgZC5vbmVfdmVjdG9yX3AgPSB0cnVlOw0K PiArICBlbHNlIGlmIChzZWwuYWxsX2Zyb21faW5wdXRfcCAoMCkpDQo+ICsg ICAgew0KPiArICAgICAgZC5vbmVfdmVjdG9yX3AgPSB0cnVlOw0KPiArICAg ICAgb3AxID0gb3AwOw0KPiArICAgIH0NCj4gKyAgZWxzZSBpZiAoc2VsLmFs bF9mcm9tX2lucHV0X3AgKDEpKQ0KPiArICAgIHsNCj4gKyAgICAgIGQub25l X3ZlY3Rvcl9wID0gdHJ1ZTsNCj4gKyAgICAgIG9wMCA9IG9wMTsNCj4gKyAg ICB9DQo+ICsgIGVsc2UNCj4gKyAgICBkLm9uZV92ZWN0b3JfcCA9IGZhbHNl Ow0KPiArDQo+ICsgIGQucGVybS5uZXdfdmVjdG9yIChzZWwuZW5jb2Rpbmcg KCksIGQub25lX3ZlY3Rvcl9wID8gMSA6IDIsDQo+ICsgICAgICBzZWwubmVs dHNfcGVyX2lucHV0ICgpKTsNCj4gKyAgZC52bW9kZSA9IHZtb2RlOw0KPiAr ICBkLm9wX21vZGUgPSBvcF9tb2RlOw0KPiArICBkLnRhcmdldCA9IHRhcmdl dDsNCj4gKyAgZC5vcDAgPSBvcDA7DQo+ICsgIGlmIChvcDAgPT0gb3AxKQ0K PiArICAgIGQub3AxID0gZC5vcDA7DQo+ICsgIGVsc2UNCj4gKyAgICBkLm9w MSA9IG9wMTsNCj4gKyAgZC50ZXN0aW5nX3AgPSAhdGFyZ2V0Ow0KPiArDQo+ ICsgIGlmICghZC50ZXN0aW5nX3ApDQo+ICsgICAgcmV0dXJuIGV4cGFuZF92 ZWNfcGVybV9jb25zdF8xICgmZCk7DQo+ICsNCj4gKyAgcnR4X2luc24gKmxh c3QgPSBnZXRfbGFzdF9pbnNuICgpOw0KPiArICBib29sIHJldCA9IGV4cGFu ZF92ZWNfcGVybV9jb25zdF8xICgmZCk7DQo+ICsgIGdjY19hc3NlcnQgKGxh c3QgPT0gZ2V0X2xhc3RfaW5zbiAoKSk7DQo+ICsNCj4gKyAgcmV0dXJuIHJl dDsNCj4gK30NCj4gKw0KPiB9IC8vIG5hbWVzcGFjZSByaXNjdl92ZWN0b3IN Cj4gZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YuY2MgYi9n Y2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmNjDQo+IGluZGV4IGNhYTc4NThiODY0 Li41ZDIyMDEyYjU5MSAxMDA2NDQNCj4gLS0tIGEvZ2NjL2NvbmZpZy9yaXNj di9yaXNjdi5jYw0KPiArKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmNj DQo+IEBAIC03NjMxLDYgKzc2MzEsMTkgQEAgcmlzY3ZfdmVjdG9yaXplX3Jl bGF0ZWRfbW9kZSAobWFjaGluZV9tb2RlIHZlY3Rvcl9tb2RlLCBzY2FsYXJf bW9kZSBlbGVtZW50X21vZGUNCj4gICAgcmV0dXJuIGRlZmF1bHRfdmVjdG9y aXplX3JlbGF0ZWRfbW9kZSAodmVjdG9yX21vZGUsIGVsZW1lbnRfbW9kZSwg bnVuaXRzKTsNCj4gfQ0KPiArLyogSW1wbGVtZW50IFRBUkdFVF9WRUNUT1JJ WkVfVkVDX1BFUk1fQ09OU1QuICAqLw0KPiArDQo+ICtzdGF0aWMgYm9vbA0K PiArcmlzY3ZfdmVjdG9yaXplX3ZlY19wZXJtX2NvbnN0IChtYWNoaW5lX21v ZGUgdm1vZGUsIG1hY2hpbmVfbW9kZSBvcF9tb2RlLA0KPiArIHJ0eCB0YXJn ZXQsIHJ0eCBvcDAsIHJ0eCBvcDEsDQo+ICsgY29uc3QgdmVjX3Blcm1faW5k aWNlcyAmc2VsKQ0KPiArew0KPiArICBpZiAoVEFSR0VUX1ZFQ1RPUiAmJiBy aXNjdl92X2V4dF92ZWN0b3JfbW9kZV9wICh2bW9kZSkpDQo+ICsgICAgcmV0 dXJuIHJpc2N2X3ZlY3Rvcjo6ZXhwYW5kX3ZlY19wZXJtX2NvbnN0ICh2bW9k ZSwgb3BfbW9kZSwgdGFyZ2V0LCBvcDAsDQo+ICsgb3AxLCBzZWwpOw0KPiAr DQo+ICsgIHJldHVybiBmYWxzZTsNCj4gK30NCj4gLyogSW5pdGlhbGl6ZSB0 aGUgR0NDIHRhcmdldCBzdHJ1Y3R1cmUuICAqLw0KPiAjdW5kZWYgVEFSR0VU X0FTTV9BTElHTkVEX0hJX09QDQo+IEBAIC03OTMwLDYgKzc5NDMsOSBAQCBy aXNjdl92ZWN0b3JpemVfcmVsYXRlZF9tb2RlIChtYWNoaW5lX21vZGUgdmVj dG9yX21vZGUsIHNjYWxhcl9tb2RlIGVsZW1lbnRfbW9kZQ0KPiAjdW5kZWYg VEFSR0VUX1ZFQ1RPUklaRV9SRUxBVEVEX01PREUNCj4gI2RlZmluZSBUQVJH RVRfVkVDVE9SSVpFX1JFTEFURURfTU9ERSByaXNjdl92ZWN0b3JpemVfcmVs YXRlZF9tb2RlDQo+ICsjdW5kZWYgVEFSR0VUX1ZFQ1RPUklaRV9WRUNfUEVS TV9DT05TVA0KPiArI2RlZmluZSBUQVJHRVRfVkVDVE9SSVpFX1ZFQ19QRVJN X0NPTlNUIHJpc2N2X3ZlY3Rvcml6ZV92ZWNfcGVybV9jb25zdA0KPiArDQo+ IHN0cnVjdCBnY2NfdGFyZ2V0IHRhcmdldG0gPSBUQVJHRVRfSU5JVElBTEla RVI7DQo+ICNpbmNsdWRlICJndC1yaXNjdi5oIg0KPiBkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Bh cnRpYWwvc2xwLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC0xLmMNCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAuLmJlZmI1MThlMmRkDQo+ IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTEuYw0KPiBAQCAt MCwwICsxLDIyIEBADQo+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiAr LyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tYXJjaD1ydjMyZ2N2IC1t YWJpPWlscDMyZCAtLXBhcmFtIHJpc2N2LWF1dG92ZWMtcHJlZmVyZW5jZT1z Y2FsYWJsZSAtZmR1bXAtdHJlZS1vcHRpbWl6ZWQtZGV0YWlscyIgfSAqLw0K PiArDQo+ICsjaW5jbHVkZSA8c3RkaW50LWdjYy5oPg0KPiArDQo+ICt2b2lk IF9fYXR0cmlidXRlX18gKChub2lwYSkpDQo+ICtmIChpbnQ4X3QgKnJlc3Ry aWN0IGEsIGludDhfdCAqcmVzdHJpY3QgYiwgaW50IG4pDQo+ICt7DQo+ICsg IGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQ0KPiArICAgIHsNCj4gKyAg ICAgIGFbaSAqIDggKyAwXSA9IGJbaSAqIDggKyAzN10gKyAxOw0KPiArICAg ICAgYVtpICogOCArIDFdID0gYltpICogOCArIDM3XSArIDI7DQo+ICsgICAg ICBhW2kgKiA4ICsgMl0gPSBiW2kgKiA4ICsgMzddICsgODsNCj4gKyAgICAg IGFbaSAqIDggKyAzXSA9IGJbaSAqIDggKyAzN10gKyA0Ow0KPiArICAgICAg YVtpICogOCArIDRdID0gYltpICogOCArIDM3XSArIDU7DQo+ICsgICAgICBh W2kgKiA4ICsgNV0gPSBiW2kgKiA4ICsgMzddICsgNjsNCj4gKyAgICAgIGFb aSAqIDggKyA2XSA9IGJbaSAqIDggKyAzN10gKyA3Ow0KPiArICAgICAgYVtp ICogOCArIDddID0gYltpICogOCArIDM3XSArIDM7DQo+ICsgICAgfQ0KPiAr fQ0KPiArDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGlt ZXMgIlwuVkVDX1BFUk0iIDEgIm9wdGltaXplZCIgfSB9ICovDQo+IGRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvcGFydGlhbC9zbHAtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTIuYw0KPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uYWM4MTc0 NTEyOTUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAtMi5j DQo+IEBAIC0wLDAgKzEsMjIgQEANCj4gKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovDQo+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1hcmNoPXJ2 MzJnY3YgLW1hYmk9aWxwMzJkIC0tcGFyYW0gcmlzY3YtYXV0b3ZlYy1wcmVm ZXJlbmNlPXNjYWxhYmxlIC1mZHVtcC10cmVlLW9wdGltaXplZC1kZXRhaWxz IiB9ICovDQo+ICsNCj4gKyNpbmNsdWRlIDxzdGRpbnQtZ2NjLmg+DQo+ICsN Cj4gK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaXBhKSkNCj4gK2YgKGludDE2 X3QgKnJlc3RyaWN0IGEsIGludDE2X3QgKnJlc3RyaWN0IGIsIGludCBuKQ0K PiArew0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkNCj4gKyAg ICB7DQo+ICsgICAgICBhW2kgKiA4ICsgMF0gPSBiW2kgKiA4ICsgMzddICsg MTsNCj4gKyAgICAgIGFbaSAqIDggKyAxXSA9IGJbaSAqIDggKyAzN10gKyAy Ow0KPiArICAgICAgYVtpICogOCArIDJdID0gYltpICogOCArIDM3XSArIDg7 DQo+ICsgICAgICBhW2kgKiA4ICsgM10gPSBiW2kgKiA4ICsgMzddICsgNDsN Cj4gKyAgICAgIGFbaSAqIDggKyA0XSA9IGJbaSAqIDggKyAzN10gKyA1Ow0K PiArICAgICAgYVtpICogOCArIDVdID0gYltpICogOCArIDM3XSArIDY7DQo+ ICsgICAgICBhW2kgKiA4ICsgNl0gPSBiW2kgKiA4ICsgMzddICsgNzsNCj4g KyAgICAgIGFbaSAqIDggKyA3XSA9IGJbaSAqIDggKyAzN10gKyAzOw0KPiAr ICAgIH0NCj4gK30NCj4gKw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wLXRpbWVzICJcLlZFQ19QRVJNIiAxICJvcHRpbWl6ZWQiIH0gfSAq Lw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jp c2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTMuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC0z LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw MDAuLjczOTYyMDU1YjAzDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRp YWwvc2xwLTMuYw0KPiBAQCAtMCwwICsxLDIyIEBADQo+ICsvKiB7IGRnLWRv IGNvbXBpbGUgfSAqLw0KPiArLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMg Ii1tYXJjaD1ydjMyZ2N2IC1tYWJpPWlscDMyZCAtLXBhcmFtIHJpc2N2LWF1 dG92ZWMtcHJlZmVyZW5jZT1zY2FsYWJsZSAtZmR1bXAtdHJlZS1vcHRpbWl6 ZWQtZGV0YWlscyIgfSAqLw0KPiArDQo+ICsjaW5jbHVkZSA8c3RkaW50LWdj Yy5oPg0KPiArDQo+ICt2b2lkIF9fYXR0cmlidXRlX18gKChub2lwYSkpDQo+ ICtmIChpbnQ4X3QgKnJlc3RyaWN0IGEsIGludDhfdCAqcmVzdHJpY3QgYiwg aW50IG4pDQo+ICt7DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytp KQ0KPiArICAgIHsNCj4gKyAgICAgIGFbaSAqIDhdID0gYltpICogOCArIDFd ICsgMTsNCj4gKyAgICAgIGFbaSAqIDggKyAxXSA9IGJbaSAqIDggKyA3XSAr IDI7DQo+ICsgICAgICBhW2kgKiA4ICsgMl0gPSBiW2kgKiA4ICsgMV0gKyAz Ow0KPiArICAgICAgYVtpICogOCArIDNdID0gYltpICogOCArIDddICsgNDsN Cj4gKyAgICAgIGFbaSAqIDggKyA0XSA9IGJbaSAqIDggKyAxXSArIDU7DQo+ ICsgICAgICBhW2kgKiA4ICsgNV0gPSBiW2kgKiA4ICsgN10gKyA2Ow0KPiAr ICAgICAgYVtpICogOCArIDZdID0gYltpICogOCArIDFdICsgNzsNCj4gKyAg ICAgIGFbaSAqIDggKyA3XSA9IGJbaSAqIDggKyA3XSArIDg7DQo+ICsgICAg fQ0KPiArfQ0KPiArDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMgIlwuVkVDX1BFUk0iIDEgIm9wdGltaXplZCIgfSB9ICovDQo+ IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAtNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTQuYw0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4u ZmEyMTZmYzhjNDANCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9z bHAtNC5jDQo+IEBAIC0wLDAgKzEsMjIgQEANCj4gKy8qIHsgZGctZG8gY29t cGlsZSB9ICovDQo+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1h cmNoPXJ2MzJnY3YgLW1hYmk9aWxwMzJkIC0tcGFyYW0gcmlzY3YtYXV0b3Zl Yy1wcmVmZXJlbmNlPXNjYWxhYmxlIC1mZHVtcC10cmVlLW9wdGltaXplZC1k ZXRhaWxzIiB9ICovDQo+ICsNCj4gKyNpbmNsdWRlIDxzdGRpbnQtZ2NjLmg+ DQo+ICsNCj4gK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaXBhKSkNCj4gK2Yg KGludDE2X3QgKnJlc3RyaWN0IGEsIGludDE2X3QgKnJlc3RyaWN0IGIsIGlu dCBuKQ0KPiArew0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkN Cj4gKyAgICB7DQo+ICsgICAgICBhW2kgKiA4ICsgMF0gPSBiW2kgKiA4ICsg MV0gKyAxOw0KPiArICAgICAgYVtpICogOCArIDFdID0gYltpICogOCArIDdd ICsgMjsNCj4gKyAgICAgIGFbaSAqIDggKyAyXSA9IGJbaSAqIDggKyAxXSAr IDM7DQo+ICsgICAgICBhW2kgKiA4ICsgM10gPSBiW2kgKiA4ICsgN10gKyA0 Ow0KPiArICAgICAgYVtpICogOCArIDRdID0gYltpICogOCArIDFdICsgNTsN Cj4gKyAgICAgIGFbaSAqIDggKyA1XSA9IGJbaSAqIDggKyA3XSArIDY7DQo+ ICsgICAgICBhW2kgKiA4ICsgNl0gPSBiW2kgKiA4ICsgMV0gKyA3Ow0KPiAr ICAgICAgYVtpICogOCArIDddID0gYltpICogOCArIDddICsgODsNCj4gKyAg ICB9DQo+ICt9DQo+ICsNCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAiXC5WRUNfUEVSTSIgMSAib3B0aW1pemVkIiB9IH0gKi8N Cj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC01LmMgYi9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAtNS5j DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAw Li44OTllZDllMzEwYg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFs L3NscC01LmMNCj4gQEAgLTAsMCArMSwyMiBAQA0KPiArLyogeyBkZy1kbyBj b21waWxlIH0gKi8NCj4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICIt bWFyY2g9cnYzMmdjdiAtbWFiaT1pbHAzMmQgLS1wYXJhbSByaXNjdi1hdXRv dmVjLXByZWZlcmVuY2U9c2NhbGFibGUgLWZkdW1wLXRyZWUtb3B0aW1pemVk LWRldGFpbHMiIH0gKi8NCj4gKw0KPiArI2luY2x1ZGUgPHN0ZGludC1nY2Mu aD4NCj4gKw0KPiArdm9pZCBfX2F0dHJpYnV0ZV9fICgobm9pcGEpKQ0KPiAr ZiAoaW50OF90ICpyZXN0cmljdCBhLCBpbnQ4X3QgKnJlc3RyaWN0IGIsIGlu dCBuKQ0KPiArew0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkN Cj4gKyAgICB7DQo+ICsgICAgICBhW2kgKiA4ICsgMF0gPSBiW2kgKiA4ICsg MV0gKyAxOw0KPiArICAgICAgYVtpICogOCArIDFdID0gYltpICogOCArIDdd ICsgMjsNCj4gKyAgICAgIGFbaSAqIDggKyAyXSA9IGJbaSAqIDggKyA0XSAr IDM7DQo+ICsgICAgICBhW2kgKiA4ICsgM10gPSBiW2kgKiA4ICsgOF0gKyA0 Ow0KPiArICAgICAgYVtpICogOCArIDRdID0gYltpICogOCArIDFdICsgNTsN Cj4gKyAgICAgIGFbaSAqIDggKyA1XSA9IGJbaSAqIDggKyA3XSArIDY7DQo+ ICsgICAgICBhW2kgKiA4ICsgNl0gPSBiW2kgKiA4ICsgNF0gKyA3Ow0KPiAr ICAgICAgYVtpICogOCArIDddID0gYltpICogOCArIDhdICsgODsNCj4gKyAg ICB9DQo+ICt9DQo+ICsNCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAiXC5WRUNfUEVSTSIgMSAib3B0aW1pemVkIiB9IH0gKi8N Cj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC02LmMgYi9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAtNi5j DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAw Li5mYjg3Y2MwMGNlYQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFs L3NscC02LmMNCj4gQEAgLTAsMCArMSwyMyBAQA0KPiArLyogeyBkZy1kbyBj b21waWxlIH0gKi8NCj4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICIt bWFyY2g9cnYzMmdjdiAtbWFiaT1pbHAzMmQgLS1wYXJhbSByaXNjdi1hdXRv dmVjLXByZWZlcmVuY2U9c2NhbGFibGUgLWZkdW1wLXRyZWUtb3B0aW1pemVk LWRldGFpbHMiIH0gKi8NCj4gKw0KPiArI2luY2x1ZGUgPHN0ZGludC1nY2Mu aD4NCj4gKw0KPiArdm9pZCBfX2F0dHJpYnV0ZV9fICgobm9pcGEpKQ0KPiAr ZiAodWludDhfdCAqcmVzdHJpY3QgYSwgdWludDhfdCAqcmVzdHJpY3QgYiwg aW50IG4pDQo+ICt7DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytp KQ0KPiArICAgIHsNCj4gKyAgICAgIGFbaSAqIDggKyAwXSA9IGJbaSAqIDgg KyAxXSArIDE7DQo+ICsgICAgICBhW2kgKiA4ICsgMV0gPSBiW2kgKiA4ICsg Ml0gKyAyOw0KPiArICAgICAgYVtpICogOCArIDJdID0gYltpICogOCArIDZd ICsgODsNCj4gKyAgICAgIGFbaSAqIDggKyAzXSA9IGJbaSAqIDggKyA3XSAr IDQ7DQo+ICsgICAgICBhW2kgKiA4ICsgNF0gPSBiW2kgKiA4ICsgM10gKyA1 Ow0KPiArICAgICAgYVtpICogOCArIDVdID0gYltpICogOCArIDRdICsgNjsN Cj4gKyAgICAgIGFbaSAqIDggKyA2XSA9IGJbaSAqIDggKyA1XSArIDc7DQo+ ICsgICAgICBhW2kgKiA4ICsgN10gPSBiW2kgKiA4ICsgMF0gKyAzOw0KPiAr ICAgIH0NCj4gK30NCj4gKw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wLXRpbWVzICJcLlZFQ19QRVJNIiAxICJvcHRpbWl6ZWQiIH0gfSAq Lw0KPiArDQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAtNy5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwv c2xwLTcuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAw MDAwMDAwMC4uM2RkNzQ0YjU4NmUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMv cGFydGlhbC9zbHAtNy5jDQo+IEBAIC0wLDAgKzEsMTUgQEANCj4gKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovDQo+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0 aW9ucyAiLW1hcmNoPXJ2MzJnY3YgLW1hYmk9aWxwMzJkIC0tcGFyYW0gcmlz Y3YtYXV0b3ZlYy1wcmVmZXJlbmNlPXNjYWxhYmxlIC1mZHVtcC10cmVlLW9w dGltaXplZC1kZXRhaWxzIiB9ICovDQo+ICsNCj4gKyNpbmNsdWRlIDxzdGRp bnQtZ2NjLmg+DQo+ICsNCj4gK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaXBh KSkNCj4gK2YgKGZsb2F0ICpfX3Jlc3RyaWN0IGYsIGRvdWJsZSAqX19yZXN0 cmljdCBkLCBpbnQgbikNCj4gK3sNCj4gKyAgZm9yIChpbnQgaSA9IDA7IGkg PCBuOyArK2kpDQo+ICsgICAgew0KPiArICAgICAgZltpICogMiArIDBdID0g MTsNCj4gKyAgICAgIGZbaSAqIDIgKyAxXSA9IDI7DQo+ICsgICAgICBkW2ld ID0gMzsNCj4gKyAgICB9DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9z bHBfcnVuLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9y dnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tMS5jDQo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi4xNmYwNzhhMDQzMw0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tMS5jDQo+ IEBAIC0wLDAgKzEsNjYgQEANCj4gKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0 IHsgcmlzY3ZfdmVjdG9yIH0gfSB9ICovDQo+ICsvKiB7IGRnLWFkZGl0aW9u YWwtb3B0aW9ucyAiLS1wYXJhbSByaXNjdi1hdXRvdmVjLXByZWZlcmVuY2U9 c2NhbGFibGUiIH0gKi8NCj4gKw0KPiArI2luY2x1ZGUgInNscC0xLmMiDQo+ ICsNCj4gKyNkZWZpbmUgTElNSVQgMTI4DQo+ICt2b2lkIF9fYXR0cmlidXRl X18gKChvcHRpbWl6ZSAoMCkpKQ0KPiArZl9nb2xkZW4gKGludDhfdCAqcmVz dHJpY3QgYSwgaW50OF90ICpyZXN0cmljdCBiLCBpbnQgbikNCj4gK3sNCj4g KyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpDQo+ICsgICAgew0KPiAr ICAgICAgYVtpICogOCArIDBdID0gYltpICogOCArIDM3XSArIDE7DQo+ICsg ICAgICBhW2kgKiA4ICsgMV0gPSBiW2kgKiA4ICsgMzddICsgMjsNCj4gKyAg ICAgIGFbaSAqIDggKyAyXSA9IGJbaSAqIDggKyAzN10gKyA4Ow0KPiArICAg ICAgYVtpICogOCArIDNdID0gYltpICogOCArIDM3XSArIDQ7DQo+ICsgICAg ICBhW2kgKiA4ICsgNF0gPSBiW2kgKiA4ICsgMzddICsgNTsNCj4gKyAgICAg IGFbaSAqIDggKyA1XSA9IGJbaSAqIDggKyAzN10gKyA2Ow0KPiArICAgICAg YVtpICogOCArIDZdID0gYltpICogOCArIDM3XSArIDc7DQo+ICsgICAgICBh W2kgKiA4ICsgN10gPSBiW2kgKiA4ICsgMzddICsgMzsNCj4gKyAgICB9DQo+ ICt9DQo+ICsNCj4gK2ludA0KPiArbWFpbiAodm9pZCkNCj4gK3sNCj4gKyNk ZWZpbmUgUlVOKE5VTSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGludDhf dCBhXyMjTlVNW05VTSAqIDggKyA4XSA9IHswfTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBpbnQ4X3QgYV9n b2xkZW5fIyNOVU1bTlVNICogOCArIDhdID0gezB9OyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgaW50OF90IGJfIyNOVU1b TlVNICogOCArIDM3XSA9IHswfTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwg TlVNICogOCArIDM3OyBpKyspICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXA0KPiArICAgIHsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCj4gKyAgICAgIGlmIChpICUgTlVNID09IDApICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgYl8jI05VTVtpXSA9IChpICsgTlVNKSAlIExJTUlUOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAg ICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArIGJfIyNOVU1b aV0gPSAoaSAtIE5VTSkgJSAoLUxJTUlUKTsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KPiArICAgIH0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCj4gKyAgZiAoYV8jI05VTSwgYl8jI05VTSwgTlVN KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ICsgIGZfZ29sZGVuIChhX2dvbGRlbl8jI05VTSwgYl8j I05VTSwgTlVNKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXA0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IE5VTSAqIDggKyA4OyBp KyspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsg ICAgICBpZiAoYV8jI05VTVtpXSAhPSBhX2dvbGRlbl8jI05VTVtpXSkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArIF9fYnVp bHRpbl9hYm9ydCAoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIH0NCj4gKw0KPiArICBS VU4gKDMpOw0KPiArICBSVU4gKDUpOw0KPiArICBSVU4gKDE1KTsNCj4gKyAg UlVOICgxNik7DQo+ICsgIFJVTiAoMTcpOw0KPiArICBSVU4gKDMxKTsNCj4g KyAgUlVOICgzMik7DQo+ICsgIFJVTiAoMzMpOw0KPiArICBSVU4gKDYzKTsN Cj4gKyAgUlVOICg2NCk7DQo+ICsgIFJVTiAoNjUpOw0KPiArICBSVU4gKDEy Nyk7DQo+ICsgIFJVTiAoMTI4KTsNCj4gKyAgUlVOICgxMjkpOw0KPiArICBS VU4gKDIzOSk7DQo+ICsgIFJVTiAoMzU5KTsNCj4gKyAgUlVOICg0OTgpOw0K PiArICBSVU4gKDc5OSk7DQo+ICsgIFJVTiAoOTc3KTsNCj4gKyAgUlVOICg1 Nzg5KTsNCj4gKyAgcmV0dXJuIDA7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFy dGlhbC9zbHBfcnVuLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tMi5jDQo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi40MWY2ODhm NjI4Yw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4t Mi5jDQo+IEBAIC0wLDAgKzEsNjcgQEANCj4gKy8qIHsgZGctZG8gcnVuIHsg dGFyZ2V0IHsgcmlzY3ZfdmVjdG9yIH0gfSB9ICovDQo+ICsvKiB7IGRnLWFk ZGl0aW9uYWwtb3B0aW9ucyAiLS1wYXJhbSByaXNjdi1hdXRvdmVjLXByZWZl cmVuY2U9c2NhbGFibGUiIH0gKi8NCj4gKw0KPiArI2luY2x1ZGUgInNscC0y LmMiDQo+ICsNCj4gKyNkZWZpbmUgTElNSVQgMzI3NjcNCj4gKw0KPiArdm9p ZCBfX2F0dHJpYnV0ZV9fICgob3B0aW1pemUgKDApKSkNCj4gK2ZfZ29sZGVu IChpbnQxNl90ICpyZXN0cmljdCBhLCBpbnQxNl90ICpyZXN0cmljdCBiLCBp bnQgbikNCj4gK3sNCj4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kp DQo+ICsgICAgew0KPiArICAgICAgYVtpICogOCArIDBdID0gYltpICogOCAr IDM3XSArIDE7DQo+ICsgICAgICBhW2kgKiA4ICsgMV0gPSBiW2kgKiA4ICsg MzddICsgMjsNCj4gKyAgICAgIGFbaSAqIDggKyAyXSA9IGJbaSAqIDggKyAz N10gKyA4Ow0KPiArICAgICAgYVtpICogOCArIDNdID0gYltpICogOCArIDM3 XSArIDQ7DQo+ICsgICAgICBhW2kgKiA4ICsgNF0gPSBiW2kgKiA4ICsgMzdd ICsgNTsNCj4gKyAgICAgIGFbaSAqIDggKyA1XSA9IGJbaSAqIDggKyAzN10g KyA2Ow0KPiArICAgICAgYVtpICogOCArIDZdID0gYltpICogOCArIDM3XSAr IDc7DQo+ICsgICAgICBhW2kgKiA4ICsgN10gPSBiW2kgKiA4ICsgMzddICsg MzsNCj4gKyAgICB9DQo+ICt9DQo+ICsNCj4gK2ludA0KPiArbWFpbiAodm9p ZCkNCj4gK3sNCj4gKyNkZWZpbmUgUlVOKE5VTSkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgIGludDE2X3QgYV8jI05VTVtOVU0gKiA4ICsgOF0gPSB7MH07 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K PiArICBpbnQxNl90IGFfZ29sZGVuXyMjTlVNW05VTSAqIDggKyA4XSA9IHsw fTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAg aW50MTZfdCBiXyMjTlVNW05VTSAqIDggKyAzN10gPSB7MH07ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGZvciAo aW50IGkgPSAwOyBpIDwgTlVNICogOCArIDM3OyBpKyspICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgIGlmIChpICUgTlVN ID09IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQo+ICsgYl8jI05VTVtpXSA9IChpICsgTlVN KSAlIExJTUlUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ICsgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KPiArIGJfIyNOVU1baV0gPSAoaSAtIE5VTSkgJSAoLUxJTUlUKTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIH0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZiAoYV8jI05V TSwgYl8jI05VTSwgTlVNKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGZfZ29sZGVuIChhX2dv bGRlbl8jI05VTSwgYl8jI05VTSwgTlVNKTsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KPiArICBmb3IgKGludCBpID0gMDsgaSA8 IE5VTSAqIDggKyA4OyBpKyspICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCj4gKyAgICB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ICsgICAgICBpZiAoYV8jI05VTVtpXSAhPSBhX2dvbGRl bl8jI05VTVtpXSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXA0KPiArIF9fYnVpbHRpbl9hYm9ydCAoKTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAg IH0NCj4gKw0KPiArICBSVU4gKDMpOw0KPiArICBSVU4gKDUpOw0KPiArICBS VU4gKDE1KTsNCj4gKyAgUlVOICgxNik7DQo+ICsgIFJVTiAoMTcpOw0KPiAr ICBSVU4gKDMxKTsNCj4gKyAgUlVOICgzMik7DQo+ICsgIFJVTiAoMzMpOw0K PiArICBSVU4gKDYzKTsNCj4gKyAgUlVOICg2NCk7DQo+ICsgIFJVTiAoNjUp Ow0KPiArICBSVU4gKDEyNyk7DQo+ICsgIFJVTiAoMTI4KTsNCj4gKyAgUlVO ICgxMjkpOw0KPiArICBSVU4gKDIzOSk7DQo+ICsgIFJVTiAoMzU5KTsNCj4g KyAgUlVOICg0OTgpOw0KPiArICBSVU4gKDc5OSk7DQo+ICsgIFJVTiAoOTc3 KTsNCj4gKyAgUlVOICg1Nzg5KTsNCj4gKyAgcmV0dXJuIDA7DQo+ICt9DQo+ IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2F1dG92ZWMvcGFydGlhbC9zbHBfcnVuLTMuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9y dW4tMy5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAw MDAwMDAwLi4zMDk5NmNiMmM2ZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9w YXJ0aWFsL3NscF9ydW4tMy5jDQo+IEBAIC0wLDAgKzEsNjcgQEANCj4gKy8q IHsgZGctZG8gcnVuIHsgdGFyZ2V0IHsgcmlzY3ZfdmVjdG9yIH0gfSB9ICov DQo+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLS1wYXJhbSByaXNj di1hdXRvdmVjLXByZWZlcmVuY2U9c2NhbGFibGUiIH0gKi8NCj4gKw0KPiAr I2luY2x1ZGUgInNscC0zLmMiDQo+ICsNCj4gKyNkZWZpbmUgTElNSVQgMTI4 DQo+ICsNCj4gK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG9wdGltaXplICgwKSkp DQo+ICtmX2dvbGRlbiAoaW50OF90ICpyZXN0cmljdCBhLCBpbnQ4X3QgKnJl c3RyaWN0IGIsIGludCBuKQ0KPiArew0KPiArICBmb3IgKGludCBpID0gMDsg aSA8IG47ICsraSkNCj4gKyAgICB7DQo+ICsgICAgICBhW2kgKiA4XSA9IGJb aSAqIDggKyAxXSArIDE7DQo+ICsgICAgICBhW2kgKiA4ICsgMV0gPSBiW2kg KiA4ICsgN10gKyAyOw0KPiArICAgICAgYVtpICogOCArIDJdID0gYltpICog OCArIDFdICsgMzsNCj4gKyAgICAgIGFbaSAqIDggKyAzXSA9IGJbaSAqIDgg KyA3XSArIDQ7DQo+ICsgICAgICBhW2kgKiA4ICsgNF0gPSBiW2kgKiA4ICsg MV0gKyA1Ow0KPiArICAgICAgYVtpICogOCArIDVdID0gYltpICogOCArIDdd ICsgNjsNCj4gKyAgICAgIGFbaSAqIDggKyA2XSA9IGJbaSAqIDggKyAxXSAr IDc7DQo+ICsgICAgICBhW2kgKiA4ICsgN10gPSBiW2kgKiA4ICsgN10gKyA4 Ow0KPiArICAgIH0NCj4gK30NCj4gKw0KPiAraW50DQo+ICttYWluICh2b2lk KQ0KPiArew0KPiArI2RlZmluZSBSVU4oTlVNKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCj4gKyAgaW50OF90IGFfIyNOVU1bTlVNICogOCArIDhdID0gezB9OyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgIGludDhfdCBhX2dvbGRlbl8jI05VTVtOVU0gKiA4ICsgOF0gPSB7MH07 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBp bnQ4X3QgYl8jI05VTVtOVU0gKiA4ICsgOF0gPSB7MH07ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZm9yIChp bnQgaSA9IDA7IGkgPCBOVU0gKiA4ICsgODsgaSsrKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgeyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgaWYgKGkgJSBOVU0g PT0gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCj4gKyBiXyMjTlVNW2ldID0gKGkgKyBOVU0p ICUgTElNSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4gKyAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ICsgYl8jI05VTVtpXSA9IChpIC0gTlVNKSAlICgtTElNSVQpOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgfSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBmIChhXyMjTlVN LCBiXyMjTlVNLCBOVU0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZl9nb2xkZW4gKGFfZ29s ZGVuXyMjTlVNLCBiXyMjTlVNLCBOVU0pOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwg TlVNICogOCArIDg7IGkrKykgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXA0KPiArICAgIHsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCj4gKyAgICAgIGlmIChhXyMjTlVNW2ldICE9IGFfZ29sZGVu XyMjTlVNW2ldKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgX19idWlsdGluX2Fib3J0ICgpOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAg fQ0KPiArDQo+ICsgIFJVTiAoMyk7DQo+ICsgIFJVTiAoNSk7DQo+ICsgIFJV TiAoMTUpOw0KPiArICBSVU4gKDE2KTsNCj4gKyAgUlVOICgxNyk7DQo+ICsg IFJVTiAoMzEpOw0KPiArICBSVU4gKDMyKTsNCj4gKyAgUlVOICgzMyk7DQo+ ICsgIFJVTiAoNjMpOw0KPiArICBSVU4gKDY0KTsNCj4gKyAgUlVOICg2NSk7 DQo+ICsgIFJVTiAoMTI3KTsNCj4gKyAgUlVOICgxMjgpOw0KPiArICBSVU4g KDEyOSk7DQo+ICsgIFJVTiAoMjM5KTsNCj4gKyAgUlVOICgzNTkpOw0KPiAr ICBSVU4gKDQ5OCk7DQo+ICsgIFJVTiAoNzk5KTsNCj4gKyAgUlVOICg5Nzcp Ow0KPiArICBSVU4gKDU3ODkpOw0KPiArICByZXR1cm4gMDsNCj4gK30NCj4g ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9y dnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tNC5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwX3J1 bi00LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MDAwMDAuLjNkNDNlZjA4OTBjDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Bh cnRpYWwvc2xwX3J1bi00LmMNCj4gQEAgLTAsMCArMSw2NyBAQA0KPiArLyog eyBkZy1kbyBydW4geyB0YXJnZXQgeyByaXNjdl92ZWN0b3IgfSB9IH0gKi8N Cj4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItLXBhcmFtIHJpc2N2 LWF1dG92ZWMtcHJlZmVyZW5jZT1zY2FsYWJsZSIgfSAqLw0KPiArDQo+ICsj aW5jbHVkZSAic2xwLTQuYyINCj4gKw0KPiArI2RlZmluZSBMSU1JVCAzMjc2 Nw0KPiArDQo+ICt2b2lkIF9fYXR0cmlidXRlX18gKChvcHRpbWl6ZSAoMCkp KQ0KPiArZl9nb2xkZW4gKGludDE2X3QgKnJlc3RyaWN0IGEsIGludDE2X3Qg KnJlc3RyaWN0IGIsIGludCBuKQ0KPiArew0KPiArICBmb3IgKGludCBpID0g MDsgaSA8IG47ICsraSkNCj4gKyAgICB7DQo+ICsgICAgICBhW2kgKiA4XSA9 IGJbaSAqIDggKyAxXSArIDE7DQo+ICsgICAgICBhW2kgKiA4ICsgMV0gPSBi W2kgKiA4ICsgN10gKyAyOw0KPiArICAgICAgYVtpICogOCArIDJdID0gYltp ICogOCArIDFdICsgMzsNCj4gKyAgICAgIGFbaSAqIDggKyAzXSA9IGJbaSAq IDggKyA3XSArIDQ7DQo+ICsgICAgICBhW2kgKiA4ICsgNF0gPSBiW2kgKiA4 ICsgMV0gKyA1Ow0KPiArICAgICAgYVtpICogOCArIDVdID0gYltpICogOCAr IDddICsgNjsNCj4gKyAgICAgIGFbaSAqIDggKyA2XSA9IGJbaSAqIDggKyAx XSArIDc7DQo+ICsgICAgICBhW2kgKiA4ICsgN10gPSBiW2kgKiA4ICsgN10g KyA4Ow0KPiArICAgIH0NCj4gK30NCj4gKw0KPiAraW50DQo+ICttYWluICh2 b2lkKQ0KPiArew0KPiArI2RlZmluZSBSVU4oTlVNKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4gKyAgaW50MTZfdCBhXyMjTlVNW05VTSAqIDggKyA4XSA9IHsw fTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ICsgIGludDE2X3QgYV9nb2xkZW5fIyNOVU1bTlVNICogOCArIDhdID0g ezB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr ICBpbnQxNl90IGJfIyNOVU1bTlVNICogOCArIDhdID0gezB9OyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZm9y IChpbnQgaSA9IDA7IGkgPCBOVU0gKiA4ICsgODsgaSsrKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgeyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgaWYgKGkgJSBO VU0gPT0gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCj4gKyBiXyMjTlVNW2ldID0gKGkgKyBO VU0pICUgTElNSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCj4gKyAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgYl8jI05VTVtpXSA9IChpIC0gTlVNKSAlICgtTElNSVQpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAg fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBmIChhXyMj TlVNLCBiXyMjTlVNLCBOVU0pOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZl9nb2xkZW4gKGFf Z29sZGVuXyMjTlVNLCBiXyMjTlVNLCBOVU0pOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGZvciAoaW50IGkgPSAwOyBp IDwgTlVNICogOCArIDg7IGkrKykgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXA0KPiArICAgIHsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gKyAgICAgIGlmIChhXyMjTlVNW2ldICE9IGFfZ29s ZGVuXyMjTlVNW2ldKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ICsgX19idWlsdGluX2Fib3J0ICgpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsg ICAgfQ0KPiArDQo+ICsgIFJVTiAoMyk7DQo+ICsgIFJVTiAoNSk7DQo+ICsg IFJVTiAoMTUpOw0KPiArICBSVU4gKDE2KTsNCj4gKyAgUlVOICgxNyk7DQo+ ICsgIFJVTiAoMzEpOw0KPiArICBSVU4gKDMyKTsNCj4gKyAgUlVOICgzMyk7 DQo+ICsgIFJVTiAoNjMpOw0KPiArICBSVU4gKDY0KTsNCj4gKyAgUlVOICg2 NSk7DQo+ICsgIFJVTiAoMTI3KTsNCj4gKyAgUlVOICgxMjgpOw0KPiArICBS VU4gKDEyOSk7DQo+ICsgIFJVTiAoMjM5KTsNCj4gKyAgUlVOICgzNTkpOw0K PiArICBSVU4gKDQ5OCk7DQo+ICsgIFJVTiAoNzk5KTsNCj4gKyAgUlVOICg5 NzcpOw0KPiArICBSVU4gKDU3ODkpOw0KPiArICByZXR1cm4gMDsNCj4gK30N Cj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tNS5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xw X3J1bi01LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAw MDAwMDAwMDAuLjgxNDMwOGJkN2FmDQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVj L3BhcnRpYWwvc2xwX3J1bi01LmMNCj4gQEAgLTAsMCArMSw2NyBAQA0KPiAr LyogeyBkZy1kbyBydW4geyB0YXJnZXQgeyByaXNjdl92ZWN0b3IgfSB9IH0g Ki8NCj4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItLXBhcmFtIHJp c2N2LWF1dG92ZWMtcHJlZmVyZW5jZT1zY2FsYWJsZSIgfSAqLw0KPiArDQo+ ICsjaW5jbHVkZSAic2xwLTUuYyINCj4gKw0KPiArI2RlZmluZSBMSU1JVCAx MjgNCj4gKw0KPiArdm9pZCBfX2F0dHJpYnV0ZV9fICgob3B0aW1pemUgKDAp KSkNCj4gK2ZfZ29sZGVuIChpbnQ4X3QgKnJlc3RyaWN0IGEsIGludDhfdCAq cmVzdHJpY3QgYiwgaW50IG4pDQo+ICt7DQo+ICsgIGZvciAoaW50IGkgPSAw OyBpIDwgbjsgKytpKQ0KPiArICAgIHsNCj4gKyAgICAgIGFbaSAqIDggKyAw XSA9IGJbaSAqIDggKyAxXSArIDE7DQo+ICsgICAgICBhW2kgKiA4ICsgMV0g PSBiW2kgKiA4ICsgN10gKyAyOw0KPiArICAgICAgYVtpICogOCArIDJdID0g YltpICogOCArIDRdICsgMzsNCj4gKyAgICAgIGFbaSAqIDggKyAzXSA9IGJb aSAqIDggKyA4XSArIDQ7DQo+ICsgICAgICBhW2kgKiA4ICsgNF0gPSBiW2kg KiA4ICsgMV0gKyA1Ow0KPiArICAgICAgYVtpICogOCArIDVdID0gYltpICog OCArIDddICsgNjsNCj4gKyAgICAgIGFbaSAqIDggKyA2XSA9IGJbaSAqIDgg KyA0XSArIDc7DQo+ICsgICAgICBhW2kgKiA4ICsgN10gPSBiW2kgKiA4ICsg OF0gKyA4Ow0KPiArICAgIH0NCj4gK30NCj4gKw0KPiAraW50DQo+ICttYWlu ICh2b2lkKQ0KPiArew0KPiArI2RlZmluZSBSVU4oTlVNKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCj4gKyAgaW50OF90IGFfIyNOVU1bTlVNICogOCArIDhdID0g ezB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgIGludDhfdCBhX2dvbGRlbl8jI05VTVtOVU0gKiA4ICsgOF0g PSB7MH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K PiArICBpbnQ4X3QgYl8jI05VTVtOVU0gKiA4ICsgOV0gPSB7MH07ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAg Zm9yIChpbnQgaSA9IDA7IGkgPCBOVU0gKiA4ICsgOTsgaSsrKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgeyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgaWYgKGkg JSBOVU0gPT0gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyBiXyMjTlVNW2ldID0gKGkg KyBOVU0pICUgTElNSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gKyAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ICsgYl8jI05VTVtpXSA9IChpIC0gTlVNKSAlICgtTElNSVQp OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsg ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBmIChh XyMjTlVNLCBiXyMjTlVNLCBOVU0pOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZl9nb2xkZW4g KGFfZ29sZGVuXyMjTlVNLCBiXyMjTlVNLCBOVU0pOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGZvciAoaW50IGkgPSAw OyBpIDwgTlVNICogOCArIDg7IGkrKykgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KPiArICAgIHsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCj4gKyAgICAgIGlmIChhXyMjTlVNW2ldICE9IGFf Z29sZGVuXyMjTlVNW2ldKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ICsgX19idWlsdGluX2Fib3J0ICgpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgICAgfQ0KPiArDQo+ICsgIFJVTiAoMyk7DQo+ICsgIFJVTiAoNSk7DQo+ ICsgIFJVTiAoMTUpOw0KPiArICBSVU4gKDE2KTsNCj4gKyAgUlVOICgxNyk7 DQo+ICsgIFJVTiAoMzEpOw0KPiArICBSVU4gKDMyKTsNCj4gKyAgUlVOICgz Myk7DQo+ICsgIFJVTiAoNjMpOw0KPiArICBSVU4gKDY0KTsNCj4gKyAgUlVO ICg2NSk7DQo+ICsgIFJVTiAoMTI3KTsNCj4gKyAgUlVOICgxMjgpOw0KPiAr ICBSVU4gKDEyOSk7DQo+ICsgIFJVTiAoMjM5KTsNCj4gKyAgUlVOICgzNTkp Ow0KPiArICBSVU4gKDQ5OCk7DQo+ICsgIFJVTiAoNzk5KTsNCj4gKyAgUlVO ICg5NzcpOw0KPiArICBSVU4gKDU3ODkpOw0KPiArICByZXR1cm4gMDsNCj4g K30NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tNi5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwv c2xwX3J1bi02LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgg MDAwMDAwMDAwMDAuLmUzMTdlZWFjMmYyDQo+IC0tLSAvZGV2L251bGwNCj4g KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRv dmVjL3BhcnRpYWwvc2xwX3J1bi02LmMNCj4gQEAgLTAsMCArMSw2NyBAQA0K PiArLyogeyBkZy1kbyBydW4geyB0YXJnZXQgeyByaXNjdl92ZWN0b3IgfSB9 IH0gKi8NCj4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItLXBhcmFt IHJpc2N2LWF1dG92ZWMtcHJlZmVyZW5jZT1zY2FsYWJsZSIgfSAqLw0KPiAr DQo+ICsjaW5jbHVkZSAic2xwLTYuYyINCj4gKw0KPiArI2RlZmluZSBMSU1J VCAxMjgNCj4gKw0KPiArdm9pZCBfX2F0dHJpYnV0ZV9fICgob3B0aW1pemUg KDApKSkNCj4gK2ZfZ29sZGVuIChpbnQ4X3QgKnJlc3RyaWN0IGEsIGludDhf dCAqcmVzdHJpY3QgYiwgaW50IG4pDQo+ICt7DQo+ICsgIGZvciAoaW50IGkg PSAwOyBpIDwgbjsgKytpKQ0KPiArICAgIHsNCj4gKyAgICAgIGFbaSAqIDgg KyAwXSA9IGJbaSAqIDggKyAxXSArIDE7DQo+ICsgICAgICBhW2kgKiA4ICsg MV0gPSBiW2kgKiA4ICsgMl0gKyAyOw0KPiArICAgICAgYVtpICogOCArIDJd ID0gYltpICogOCArIDZdICsgODsNCj4gKyAgICAgIGFbaSAqIDggKyAzXSA9 IGJbaSAqIDggKyA3XSArIDQ7DQo+ICsgICAgICBhW2kgKiA4ICsgNF0gPSBi W2kgKiA4ICsgM10gKyA1Ow0KPiArICAgICAgYVtpICogOCArIDVdID0gYltp ICogOCArIDRdICsgNjsNCj4gKyAgICAgIGFbaSAqIDggKyA2XSA9IGJbaSAq IDggKyA1XSArIDc7DQo+ICsgICAgICBhW2kgKiA4ICsgN10gPSBiW2kgKiA4 ICsgMF0gKyAzOw0KPiArICAgIH0NCj4gK30NCj4gKw0KPiAraW50DQo+ICtt YWluICh2b2lkKQ0KPiArew0KPiArI2RlZmluZSBSVU4oTlVNKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gKyAgaW50OF90IGFfIyNOVU1bTlVNICogOCArIDhd ID0gezB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ICsgIGludDhfdCBhX2dvbGRlbl8jI05VTVtOVU0gKiA4ICsg OF0gPSB7MH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KPiArICBpbnQ4X3QgYl8jI05VTVtOVU0gKiA4ICsgOV0gPSB7MH07ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4g KyAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU0gKiA4ICsgOTsgaSsrKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAg eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgaWYg KGkgJSBOVU0gPT0gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyBiXyMjTlVNW2ldID0g KGkgKyBOVU0pICUgTElNSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCj4gKyAgICAgIGVsc2UgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ICsgYl8jI05VTVtpXSA9IChpIC0gTlVNKSAlICgtTElN SVQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBm IChhXyMjTlVNLCBiXyMjTlVNLCBOVU0pOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZl9nb2xk ZW4gKGFfZ29sZGVuXyMjTlVNLCBiXyMjTlVNLCBOVU0pOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGZvciAoaW50IGkg PSAwOyBpIDwgTlVNICogOCArIDg7IGkrKykgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIHsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgIGlmIChhXyMjTlVNW2ldICE9 IGFfZ29sZGVuXyMjTlVNW2ldKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcDQo+ICsgX19idWlsdGluX2Fib3J0ICgpOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ICsgICAgfQ0KPiArDQo+ICsgIFJVTiAoMyk7DQo+ICsgIFJVTiAoNSk7 DQo+ICsgIFJVTiAoMTUpOw0KPiArICBSVU4gKDE2KTsNCj4gKyAgUlVOICgx Nyk7DQo+ICsgIFJVTiAoMzEpOw0KPiArICBSVU4gKDMyKTsNCj4gKyAgUlVO ICgzMyk7DQo+ICsgIFJVTiAoNjMpOw0KPiArICBSVU4gKDY0KTsNCj4gKyAg UlVOICg2NSk7DQo+ICsgIFJVTiAoMTI3KTsNCj4gKyAgUlVOICgxMjgpOw0K PiArICBSVU4gKDEyOSk7DQo+ICsgIFJVTiAoMjM5KTsNCj4gKyAgUlVOICgz NTkpOw0KPiArICBSVU4gKDQ5OCk7DQo+ICsgIFJVTiAoNzk5KTsNCj4gKyAg UlVOICg5NzcpOw0KPiArICBSVU4gKDU3ODkpOw0KPiArICByZXR1cm4gMDsN Cj4gK30NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tNy5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRp YWwvc2xwX3J1bi03LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k ZXggMDAwMDAwMDAwMDAuLmE4ZTQ3ODE5ODhlDQo+IC0tLSAvZGV2L251bGwN Cj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9h dXRvdmVjL3BhcnRpYWwvc2xwX3J1bi03LmMNCj4gQEAgLTAsMCArMSw1OCBA QA0KPiArLyogeyBkZy1kbyBydW4geyB0YXJnZXQgeyByaXNjdl92ZWN0b3Ig fSB9IH0gKi8NCj4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItLXBh cmFtIHJpc2N2LWF1dG92ZWMtcHJlZmVyZW5jZT1zY2FsYWJsZSIgfSAqLw0K PiArDQo+ICsjaW5jbHVkZSAic2xwLTcuYyINCj4gKw0KPiArdm9pZA0KPiAr Zl9nb2xkZW4gKGZsb2F0ICpfX3Jlc3RyaWN0IGYsIGRvdWJsZSAqX19yZXN0 cmljdCBkLCBpbnQgbikNCj4gK3sNCj4gKyAgZm9yIChpbnQgaSA9IDA7IGkg PCBuOyArK2kpDQo+ICsgICAgew0KPiArICAgICAgZltpICogMiArIDBdID0g MTsNCj4gKyAgICAgIGZbaSAqIDIgKyAxXSA9IDI7DQo+ICsgICAgICBkW2ld ID0gMzsNCj4gKyAgICB9DQo+ICt9DQo+ICsNCj4gK2ludA0KPiArbWFpbiAo dm9pZCkNCj4gK3sNCj4gKyNkZWZpbmUgUlVOKE5VTSkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ICsgIGZsb2F0IGFfIyNOVU1bTlVNICogMiArIDJdID0gezB9 OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KPiArICBmbG9hdCBhX2dvbGRlbl8jI05VTVtOVU0gKiAyICsgMl0gPSB7 MH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4g KyAgZG91YmxlIGJfIyNOVU1bTlVNXSA9IHswfTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGRv dWJsZSBiX2dvbGRlbl8jI05VTVtOVU1dID0gezB9OyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBmIChhXyMj TlVNLCBiXyMjTlVNLCBOVU0pOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZl9nb2xkZW4gKGFf Z29sZGVuXyMjTlVNLCBiX2dvbGRlbl8jI05VTSwgTlVNKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGZvciAoaW50IGkgPSAwOyBp IDwgTlVNOyBpKyspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXA0KPiArICAgIHsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gKyAgICAgIGlmIChhXyMjTlVNW2kgKiAyICsgMF0g IT0gYV9nb2xkZW5fIyNOVU1baSAqIDIgKyAwXSkgICAgICAgICAgICAgICAg ICAgICBcDQo+ICsgX19idWlsdGluX2Fib3J0ICgpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsg ICAgICBpZiAoYV8jI05VTVtpICogMiArIDFdICE9IGFfZ29sZGVuXyMjTlVN W2kgKiAyICsgMV0pICAgICAgICAgICAgICAgICAgICAgXA0KPiArIF9fYnVp bHRpbl9hYm9ydCAoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgaWYgKGJfIyNOVU1b aV0gIT0gYl9nb2xkZW5fIyNOVU1baV0pICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCj4gKyBfX2J1aWx0aW5fYWJvcnQgKCk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4gKyAgICB9DQo+ICsNCj4gKyAgUlVOICgzKTsNCj4gKyAgUlVO ICg1KTsNCj4gKyAgUlVOICgxNSk7DQo+ICsgIFJVTiAoMTYpOw0KPiArICBS VU4gKDE3KTsNCj4gKyAgUlVOICgzMSk7DQo+ICsgIFJVTiAoMzIpOw0KPiAr ICBSVU4gKDMzKTsNCj4gKyAgUlVOICg2Myk7DQo+ICsgIFJVTiAoNjQpOw0K PiArICBSVU4gKDY1KTsNCj4gKyAgUlVOICgxMjcpOw0KPiArICBSVU4gKDEy OCk7DQo+ICsgIFJVTiAoMTI5KTsNCj4gKyAgUlVOICgyMzkpOw0KPiArICBS VU4gKDM1OSk7DQo+ICsgIFJVTiAoNDk4KTsNCj4gKyAgUlVOICg3OTkpOw0K PiArICBSVU4gKDk3Nyk7DQo+ICsgIFJVTiAoNTc4OSk7DQo+ICsgIHJldHVy biAwOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3NjYWxhYmxlLTEuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9zY2FsYWJs ZS0xLmMNCj4gaW5kZXggNTAwYjBhZGNlNjYuLjNjMDNhODczNzdkIDEwMDY0 NA0KPiAtLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2 L2F1dG92ZWMvc2NhbGFibGUtMS5jDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9zY2FsYWJsZS0xLmMNCj4g QEAgLTE0LDQgKzE0LDQgQEAgZiAoaW50MzJfdCAqX19yZXN0cmljdCBmLCBp bnQzMl90ICpfX3Jlc3RyaWN0IGQsIGludCBuKQ0KPiAgICAgIH0NCj4gfQ0K PiAtLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJ2ZWN0 b3JpemVkIDEgbG9vcHMgaW4gZnVuY3Rpb24iIDAgInZlY3QiIH0gfSAqLw0K PiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJ2ZWN0 b3JpemVkIDEgbG9vcHMgaW4gZnVuY3Rpb24iIDEgInZlY3QiIH0gfSAqLw0K PiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2 L3J2di9hdXRvdmVjL3YtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L3J2di9hdXRvdmVjL3YtMS5jDQo+IGluZGV4IDM4M2M4MmEzYjdj Li5lNjhkMDVmNWY0OCAxMDA2NDQNCj4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3YtMS5jDQo+ICsrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy92LTEu Yw0KPiBAQCAtMyw5ICszLDQgQEANCj4gI2luY2x1ZGUgInRlbXBsYXRlLTEu aCINCj4gLS8qIEN1cnJlbnRseSwgd2UgZG9uJ3Qgc3VwcG9ydCBTTFAgYXV0 by12ZWN0b3JpemF0aW9uIGZvciBWTEEuIEJ1dCBpdCdzDQo+IC0gICBuZWNl c3NhcnkgdGhhdCB3ZSBhZGQgdGhpcyB0ZXN0Y2FzZSBoZXJlIHRvIG1ha2Ug c3VyZSBzdWNoIHVuc3VwcG9ydGVkIFNMUA0KPiAtICAgYXV0by12ZWN0b3Jp emF0aW9uIHdpbGwgbm90IGNhdXNlIGFuIElDRS4gV2Ugd2lsbCBlbmFibGUg InZlY3QiIGNoZWNraW5nIHdoZW4NCj4gLSAgIHdlIHN1cHBvcnQgU0xQIGF1 dG8tdmVjdG9yaXphdGlvbiBmb3IgVkxBIGluIHRoZSBmdXR1cmUuICAqLw0K PiAtDQo+IC0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMg InZlY3Rvcml6ZWQgMSBsb29wcyBpbiBmdW5jdGlvbiIgMCAidmVjdCIgfSB9 ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMg InZlY3Rvcml6ZWQgMSBsb29wcyBpbiBmdW5jdGlvbiIgNSAidmVjdCIgfSB9 ICovDQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3YvcnZ2L2F1dG92ZWMvenZlMzJmX3p2bDEyOGItMS5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTMyZl96 dmwxMjhiLTEuYw0KPiBpbmRleCAyM2NjMWM4NjUxZi4uZWNmZGE3OWUxOWEg MTAwNjQ0DQo+IC0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYXV0b3ZlYy96dmUzMmZfenZsMTI4Yi0xLmMNCj4gKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTMy Zl96dmwxMjhiLTEuYw0KPiBAQCAtMyw0ICszLDQgQEANCj4gI2luY2x1ZGUg InRlbXBsYXRlLTEuaCINCj4gLS8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAidmVjdG9yaXplZCAxIGxvb3BzIGluIGZ1bmN0aW9uIiAw ICJ2ZWN0IiB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAidmVjdG9yaXplZCAxIGxvb3BzIGluIGZ1bmN0aW9uIiAz ICJ2ZWN0IiB9IH0gKi8NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96dmUzMnhfenZsMTI4Yi0x LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92 ZWMvenZlMzJ4X3p2bDEyOGItMS5jDQo+IGluZGV4IDRmMTMwZjAyZjY3Li4x Mzk0ZjA4ZjJiOSAxMDA2NDQNCj4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTMyeF96dmwxMjhiLTEuYw0K PiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvenZlMzJ4X3p2bDEyOGItMS5jDQo+IEBAIC0zLDQgKzMsNCBAQA0K PiAjaW5jbHVkZSAidGVtcGxhdGUtMS5oIg0KPiAtLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJ2ZWN0b3JpemVkIDEgbG9vcHMgaW4g ZnVuY3Rpb24iIDAgInZlY3QiIH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJ2ZWN0b3JpemVkIDEgbG9vcHMgaW4g ZnVuY3Rpb24iIDIgInZlY3QiIH0gfSAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTY0 ZC0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvenZlNjRkLTEuYw0KPiBpbmRleCA4MjNkNTFhMDNjYi4uYzVlODk5 OTZmYTQgMTAwNjQ0DQo+IC0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYXV0b3ZlYy96dmU2NGQtMS5jDQo+ICsrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96dmU2NGQt MS5jDQo+IEBAIC0zLDQgKzMsNCBAQA0KPiAjaW5jbHVkZSAidGVtcGxhdGUt MS5oIg0KPiAtLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVz ICJ2ZWN0b3JpemVkIDEgbG9vcHMgaW4gZnVuY3Rpb24iIDIgInZlY3QiIH0g fSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVz ICJ2ZWN0b3JpemVkIDEgbG9vcHMgaW4gZnVuY3Rpb24iIDMgInZlY3QiIH0g fSAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTY0ZF96dmwxMjhiLTEuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96dmU2NGRf enZsMTI4Yi0xLmMNCj4gaW5kZXggNWVhZDIyNzQ2ZDMuLjZiMzIwY2E2ZjM4 IDEwMDY0NA0KPiAtLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlz Y3YvcnZ2L2F1dG92ZWMvenZlNjRkX3p2bDEyOGItMS5jDQo+ICsrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96dmU2 NGRfenZsMTI4Yi0xLmMNCj4gQEAgLTMsNCArMyw0IEBADQo+ICNpbmNsdWRl ICJ0ZW1wbGF0ZS0xLmgiDQo+IC0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtdGltZXMgInZlY3Rvcml6ZWQgMSBsb29wcyBpbiBmdW5jdGlvbiIg MCAidmVjdCIgfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtdGltZXMgInZlY3Rvcml6ZWQgMSBsb29wcyBpbiBmdW5jdGlvbiIg NSAidmVjdCIgfSB9ICovDQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvenZlNjRmLTEuYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96dmU2 NGYtMS5jDQo+IGluZGV4IGUwM2QxYjQ0Y2E2Li42YzJhMDAyZGU5YyAxMDA2 NDQNCj4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2 di9hdXRvdmVjL3p2ZTY0Zi0xLmMNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTY0Zi0xLmMNCj4gQEAg LTMsNCArMyw0IEBADQo+ICNpbmNsdWRlICJ0ZW1wbGF0ZS0xLmgiDQo+IC0v KiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgInZlY3Rvcml6 ZWQgMSBsb29wcyBpbiBmdW5jdGlvbiIgMiAidmVjdCIgfSB9ICovDQo+ICsv KiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgInZlY3Rvcml6 ZWQgMSBsb29wcyBpbiBmdW5jdGlvbiIgMyAidmVjdCIgfSB9ICovDQo+IGRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2 L2F1dG92ZWMvenZlNjRmX3p2bDEyOGItMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTY0Zl96dmwxMjhiLTEu Yw0KPiBpbmRleCA1YmIyZDlkOTZmYS4uYWUzZjA2NjQ3N2MgMTAwNjQ0DQo+ IC0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0 b3ZlYy96dmU2NGZfenZsMTI4Yi0xLmMNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTY0Zl96dmwxMjhi LTEuYw0KPiBAQCAtMyw0ICszLDQgQEANCj4gI2luY2x1ZGUgInRlbXBsYXRl LTEuaCINCj4gLS8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAidmVjdG9yaXplZCAxIGxvb3BzIGluIGZ1bmN0aW9uIiAwICJ2ZWN0IiB9 IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAidmVjdG9yaXplZCAxIGxvb3BzIGluIGZ1bmN0aW9uIiA0ICJ2ZWN0IiB9 IH0gKi8NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYXV0b3ZlYy96dmU2NHhfenZsMTI4Yi0xLmMgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvenZlNjR4 X3p2bDEyOGItMS5jDQo+IGluZGV4IDcxODIwZWNlNGIyLi5mYzY3NmEzODY1 ZSAxMDA2NDQNCj4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jp c2N2L3J2di9hdXRvdmVjL3p2ZTY0eF96dmwxMjhiLTEuYw0KPiArKysgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvenZl NjR4X3p2bDEyOGItMS5jDQo+IEBAIC0zLDQgKzMsNCBAQA0KPiAjaW5jbHVk ZSAidGVtcGxhdGUtMS5oIg0KPiAtLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wLXRpbWVzICJ2ZWN0b3JpemVkIDEgbG9vcHMgaW4gZnVuY3Rpb24i IDAgInZlY3QiIH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wLXRpbWVzICJ2ZWN0b3JpemVkIDEgbG9vcHMgaW4gZnVuY3Rpb24i IDMgInZlY3QiIH0gfSAqLw0KPiAtLQ0KPiAyLjM2LjENCj4NCg0K --_000_MW5PR11MB59083224FB0DF1B68826455FA953AMW5PR11MB5908namp_--