From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0EC47C433F5 for ; Tue, 28 Dec 2021 06:36:40 +0000 (UTC) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web09.35687.1640673397505728847 for ; Mon, 27 Dec 2021 22:36:38 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=lJomOrMX; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: anuj.mittal@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1640673397; x=1672209397; h=from:to:subject:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=eWigoNE2AdxBFDW8KFSeQ4wKDnImY1oNhe+sXiTUSBk=; b=lJomOrMXtScc1SqsYKJfxnhlEncByyrYHIsflvlmmnXHp89E7qHLy32u dekyxVVGaff7EaKIFz3fILzlr2LexQcfFO1HpoOUi27GtAnCCIqKf2epP lrzwgI2D2QlLmkyW/T5d7qScRYMpnLhpvAlYYQGUu9EapMhP5RdIOSrLP VAIUovm1bUUsp8NCI+pSsNd1t3DU1v6xniRkwvtnJW6rxatFjZ1ZZUd8O ktmWcO6f3c8dz+zbgykZcdkLEzWBFYrawbLQRkeRl1oWnABJsLvp/5nTS HS0a02Q5vfXap4yaXAa6q0OFq0NMb0Dtpm19FA8m5Fx4VPCH/JpWzkKr4 w==; X-IronPort-AV: E=McAfee;i="6200,9189,10210"; a="228625116" X-IronPort-AV: E=Sophos;i="5.88,241,1635231600"; d="scan'208";a="228625116" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Dec 2021 22:36:36 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,241,1635231600"; d="scan'208";a="758613857" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by fmsmga006.fm.intel.com with ESMTP; 27 Dec 2021 22:36:36 -0800 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Mon, 27 Dec 2021 22:36:35 -0800 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Mon, 27 Dec 2021 22:36:35 -0800 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.104) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Mon, 27 Dec 2021 22:36:35 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=J/cC1L1QTu8dTUm37PKGwq9p5PCY4GDY6JFWBkzTZRpZ2l+LcPqdPTmnjtVPaQg9PUAy3PdQ5fvaiuNeh8/EZm4Hlp0QbwQoXb8n1E6DhPeVzV2wAOUfBqjJf9RSJ3iDZVJv9O9AfILhMTdzBBRcYULjps72AYgF+xic9jyYeA0GtpSr3PdZSkz3y6WSpk62oXoDPAQIeM2iYBORmIBKws/rnP27+njuOHZvbO6ZcjouHDeIzGrw2wUxHDKrRhPaZPfbyxrkj7QBOmXjpUzrCvjdKxLYHI4F2wKSgv5O83jAf0ARERIvymyGRRnM6+r5Nef7wsY60NlmPDX8+cK/UQ== 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=eWigoNE2AdxBFDW8KFSeQ4wKDnImY1oNhe+sXiTUSBk=; b=XwYUMsKPfciMXGoUdefzUprZnRfdMYG0p0glwnWqRHFIvZxZY5SoLSlC0wLINFISkHEAw8EoW7yim70DMP4X1/kmrjXcLCZQ37ENjQn2H0CEu6TyrYlALEUklegm1kdQXDaeHjGtn5zaDSJNNXaCWDtw4f2WZNtLPgOU8bo1pwiqeCHJhnlpr/s2aq6rcKFDdxnLOkyf+mKzX5k9EKvxuoxPlbw0+GWwTfoCErE5/cGbF+1bdyMY3eTD5ti5FczYWeOWCvxeDqENnZqulCmoodpYvQL7eESMX3FAdmlQwr3lkE0BxJ3CHiYrruGRzUN3cHnjlSqYpKbSpapocWzFEg== 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 SJ0PR11MB4896.namprd11.prod.outlook.com (2603:10b6:a03:2dd::20) by SJ0PR11MB5053.namprd11.prod.outlook.com (2603:10b6:a03:2af::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.19; Tue, 28 Dec 2021 06:36:32 +0000 Received: from SJ0PR11MB4896.namprd11.prod.outlook.com ([fe80::a8ab:1ed:c383:c477]) by SJ0PR11MB4896.namprd11.prod.outlook.com ([fe80::a8ab:1ed:c383:c477%6]) with mapi id 15.20.4823.023; Tue, 28 Dec 2021 06:36:32 +0000 From: "Mittal, Anuj" To: "Qi.Chen@windriver.com" , "openembedded-core@lists.openembedded.org" Subject: Re: [OE-core][hardknott][PATCH V2] busybox: backport patches to fix CVEs Thread-Topic: [OE-core][hardknott][PATCH V2] busybox: backport patches to fix CVEs Thread-Index: AQHX9vHYLN/Kk3eAk0SmYNk9d2Vim6xHVEAAgAAXfQCAABDdAA== Date: Tue, 28 Dec 2021 06:36:32 +0000 Message-ID: <75f4cd166764d7f5ab279c15a837ed4f032c3617.camel@intel.com> References: <20211222050705.89014-1-Qi.Chen@windriver.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.42.2 (3.42.2-1.fc35) authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 25fbd12f-4196-40ae-a67c-08d9c9cc632a x-ms-traffictypediagnostic: SJ0PR11MB5053:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:268; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: +Ofzd4vikfYiK9p0zBTA0k0US/0J13Yf6jsoDoC0IMtKFuXhgSkURuuRQW1pSc0ySnModXwtvy+NioEAgtMBQTYbZ0dCunk5c+A8vDnJasXaiKZ2goG61vKXIHv0F3gBrv5SyCiW3BjfLf39fl/0r71VfyZx/qrhIL2rW8Xqzf0EIsIVLiXVFEKD0Dr/p6DDGDLRUPs/La2mC5I0NtUq2DqwImk9Xjo8umd4dGDr3mzEloTjLV10Ad+I3K1oc+EcQhEvD4Occj+R6IHNJJsbvO3Md3t+IDi4SOH/9UqN6wUTMCwglUcddjkYstFhNYWGWDuRFY+5jwfG9c9r9zjo+18T6o65ZIWHQMMWJBqW8IMbCJDsuDWuvAROPiUl4XyMnDKGwGWBizgL24yuUVMvYcjluXZ1wWXvkC4KDXMXwkxivgoyRLbEsfzkFnIBeUoC+EEBvJHAJmGC7zqJf4KwIJj9225GjNdnQfdgZDigOlVYd4bqphthk2r9m37gxaQGFgebsm+6ZW2wgHElDUsMlDM1fKddhfdglyJx4AkE5NURV4KYS+SAuMFfep4syL9mp+nQvYVIvCxxAd8dh3RnAYJRoORUuvIIk4b5i42Dw+16JYMGofa0wLr0q+eACr3Q3Am/2n6HSq8wNvCOLE7nag0ddAFUIbn29U6OYZKN63DAzZyqdKitLdRElUbsIFSDMxVQrXGNbOqVOyNSYFLRArpB/sVlCAtZQ7OIXHF6mVLEAo29s2nNNiciYfZbhi+4oKIQyXcuatGdJF9aO6UIREQiAAxk7U34QoSX3OlEy9ssfuCHlQIgDsSkis02L5L2FlPAyVYDhrpCrSHNSxph3Q== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR11MB4896.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(2906002)(66556008)(66476007)(4001150100001)(122000001)(53546011)(83380400001)(66446008)(36756003)(8936002)(6512007)(38070700005)(91956017)(6506007)(66946007)(64756008)(76116006)(316002)(2616005)(38100700002)(5660300002)(110136005)(26005)(508600001)(86362001)(6486002)(30864003)(82960400001)(71200400001)(186003)(966005)(8676002)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SzkxUWJqSUtWTXllejlFU2hUSlNSNE1BTUNaMDlYd1NGM0kyY0hQT3R6NE90?= =?utf-8?B?NE5rZ0s0aDdSSGpVa2xxZ25uN0p5WEFWeUE3U0JzMFlad2R6YlRvZkJXNVFU?= =?utf-8?B?QnAydFpMd0Q5TWpQQ0xlZERVWkIyUm5rb0JpY2JlczNvY0JkUHhxZlZmU3lP?= =?utf-8?B?YTN2REVpemhMSTB3MGRpMGpRL3c4blB5K2xScWxYZWo4bW13UGpSdzZSUmtK?= =?utf-8?B?VElvY2t6NHdacXR6NkxBZ05aa3ZjdGh4R2Y1VDRkTHNqdXJEZE5yUlhyWktp?= =?utf-8?B?T0IvODhOdnRCWVcvVkRVTC9TeEFDMjBwcm5LdU9IOFhHNjcvVWhXZVRoNVpV?= =?utf-8?B?NVlCUUpOcGZtZWJOZ0g4VVk5ay9HN1RvRDRvN2VXQktwd2dxLzYxNlkveDln?= =?utf-8?B?eW5JbUZBc0prVWlXck1mZmtIU3kraW1OVndDTkJ6bHNrMTkzRStiT0Z3WVg1?= =?utf-8?B?eC9rSWo3Q0plTEdCN3QvbFVlUVdBTUlqREpTR0JRaktlK0lFbEY3a1NxTmlx?= =?utf-8?B?U1dMb0RLZm1hVGZuRkpBTE0yVWZjZFM1bXJmbEMvWnNoSU1IbUcyMlVZQVRK?= =?utf-8?B?K20yb2FEVVEyMVlQYkF2a3F2UTZZNWQxSHdscW9tK2E2M2JGeUt3aFJCQXBu?= =?utf-8?B?WXJEcUkrTHFaWHpGdjBKNW5pMFFNbndTZDFGM3pPUVIrZXl2SlVNZmhqQ0d2?= =?utf-8?B?MVdhS0NtU09RQ1ZrZWhHZmR4dUJzK3h3QzhGU3BaR1A5Z1l6SEYvaHJOOHI1?= =?utf-8?B?VDJ4cTVEMUEwRXpYQnh1ekNtaFYzMkkzOXAzNjVrOEJSMzF5K1JCeTdkNno2?= =?utf-8?B?dFZ0U09FajAvKzZxQmpKL3o1VFBvZlFhckI5a2o1UDFQZCtYZXJuVVBUZUtL?= =?utf-8?B?VndhVDFsdzYxbXNYZ2pieTQzbnJxOGM5TVQzUlEwSCtYcGl2U1lzMFc2TElY?= =?utf-8?B?MUxIWENPRnZmZ01XVW9lZUlOaU5ObXNFOWNvN2Y1NnRiV2JucVcxOXp2b3Vx?= =?utf-8?B?eGwyRHNKblR2OGdpenFod2szZmJBOURRQ0FTcUZUZ3E2emw2dFBYMU1LdHQx?= =?utf-8?B?U2VHTEtNMFcvejc3NU80NTRuUnB6b3RxTXhYVytnV3A5RUZnNlB5bTlHcGpM?= =?utf-8?B?ZUc1T1MwMnZsVHMxMTZmL1Z4T3N1NUZGallSYXo5cytoWDZaUE04MkV1M3Ur?= =?utf-8?B?aTI4OGk4c0tGZnhYM2tMZGcrYlkvdkNVN0E1Sy8rclE0c2tyVVlxclkwS0t3?= =?utf-8?B?NFNiK01CWjhYR2J5V0gvZHRLMjBXUHp5WE42TVRoM05yenZXUW5WZzFyZVRv?= =?utf-8?B?ZjRXcmpueFBpd2t2S2lId3cyUVVnQmdSZ0VDR2FSN1BOQUNCdHNDZ0wwTmNu?= =?utf-8?B?TnRuRmZ3NWx3SkpDREJ6WEpzR2xJanh5MnlGZUFyczdPLzFPTDFLUDgzVjNW?= =?utf-8?B?eWJ5c0RER1l2UUprOUVWWFFDTE9wMFRRdzdSUW1SdlpkL2RTOWJuSGprWVI0?= =?utf-8?B?RnlYVUdjcXB1eVhZa3BaTTkxN0tTZVdxdWJBOHpmU2VNTFZCUGtRQ21IbDk1?= =?utf-8?B?M20wNU1CWVdiQXRhQmpzYWN0aG1GZzhLWXo1Y2NQVUZsL3NYSDVBU0V1OElM?= =?utf-8?B?M1BGOU0yeHpZV1NjS3YydWhOV2lxN2hNRjh1bEptWC9qK0Q5M2wxSUdTOUJw?= =?utf-8?B?VUFFM0lNYU8valc1Tm1rZUFzeGRQOFp6ZlZOamJYdXIrTk91cHlLYnpPcDlH?= =?utf-8?B?MXJMZUxwS1hLUG1CcUV6N1FKR2dzSy9xYUNBY0xDcXVuS1dZUHFsVVppUytw?= =?utf-8?B?MUUvTm5YTDZuZlJpTCtKam5YM29zNjZrT1FCeFNHV3FlRUs1UHo2L01xNkdX?= =?utf-8?B?OTdUSGxDMHVsa3hXcWtSOTdrR2x2UXVkNzIvelQrRFFXQXFMYXdobDZReCtC?= =?utf-8?B?STl1ZlBGWW03K25CZFdwbi9iOHc5bjdNRHVSRUNBSStXblh3ZXBDYkp0ZVlu?= =?utf-8?B?VmJibFJtN045SEI3a2hJbmpXcmNFUEdaTDRmaTBSQXlxcERIMDhnL0hvYy8z?= =?utf-8?B?YXJsQTBhOHlwUmd4WTF2Y3V5NVlzdW9OOTJUb3VlcFBEVmg1UFRIdXNmQ3dK?= =?utf-8?B?ZVRQZGs4bWxsbjdRTk5YanErVW95SXBmMGtlR3gwdng1S0RKNHFnL1hnckNQ?= =?utf-8?Q?yhjMqw8xhZK07sD653R3J9jhbEO53WYTy9LOj57+40s5?= Content-Type: text/plain; charset="utf-8" Content-ID: <0A2978876B47BC43AEA6D31399208E41@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB4896.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 25fbd12f-4196-40ae-a67c-08d9c9cc632a X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Dec 2021 06:36:32.2481 (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: SK6D4KQjQHXk5H01/yqJPSJBADwUtv17i75S5j9gt+qKiC+98lWGlZ8rc48WpHHIk6vAbdARBSJyK0OK2Eh2bA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB5053 X-OriginatorOrg: intel.com List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Tue, 28 Dec 2021 06:36:39 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/160038 SGkgUWksCgpPbiBUdWUsIDIwMjEtMTItMjggYXQgMDU6MzYgKzAwMDAsIENoZW4gUWkgd3JvdGU6 Cj4gSGkgQW51aiwKPiAKPiBZb3UgYXJlIHJpZ2h0IHRoYXQgd2Ugc2hvdWxkIHVzZSAxXzM0XzEg aW5zdGVhZCBvZiAxXzM0XzAuIFRoYW5rcyBmb3IKPiBwb2ludGluZyBpdCBvdXQuIEJ1dCBJJ20g bm90IHN1cmUgaWYgdWJ1bnR1J3MgcGF0Y2ggc29sdmVzIHRoZSBDVkVzCj4gYW5kIGRvZXMgbm90 IGludHJvZHVjZSByZWdyZXNzaW9uLgo+IEkgY2hlY2tlZCBidXN5Ym94J3MgbWFpbGluZyBsaXN0 LCBhbmQgdGhlIG1haW50YWluZXIgY2xlYXJseSBzYWlkCj4gdGhhdCBoZSBkb2VzIG5vdCBrbm93 IGhvdyB0byBzZXBhcmF0ZSB0aGUgYXdrIHBhdGNoZXMgYW5kIG1ha2UgdGhlbQo+IGFwcGx5IHRv IDEuMzMuIFRoaXMgZmFjdCBnaXZlcyBtZSBsZXNzIGNvbmZpZGVuY2Ugb24gdWJ1bnR1J3MgcGF0 Y2guCj4gQnVzeWJveCBpcyBhIGxpdHRsZSBzcGVjaWFsLCBhcyBpdCdzIGFwcGxldHMgYXJlIGJh c2ljYWxseSBzZXBhcmF0ZS4KPiBTbyBJIHRoaW5rIHRoZSBiZXN0IHdheSB0byBmaXggdGhlIGF3 ayBDVkVzIGlzIHVzaW5nIHRoZSBsYXRlc3QgYXdrCj4gY29kZXMuIEkgYWxzbyByYW4gYnVzeWJv eCdzIHB0ZXN0LCBubyByZWdyZXNzaW9uLgoKVGhhbmsgeW91IGZvciBleHBsYW5hdGlvbiBhbmQg dGVzdGluZy4gVGhlIHBhdGNoIGxvb2tzIGdvb2QgdG8gbWUgaW4KdGhhdCBjYXNlLsKgUGxlYXNl IG1vZGlmeSBpdCB0byBpbmNsdWRlIGZpeGVzIGZyb20gMS4zNC4xIGFzIHdlbGwuCgpUaGFua3Ms CgpBbnVqCgo+IAo+IEFueXdheSwgaWYgeW91IHRoaW5rIHdlIHNob3VsZCB1c2UgYnVzeWJveCdz IHBhdGNoLCBJIGNhbiBzZW5kIG91dCBhCj4gcGF0Y2ggZm9yIHRoYXQuCj4gCj4gVG8gc3VtbWFy aXplLCBoZXJlIGFyZSB0d28gb3B0aW9uczoKPiAxLiBVc2UgMV8zNF8xIGF3ayBjb2Rlcy4KPiAy LiBVc2UgdWJ1bnR1J3MgcGF0Y2guCj4gWW91IGNhbiBtYWtlIHRoZSBmaW5hbCBjYWxsIGFuZCBJ J2xsIHNlbmQgb3V0IGEgcGF0Y2guCj4gCj4gUmVnYXJkcywKPiBRaQo+IAo+IAo+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tCj4gRnJvbTogTWl0dGFsLCBBbnVqIDxhbnVqLm1pdHRhbEBpbnRl bC5jb20+IAo+IFNlbnQ6IFR1ZXNkYXksIERlY2VtYmVyIDI4LCAyMDIxIDEyOjEyIFBNCj4gVG86 IENoZW4sIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Owo+IG9wZW5lbWJlZGRlZC1jb3JlQGxp c3RzLm9wZW5lbWJlZGRlZC5vcmcKPiBTdWJqZWN0OiBSZTogW09FLWNvcmVdW2hhcmRrbm90dF1b UEFUQ0ggVjJdIGJ1c3lib3g6IGJhY2twb3J0IHBhdGNoZXMKPiB0byBmaXggQ1ZFcwo+IAo+IE9u IFR1ZSwgMjAyMS0xMi0yMSBhdCAyMTowNyAtMDgwMCwgQ2hlbiBRaSB3cm90ZToKPiA+IEJhY2tw b3J0IHBhdGNoZXMgdG8gZml4IHRoZSBmb2xsb3dpbmcgQ1ZFczoKPiA+IENWRS0yMDIxLTQyMzcz Cj4gPiBDVkUtMjAyMS00MjM3OAo+ID4gQ1ZFLTIwMjEtNDIzNzkKPiA+IENWRS0yMDIxLTQyMzgw Cj4gPiBDVkUtMjAyMS00MjM4MQo+ID4gQ1ZFLTIwMjEtNDIzODIKPiA+IENWRS0yMDIxLTQyMzgz Cj4gPiBDVkUtMjAyMS00MjM4NAo+ID4gQ1ZFLTIwMjEtNDIzODUKPiA+IENWRS0yMDIxLTQyMzg2 Cj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4K PiA+IC0tLQo+ID4gwqAuLi4vYnVzeWJveC9idXN5Ym94LzAwMDEtYXdrLWZpeC1DVkVzLnBhdGNo wqDCoCB8IDMxMTMKPiA+ICsrKysrKysrKysrKysrKysrCj4gPiDCoC4uLi8wMDAyLW1hbi1maXgt c2VnZmF1bHQtaW4tbWFuLTEucGF0Y2jCoMKgwqDCoMKgIHzCoMKgIDMwICsKPiA+IMKgbWV0YS9y ZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMzMuMi5iYsKgwqAgfMKgwqDCoCAyICsKPiA+ IMKgMyBmaWxlcyBjaGFuZ2VkLCAzMTQ1IGluc2VydGlvbnMoKykKPiA+IMKgY3JlYXRlIG1vZGUg MTAwNjQ0IG1ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLWF3ay1maXgtCj4g PiBDVkVzLnBhdGNoCj4gPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBtZXRhL3JlY2lwZXMtY29yZS9i dXN5Ym94L2J1c3lib3gvMDAwMi1tYW4tZml4LQo+ID4gc2VnZmF1bHQtaW4tbWFuLTEucGF0Y2gK PiA+IAo+ID4gZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8w MDAxLWF3ay1maXgtCj4gPiBDVkVzLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9i dXN5Ym94LzAwMDEtYXdrLWZpeC0KPiA+IENWRXMucGF0Y2gKPiA+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwLi45Y2Q3ZjhiZTNmCj4gPiAtLS0gL2Rldi9udWxsCj4g PiArKysgYi9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1hd2stZml4LUNW RXMucGF0Y2gKPiA+IEBAIC0wLDAgKzEsMzExMyBAQAo+ID4gK0Zyb20gZmQ3ZTdkNzc2ZGNmOGQy NGNhMDg5ZTMxNDM1ZmUzZTU5YWEzMmZkYSBNb24gU2VwIDE3IDAwOjAwOjAwCj4gPiAyMDAxCj4g PiArRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgo+ID4gK0RhdGU6IE1vbiwg MjAgRGVjIDIwMjEgMDA6MzQ6MDMgLTA4MDAKPiA+ICtTdWJqZWN0OiBbUEFUQ0hdIGF3azogZml4 IENWRXMKPiA+ICsKPiA+ICtUaGUgYXdrIENWRXMgaXMgaGFyZCB0byBiZSBzZXBhcmF0ZWQsIHRo dXMgd2UgdXNlIHRoZSBmb2xsb3dpbmcKPiA+IG1ldGhvZAo+ID4gK3RvIGZvcm1hdCB0aGUgY3Vy cmVudCBwYXRjaC4KPiA+ICtnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IDFfMzNfMS4uMV8zNF8w IC0tIGVkaXRvcnMvYXdrLmMgfCBnaXQgYW0KPiA+IC0KPiA+IDMKPiAKPiBUaGF0J3MgYSBiaWcg Y2hhbmdlIC4uLiBJdCBhbHNvIGRvZXNuJ3QgbG9vayBsaWtlIGl0IGluY2x1ZGVzIGZpeGVzCj4g Zm9yCj4gYXdrIGludHJvZHVjZWQgaW4gMS4zNC4xLiBIZXJlIGlzIHRoZSBVYnVudHUgcGF0Y2gg Zm9yIHJlZmVyZW5jZToKPiAKPiBodHRwczovL2dpdC5sYXVuY2hwYWQubmV0L3VidW50dS8rc291 cmNlL2J1c3lib3gvY29tbWl0Lz9oPWFwcGxpZWQvdWJ1bnR1L2hpcnN1dGUtc2VjdXJpdHkmaWQ9 OGM2NjdkMGQ3OWE1ZDhjMTU1OWRhMDE5ODZhMTI1YjhmMTljNzM4NAo+IAo+IE1heSBiZSB3ZSBz aG91bGQgdXNlIHVzZSB0aGlzIGluc3RlYWQgaWYgdGhpcyBmaXhlcyB0aGUgQ1ZFcz8KPiAKPiBU aGFua3MsCj4gCj4gQW51ago+IAo+ID4gKwo+ID4gK0NWRTogQ1ZFLTIwMjEtNDIzNzgKPiA+ICtD VkU6IENWRS0yMDIxLTQyMzc5Cj4gPiArQ1ZFOiBDVkUtMjAyMS00MjM4MAo+ID4gK0NWRTogQ1ZF LTIwMjEtNDIzODEKPiA+ICtDVkU6IENWRS0yMDIxLTQyMzgyCj4gPiArQ1ZFOiBDVkUtMjAyMS00 MjM4Mwo+ID4gK0NWRTogQ1ZFLTIwMjEtNDIzODQKPiA+ICtDVkU6IENWRS0yMDIxLTQyMzg1Cj4g PiArQ1ZFOiBDVkUtMjAyMS00MjM4Ngo+ID4gKwo+ID4gK1Vwc3RyZWFtLVN0YXR1czogQmFja3Bv cnQKPiA+ICsKPiA+ICtTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5j b20+Cj4gPiArLS0tCj4gPiArIGVkaXRvcnMvYXdrLmMgfCAyMDMwICsrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCj4gPiAtLQo+ID4gLS0tCj4gPiArIDEgZmlsZSBj aGFuZ2VkLCAxMTc5IGluc2VydGlvbnMoKyksIDg1MSBkZWxldGlvbnMoLSkKPiA+ICsKPiA+ICtk aWZmIC0tZ2l0IGEvZWRpdG9ycy9hd2suYyBiL2VkaXRvcnMvYXdrLmMKPiA+ICtpbmRleCAyYzE1 ZjllNGUuLjNhZGJjYTdhYSAxMDA2NDQKPiA+ICstLS0gYS9lZGl0b3JzL2F3ay5jCj4gPiArKysr IGIvZWRpdG9ycy9hd2suYwo+ID4gK0BAIC02Niw2ICs2Niw4IEBACj4gPiArICNlbmRpZgo+ID4g KyAjaWZuZGVmIGRlYnVnX3ByaW50Zl9wYXJzZQo+ID4gKyAjIGRlZmluZSBkZWJ1Z19wcmludGZf cGFyc2UoLi4uKSAoZnByaW50ZihzdGRlcnIsIF9fVkFfQVJHU19fKSkKPiA+ICsrI2Vsc2UKPiA+ ICsrIyBkZWZpbmUgZGVidWdfcGFyc2VfcHJpbnRfdGMoLi4uKSAoKHZvaWQpMCkKPiA+ICsgI2Vu ZGlmCj4gPiArIAo+ID4gKyAKPiA+ICtAQCAtOTEsNyArOTMsNiBAQCBlbnVtIHsKPiA+ICsgfTsK PiA+ICsgCj4gPiArICNkZWZpbmXCoMKgwqDCoMKgwqDCoE1BWFZBUkZNVMKgwqDCoMKgwqDCoCAy NDAKPiA+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgTUlOTlZCTE9DS8KgwqDCoMKgwqAgNjQKPiA+ ICsgCj4gPiArIC8qIHZhcmlhYmxlIGZsYWdzICovCj4gPiArICNkZWZpbmXCoMKgwqDCoMKgwqDC oFZGX05VTUJFUsKgwqDCoMKgwqDCoCAweDAwMDHCoMKgLyogMSA9IHByaW1hcnkgdHlwZSBpcwo+ ID4gbnVtYmVyCj4gPiAqLwo+ID4gK0BAIC0xMDEsNyArMTAyLDcgQEAgZW51bSB7Cj4gPiArICNk ZWZpbmXCoMKgwqDCoMKgwqDCoFZGX1VTRVLCoMKgwqDCoMKgwqDCoMKgIDB4MDIwMMKgwqAvKiAx ID0gdXNlciBpbnB1dCAobWF5IGJlCj4gPiBudW1lcmljIHN0cmluZykgKi8KPiA+ICsgI2RlZmlu ZcKgwqDCoMKgwqDCoMKgVkZfU1BFQ0lBTMKgwqDCoMKgwqAgMHgwNDAwwqDCoC8qIDEgPSByZXF1 aXJlcyBleHRyYQo+ID4gaGFuZGxpbmcgd2hlbiBjaGFuZ2VkICovCj4gPiArICNkZWZpbmXCoMKg wqDCoMKgwqDCoFZGX1dBTEvCoMKgwqDCoMKgwqDCoMKgIDB4MDgwMMKgwqAvKiAxID0gdmFyaWFi bGUgaGFzIGFsbG9jJ2QKPiA+IHgud2Fsa2VyIGxpc3QgKi8KPiA+ICstI2RlZmluZcKgwqDCoMKg wqDCoMKgVkZfRlNUUsKgwqDCoMKgwqDCoMKgwqAgMHgxMDAwwqDCoC8qIDEgPSB2YXI6OnN0cmlu ZyBwb2ludHMKPiA+IHRvCj4gPiBmc3RyaW5nIGJ1ZmZlciAqLwo+ID4gKysjZGVmaW5lwqDCoMKg wqDCoMKgwqBWRl9GU1RSwqDCoMKgwqDCoMKgwqDCoCAweDEwMDDCoMKgLyogMSA9IGRvbid0IGZy ZWUoKQo+ID4gdmFyOjpzdHJpbmcgKG5vdCBtYWxsb2NlZCwgb3IgaXMgb3duZWQgYnkgc29tZXRo aW5nIGVsc2UpICovCj4gPiArICNkZWZpbmXCoMKgwqDCoMKgwqDCoFZGX0NISUxEwqDCoMKgwqDC oMKgwqAgMHgyMDAwwqDCoC8qIDEgPSBmdW5jdGlvbiBhcmc7Cj4gPiB4LnBhcmVudAo+ID4gcG9p bnRzIHRvIHNvdXJjZSAqLwo+ID4gKyAjZGVmaW5lwqDCoMKgwqDCoMKgwqBWRl9ESVJUWcKgwqDC oMKgwqDCoMKgIDB4NDAwMMKgwqAvKiAxID0gdmFyaWFibGUgd2FzIHNldAo+ID4gZXhwbGljaXRs eSAqLwo+ID4gKyAKPiA+ICtAQCAtMTE4LDggKzExOSw4IEBAIHR5cGVkZWYgc3RydWN0IHdhbGtl cl9saXN0IHsKPiA+ICsgLyogVmFyaWFibGUgKi8KPiA+ICsgdHlwZWRlZiBzdHJ1Y3QgdmFyX3Mg ewo+ID4gK8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgdHlwZTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IC8qIGZsYWdzICovCj4gPiArLcKgwqDCoMKgwqDCoGRvdWJsZSBudW1iZXI7Cj4gPiArwqDCoMKg wqDCoMKgwqBjaGFyICpzdHJpbmc7Cj4gPiArK8KgwqDCoMKgwqDCoGRvdWJsZSBudW1iZXI7Cj4g PiArwqDCoMKgwqDCoMKgwqB1bmlvbiB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaW50IGFpZHg7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBmdW5jIGFyZyBpZHgg KGZvcgo+ID4gY29tcGlsYXRpb24gc3RhZ2UpICovCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IHhoYXNoX3MgKmFycmF5O8KgIC8qIGFycmF5IHB0ciAqLwo+ID4gK0BA IC0xMzgsNiArMTM5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgY2hhaW5fcyB7Cj4gPiArIC8qIEZ1bmN0 aW9uICovCj4gPiArIHR5cGVkZWYgc3RydWN0IGZ1bmNfcyB7Cj4gPiArwqDCoMKgwqDCoMKgwqB1 bnNpZ25lZCBuYXJnczsKPiA+ICsrwqDCoMKgwqDCoMKgc21hbGxpbnQgZGVmaW5lZDsKPiA+ICvC oMKgwqDCoMKgwqDCoHN0cnVjdCBjaGFpbl9zIGJvZHk7Cj4gPiArIH0gZnVuYzsKPiA+ICsgCj4g PiArQEAgLTE3Nyw3ICsxNzksNyBAQCB0eXBlZGVmIHN0cnVjdCBub2RlX3Mgewo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBub2RlX3MgKm47Cj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgdmFyICp2Owo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGludCBhaWR4Owo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciAq bmV3X3Byb2duYW1lOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29uc3QgY2hh ciAqbmV3X3Byb2duYW1lOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlZ2V4 X3QgKnJlOwo+ID4gK8KgwqDCoMKgwqDCoMKgfSBsOwo+ID4gK8KgwqDCoMKgwqDCoMKgdW5pb24g ewo+ID4gK0BAIC0xOTAsOTEgKzE5MiwxMjAgQEAgdHlwZWRlZiBzdHJ1Y3Qgbm9kZV9zIHsKPiA+ ICvCoMKgwqDCoMKgwqDCoH0gYTsKPiA+ICsgfSBub2RlOwo+ID4gKyAKPiA+ICstLyogQmxvY2sg b2YgdGVtcG9yYXJ5IHZhcmlhYmxlcyAqLwo+ID4gKy10eXBlZGVmIHN0cnVjdCBudmJsb2NrX3Mg ewo+ID4gKy3CoMKgwqDCoMKgwqBpbnQgc2l6ZTsKPiA+ICstwqDCoMKgwqDCoMKgdmFyICpwb3M7 Cj4gPiArLcKgwqDCoMKgwqDCoHN0cnVjdCBudmJsb2NrX3MgKnByZXY7Cj4gPiArLcKgwqDCoMKg wqDCoHN0cnVjdCBudmJsb2NrX3MgKm5leHQ7Cj4gPiArLcKgwqDCoMKgwqDCoHZhciBudltdOwo+ ID4gKy19IG52YmxvY2s7Cj4gPiArLQo+ID4gKyB0eXBlZGVmIHN0cnVjdCB0c3BsaXR0ZXJfcyB7 Cj4gPiArwqDCoMKgwqDCoMKgwqBub2RlIG47Cj4gPiArwqDCoMKgwqDCoMKgwqByZWdleF90IHJl WzJdOwo+ID4gKyB9IHRzcGxpdHRlcjsKPiA+ICsgCj4gPiArIC8qIHNpbXBsZSB0b2tlbiBjbGFz c2VzICovCj4gPiArLS8qIE9yZGVyIGFuZCBoZXggdmFsdWVzIGFyZSB2ZXJ5IGltcG9ydGFudCEh IcKgIFNlZSBuZXh0X3Rva2VuKCkKPiA+ICovCj4gPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRD X1NFUVNUQVJUwqDCoMKgwqDCoCgxIDw8IDApwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAvKiAoICovCj4gPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX1NFUVRFUk3CoMKgwqDCoMKg wqAoMSA8PCAxKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogKSAqLwo+ID4gKy0j ZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19SRUdFWFDCoMKgwqDCoMKgwqDCoCgxIDw8IDIpwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAvLi4uLyAqLwo+ID4gKy0jZGVmaW5lwqDCoMKg wqDCoMKgwqBUQ19PVVRSRFLCoMKgwqDCoMKgwqDCoCgxIDw8IDMpwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAvKiB8ID4gPj4KPiA+ICovCj4gPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDC oFRDX1VPUFBPU1TCoMKgwqDCoMKgwqAoMSA8PCA0KcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLyogdW5hcnkKPiA+IHBvc3RmaXggb3BlcmF0b3IgKi8KPiA+ICstI2RlZmluZcKgwqDC oMKgwqDCoMKgVENfVU9QUFJFMcKgwqDCoMKgwqDCoCgxIDw8IDUpwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAvKiB1bmFyeQo+ID4gcHJlZml4IG9wZXJhdG9yICovCj4gPiArLSNkZWZp bmXCoMKgwqDCoMKgwqDCoFRDX0JJTk9QWMKgwqDCoMKgwqDCoMKgKDEgPDwgNinCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIHR3by1vcG5kCj4gPiBvcGVyYXRvciAqLwo+ID4gKy0j ZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19JTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAoMSA8PCA3KQo+ ID4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19DT01NQcKgwqDCoMKgwqDCoMKgwqAoMSA8PCA4 KQo+ID4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19QSVBFwqDCoMKgwqDCoMKgwqDCoMKgKDEg PDwgOSnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGlucHV0Cj4gPiByZWRpcmVj dGlvbiBwaXBlICovCj4gPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX1VPUFBSRTLCoMKgwqDC oMKgwqAoMSA8PCAxMCnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiB1bmFyeQo+ID4g cHJlZml4IG9wZXJhdG9yICovCj4gPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX0FSUlRFUk3C oMKgwqDCoMKgwqAoMSA8PCAxMSnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBdICov Cj4gPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX0dSUFNUQVJUwqDCoMKgwqDCoCgxIDw8IDEy KcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIHsgKi8KPiA+ICstI2RlZmluZcKgwqDC oMKgwqDCoMKgVENfR1JQVEVSTcKgwqDCoMKgwqDCoCgxIDw8IDEzKcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoC8qIH0gKi8KPiA+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgVENfU0VNSUNP TMKgwqDCoMKgwqDCoCgxIDw8IDE0KQo+ID4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19ORVdM SU5FwqDCoMKgwqDCoMKgKDEgPDwgMTUpCj4gPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX1NU QVRYwqDCoMKgwqDCoMKgwqDCoCgxIDw8IDE2KcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oC8qIGN0bAo+ID4gc3RhdGVtZW50IChmb3IsIG5leHQuLi4pICovCj4gPiArLSNkZWZpbmXCoMKg wqDCoMKgwqDCoFRDX1dISUxFwqDCoMKgwqDCoMKgwqDCoCgxIDw8IDE3KQo+ID4gKy0jZGVmaW5l wqDCoMKgwqDCoMKgwqBUQ19FTFNFwqDCoMKgwqDCoMKgwqDCoMKgKDEgPDwgMTgpCj4gPiArLSNk ZWZpbmXCoMKgwqDCoMKgwqDCoFRDX0JVSUxUSU7CoMKgwqDCoMKgwqAoMSA8PCAxOSkKPiA+ICsr Lyogb3JkZXIgYW5kIGhleCB2YWx1ZXMgYXJlIHZlcnkgaW1wb3J0YW50ISEhwqAgU2VlIG5leHRf dG9rZW4oKQo+ID4gKi8KPiA+ICsrI2RlZmluZSBUQ19MUEFSRU7CoMKgwqDCoMKgwqAgKDEgPDwg MCnCoMKgwqDCoMKgwqDCoCAvKiAoICovCj4gPiArKyNkZWZpbmUgVENfUlBBUkVOwqDCoMKgwqDC oMKgICgxIDw8IDEpwqDCoMKgwqDCoMKgwqAgLyogKSAqLwo+ID4gKysjZGVmaW5lIFRDX1JFR0VY UMKgwqDCoMKgwqDCoCAoMSA8PCAyKcKgwqDCoMKgwqDCoMKgIC8qIC8uLi4vICovCj4gPiArKyNk ZWZpbmUgVENfT1VUUkRSwqDCoMKgwqDCoMKgICgxIDw8IDMpwqDCoMKgwqDCoMKgwqAgLyogfCA+ ID4+ICovCj4gPiArKyNkZWZpbmUgVENfVU9QUE9TVMKgwqDCoMKgwqAgKDEgPDwgNCnCoMKgwqDC oMKgwqDCoCAvKiB1bmFyeSBwb3N0Zml4IG9wZXJhdG9yCj4gPiArKyAtLSAqLwo+ID4gKysjZGVm aW5lIFRDX1VPUFBSRTHCoMKgwqDCoMKgICgxIDw8IDUpwqDCoMKgwqDCoMKgwqAgLyogdW5hcnkg cHJlZml4IG9wZXJhdG9yCj4gPiArKwo+ID4gLS0gJCAqLwo+ID4gKysjZGVmaW5lIFRDX0JJTk9Q WMKgwqDCoMKgwqDCoCAoMSA8PCA2KcKgwqDCoMKgwqDCoMKgIC8qIHR3by1vcG5kIG9wZXJhdG9y ICovCj4gPiArKyNkZWZpbmUgVENfSU7CoMKgwqDCoMKgwqDCoMKgwqDCoCAoMSA8PCA3KcKgwqDC oMKgwqDCoMKgIC8qICdpbicgKi8KPiA+ICsrI2RlZmluZSBUQ19DT01NQcKgwqDCoMKgwqDCoMKg ICgxIDw8IDgpwqDCoMKgwqDCoMKgwqAgLyogLCAqLwo+ID4gKysjZGVmaW5lIFRDX1BJUEXCoMKg wqDCoMKgwqDCoMKgICgxIDw8IDkpwqDCoMKgwqDCoMKgwqAgLyogaW5wdXQgcmVkaXJlY3Rpb24g cGlwZQo+ID4gfAo+ID4gKi8KPiA+ICsrI2RlZmluZSBUQ19VT1BQUkUywqDCoMKgwqDCoCAoMSA8 PCAxMCnCoMKgwqDCoMKgwqAgLyogdW5hcnkgcHJlZml4IG9wZXJhdG9yCj4gPiArCj4gPiAtICEg Ki8KPiA+ICsrI2RlZmluZSBUQ19BUlJURVJNwqDCoMKgwqDCoCAoMSA8PCAxMSnCoMKgwqDCoMKg wqAgLyogXSAqLwo+ID4gKysjZGVmaW5lIFRDX0xCUkFDRcKgwqDCoMKgwqDCoCAoMSA8PCAxMinC oMKgwqDCoMKgwqAgLyogeyAqLwo+ID4gKysjZGVmaW5lIFRDX1JCUkFDRcKgwqDCoMKgwqDCoCAo MSA8PCAxMynCoMKgwqDCoMKgwqAgLyogfSAqLwo+ID4gKysjZGVmaW5lIFRDX1NFTUlDT0zCoMKg wqDCoMKgICgxIDw8IDE0KcKgwqDCoMKgwqDCoCAvKiA7ICovCj4gPiArKyNkZWZpbmUgVENfTkVX TElORcKgwqDCoMKgwqAgKDEgPDwgMTUpCj4gPiArKyNkZWZpbmUgVENfU1RBVFjCoMKgwqDCoMKg wqDCoCAoMSA8PCAxNinCoMKgwqDCoMKgwqAgLyogY3RsIHN0YXRlbWVudCAoZm9yLAo+ID4gbmV4 dC4uLikgKi8KPiA+ICsrI2RlZmluZSBUQ19XSElMRcKgwqDCoMKgwqDCoMKgICgxIDw8IDE3KcKg wqDCoMKgwqDCoCAvKiAnd2hpbGUnICovCj4gPiArKyNkZWZpbmUgVENfRUxTRcKgwqDCoMKgwqDC oMKgwqAgKDEgPDwgMTgpwqDCoMKgwqDCoMKgIC8qICdlbHNlJyAqLwo+ID4gKysjZGVmaW5lIFRD X0JVSUxUSU7CoMKgwqDCoMKgICgxIDw8IDE5KQo+ID4gKyAvKiBUaGlzIGNvc3RzIH41MCBieXRl cyBvZiBjb2RlLgo+ID4gK8KgICogQSBzZXBhcmF0ZSBjbGFzcyB0byBzdXBwb3J0IGRlcHJlY2F0 ZWQgImxlbmd0aCIgZm9ybS4gSWYgd2UKPiA+IGRvbid0IG5lZWQgdGhhdAo+ID4gK8KgICogKGku ZS4gaWYgd2UgZGVtYW5kIHRoYXQgb25seSAibGVuZ3RoKCkiIHdpdGggKCkgaXMgdmFsaWQpLAo+ ID4gdGhlbgo+ID4gVENfTEVOR1RICj4gPiArwqAgKiBjYW4gYmUgbWVyZ2VkIHdpdGggVENfQlVJ TFRJTjoKPiA+ICvCoCAqLwo+ID4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19MRU5HVEjCoMKg wqDCoMKgwqDCoCgxIDw8IDIwKQo+ID4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19HRVRMSU5F wqDCoMKgwqDCoMKgKDEgPDwgMjEpCj4gPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX0ZVTkNE RUNMwqDCoMKgwqDCoCgxIDw8IDIyKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qCj4g PiAnZnVuY3Rpb24nCj4gPiAnZnVuYycgKi8KPiA+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgVENf QkVHSU7CoMKgwqDCoMKgwqDCoMKgKDEgPDwgMjMpCj4gPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDC oFRDX0VORMKgwqDCoMKgwqDCoMKgwqDCoMKgKDEgPDwgMjQpCj4gPiArLSNkZWZpbmXCoMKgwqDC oMKgwqDCoFRDX0VPRsKgwqDCoMKgwqDCoMKgwqDCoMKgKDEgPDwgMjUpCj4gPiArLSNkZWZpbmXC oMKgwqDCoMKgwqDCoFRDX1ZBUklBQkxFwqDCoMKgwqDCoCgxIDw8IDI2KQo+ID4gKy0jZGVmaW5l wqDCoMKgwqDCoMKgwqBUQ19BUlJBWcKgwqDCoMKgwqDCoMKgwqAoMSA8PCAyNykKPiA+ICstI2Rl ZmluZcKgwqDCoMKgwqDCoMKgVENfRlVOQ1RJT07CoMKgwqDCoMKgKDEgPDwgMjgpCj4gPiArLSNk ZWZpbmXCoMKgwqDCoMKgwqDCoFRDX1NUUklOR8KgwqDCoMKgwqDCoMKgKDEgPDwgMjkpCj4gPiAr LSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX05VTUJFUsKgwqDCoMKgwqDCoMKgKDEgPDwgMzApCj4g PiArLQo+ID4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19VT1BQUkXCoCAoVENfVU9QUFJFMSB8 IFRDX1VPUFBSRTIpCj4gPiArLQo+ID4gKy0vKiBjb21iaW5lZCB0b2tlbiBjbGFzc2VzICovCj4g PiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX0JJTk9QwqDCoCAoVENfQklOT1BYIHwgVENfQ09N TUEgfCBUQ19QSVBFIHwgVENfSU4pCj4gPiArLS8vI2RlZmluZcKgwqDCoMKgwqBUQ19VTkFSWU9Q IChUQ19VT1BQUkUgfCBUQ19VT1BQT1NUKQo+ID4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19P UEVSQU5EIChUQ19WQVJJQUJMRSB8IFRDX0FSUkFZIHwgVENfRlVOQ1RJT04gXAo+ID4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCBUQ19CVUlMVElOIHwgVENfTEVOR1RI IHwgVENfR0VUTElORSBcCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8IFRDX1NFUVNUQVJUIHwgVENfU1RSSU5HIHwgVENfTlVNQkVSKQo+ID4gKy0KPiA+ICstI2Rl ZmluZcKgwqDCoMKgwqDCoMKgVENfU1RBVEVNTlQgKFRDX1NUQVRYIHwgVENfV0hJTEUpCj4gPiAr LSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX09QVEVSTcKgIChUQ19TRU1JQ09MIHwgVENfTkVXTElO RSkKPiA+ICsrI2RlZmluZSBUQ19MRU5HVEjCoMKgwqDCoMKgwqAgKDEgPDwgMjApwqDCoMKgwqDC oMKgIC8qICdsZW5ndGgnICovCj4gPiArKyNkZWZpbmUgVENfR0VUTElORcKgwqDCoMKgwqAgKDEg PDwgMjEpwqDCoMKgwqDCoMKgIC8qICdnZXRsaW5lJyAqLwo+ID4gKysjZGVmaW5lIFRDX0ZVTkNE RUNMwqDCoMKgwqAgKDEgPDwgMjIpwqDCoMKgwqDCoMKgIC8qICdmdW5jdGlvbicgJ2Z1bmMnICov Cj4gPiArKyNkZWZpbmUgVENfQkVHSU7CoMKgwqDCoMKgwqDCoCAoMSA8PCAyMynCoMKgwqDCoMKg wqAgLyogJ0JFR0lOJyAqLwo+ID4gKysjZGVmaW5lIFRDX0VORMKgwqDCoMKgwqDCoMKgwqDCoCAo MSA8PCAyNCnCoMKgwqDCoMKgwqAgLyogJ0VORCcgKi8KPiA+ICsrI2RlZmluZSBUQ19FT0bCoMKg wqDCoMKgwqDCoMKgwqAgKDEgPDwgMjUpCj4gPiArKyNkZWZpbmUgVENfVkFSSUFCTEXCoMKgwqDC oCAoMSA8PCAyNinCoMKgwqDCoMKgwqAgLyogbmFtZSAqLwo+ID4gKysjZGVmaW5lIFRDX0FSUkFZ wqDCoMKgwqDCoMKgwqAgKDEgPDwgMjcpwqDCoMKgwqDCoMKgIC8qIG5hbWVbICovCj4gPiArKyNk ZWZpbmUgVENfRlVOQ1RJT07CoMKgwqDCoCAoMSA8PCAyOCnCoMKgwqDCoMKgwqAgLyogbmFtZSgg Ki8KPiA+ICsrI2RlZmluZSBUQ19TVFJJTkfCoMKgwqDCoMKgwqAgKDEgPDwgMjkpwqDCoMKgwqDC oMKgIC8qICIuLi4iICovCj4gPiArKyNkZWZpbmUgVENfTlVNQkVSwqDCoMKgwqDCoMKgICgxIDw8 IDMwKQo+ID4gKysKPiA+ICsrI2lmbmRlZiBkZWJ1Z19wYXJzZV9wcmludF90Ywo+ID4gKytzdGF0 aWMgdm9pZCBkZWJ1Z19wYXJzZV9wcmludF90Yyh1aW50MzJfdCBuKQo+ID4gKyt7Cj4gPiArK8Kg wqDCoMKgwqDCoGlmIChuICYgVENfTFBBUkVOwqAgKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBMUEFS RU4iwqAgKTsKPiA+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBUQ19SUEFSRU7CoCApIGRlYnVnX3By aW50Zl9wYXJzZSgiIFJQQVJFTiLCoCApOwo+ID4gKyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX1JF R0VYUMKgICkgZGVidWdfcHJpbnRmX3BhcnNlKCIgUkVHRVhQIsKgICk7Cj4gPiArK8KgwqDCoMKg wqDCoGlmIChuICYgVENfT1VUUkRSwqAgKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBPVVRSRFIiwqAg KTsKPiA+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBUQ19VT1BQT1NUICkgZGVidWdfcHJpbnRmX3Bh cnNlKCIgVU9QUE9TVCIgKTsKPiA+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBUQ19VT1BQUkUxICkg ZGVidWdfcHJpbnRmX3BhcnNlKCIgVU9QUFJFMSIgKTsKPiA+ICsrwqDCoMKgwqDCoMKgaWYgKG4g JiBUQ19CSU5PUFjCoCApIGRlYnVnX3ByaW50Zl9wYXJzZSgiIEJJTk9QWCLCoCApOwo+ID4gKyvC oMKgwqDCoMKgwqBpZiAobiAmIFRDX0lOwqDCoMKgwqDCoCApIGRlYnVnX3ByaW50Zl9wYXJzZSgi IElOIsKgwqDCoMKgwqAgKTsKPiA+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBUQ19DT01NQcKgwqAg KSBkZWJ1Z19wcmludGZfcGFyc2UoIiBDT01NQSLCoMKgICk7Cj4gPiArK8KgwqDCoMKgwqDCoGlm IChuICYgVENfUElQRcKgwqDCoCApIGRlYnVnX3ByaW50Zl9wYXJzZSgiIFBJUEUiwqDCoMKgICk7 Cj4gPiArK8KgwqDCoMKgwqDCoGlmIChuICYgVENfVU9QUFJFMiApIGRlYnVnX3ByaW50Zl9wYXJz ZSgiIFVPUFBSRTIiICk7Cj4gPiArK8KgwqDCoMKgwqDCoGlmIChuICYgVENfQVJSVEVSTSApIGRl YnVnX3ByaW50Zl9wYXJzZSgiIEFSUlRFUk0iICk7Cj4gPiArK8KgwqDCoMKgwqDCoGlmIChuICYg VENfTEJSQUNFwqAgKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBMQlJBQ0UiwqAgKTsKPiA+ICsrwqDC oMKgwqDCoMKgaWYgKG4gJiBUQ19SQlJBQ0XCoCApIGRlYnVnX3ByaW50Zl9wYXJzZSgiIFJCUkFD RSLCoCApOwo+ID4gKyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX1NFTUlDT0wgKSBkZWJ1Z19wcmlu dGZfcGFyc2UoIiBTRU1JQ09MIiApOwo+ID4gKyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX05FV0xJ TkUgKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBORVdMSU5FIiApOwo+ID4gKyvCoMKgwqDCoMKgwqBp ZiAobiAmIFRDX1NUQVRYwqDCoCApIGRlYnVnX3ByaW50Zl9wYXJzZSgiIFNUQVRYIsKgwqAgKTsK PiA+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBUQ19XSElMRcKgwqAgKSBkZWJ1Z19wcmludGZfcGFy c2UoIiBXSElMRSLCoMKgICk7Cj4gPiArK8KgwqDCoMKgwqDCoGlmIChuICYgVENfRUxTRcKgwqDC oCApIGRlYnVnX3ByaW50Zl9wYXJzZSgiIEVMU0UiwqDCoMKgICk7Cj4gPiArK8KgwqDCoMKgwqDC oGlmIChuICYgVENfQlVJTFRJTiApIGRlYnVnX3ByaW50Zl9wYXJzZSgiIEJVSUxUSU4iICk7Cj4g PiArK8KgwqDCoMKgwqDCoGlmIChuICYgVENfTEVOR1RIwqAgKSBkZWJ1Z19wcmludGZfcGFyc2Uo IiBMRU5HVEgiwqAgKTsKPiA+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBUQ19HRVRMSU5FICkgZGVi dWdfcHJpbnRmX3BhcnNlKCIgR0VUTElORSIgKTsKPiA+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBU Q19GVU5DREVDTCkgZGVidWdfcHJpbnRmX3BhcnNlKCIgRlVOQ0RFQ0wiKTsKPiA+ICsrwqDCoMKg wqDCoMKgaWYgKG4gJiBUQ19CRUdJTsKgwqAgKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBCRUdJTiLC oMKgICk7Cj4gPiArK8KgwqDCoMKgwqDCoGlmIChuICYgVENfRU5EwqDCoMKgwqAgKSBkZWJ1Z19w cmludGZfcGFyc2UoIiBFTkQiwqDCoMKgwqAgKTsKPiA+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBU Q19FT0bCoMKgwqDCoCApIGRlYnVnX3ByaW50Zl9wYXJzZSgiIEVPRiLCoMKgwqDCoCApOwo+ID4g KyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX1ZBUklBQkxFKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBW QVJJQUJMRSIpOwo+ID4gKyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX0FSUkFZwqDCoCApIGRlYnVn X3ByaW50Zl9wYXJzZSgiIEFSUkFZIsKgwqAgKTsKPiA+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBU Q19GVU5DVElPTikgZGVidWdfcHJpbnRmX3BhcnNlKCIgRlVOQ1RJT04iKTsKPiA+ICsrwqDCoMKg wqDCoMKgaWYgKG4gJiBUQ19TVFJJTkfCoCApIGRlYnVnX3ByaW50Zl9wYXJzZSgiIFNUUklORyLC oCApOwo+ID4gKyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX05VTUJFUsKgICkgZGVidWdfcHJpbnRm X3BhcnNlKCIgTlVNQkVSIsKgICk7Cj4gPiArK30KPiA+ICsrI2VuZGlmCj4gPiArKwo+ID4gKysv KiBjb21iaW5lZCB0b2tlbiBjbGFzc2VzICgidG9rZW4gW2NsYXNzXSBzZXRzIikgKi8KPiA+ICsr I2RlZmluZcKgwqDCoMKgwqDCoMKgVFNfVU9QUFJFwqDCoCAoVENfVU9QUFJFMSB8IFRDX1VPUFBS RTIpCj4gPiArKwo+ID4gKysjZGVmaW5lwqDCoMKgwqDCoMKgwqBUU19CSU5PUMKgwqDCoCAoVENf QklOT1BYIHwgVENfQ09NTUEgfCBUQ19QSVBFIHwKPiA+IFRDX0lOKQo+ID4gKysvLyNkZWZpbmUg VFNfVU5BUllPUCAoVFNfVU9QUFJFIHwgVENfVU9QUE9TVCkKPiA+ICsrI2RlZmluZcKgwqDCoMKg wqDCoMKgVFNfT1BFUkFORMKgIChUQ19WQVJJQUJMRSB8IFRDX0FSUkFZIHwgVENfRlVOQ1RJT04g XAo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IFRDX0JVSUxU SU4gfCBUQ19MRU5HVEggfCBUQ19HRVRMSU5FIFwKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfCBUQ19MUEFSRU4gfCBUQ19TVFJJTkcgfCBUQ19OVU1CRVIpCj4g PiArKwo+ID4gKysjZGVmaW5lwqDCoMKgwqDCoMKgwqBUU19MVkFMVUXCoMKgIChUQ19WQVJJQUJM RSB8IFRDX0FSUkFZKQo+ID4gKysjZGVmaW5lwqDCoMKgwqDCoMKgwqBUU19TVEFURU1OVCAoVENf U1RBVFggfCBUQ19XSElMRSkKPiA+ICsgCj4gPiArIC8qIHdvcmQgdG9rZW5zLCBjYW5ub3QgbWVh biBzb21ldGhpbmcgZWxzZSBpZiBub3QgZXhwZWN0ZWQgKi8KPiA+ICstI2RlZmluZcKgwqDCoMKg wqDCoMKgVENfV09SRMKgwqDCoCAoVENfSU4gfCBUQ19TVEFURU1OVCB8IFRDX0VMU0UgXAo+ID4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCBUQ19CVUlMVElOIHwgVENf TEVOR1RIIHwgVENfR0VUTElORSBcCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8IFRDX0ZVTkNERUNMIHwgVENfQkVHSU4gfCBUQ19FTkQpCj4gPiArKyNkZWZpbmXC oMKgwqDCoMKgwqDCoFRTX1dPUkTCoMKgwqDCoCAoVENfSU4gfCBUU19TVEFURU1OVCB8IFRDX0VM U0UgXAo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IFRDX0JV SUxUSU4gfCBUQ19MRU5HVEggfCBUQ19HRVRMSU5FIFwKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfCBUQ19GVU5DREVDTCB8IFRDX0JFR0lOIHwgVENfRU5EKQo+ ID4gKyAKPiA+ICsgLyogZGlzY2FyZCBuZXdsaW5lcyBhZnRlciB0aGVzZSAqLwo+ID4gKy0jZGVm aW5lwqDCoMKgwqDCoMKgwqBUQ19OT1RFUk3CoCAoVENfQ09NTUEgfCBUQ19HUlBTVEFSVCB8IFRD X0dSUFRFUk0gXAo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCBU Q19CSU5PUCB8IFRDX09QVEVSTSkKPiA+ICsrI2RlZmluZcKgwqDCoMKgwqDCoMKgVFNfTk9URVJN wqDCoCAoVFNfQklOT1AgfCBUQ19DT01NQSB8IFRDX0xCUkFDRSB8Cj4gPiBUQ19SQlJBQ0UgXAo+ ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IFRDX1NFTUlDT0wg fCBUQ19ORVdMSU5FKQo+ID4gKyAKPiA+ICsgLyogd2hhdCBjYW4gZXhwcmVzc2lvbiBiZWdpbiB3 aXRoICovCj4gPiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX09QU0VRwqDCoCAoVENfT1BFUkFO RCB8IFRDX1VPUFBSRSB8IFRDX1JFR0VYUCkKPiA+ICsrI2RlZmluZcKgwqDCoMKgwqDCoMKgVFNf T1BTRVHCoMKgwqAgKFRTX09QRVJBTkQgfCBUU19VT1BQUkUgfCBUQ19SRUdFWFApCj4gPiArIC8q IHdoYXQgY2FuIGdyb3VwIGJlZ2luIHdpdGggKi8KPiA+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKg VENfR1JQU0VRwqAgKFRDX09QU0VRIHwgVENfT1BURVJNIHwgVENfU1RBVEVNTlQgfAo+ID4gVENf R1JQU1RBUlQpCj4gPiArKyNkZWZpbmXCoMKgwqDCoMKgwqDCoFRTX0dSUFNFUcKgwqAgKFRTX09Q U0VRIHwgVFNfU1RBVEVNTlQgXAo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8IFRDX1NFTUlDT0wgfCBUQ19ORVdMSU5FIHwgVENfTEJSQUNFKQo+ID4gKyAKPiA+ ICstLyogaWYgcHJldmlvdXMgdG9rZW4gY2xhc3MgaXMgQ09OQ0FUMSBhbmQgbmV4dCBpcyBDT05D QVQyLAo+ID4gY29uY2F0ZW5hdGlvbiAqLwo+ID4gKysvKiBpZiBwcmV2aW91cyB0b2tlbiBjbGFz cyBpcyBDT05DQVRfTCBhbmQgbmV4dCBpcyBDT05DQVRfUiwKPiA+IGNvbmNhdGVuYXRpb24gKi8K PiA+ICsgLyogb3BlcmF0b3IgaXMgaW5zZXJ0ZWQgYmV0d2VlbiB0aGVtICovCj4gPiArLSNkZWZp bmXCoMKgwqDCoMKgwqDCoFRDX0NPTkNBVDEgKFRDX1ZBUklBQkxFIHwgVENfQVJSVEVSTSB8IFRD X1NFUVRFUk0gXAo+ID4gKysjZGVmaW5lwqDCoMKgwqDCoMKgwqBUU19DT05DQVRfTCAoVENfVkFS SUFCTEUgfCBUQ19BUlJURVJNIHwgVENfUlBBUkVOIFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8IFRDX1NUUklORyB8IFRDX05VTUJFUiB8IFRDX1VPUFBPU1Qg XAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgVENfTEVOR1RI KQo+ID4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19DT05DQVQyIChUQ19PUEVSQU5EIHwgVENf VU9QUFJFKQo+ID4gKysjZGVmaW5lwqDCoMKgwqDCoMKgwqBUU19DT05DQVRfUiAoVFNfT1BFUkFO RCB8IFRTX1VPUFBSRSkKPiA+ICsgCj4gPiArICNkZWZpbmXCoMKgwqDCoMKgwqDCoE9GX1JFUzHC oMKgwqDCoCAweDAxMDAwMAo+ID4gKyAjZGVmaW5lwqDCoMKgwqDCoMKgwqBPRl9SRVMywqDCoMKg wqAgMHgwMjAwMDAKPiA+ICtAQCAtMjg0LDEzICszMTUsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgdHNw bGl0dGVyX3Mgewo+ID4gKyAjZGVmaW5lwqDCoMKgwqDCoMKgwqBPRl9DSEVDS0VEwqAgMHgyMDAw MDAKPiA+ICsgI2RlZmluZcKgwqDCoMKgwqDCoMKgT0ZfUkVRVUlSRUQgMHg0MDAwMDAKPiA+ICsg Cj4gPiArLQo+ID4gKyAvKiBjb21iaW5lZCBvcGVyYXRvciBmbGFncyAqLwo+ID4gKyAjZGVmaW5l wqDCoMKgwqDCoMKgwqB4eMKgwqDCoMKgwqDCoDAKPiA+ICsgI2RlZmluZcKgwqDCoMKgwqDCoMKg eFbCoMKgwqDCoMKgwqBPRl9SRVMyCj4gPiArICNkZWZpbmXCoMKgwqDCoMKgwqDCoHhTwqDCoMKg wqDCoMKgKE9GX1JFUzIgfCBPRl9TVFIyKQo+ID4gKyAjZGVmaW5lwqDCoMKgwqDCoMKgwqBWeMKg wqDCoMKgwqDCoE9GX1JFUzEKPiA+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgUnjCoMKgwqDCoMKg wqAoT0ZfUkVTMSB8IE9GX05VTTEgfCBPRl9SRVFVSVJFRCkKPiA+ICsrI2RlZmluZcKgwqDCoMKg wqDCoMKgUnjCoMKgwqDCoMKgwqBPRl9SRVFVSVJFRAo+ID4gKyAjZGVmaW5lwqDCoMKgwqDCoMKg wqBWVsKgwqDCoMKgwqDCoChPRl9SRVMxIHwgT0ZfUkVTMikKPiA+ICsgI2RlZmluZcKgwqDCoMKg wqDCoMKgTnjCoMKgwqDCoMKgwqAoT0ZfUkVTMSB8IE9GX05VTTEpCj4gPiArICNkZWZpbmXCoMKg wqDCoMKgwqDCoE5WwqDCoMKgwqDCoMKgKE9GX1JFUzEgfCBPRl9OVU0xIHwgT0ZfUkVTMikKPiA+ ICtAQCAtMzAyLDggKzMzMiw3IEBAIHR5cGVkZWYgc3RydWN0IHRzcGxpdHRlcl9zIHsKPiA+ICsg I2RlZmluZcKgwqDCoMKgwqDCoMKgT1BOTUFTS8KgwqAgMHgwMDdGCj4gPiArIAo+ID4gKyAvKiBv cGVyYXRvciBwcmlvcml0eSBpcyBhIGhpZ2hlc3QgYnl0ZSAoZXZlbjogci0+bCwgb2RkOiBsLT5y Cj4gPiBncm91cGluZykKPiA+ICstICogRm9yIGJ1aWx0aW5zIGl0IGhhcyBkaWZmZXJlbnQgbWVh bmluZzogbiBuIHMzIHMyIHMxIHYzIHYyIHYxLAo+ID4gKy0gKiBuIC0gbWluLiBudW1iZXIgb2Yg YXJncywgdk4gLSByZXNvbHZlIE50aCBhcmcgdG8gdmFyLCBzTiAtCj4gPiByZXNvbHZlIHRvIHN0 cmluZwo+ID4gKysgKiAoZm9yIGJ1aWx0aW5zIGl0IGhhcyBkaWZmZXJlbnQgbWVhbmluZykKPiA+ ICvCoCAqLwo+ID4gKyAjdW5kZWYgUAo+ID4gKyAjdW5kZWYgUFJJTUFTSwo+ID4gK0BAIC0zMTMs MTAgKzM0Miw4IEBAIHR5cGVkZWYgc3RydWN0IHRzcGxpdHRlcl9zIHsKPiA+ICsgI2RlZmluZSBQ UklNQVNLMsKgIDB4N0UwMDAwMDAKPiA+ICsgCj4gPiArIC8qIE9wZXJhdGlvbiBjbGFzc2VzICov Cj4gPiArLQo+ID4gKyAjZGVmaW5lwqDCoMKgwqDCoMKgwqBTSElGVF9USUxfVEhJU8KgwqAweDA2 MDAKPiA+ICsgI2RlZmluZcKgwqDCoMKgwqDCoMKgUkVDVVJfRlJPTV9USElTwqAweDEwMDAKPiA+ ICstCj4gPiArIGVudW0gewo+ID4gK8KgwqDCoMKgwqDCoMKgT0NfREVMRVRFID0gMHgwMTAwLMKg wqDCoMKgIE9DX0VYRUMgPSAweDAyMDAswqDCoMKgwqDCoMKgCj4gPiBPQ19ORVdTT1VSQ0UKPiA+ ID0gMHgwMzAwLAo+ID4gK8KgwqDCoMKgwqDCoMKgT0NfUFJJTlQgPSAweDA0MDAswqDCoMKgwqDC oCBPQ19QUklOVEYgPSAweDA1MDAswqDCoMKgwqAgT0NfV0FMS0lOSVQKPiA+ID0KPiA+IDB4MDYw MCwKPiA+ICtAQCAtMzU4LDggKzM4NSw4IEBAIGVudW0gewo+ID4gKyAjZGVmaW5lIE5UQ0PCoMKg wqAgJ1wzNzcnCj4gPiArIAo+ID4gKyBzdGF0aWMgY29uc3QgY2hhciB0b2tlbmxpc3RbXSBBTElH TjEgPQo+ID4gKy3CoMKgwqDCoMKgwqAiXDEoIsKgwqDCoMKgwqDCoMKgwqAgTlRDwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgLyoKPiA+IFRDX1NFUVNUQVJUICovCj4gPiArLcKgwqDCoMKgwqDCoCJcMSkiwqDCoMKgwqDC oMKgwqDCoCBOVEPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKgo+ID4gVENfU0VRVEVSTSAqLwo+ID4gKyvCoMKgwqDC oMKgwqAiXDEoIsKgwqDCoMKgwqDCoMKgwqAgTlRDwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoKPiA+IFRDX0xQQVJF TiAqLwo+ID4gKyvCoMKgwqDCoMKgwqAiXDEpIsKgwqDCoMKgwqDCoMKgwqAgTlRDwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgLyoKPiA+IFRDX1JQQVJFTiAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgIlwxLyLCoMKgwqDCoMKg wqDCoMKgIE5UQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qCj4gPiBUQ19SRUdFWFAgKi8KPiA+ICvCoMKgwqDCoMKg wqDCoCJcMj4+IsKgwqDCoMKgwqDCoMKgICJcMT4iwqDCoMKgwqDCoMKgwqDCoCAiXDF8IsKgwqDC oMKgwqDCoCBOVEPCoMKgwqDCoMKgwqDCoMKgIC8qCj4gPiBUQ19PVVRSRFIgKi8KPiA+ICvCoMKg wqDCoMKgwqDCoCJcMisrIsKgwqDCoMKgwqDCoMKgICJcMi0tIsKgwqDCoMKgwqDCoMKgIE5UQ8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoKPiA+IFRDX1VPUFBPU1Qg Ki8KPiA+ICtAQCAtMzc2LDggKzQwMyw4IEBAIHN0YXRpYyBjb25zdCBjaGFyIHRva2VubGlzdFtd IEFMSUdOMSA9Cj4gPiArwqDCoMKgwqDCoMKgwqAiXDF8IsKgwqDCoMKgwqDCoMKgwqAgTlRDwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgLyoKPiA+IFRDX1BJUEUgKi8KPiA+ICvCoMKgwqDCoMKgwqDCoCJcMSsiwqDCoMKg wqDCoMKgwqDCoCAiXDEtIsKgwqDCoMKgwqDCoMKgwqAgIlwxISLCoMKgwqDCoMKgwqAgTlRDwqDC oMKgwqDCoMKgwqDCoCAvKgo+ID4gVENfVU9QUFJFMiAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgIlwx XSLCoMKgwqDCoMKgwqDCoMKgIE5UQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qCj4gPiBUQ19BUlJURVJNICovCj4g PiArLcKgwqDCoMKgwqDCoCJcMXsiwqDCoMKgwqDCoMKgwqDCoCBOVEPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKgo+ ID4gVENfR1JQU1RBUlQgKi8KPiA+ICstwqDCoMKgwqDCoMKgIlwxfSLCoMKgwqDCoMKgwqDCoMKg IE5UQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC8qCj4gPiBUQ19HUlBURVJNICovCj4gPiArK8KgwqDCoMKgwqDCoCJc MXsiwqDCoMKgwqDCoMKgwqDCoCBOVEPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKgo+ID4gVENfTEJSQUNFICovCj4g PiArK8KgwqDCoMKgwqDCoCJcMX0iwqDCoMKgwqDCoMKgwqDCoCBOVEPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKgo+ ID4gVENfUkJSQUNFICovCj4gPiArwqDCoMKgwqDCoMKgwqAiXDE7IsKgwqDCoMKgwqDCoMKgwqAg TlRDwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgLyoKPiA+IFRDX1NFTUlDT0wgKi8KPiA+ICvCoMKgwqDCoMKgwqDCoCJc MVxuIsKgwqDCoMKgwqDCoMKgIE5UQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qCj4gPiBUQ19ORVdMSU5FICovCj4g PiArwqDCoMKgwqDCoMKgwqAiXDJpZiLCoMKgwqDCoMKgwqDCoCAiXDJkbyLCoMKgwqDCoMKgwqDC oCAiXDNmb3IiwqDCoMKgwqAgIlw1YnJlYWsiwqDCoCAvKgo+ID4gVENfU1RBVFggKi8KPiA+ICtA QCAtMzkxLDcgKzQxOCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIHRva2VubGlzdFtdIEFMSUdOMSA9 Cj4gPiArwqDCoMKgwqDCoMKgwqAiXDVjbG9zZSLCoMKgwqDCoCAiXDZzeXN0ZW0iwqDCoMKgICJc NmZmbHVzaCLCoCAiXDVhdGFuMiIKPiA+ICvCoMKgwqDCoMKgwqDCoCJcM2NvcyLCoMKgwqDCoMKg wqAgIlwzZXhwIsKgwqDCoMKgwqDCoCAiXDNpbnQiwqDCoMKgwqAgIlwzbG9nIgo+ID4gK8KgwqDC oMKgwqDCoMKgIlw0cmFuZCLCoMKgwqDCoMKgICJcM3NpbiLCoMKgwqDCoMKgwqAgIlw0c3FydCLC oMKgwqAgIlw1c3JhbmQiCj4gPiArLcKgwqDCoMKgwqDCoCJcNmdlbnN1YiLCoMKgwqAgIlw0Z3N1 YiLCoMKgwqDCoMKgICJcNWluZGV4IsKgwqDCoC8qICJcNmxlbmd0aCIgd2FzCj4gPiBoZXJlICov Cj4gPiArK8KgwqDCoMKgwqDCoCJcNmdlbnN1YiLCoMKgwqAgIlw0Z3N1YiLCoMKgwqDCoMKgICJc NWluZGV4IsKgwqAgLyogIlw2bGVuZ3RoIiB3YXMKPiA+IGhlcmUgKi8KPiA+ICvCoMKgwqDCoMKg wqDCoCJcNW1hdGNoIsKgwqDCoMKgICJcNXNwbGl0IsKgwqDCoMKgICJcN3NwcmludGYiICJcM3N1 YiIKPiA+ICvCoMKgwqDCoMKgwqDCoCJcNnN1YnN0ciLCoMKgwqAgIlw3c3lzdGltZSLCoMKgICJc MTBzdHJmdGltZSIgIlw2bWt0aW1lIgo+ID4gK8KgwqDCoMKgwqDCoMKgIlw3dG9sb3dlciLCoMKg ICJcN3RvdXBwZXIiwqDCoCBOVEMKPiA+ICtAQCAtNDAzLDI1ICs0MzAsMzIgQEAgc3RhdGljIGNv bnN0IGNoYXIgdG9rZW5saXN0W10gQUxJR04xID0KPiA+ICvCoMKgwqDCoMKgwqDCoC8qIGNvbXBp bGVyIGFkZHMgdHJhaWxpbmcgIlwwIiAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgOwo+ID4gKyAKPiA+ ICstI2RlZmluZSBPQ19CwqAgT0NfQlVJTFRJTgo+ID4gKy0KPiA+ICsgc3RhdGljIGNvbnN0IHVp bnQzMl90IHRva2VuaW5mb1tdIEFMSUdONCA9IHsKPiA+ICvCoMKgwqDCoMKgwqDCoDAsCj4gPiAr wqDCoMKgwqDCoMKgwqAwLAo+ID4gKy3CoMKgwqDCoMKgwqBPQ19SRUdFWFAsCj4gPiArKyNkZWZp bmUgVElfUkVHRVhQIE9DX1JFR0VYUAo+ID4gKyvCoMKgwqDCoMKgwqBUSV9SRUdFWFAsCj4gPiAr wqDCoMKgwqDCoMKgwqB4U3wnYScswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB4 U3wndycswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB4U3wnfCcsCj4gPiArwqDC oMKgwqDCoMKgwqBPQ19VTkFSWXx4VnxQKDkpfCdwJyzCoMKgwqAgT0NfVU5BUll8eFZ8UCg5KXwn bScsCj4gPiArLcKgwqDCoMKgwqDCoE9DX1VOQVJZfHhWfFAoOSl8J1AnLMKgwqDCoCBPQ19VTkFS WXx4VnxQKDkpfCdNJyzCoMKgwqAKPiA+IE9DX0ZJRUxEfHhWfFAoNSksCj4gPiArKyNkZWZpbmUg VElfUFJFSU5DIChPQ19VTkFSWXx4VnxQKDkpfCdQJykKPiA+ICsrI2RlZmluZSBUSV9QUkVERUMg KE9DX1VOQVJZfHhWfFAoOSl8J00nKQo+ID4gKyvCoMKgwqDCoMKgwqBUSV9QUkVJTkMswqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBUSV9QUkVERUMswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoAo+ID4gT0NfRklFTER8eFZ8UCg1KSwKPiA+ICvCoMKgwqDCoMKgwqDCoE9DX0NPTVBBUkV8 VlZ8UCgzOSl8NSzCoMKgIE9DX01PVkV8VlZ8UCg3NCkswqDCoMKgwqDCoMKgwqAKPiA+IE9DX1JF UExBQ0V8TlZ8UCg3NCl8JysnLCBPQ19SRVBMQUNFfE5WfFAoNzQpfCctJywKPiA+ICvCoMKgwqDC oMKgwqDCoE9DX1JFUExBQ0V8TlZ8UCg3NCl8JyonLCBPQ19SRVBMQUNFfE5WfFAoNzQpfCcvJywK PiA+IE9DX1JFUExBQ0V8TlZ8UCg3NCl8JyUnLCBPQ19SRVBMQUNFfE5WfFAoNzQpfCcmJywKPiA+ ICvCoMKgwqDCoMKgwqDCoE9DX0JJTkFSWXxOVnxQKDI5KXwnKycswqAgT0NfQklOQVJZfE5WfFAo MjkpfCctJyzCoAo+ID4gT0NfUkVQTEFDRXxOVnxQKDc0KXwnJicsIE9DX0JJTkFSWXxOVnxQKDE1 KXwnJicsCj4gPiArwqDCoMKgwqDCoMKgwqBPQ19CSU5BUll8TlZ8UCgyNSl8Jy8nLMKgIE9DX0JJ TkFSWXxOVnxQKDI1KXwnJScswqAKPiA+IE9DX0JJTkFSWXxOVnxQKDE1KXwnJicswqAgT0NfQklO QVJZfE5WfFAoMjUpfCcqJywKPiA+ICvCoMKgwqDCoMKgwqDCoE9DX0NPTVBBUkV8VlZ8UCgzOSl8 NCzCoMKgIE9DX0NPTVBBUkV8VlZ8UCgzOSl8MyzCoMKgCj4gPiBPQ19DT01QQVJFfFZWfFAoMzkp fDAswqDCoCBPQ19DT01QQVJFfFZWfFAoMzkpfDEsCj4gPiArLcKgwqDCoMKgwqDCoE9DX0NPTVBB UkV8VlZ8UCgzOSl8MizCoMKgIE9DX01BVENIfFN4fFAoNDUpfCchJyzCoMKgCj4gPiBPQ19NQVRD SHxTeHxQKDQ1KXwnficswqDCoCBPQ19MQU5EfFZ4fFAoNTUpLAo+ID4gKy3CoMKgwqDCoMKgwqBP Q19MT1J8Vnh8UCg1OSkswqDCoMKgwqDCoMKgwqDCoCBPQ19URVJOQVJZfFZ4fFAoNjQpfCc/JywK PiA+IE9DX0NPTE9OfHh4fFAoNjcpfCc6JywKPiA+ICstwqDCoMKgwqDCoMKgT0NfSU58U1Z8UCg0 OSksIC8qIFRDX0lOICovCj4gPiArLcKgwqDCoMKgwqDCoE9DX0NPTU1BfFNTfFAoODApLAo+ID4g Ky3CoMKgwqDCoMKgwqBPQ19QR0VUTElORXxTVnxQKDM3KSwKPiA+ICsrI2RlZmluZSBUSV9MRVNT wqDCoMKgwqAgKE9DX0NPTVBBUkV8VlZ8UCgzOSl8MikKPiA+ICsrwqDCoMKgwqDCoMKgVElfTEVT UyzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBPQ19NQVRDSHxTeHxQKDQ1KXwnIScs wqDCoAo+ID4gT0NfTUFUQ0h8U3h8UCg0NSl8J34nLMKgwqAgT0NfTEFORHxWeHxQKDU1KSwKPiA+ ICsrI2RlZmluZSBUSV9URVJOQVJZwqAgKE9DX1RFUk5BUll8Vnh8UCg2NCl8Jz8nKQo+ID4gKysj ZGVmaW5lIFRJX0NPTE9OwqDCoMKgIChPQ19DT0xPTnx4eHxQKDY3KXwnOicpCj4gPiArK8KgwqDC oMKgwqDCoE9DX0xPUnxWeHxQKDU5KSzCoMKgwqDCoMKgwqDCoMKgIFRJX1RFUk5BUlkswqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgVElfQ09MT04sCj4gPiArKyNkZWZpbmUgVElfSU7CoMKgwqDC oMKgwqAgKE9DX0lOfFNWfFAoNDkpKQo+ID4gKyvCoMKgwqDCoMKgwqBUSV9JTiwKPiA+ICsrI2Rl ZmluZSBUSV9DT01NQcKgwqDCoCAoT0NfQ09NTUF8U1N8UCg4MCkpCj4gPiArK8KgwqDCoMKgwqDC oFRJX0NPTU1BLAo+ID4gKysjZGVmaW5lIFRJX1BHRVRMSU5FIChPQ19QR0VUTElORXxTVnxQKDM3 KSkKPiA+ICsrwqDCoMKgwqDCoMKgVElfUEdFVExJTkUsCj4gPiArwqDCoMKgwqDCoMKgwqBPQ19V TkFSWXx4VnxQKDE5KXwnKycswqDCoCBPQ19VTkFSWXx4VnxQKDE5KXwnLScswqDCoAo+ID4gT0Nf VU5BUll8eFZ8UCgxOSl8JyEnLAo+ID4gK8KgwqDCoMKgwqDCoMKgMCwgLyogXSAqLwo+ID4gK8Kg wqDCoMKgwqDCoMKgMCwKPiA+ICtAQCAtNDM0LDIwICs0NjgsNDUgQEAgc3RhdGljIGNvbnN0IHVp bnQzMl90IHRva2VuaW5mb1tdIEFMSUdONCA9IHsKPiA+ICvCoMKgwqDCoMKgwqDCoE9DX1JFVFVS TnxWeCwgT0NfRVhJVHxOeCwKPiA+ICvCoMKgwqDCoMKgwqDCoFNUX1dISUxFLAo+ID4gK8KgwqDC oMKgwqDCoMKgMCwgLyogZWxzZSAqLwo+ID4gKy3CoMKgwqDCoMKgwqBPQ19CfEJfYW58UCgweDgz KSwgT0NfQnxCX2NvfFAoMHg0MSksIE9DX0J8Ql9sc3xQKDB4ODMpLAo+ID4gT0NfQnxCX29yfFAo MHg4MyksCj4gPiArLcKgwqDCoMKgwqDCoE9DX0J8Ql9yc3xQKDB4ODMpLCBPQ19CfEJfeG98UCgw eDgzKSwKPiA+ICstwqDCoMKgwqDCoMKgT0NfRkJMVElOfFN4fEZfY2wsIE9DX0ZCTFRJTnxTeHxG X3N5LCBPQ19GQkxUSU58U3h8Rl9mZiwKPiA+IE9DX0J8Ql9hMnxQKDB4ODMpLAo+ID4gKy3CoMKg wqDCoMKgwqBPQ19GQkxUSU58Tnh8Rl9jbywgT0NfRkJMVElOfE54fEZfZXgsIE9DX0ZCTFRJTnxO eHxGX2luLAo+ID4gT0NfRkJMVElOfE54fEZfbGcsCj4gPiArLcKgwqDCoMKgwqDCoE9DX0ZCTFRJ TnxGX3JuLMKgwqDCoCBPQ19GQkxUSU58Tnh8Rl9zaSwgT0NfRkJMVElOfE54fEZfc3EsCj4gPiBP Q19GQkxUSU58Tnh8Rl9zciwKPiA+ICstwqDCoMKgwqDCoMKgT0NfQnxCX2dlfFAoMHhkNiksIE9D X0J8Ql9nc3xQKDB4YjYpLCBPQ19CfEJfaXh8UCgweDliKSwgLyoKPiA+IE9DX0ZCTFRJTnxTeHxG X2xlLCB3YXMgaGVyZSAqLwo+ID4gKy3CoMKgwqDCoMKgwqBPQ19CfEJfbWF8UCgweDg5KSwgT0Nf QnxCX3NwfFAoMHg4YiksIE9DX1NQUklOVEYswqDCoMKgwqDCoMKgwqAKPiA+IE9DX0J8Ql9zdXxQ KDB4YjYpLAo+ID4gKy3CoMKgwqDCoMKgwqBPQ19CfEJfc3N8UCgweDhmKSwgT0NfRkJMVElOfEZf dGkswqDCoMKgIE9DX0J8Ql90aXxQKDB4MGIpLAo+ID4gT0NfQnxCX210fFAoMHgwYiksCj4gPiAr LcKgwqDCoMKgwqDCoE9DX0J8Ql9sb3xQKDB4NDkpLCBPQ19CfEJfdXB8UCgweDQ5KSwKPiA+ICst wqDCoMKgwqDCoMKgT0NfRkJMVElOfFN4fEZfbGUsIC8qIFRDX0xFTkdUSCAqLwo+ID4gKy3CoMKg wqDCoMKgwqBPQ19HRVRMSU5FfFNWfFAoMCksCj4gPiArLcKgwqDCoMKgwqDCoDAswqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMCwKPiA+ICstwqDCoMKgwqDCoMKgMCwKPiA+ICstwqDC oMKgwqDCoMKgMCAvKiBUQ19FTkQgKi8KPiA+ICsrLy8gT0NfQidzIGFyZSBidWlsdGlucyB3aXRo IGVuZm9yY2VkIG1pbmltdW0gbnVtYmVyIG9mIGFyZ3VtZW50cwo+ID4gKHR3byB1cHBlciBiaXRz KS4KPiA+ICsrLy/CoCBIaWdoZXN0IGJ5dGUgYml0IHBhdHRlcm46IG5uIHMzczJzMSB2M3YydjEK PiA+ICsrLy/CoCBubiAtIG1pbi4gbnVtYmVyIG9mIGFyZ3MsIHNOIC0gcmVzb2x2ZSBOdGggYXJn IHRvIHN0cmluZywgdk4KPiA+IC0KPiA+IHJlc29sdmUgdG8gdmFyCj4gPiArKy8vIE9DX0YncyBh cmUgYnVpbHRpbnMgd2l0aCB6ZXJvIG9yIG9uZSBhcmd1bWVudC4KPiA+ICsrLy/CoCB8Unh8IGVu Zm9yY2VzIHRoYXQgYXJnIGlzIHByZXNlbnQgZm9yOiBzeXN0ZW0sIGNsb3NlLCBjb3MsCj4gPiBz aW4sCj4gPiBleHAsIGludCwgbG9nLCBzcXJ0Cj4gPiArKy8vwqAgQ2hlY2sgZm9yIG5vIGFyZ3Mg aXMgcHJlc2VudCBpbiBidWlsdGlucycgY29kZSAobm90IGluIHRoaXMKPiA+IHRhYmxlKTogcmFu ZCwgc3lzdGltZQo+ID4gKysvL8KgIEhhdmUgb25lIF9vcHRpb25hbF8gYXJnOiBmZmx1c2gsIHNy YW5kLCBsZW5ndGgKPiA+ICsrI2RlZmluZSBPQ19CwqDCoCBPQ19CVUlMVElOCj4gPiArKyNkZWZp bmUgT0NfRsKgwqAgT0NfRkJMVElOCj4gPiArKyNkZWZpbmUgQTHCoMKgwqDCoCBQKDB4NDApIC8q b25lIGFyZyovCj4gPiArKyNkZWZpbmUgQTLCoMKgwqDCoCBQKDB4ODApIC8qdHdvIGFyZ3MqLwo+ ID4gKysjZGVmaW5lIEEzwqDCoMKgwqAgUCgweGMwKSAvKnRocmVlIGFyZ3MqLwo+ID4gKysjZGVm aW5lIF9fdsKgwqDCoCBQKDEpCj4gPiArKyNkZWZpbmUgX3Z2wqDCoMKgIFAoMykKPiA+ICsrI2Rl ZmluZSBfX3NfX3YgUCg5KQo+ID4gKysjZGVmaW5lIF9fc192diBQKDB4MGIpCj4gPiArKyNkZWZp bmUgX19zdnZ2IFAoMHgwZikKPiA+ICsrI2RlZmluZSBfc3NfdnYgUCgweDFiKQo+ID4gKysjZGVm aW5lIF9zX3Z2XyBQKDB4MTYpCj4gPiArKyNkZWZpbmUgc3NfdnZfIFAoMHgzNikKPiA+ICsrwqDC oMKgwqDCoMKgT0NfQnxCX2FufF92dnxBMizCoMKgIE9DX0J8Ql9jb3xfX3Z8QTEswqDCoCBPQ19C fEJfbHN8X3Z2fEEyLMKgwqAKPiA+IE9DX0J8Ql9vcnxfdnZ8QTIswqDCoCAvLyBhbmTCoMKgwqAg Y29tcGzCoMKgIGxzaGlmdMKgwqAgb3IKPiA+ICsrwqDCoMKgwqDCoMKgT0NfQnxCX3JzfF92dnxB MizCoMKgCj4gPiBPQ19CfEJfeG98X3Z2fEEyLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAv Lwo+ID4gcnNoaWZ0Cj4gPiB4b3IKPiA+ICsrwqDCoMKgwqDCoMKgT0NfRnxGX2NsfFN4fFJ4LMKg wqDCoCBPQ19GfEZfc3l8U3h8UngswqDCoMKgIE9DX0Z8Rl9mZnxTeCzCoMKgwqDCoMKgwqAKPiA+ IE9DX0J8Ql9hMnxfdnZ8QTIswqDCoCAvLyBjbG9zZcKgIHN5c3RlbcKgIGZmbHVzaMKgwqAgYXRh bjIKPiA+ICsrwqDCoMKgwqDCoMKgT0NfRnxGX2NvfE54fFJ4LMKgwqDCoCBPQ19GfEZfZXh8Tnh8 UngswqDCoMKgIE9DX0Z8Rl9pbnxOeHxSeCzCoMKgwqAKPiA+IE9DX0Z8Rl9sZ3xOeHxSeCzCoMKg wqAgLy8gY29zwqDCoMKgIGV4cMKgwqDCoMKgIGludMKgwqDCoMKgwqAgbG9nCj4gPiArK8KgwqDC oMKgwqDCoE9DX0Z8Rl9ybizCoMKgwqDCoMKgwqDCoMKgwqAgT0NfRnxGX3NpfE54fFJ4LMKgwqDC oCBPQ19GfEZfc3F8Tnh8UngswqDCoMKgCj4gPiBPQ19GfEZfc3J8TngswqDCoMKgwqDCoMKgIC8v IHJhbmTCoMKgIHNpbsKgwqDCoMKgIHNxcnTCoMKgwqDCoCBzcmFuZAo+ID4gKyvCoMKgwqDCoMKg wqBPQ19CfEJfZ2V8X3NfdnZffEEzLE9DX0J8Ql9nc3xzc192dl98QTIsT0NfQnxCX2l4fF9zc192 dnxBMgo+ID4gLMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLy8g Z2Vuc3ViIGdzdWLCoMKgwqAgaW5kZXjCoCAvKmxlbmd0aCB3YXMgaGVyZSovCj4gPiArK8KgwqDC oMKgwqDCoE9DX0J8Ql9tYXxfX3NfX3Z8QTIsT0NfQnxCX3NwfF9fc192dnxBMixPQ19TUFJJTlRG LMKgwqDCoMKgwqDCoMKgwqAKPiA+IE9DX0J8Ql9zdXxzc192dl98QTIsLy8gbWF0Y2jCoCBzcGxp dMKgwqAgc3ByaW50ZsKgIHN1Ygo+ID4gKyvCoMKgwqDCoMKgwqBPQ19CfEJfc3N8X19zdnZ2fEEy LE9DX0Z8Rl90aSzCoMKgwqDCoMKgwqDCoMKgwqAgT0NfQnxCX3RpfF9fc192dizCoMKgCj4gPiBP Q19CfEJfbXR8X19zX3Z2LMKgwqAgLy8gc3Vic3RyIHN5c3RpbWUgc3RyZnRpbWUgbWt0aW1lCj4g PiArK8KgwqDCoMKgwqDCoE9DX0J8Ql9sb3xfX3NfX3Z8QTEsT0NfQnxCX3VwfF9fc19fdnxBMSzC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gwqDCoAo+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8vIHRvbG93ZXIgdG91cHBlcgo+ID4gKyvC oMKgwqDCoMKgwqBPQ19GfEZfbGV8U3gswqDCoCAvLyBsZW5ndGgKPiA+ICsrwqDCoMKgwqDCoMKg T0NfR0VUTElORXxTVizCoCAvLyBnZXRsaW5lCj4gPiArK8KgwqDCoMKgwqDCoDAsIDAsIC8vIGZ1 bmMgZnVuY3Rpb24KPiA+ICsrwqDCoMKgwqDCoMKgMCwgLy8gQkVHSU4KPiA+ICsrwqDCoMKgwqDC oMKgMMKgIC8vIEVORAo+ID4gKysjdW5kZWYgQTEKPiA+ICsrI3VuZGVmIEEyCj4gPiArKyN1bmRl ZiBBMwo+ID4gKysjdW5kZWYgT0NfQgo+ID4gKysjdW5kZWYgT0NfRgo+ID4gKyB9Owo+ID4gKyAK PiA+ICsgLyogaW50ZXJuYWwgdmFyaWFibGUgbmFtZXMgYW5kIHRoZWlyIGluaXRpYWwgdmFsdWVz wqDCoMKgwqDCoMKgICovCj4gPiArQEAgLTQ4OCwyMSArNTQ3LDI5IEBAIHN0cnVjdCBnbG9iYWxz IHsKPiA+ICvCoMKgwqDCoMKgwqDCoGNoYWluICpzZXE7Cj4gPiArwqDCoMKgwqDCoMKgwqBub2Rl ICpicmVha19wdHIsICpjb250aW51ZV9wdHI7Cj4gPiArwqDCoMKgwqDCoMKgwqByc3RyZWFtICpp RjsKPiA+ICstwqDCoMKgwqDCoMKgeGhhc2ggKnZoYXNoLCAqYWhhc2gsICpmZGhhc2gsICpmbmhh c2g7Cj4gPiArK8KgwqDCoMKgwqDCoHhoYXNoICphaGFzaDvCoCAvKiBhcmd1bWVudCBuYW1lcywg dXNlZCBvbmx5IHdoaWxlIHBhcnNpbmcKPiA+IGZ1bmN0aW9uIGJvZGllcyAqLwo+ID4gKyvCoMKg wqDCoMKgwqB4aGFzaCAqZm5oYXNoOyAvKiBmdW5jdGlvbiBuYW1lcywgdXNlZCBvbmx5IGluIHBh cnNpbmcKPiA+IHN0YWdlCj4gPiAqLwo+ID4gKyvCoMKgwqDCoMKgwqB4aGFzaCAqdmhhc2g7wqAg LyogdmFyaWFibGVzIGFuZCBhcnJheXMgKi8KPiA+ICsrwqDCoMKgwqDCoMKgLy94aGFzaCAqZmRo YXNoOyAvKiBmaWxlIG9iamVjdHMsIHVzZWQgb25seSBpbiBleGVjdXRpb24KPiA+IHN0YWdlICov Cj4gPiArK8KgwqDCoMKgwqDCoC8vd2UgYXJlIHJldXNpbmcgYWhhc2ggYXMgZmRoYXNoLCB2aWEg ZGVmaW5lIChzZWUgbGF0ZXIpCj4gPiArwqDCoMKgwqDCoMKgwqBjb25zdCBjaGFyICpnX3Byb2du YW1lOwo+ID4gK8KgwqDCoMKgwqDCoMKgaW50IGdfbGluZW5vOwo+ID4gK8KgwqDCoMKgwqDCoMKg aW50IG5maWVsZHM7Cj4gPiArwqDCoMKgwqDCoMKgwqBpbnQgbWF4ZmllbGRzOyAvKiB1c2VkIGlu IGZzcmVhbGxvYygpIG9ubHkgKi8KPiA+ICvCoMKgwqDCoMKgwqDCoHZhciAqRmllbGRzOwo+ID4g Ky3CoMKgwqDCoMKgwqBudmJsb2NrICpnX2NiOwo+ID4gK8KgwqDCoMKgwqDCoMKgY2hhciAqZ19w b3M7Cj4gPiArLcKgwqDCoMKgwqDCoGNoYXIgKmdfYnVmOwo+ID4gKyvCoMKgwqDCoMKgwqBjaGFy IGdfc2F2ZWRfY2g7Cj4gPiArwqDCoMKgwqDCoMKgwqBzbWFsbGludCBpY2FzZTsKPiA+ICvCoMKg wqDCoMKgwqDCoHNtYWxsaW50IGV4aXRpbmc7Cj4gPiArwqDCoMKgwqDCoMKgwqBzbWFsbGludCBu ZXh0cmVjOwo+ID4gK8KgwqDCoMKgwqDCoMKgc21hbGxpbnQgbmV4dGZpbGU7Cj4gPiArwqDCoMKg wqDCoMKgwqBzbWFsbGludCBpc19mMF9zcGxpdDsKPiA+ICvCoMKgwqDCoMKgwqDCoHNtYWxsaW50 IHRfcm9sbGJhY2s7Cj4gPiArKwo+ID4gKyvCoMKgwqDCoMKgwqAvKiBmb3JtZXIgc3RhdGljcyBm cm9tIHZhcmlvdXMgZnVuY3Rpb25zICovCj4gPiArK8KgwqDCoMKgwqDCoHNtYWxsaW50IG5leHRf dG9rZW5fX2NvbmNhdF9pbnNlcnRlZDsKPiA+ICsrwqDCoMKgwqDCoMKgdWludDMyX3QgbmV4dF90 b2tlbl9fc2F2ZV90Y2xhc3M7Cj4gPiArK8KgwqDCoMKgwqDCoHVpbnQzMl90IG5leHRfdG9rZW5f X3NhdmVfaW5mbzsKPiA+ICsgfTsKPiA+ICsgc3RydWN0IGdsb2JhbHMyIHsKPiA+ICvCoMKgwqDC oMKgwqDCoHVpbnQzMl90IHRfaW5mbzsgLyogb2Z0ZW4gdXNlZCAqLwo+ID4gK0BAIC01MTUsMzIg KzU4MiwzNSBAQCBzdHJ1Y3QgZ2xvYmFsczIgewo+ID4gK8KgwqDCoMKgwqDCoMKgLyogZm9ybWVy IHN0YXRpY3MgZnJvbSB2YXJpb3VzIGZ1bmN0aW9ucyAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgY2hh ciAqc3BsaXRfZjBfX2ZzdHJpbmdzOwo+ID4gKyAKPiA+ICstwqDCoMKgwqDCoMKgdWludDMyX3Qg bmV4dF90b2tlbl9fc2F2ZV90Y2xhc3M7Cj4gPiArLcKgwqDCoMKgwqDCoHVpbnQzMl90IG5leHRf dG9rZW5fX3NhdmVfaW5mbzsKPiA+ICstwqDCoMKgwqDCoMKgdWludDMyX3QgbmV4dF90b2tlbl9f bHRjbGFzczsKPiA+ICstwqDCoMKgwqDCoMKgc21hbGxpbnQgbmV4dF90b2tlbl9fY29uY2F0X2lu c2VydGVkOwo+ID4gKy0KPiA+ICstwqDCoMKgwqDCoMKgc21hbGxpbnQgbmV4dF9pbnB1dF9maWxl X19maWxlc19oYXBwZW47Cj4gPiArwqDCoMKgwqDCoMKgwqByc3RyZWFtIG5leHRfaW5wdXRfZmls ZV9fcnNtOwo+ID4gKyvCoMKgwqDCoMKgwqBzbWFsbGludCBuZXh0X2lucHV0X2ZpbGVfX2ZpbGVz X2hhcHBlbjsKPiA+ICsrCj4gPiArK8KgwqDCoMKgwqDCoHNtYWxsdWludCBleGl0Y29kZTsKPiA+ ICsgCj4gPiArLcKgwqDCoMKgwqDCoHZhciAqZXZhbHVhdGVfX2ZuYXJnczsKPiA+ICvCoMKgwqDC oMKgwqDCoHVuc2lnbmVkIGV2YWx1YXRlX19zZWVkOwo+ID4gKyvCoMKgwqDCoMKgwqB2YXIgKmV2 YWx1YXRlX19mbmFyZ3M7Cj4gPiArwqDCoMKgwqDCoMKgwqByZWdleF90IGV2YWx1YXRlX19zcmVn Owo+ID4gKyAKPiA+ICstwqDCoMKgwqDCoMKgdmFyIHB0ZXN0X192Owo+ID4gKyvCoMKgwqDCoMKg wqB2YXIgcHRlc3RfX3RtcHZhcjsKPiA+ICsrwqDCoMKgwqDCoMKgdmFyIGF3a19wcmludGZfX3Rt cHZhcjsKPiA+ICsrwqDCoMKgwqDCoMKgdmFyIGFzX3JlZ2V4X190bXB2YXI7Cj4gPiArK8KgwqDC oMKgwqDCoHZhciBleGl0X190bXB2YXI7Cj4gPiArK8KgwqDCoMKgwqDCoHZhciBtYWluX190bXB2 YXI7Cj4gPiArIAo+ID4gK8KgwqDCoMKgwqDCoMKgdHNwbGl0dGVyIGV4ZWNfYnVpbHRpbl9fdHNw bDsKPiA+ICsgCj4gPiArwqDCoMKgwqDCoMKgwqAvKiBiaWdnZXN0IGFuZCBsZWFzdCB1c2VkIG1l bWJlcnMgZ28gbGFzdCAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgdHNwbGl0dGVyIGZzcGxpdHRlciwg cnNwbGl0dGVyOwo+ID4gKysKPiA+ICsrwqDCoMKgwqDCoMKgY2hhciBnX2J1ZltNQVhWQVJGTVQg KyAxXTsKPiA+ICsgfTsKPiA+ICsgI2RlZmluZSBHMSAocHRyX3RvX2dsb2JhbHNbLTFdKQo+ID4g KyAjZGVmaW5lIEcgKCooc3RydWN0IGdsb2JhbHMyICopcHRyX3RvX2dsb2JhbHMpCj4gPiArIC8q IEZvciBkZWJ1Zy4gbm0gLS1zaXplLXNvcnQgYXdrLm8gfCBncmVwIC12aSAnIFt0cl0gJyAqLwo+ ID4gKy0vKmNoYXIgRzFzaXplW3NpemVvZihHMSldOyAtIDB4NzQgKi8KPiA+ICstLypjaGFyIEdz aXplW3NpemVvZihHKV07IC0gMHgxYzQgKi8KPiA+ICsrLy9jaGFyIEcxc2l6ZVtzaXplb2YoRzEp XTsgLy8gMHg3MAo+ID4gKysvL2NoYXIgR3NpemVbc2l6ZW9mKEcpXTsgLy8gMHgyZjgKPiA+ICsg LyogVHJ5aW5nIHRvIGtlZXAgbW9zdCBvZiBtZW1iZXJzIGFjY2Vzc2libGUgd2l0aCBzaG9ydCBv ZmZzZXRzOgo+ID4gKi8KPiA+ICstLypjaGFyIEdvZnNfc2VlZFtvZmZzZXRvZihzdHJ1Y3QgZ2xv YmFsczIsIGV2YWx1YXRlX19zZWVkKV07IC0KPiA+IDB4OTAKPiA+ICovCj4gPiArKy8vY2hhciBH b2ZzX3NlZWRbb2Zmc2V0b2Yoc3RydWN0IGdsb2JhbHMyLCBldmFsdWF0ZV9fc2VlZCldOyAvLwo+ ID4gMHg3Ywo+ID4gKyAjZGVmaW5lIHRfZG91YmxlwqDCoMKgwqAgKEcxLnRfZG91YmxlwqDCoMKg ICkKPiA+ICsgI2RlZmluZSBiZWdpbnNlccKgwqDCoMKgIChHMS5iZWdpbnNlccKgwqDCoCApCj4g PiArICNkZWZpbmUgbWFpbnNlccKgwqDCoMKgwqAgKEcxLm1haW5zZXHCoMKgwqDCoCApCj4gPiAr QEAgLTU0OSwxOCArNjE5LDIwIEBAIHN0cnVjdCBnbG9iYWxzMiB7Cj4gPiArICNkZWZpbmUgYnJl YWtfcHRywqDCoMKgIChHMS5icmVha19wdHLCoMKgICkKPiA+ICsgI2RlZmluZSBjb250aW51ZV9w dHIgKEcxLmNvbnRpbnVlX3B0cikKPiA+ICsgI2RlZmluZSBpRsKgwqDCoMKgwqDCoMKgwqDCoMKg IChHMS5pRsKgwqDCoMKgwqDCoMKgwqDCoCApCj4gPiArLSNkZWZpbmUgdmhhc2jCoMKgwqDCoMKg wqDCoCAoRzEudmhhc2jCoMKgwqDCoMKgwqAgKQo+ID4gKyAjZGVmaW5lIGFoYXNowqDCoMKgwqDC oMKgwqAgKEcxLmFoYXNowqDCoMKgwqDCoMKgICkKPiA+ICstI2RlZmluZSBmZGhhc2jCoMKgwqDC oMKgwqAgKEcxLmZkaGFzaMKgwqDCoMKgwqAgKQo+ID4gKyAjZGVmaW5lIGZuaGFzaMKgwqDCoMKg wqDCoCAoRzEuZm5oYXNowqDCoMKgwqDCoCApCj4gPiArKyNkZWZpbmUgdmhhc2jCoMKgwqDCoMKg wqDCoCAoRzEudmhhc2jCoMKgwqDCoMKgwqAgKQo+ID4gKysjZGVmaW5lIGZkaGFzaMKgwqDCoMKg wqDCoCBhaGFzaAo+ID4gKysvL15eXl5eXl5eXl5eXl5eXl5eXiBhaGFzaCBpcyBjbGVhcmVkIGFm dGVyIGV2ZXJ5IGZ1bmN0aW9uCj4gPiBwYXJzaW5nLAo+ID4gKysvLyBhbmQgZW5kcyB1cCBlbXB0 eSBhZnRlciBwYXJzaW5nIHBoYXNlLiBUaHVzLCB3ZSBjYW4gc2ltcGx5Cj4gPiByZXVzZQo+ID4g aXQKPiA+ICsrLy8gZm9yIGZkaGFzaCBpbiBleGVjdXRpb24gc3RhZ2UuCj4gPiArICNkZWZpbmUg Z19wcm9nbmFtZcKgwqAgKEcxLmdfcHJvZ25hbWXCoCApCj4gPiArICNkZWZpbmUgZ19saW5lbm/C oMKgwqDCoCAoRzEuZ19saW5lbm/CoMKgwqAgKQo+ID4gKyAjZGVmaW5lIG5maWVsZHPCoMKgwqDC oMKgIChHMS5uZmllbGRzwqDCoMKgwqAgKQo+ID4gKyAjZGVmaW5lIG1heGZpZWxkc8KgwqDCoCAo RzEubWF4ZmllbGRzwqDCoCApCj4gPiArICNkZWZpbmUgRmllbGRzwqDCoMKgwqDCoMKgIChHMS5G aWVsZHPCoMKgwqDCoMKgICkKPiA+ICstI2RlZmluZSBnX2NiwqDCoMKgwqDCoMKgwqDCoCAoRzEu Z19jYsKgwqDCoMKgwqDCoMKgICkKPiA+ICsgI2RlZmluZSBnX3Bvc8KgwqDCoMKgwqDCoMKgIChH MS5nX3Bvc8KgwqDCoMKgwqDCoCApCj4gPiArLSNkZWZpbmUgZ19idWbCoMKgwqDCoMKgwqDCoCAo RzEuZ19idWbCoMKgwqDCoMKgwqAgKQo+ID4gKysjZGVmaW5lIGdfc2F2ZWRfY2jCoMKgIChHMS5n X3NhdmVkX2NowqAgKQo+ID4gKyAjZGVmaW5lIGljYXNlwqDCoMKgwqDCoMKgwqAgKEcxLmljYXNl wqDCoMKgwqDCoMKgICkKPiA+ICsgI2RlZmluZSBleGl0aW5nwqDCoMKgwqDCoCAoRzEuZXhpdGlu Z8KgwqDCoMKgICkKPiA+ICsgI2RlZmluZSBuZXh0cmVjwqDCoMKgwqDCoCAoRzEubmV4dHJlY8Kg wqDCoMKgICkKPiA+ICtAQCAtNTc0LDI1ICs2NDYsMTMgQEAgc3RydWN0IGdsb2JhbHMyIHsKPiA+ ICsgI2RlZmluZSBpbnR2YXLCoMKgwqDCoMKgwqAgKEcuaW50dmFywqDCoMKgwqDCoCApCj4gPiAr ICNkZWZpbmUgZnNwbGl0dGVywqDCoMKgIChHLmZzcGxpdHRlcsKgwqAgKQo+ID4gKyAjZGVmaW5l IHJzcGxpdHRlcsKgwqDCoCAoRy5yc3BsaXR0ZXLCoMKgICkKPiA+ICsrI2RlZmluZSBnX2J1ZsKg wqDCoMKgwqDCoMKgIChHLmdfYnVmwqDCoMKgwqDCoMKgICkKPiA+ICsgI2RlZmluZSBJTklUX0co KSBkbyB7IFwKPiA+ICvCoMKgwqDCoMKgwqDCoFNFVF9QVFJfVE9fR0xPQkFMUygoY2hhciopeHph bGxvYyhzaXplb2YoRzEpK3NpemVvZihHKSkgKwo+ID4gc2l6ZW9mKEcxKSk7IFwKPiA+ICstwqDC oMKgwqDCoMKgRy5uZXh0X3Rva2VuX19sdGNsYXNzID0gVENfT1BURVJNOyBcCj4gPiArK8KgwqDC oMKgwqDCoHRfdGNsYXNzID0gVENfTkVXTElORTsgXAo+ID4gK8KgwqDCoMKgwqDCoMKgRy5ldmFs dWF0ZV9fc2VlZCA9IDE7IFwKPiA+ICsgfSB3aGlsZSAoMCkKPiA+ICsgCj4gPiArLQo+ID4gKy0v KiBmdW5jdGlvbiBwcm90b3R5cGVzICovCj4gPiArLXN0YXRpYyB2b2lkIGhhbmRsZV9zcGVjaWFs KHZhciAqKTsKPiA+ICstc3RhdGljIG5vZGUgKnBhcnNlX2V4cHIodWludDMyX3QpOwo+ID4gKy1z dGF0aWMgdm9pZCBjaGFpbl9ncm91cCh2b2lkKTsKPiA+ICstc3RhdGljIHZhciAqZXZhbHVhdGUo bm9kZSAqLCB2YXIgKik7Cj4gPiArLXN0YXRpYyByc3RyZWFtICpuZXh0X2lucHV0X2ZpbGUodm9p ZCk7Cj4gPiArLXN0YXRpYyBpbnQgZm10X251bShjaGFyICosIGludCwgY29uc3QgY2hhciAqLCBk b3VibGUsIGludCk7Cj4gPiArLXN0YXRpYyBpbnQgYXdrX2V4aXQoaW50KSBOT1JFVFVSTjsKPiA+ ICstCj4gPiArLS8qIC0tLS0gZXJyb3IgaGFuZGxpbmcgLS0tLSAqLwo+ID4gKy0KPiA+ICstc3Rh dGljIGNvbnN0IGNoYXIgRU1TR19JTlRFUk5BTF9FUlJPUltdIEFMSUdOMSA9ICJJbnRlcm5hbAo+ ID4gZXJyb3IiOwo+ID4gKyBzdGF0aWMgY29uc3QgY2hhciBFTVNHX1VORVhQX0VPU1tdIEFMSUdO MSA9ICJVbmV4cGVjdGVkIGVuZCBvZgo+ID4gc3RyaW5nIjsKPiA+ICsgc3RhdGljIGNvbnN0IGNo YXIgRU1TR19VTkVYUF9UT0tFTltdIEFMSUdOMSA9ICJVbmV4cGVjdGVkIHRva2VuIjsKPiA+ICsg c3RhdGljIGNvbnN0IGNoYXIgRU1TR19ESVZfQllfWkVST1tdIEFMSUdOMSA9ICJEaXZpc2lvbiBi eSB6ZXJvIjsKPiA+ICtAQCAtNjA0LDEwICs2NjQsNyBAQCBzdGF0aWMgY29uc3QgY2hhciBFTVNH X1VOREVGX0ZVTkNbXSBBTElHTjEgPQo+ID4gIkNhbGwgdG8gdW5kZWZpbmVkIGZ1bmN0aW9uIjsK PiA+ICsgc3RhdGljIGNvbnN0IGNoYXIgRU1TR19OT19NQVRIW10gQUxJR04xID0gIk1hdGggc3Vw cG9ydCBpcyBub3QKPiA+IGNvbXBpbGVkIGluIjsKPiA+ICsgc3RhdGljIGNvbnN0IGNoYXIgRU1T R19ORUdBVElWRV9GSUVMRFtdIEFMSUdOMSA9ICJBY2Nlc3MgdG8KPiA+IG5lZ2F0aXZlIGZpZWxk IjsKPiA+ICsgCj4gPiArLXN0YXRpYyB2b2lkIHplcm9fb3V0X3Zhcih2YXIgKnZwKQo+ID4gKy17 Cj4gPiArLcKgwqDCoMKgwqDCoG1lbXNldCh2cCwgMCwgc2l6ZW9mKCp2cCkpOwo+ID4gKy19Cj4g PiArK3N0YXRpYyBpbnQgYXdrX2V4aXQodm9pZCkgTk9SRVRVUk47Cj4gPiArIAo+ID4gKyBzdGF0 aWMgdm9pZCBzeW50YXhfZXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSkgTk9SRVRVUk47Cj4gPiAr IHN0YXRpYyB2b2lkIHN5bnRheF9lcnJvcihjb25zdCBjaGFyICptZXNzYWdlKQo+ID4gK0BAIC02 MzgsMTIgKzY5NSw0MCBAQCBzdGF0aWMgeGhhc2ggKmhhc2hfaW5pdCh2b2lkKQo+ID4gK8KgwqDC oMKgwqDCoMKgcmV0dXJuIG5ld2hhc2g7Cj4gPiArIH0KPiA+ICsgCj4gPiArK3N0YXRpYyB2b2lk IGhhc2hfY2xlYXIoeGhhc2ggKmhhc2gpCj4gPiArK3sKPiA+ICsrwqDCoMKgwqDCoMKgdW5zaWdu ZWQgaTsKPiA+ICsrwqDCoMKgwqDCoMKgaGFzaF9pdGVtICpoaSwgKnRoaTsKPiA+ICsrCj4gPiAr K8KgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBoYXNoLT5jc2l6ZTsgaSsrKSB7Cj4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoaSA9IGhhc2gtPml0ZW1zW2ldOwo+ID4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2hpbGUgKGhpKSB7Cj4gPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGhpID0gaGk7Cj4gPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaGkgPSBoaS0+bmV4dDsKPiA+ICsrLy9G SVhNRTogdGhpcyBhc3N1bWVzIHRoYXQgaXQncyBhIGhhc2ggb2YgKnZhcmlhYmxlcyo6Cj4gPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnJlZSh0aGktPmRh dGEudi5zdHJpbmcpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGZyZWUodGhpKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhhc2gtPml0ZW1zW2ldID0gTlVMTDsKPiA+ ICsrwqDCoMKgwqDCoMKgfQo+ID4gKyvCoMKgwqDCoMKgwqBoYXNoLT5nbGVuID0gaGFzaC0+bmVs ID0gMDsKPiA+ICsrfQo+ID4gKysKPiA+ICsrI2lmIDAgLy9VTlVTRUQKPiA+ICsrc3RhdGljIHZv aWQgaGFzaF9mcmVlKHhoYXNoICpoYXNoKQo+ID4gKyt7Cj4gPiArK8KgwqDCoMKgwqDCoGhhc2hf Y2xlYXIoaGFzaCk7Cj4gPiArK8KgwqDCoMKgwqDCoGZyZWUoaGFzaC0+aXRlbXMpOwo+ID4gKyvC oMKgwqDCoMKgwqBmcmVlKGhhc2gpOwo+ID4gKyt9Cj4gPiArKyNlbmRpZgo+ID4gKysKPiA+ICsg LyogZmluZCBpdGVtIGluIGhhc2gsIHJldHVybiBwdHIgdG8gZGF0YSwgTlVMTCBpZiBub3QgZm91 bmQgKi8KPiA+ICstc3RhdGljIHZvaWQgKmhhc2hfc2VhcmNoKHhoYXNoICpoYXNoLCBjb25zdCBj aGFyICpuYW1lKQo+ID4gKytzdGF0aWMgTk9JTkxJTkUgdm9pZCAqaGFzaF9zZWFyY2gzKHhoYXNo ICpoYXNoLCBjb25zdCBjaGFyICpuYW1lLAo+ID4gdW5zaWduZWQgaWR4KQo+ID4gKyB7Cj4gPiAr wqDCoMKgwqDCoMKgwqBoYXNoX2l0ZW0gKmhpOwo+ID4gKyAKPiA+ICstwqDCoMKgwqDCoMKgaGkg PSBoYXNoLT5pdGVtc1toYXNoaWR4KG5hbWUpICUgaGFzaC0+Y3NpemVdOwo+ID4gKyvCoMKgwqDC oMKgwqBoaSA9IGhhc2gtPml0ZW1zW2lkeCAlIGhhc2gtPmNzaXplXTsKPiA+ICvCoMKgwqDCoMKg wqDCoHdoaWxlIChoaSkgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChz dHJjbXAoaGktPm5hbWUsIG5hbWUpID09IDApCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAmaGktPmRhdGE7Cj4gPiArQEAgLTY1Miw2ICs3 MzcsMTEgQEAgc3RhdGljIHZvaWQgKmhhc2hfc2VhcmNoKHhoYXNoICpoYXNoLCBjb25zdAo+ID4g Y2hhciAqbmFtZSkKPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBOVUxMOwo+ID4gKyB9Cj4gPiAr IAo+ID4gKytzdGF0aWMgdm9pZCAqaGFzaF9zZWFyY2goeGhhc2ggKmhhc2gsIGNvbnN0IGNoYXIg Km5hbWUpCj4gPiArK3sKPiA+ICsrwqDCoMKgwqDCoMKgcmV0dXJuIGhhc2hfc2VhcmNoMyhoYXNo LCBuYW1lLMKgaGFzaGlkeChuYW1lKSk7Cj4gPiArK30KPiA+ICsrCj4gPiArIC8qIGdyb3cgaGFz aCBpZiBpdCBiZWNvbWVzIHRvbyBiaWcgKi8KPiA+ICsgc3RhdGljIHZvaWQgaGFzaF9yZWJ1aWxk KHhoYXNoICpoYXNoKQo+ID4gKyB7Cj4gPiArQEAgLTY4NywxNiArNzc3LDE3IEBAIHN0YXRpYyB2 b2lkICpoYXNoX2ZpbmQoeGhhc2ggKmhhc2gsIGNvbnN0Cj4gPiBjaGFyCj4gPiAqbmFtZSkKPiA+ ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGlkeDsKPiA+ICvCoMKgwqDCoMKgwqDCoGludCBsOwo+ ID4gKyAKPiA+ICstwqDCoMKgwqDCoMKgaGkgPSBoYXNoX3NlYXJjaChoYXNoLCBuYW1lKTsKPiA+ ICsrwqDCoMKgwqDCoMKgaWR4ID0gaGFzaGlkeChuYW1lKTsKPiA+ICsrwqDCoMKgwqDCoMKgaGkg PSBoYXNoX3NlYXJjaDMoaGFzaCwgbmFtZSwgaWR4KTsKPiA+ICvCoMKgwqDCoMKgwqDCoGlmICgh aGkpIHsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgrK2hhc2gtPm5lbCAv IGhhc2gtPmNzaXplID4gMTApCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAo KytoYXNoLT5uZWwgPiBoYXNoLT5jc2l6ZSAqIDgpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhhc2hfcmVidWlsZChoYXNoKTsKPiA+ICsgCj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbCA9IHN0cmxlbihuYW1lKSArIDE7Cj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaGkgPSB4emFsbG9jKHNpemVvZigqaGkpICsg bCk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RyY3B5KGhpLT5uYW1lLCBu YW1lKTsKPiA+ICsgCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZHggPSBoYXNo aWR4KG5hbWUpICUgaGFzaC0+Y3NpemU7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZHggPSBpZHggJSBoYXNoLT5jc2l6ZTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBoaS0+bmV4dCA9IGhhc2gtPml0ZW1zW2lkeF07Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaGFzaC0+aXRlbXNbaWR4XSA9IGhpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGhhc2gtPmdsZW4gKz0gbDsKPiA+ICtAQCAtNzMxLDcgKzgyMiw3IEBAIHN0 YXRpYyB2b2lkIGhhc2hfcmVtb3ZlKHhoYXNoICpoYXNoLCBjb25zdAo+ID4gY2hhcgo+ID4gKm5h bWUpCj4gPiArIAo+ID4gKyBzdGF0aWMgY2hhciAqc2tpcF9zcGFjZXMoY2hhciAqcCkKPiA+ICsg ewo+ID4gKy3CoMKgwqDCoMKgwqB3aGlsZSAoMSkgewo+ID4gKyvCoMKgwqDCoMKgwqBmb3IgKDs7 KSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCpwID09ICdcXCcgJiYg cFsxXSA9PSAnXG4nKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHArKzsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgdF9saW5lbm8rKzsKPiA+ICtAQCAtNzQ3LDggKzgzOCwxMCBAQCBzdGF0aWMgY2hh ciAqc2tpcF9zcGFjZXMoY2hhciAqcCkKPiA+ICsgc3RhdGljIGNoYXIgKm5leHR3b3JkKGNoYXIg KipzKQo+ID4gKyB7Cj4gPiArwqDCoMKgwqDCoMKgwqBjaGFyICpwID0gKnM7Cj4gPiArLcKgwqDC oMKgwqDCoHdoaWxlICgqKCpzKSsrICE9ICdcMCcpCj4gPiArK8KgwqDCoMKgwqDCoGNoYXIgKnEg PSBwOwo+ID4gKyvCoMKgwqDCoMKgwqB3aGlsZSAoKnErKyAhPSAnXDAnKQo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRpbnVlOwo+ID4gKyvCoMKgwqDCoMKgwqAqcyA9IHE7 Cj4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gcDsKPiA+ICsgfQo+ID4gKyAKPiA+ICtAQCAtODEx LDEwICs5MDQsMjcgQEAgc3RhdGljIGRvdWJsZSBteV9zdHJ0b2QoY2hhciAqKnBwKQo+ID4gKyAK PiA+ICsgLyogLS0tLS0tLS0gd29ya2luZyB3aXRoIHZhcmlhYmxlcyAoc2V0L2dldC9jb3B5L2V0 YykgLS0tLS0tLS0gKi8KPiA+ICsgCj4gPiArLXN0YXRpYyB4aGFzaCAqaWFtYXJyYXkodmFyICp2 KQo+ID4gKytzdGF0aWMgdm9pZCBmbXRfbnVtKGNvbnN0IGNoYXIgKmZvcm1hdCwgZG91YmxlIG4p Cj4gPiArIHsKPiA+ICstwqDCoMKgwqDCoMKgdmFyICphID0gdjsKPiA+ICsrwqDCoMKgwqDCoMKg aWYgKG4gPT0gKGxvbmcgbG9uZyluKSB7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzbnByaW50ZihnX2J1ZiwgTUFYVkFSRk1ULCAiJWxsZCIsIChsb25nIGxvbmcpbik7Cj4gPiAr K8KgwqDCoMKgwqDCoH0gZWxzZSB7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBj b25zdCBjaGFyICpzID0gZm9ybWF0Owo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Y2hhciBjOwo+ID4gKyAKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRvIHsgYyA9 ICpzOyB9IHdoaWxlIChjICYmICorK3MpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWYgKHN0cmNocigiZGlvdXhYIiwgYykpIHsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzbnByaW50ZihnX2J1ZiwgTUFYVkFSRk1ULCBmb3JtYXQs IChpbnQpbik7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2UgaWYgKHN0 cmNocigiZUVmRmdHYUEiLCBjKSkgewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHNucHJpbnRmKGdfYnVmLCBNQVhWQVJGTVQsIGZvcm1hdCwgbik7Cj4g PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ID4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRheF9lcnJvcihFTVNHX0lOVl9G TVQpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gKyvCoMKgwqDCoMKg wqB9Cj4gPiArK30KPiA+ICsrCj4gPiArK3N0YXRpYyB4aGFzaCAqaWFtYXJyYXkodmFyICphKQo+ ID4gKyt7Cj4gPiArwqDCoMKgwqDCoMKgwqB3aGlsZSAoYS0+dHlwZSAmIFZGX0NISUxEKQo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGEgPSBhLT54LnBhcmVudDsKPiA+ICsgCj4g PiArQEAgLTgyNSwyMyArOTM1LDcgQEAgc3RhdGljIHhoYXNoICppYW1hcnJheSh2YXIgKnYpCj4g PiArwqDCoMKgwqDCoMKgwqByZXR1cm4gYS0+eC5hcnJheTsKPiA+ICsgfQo+ID4gKyAKPiA+ICst c3RhdGljIHZvaWQgY2xlYXJfYXJyYXkoeGhhc2ggKmFycmF5KQo+ID4gKy17Cj4gPiArLcKgwqDC oMKgwqDCoHVuc2lnbmVkIGk7Cj4gPiArLcKgwqDCoMKgwqDCoGhhc2hfaXRlbSAqaGksICp0aGk7 Cj4gPiArLQo+ID4gKy3CoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgYXJyYXktPmNzaXplOyBp KyspIHsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhpID0gYXJyYXktPml0ZW1z W2ldOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2hpbGUgKGhpKSB7Cj4gPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGhpID0gaGk7Cj4g PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaGkgPSBoaS0+ bmV4dDsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBm cmVlKHRoaS0+ZGF0YS52LnN0cmluZyk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZnJlZSh0aGkpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfQo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYXJyYXktPml0ZW1zW2ld ID0gTlVMTDsKPiA+ICstwqDCoMKgwqDCoMKgfQo+ID4gKy3CoMKgwqDCoMKgwqBhcnJheS0+Z2xl biA9IGFycmF5LT5uZWwgPSAwOwo+ID4gKy19Cj4gPiArKyNkZWZpbmUgY2xlYXJfYXJyYXkoYXJy YXkpIGhhc2hfY2xlYXIoYXJyYXkpCj4gPiArIAo+ID4gKyAvKiBjbGVhciBhIHZhcmlhYmxlICov Cj4gPiArIHN0YXRpYyB2YXIgKmNscnZhcih2YXIgKnYpCj4gPiArQEAgLTg1NSw2ICs5NDksOCBA QCBzdGF0aWMgdmFyICpjbHJ2YXIodmFyICp2KQo+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIHY7 Cj4gPiArIH0KPiA+ICsgCj4gPiArK3N0YXRpYyB2b2lkIGhhbmRsZV9zcGVjaWFsKHZhciAqKTsK PiA+ICsrCj4gPiArIC8qIGFzc2lnbiBzdHJpbmcgdmFsdWUgdG8gdmFyaWFibGUgKi8KPiA+ICsg c3RhdGljIHZhciAqc2V0dmFyX3AodmFyICp2LCBjaGFyICp2YWx1ZSkKPiA+ICsgewo+ID4gK0BA IC05MDEsNyArOTk3LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdldHZhcl9zKHZhciAqdikKPiA+ ICsgewo+ID4gK8KgwqDCoMKgwqDCoMKgLyogaWYgdiBpcyBudW1lcmljIGFuZCBoYXMgbm8gY2Fj aGVkIHN0cmluZywgY29udmVydCBpdCB0bwo+ID4gc3RyaW5nICovCj4gPiArwqDCoMKgwqDCoMKg wqBpZiAoKHYtPnR5cGUgJiAoVkZfTlVNQkVSIHwgVkZfQ0FDSEVEKSkgPT0gVkZfTlVNQkVSKSB7 Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmbXRfbnVtKGdfYnVmLCBNQVhWQVJG TVQsCj4gPiBnZXR2YXJfcyhpbnR2YXJbQ09OVkZNVF0pLAo+ID4gdi0+bnVtYmVyLCBUUlVFKTsK PiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZtdF9udW0oZ2V0dmFyX3MoaW50dmFy W0NPTlZGTVRdKSwgdi0+bnVtYmVyKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB2LT5zdHJpbmcgPSB4c3RyZHVwKGdfYnVmKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB2LT50eXBlIHw9IFZGX0NBQ0hFRDsKPiA+ICvCoMKgwqDCoMKgwqDCoH0KPiA+ICtA QCAtOTIwLDYgKzEwMTYsNyBAQCBzdGF0aWMgZG91YmxlIGdldHZhcl9pKHZhciAqdikKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdi0+bnVtYmVyID0g bXlfc3RydG9kKCZzKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIiVmIChzOiclcycpXG4iLCB2LQo+ID4gPm51bWJl ciwKPiA+IHMpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAodi0+dHlwZSAmIFZGX1VTRVIpIHsKPiA+ICsrLy9UT0RPOiBza2lwX3NwYWNlcygp IGFsc28gc2tpcHMgYmFja3NsYXNoK25ld2xpbmUsIGlzIGl0Cj4gPiBpbnRlbmRlZAo+ID4gaGVy ZT8KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHMgPSBza2lwX3NwYWNlcyhzKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgqcyAhPSAnXDAn KQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHYtPnR5cGUgJj0gflZGX1VTRVI7Cj4gPiArQEAg LTk4MSw5NCArMTA3OCwyOCBAQCBzdGF0aWMgaW50IGlzdHJ1ZSh2YXIgKnYpCj4gPiArwqDCoMKg wqDCoMKgwqByZXR1cm4gKHYtPnN0cmluZyAmJiB2LT5zdHJpbmdbMF0pOwo+ID4gKyB9Cj4gPiAr IAo+ID4gKy0vKiB0ZW1wb3JhcnkgdmFyaWFibGVzIGFsbG9jYXRvci4gTGFzdCBhbGxvY2F0ZWQg c2hvdWxkIGJlIGZpcnN0Cj4gPiBmcmVlZCAqLwo+ID4gKy1zdGF0aWMgdmFyICpudmFsbG9jKGlu dCBuKQo+ID4gKy17Cj4gPiArLcKgwqDCoMKgwqDCoG52YmxvY2sgKnBiID0gTlVMTDsKPiA+ICst wqDCoMKgwqDCoMKgdmFyICp2LCAqcjsKPiA+ICstwqDCoMKgwqDCoMKgaW50IHNpemU7Cj4gPiAr LQo+ID4gKy3CoMKgwqDCoMKgwqB3aGlsZSAoZ19jYikgewo+ID4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcGIgPSBnX2NiOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKChnX2NiLT5wb3MgLSBnX2NiLT5udikgKyBuIDw9IGdfY2ItPnNpemUpCj4gPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnX2NiID0gZ19jYi0+bmV4dDsKPiA+ICstwqDCoMKgwqDC oMKgfQo+ID4gKy0KPiA+ICstwqDCoMKgwqDCoMKgaWYgKCFnX2NiKSB7Cj4gPiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBzaXplID0gKG4gPD0gTUlOTlZCTE9DSykgPyBNSU5OVkJMT0NL IDogbjsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdfY2IgPSB4emFsbG9jKHNp emVvZihudmJsb2NrKSArIHNpemUgKgo+ID4gc2l6ZW9mKHZhcikpOwo+ID4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZ19jYi0+c2l6ZSA9IHNpemU7Cj4gPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBnX2NiLT5wb3MgPSBnX2NiLT5udjsKPiA+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGdfY2ItPnByZXYgPSBwYjsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoC8qZ19jYi0+bmV4dCA9IE5VTEw7IC0geHphbGxvYyBkaWQgaXQgKi8KPiA+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChwYikKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwYi0+bmV4dCA9IGdfY2I7Cj4gPiArLcKgwqDCoMKg wqDCoH0KPiA+ICstCj4gPiArLcKgwqDCoMKgwqDCoHYgPSByID0gZ19jYi0+cG9zOwo+ID4gKy3C oMKgwqDCoMKgwqBnX2NiLT5wb3MgKz0gbjsKPiA+ICstCj4gPiArLcKgwqDCoMKgwqDCoHdoaWxl ICh2IDwgZ19jYi0+cG9zKSB7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2LT50 eXBlID0gMDsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHYtPnN0cmluZyA9IE5V TEw7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2Kys7Cj4gPiArLcKgwqDCoMKg wqDCoH0KPiA+ICstCj4gPiArLcKgwqDCoMKgwqDCoHJldHVybiByOwo+ID4gKy19Cj4gPiArLQo+ ID4gKy1zdGF0aWMgdm9pZCBudmZyZWUodmFyICp2KQo+ID4gKy17Cj4gPiArLcKgwqDCoMKgwqDC oHZhciAqcDsKPiA+ICstCj4gPiArLcKgwqDCoMKgwqDCoGlmICh2IDwgZ19jYi0+bnYgfHwgdiA+ PSBnX2NiLT5wb3MpCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzeW50YXhfZXJy b3IoRU1TR19JTlRFUk5BTF9FUlJPUik7Cj4gPiArLQo+ID4gKy3CoMKgwqDCoMKgwqBmb3IgKHAg PSB2OyBwIDwgZ19jYi0+cG9zOyBwKyspIHsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmICgocC0+dHlwZSAmIChWRl9BUlJBWSB8IFZGX0NISUxEKSkgPT0gVkZfQVJSQVkpCj4g PiB7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2xl YXJfYXJyYXkoaWFtYXJyYXkocCkpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGZyZWUocC0+eC5hcnJheS0+aXRlbXMpOwo+ID4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZyZWUocC0+eC5hcnJheSk7Cj4gPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZiAocC0+dHlwZSAmIFZGX1dBTEspIHsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3YWxrZXJfbGlzdCAqbjsKPiA+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3YWxrZXJfbGlzdCAqdyA9IHAtPngu d2Fsa2VyOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGRlYnVnX3ByaW50Zl93YWxrZXIoIm52ZnJlZTogZnJlZWluZyB3YWxrZXIKPiA+IEAlcFxuIiwg JnAtPngud2Fsa2VyKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBwLT54LndhbGtlciA9IE5VTEw7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgd2hpbGUgKHcpIHsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbiA9IHctPnByZXY7Cj4g PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGRlYnVnX3ByaW50Zl93YWxrZXIoIiBmcmVlKCVwKVxuIiwKPiA+IHcpOwo+ID4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBmcmVlKHcpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB3ID0gbjsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9 Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbHJ2YXIocCk7Cj4gPiArLcKgwqDC oMKgwqDCoH0KPiA+ICstCj4gPiArLcKgwqDCoMKgwqDCoGdfY2ItPnBvcyA9IHY7Cj4gPiArLcKg wqDCoMKgwqDCoHdoaWxlIChnX2NiLT5wcmV2ICYmIGdfY2ItPnBvcyA9PSBnX2NiLT5udikgewo+ ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ19jYiA9IGdfY2ItPnByZXY7Cj4gPiAr LcKgwqDCoMKgwqDCoH0KPiA+ICstfQo+ID4gKy0KPiA+ICsgLyogLS0tLS0tLSBhd2sgcHJvZ3Jh bSB0ZXh0IHBhcnNpbmcgLS0tLS0tLSAqLwo+ID4gKyAKPiA+ICstLyogUGFyc2UgbmV4dCB0b2tl biBwb2ludGVkIGJ5IGdsb2JhbCBwb3MsIHBsYWNlIHJlc3VsdHMgaW50bwo+ID4gZ2xvYmFsIHR0 dC4KPiA+ICstICogSWYgdG9rZW4gaXNuJ3QgZXhwZWN0ZWQsIGdpdmUgYXdheS4gUmV0dXJuIHRv a2VuIGNsYXNzCj4gPiArKy8qIFBhcnNlIG5leHQgdG9rZW4gcG9pbnRlZCBieSBnbG9iYWwgcG9z LCBwbGFjZSByZXN1bHRzIGludG8KPiA+IGdsb2JhbCB0X1hZWiB2YXJpYWJsZXMuCj4gPiArKyAq IElmIHRva2VuIGlzbid0IGV4cGVjdGVkLCBwcmludCBlcnJvciBtZXNzYWdlIGFuZCBkaWUuCj4g PiArKyAqIFJldHVybiB0b2tlbiBjbGFzcyAoYWxzbyBzdG9yZSBpdCBpbiB0X3RjbGFzcykuCj4g PiArwqAgKi8KPiA+ICsgc3RhdGljIHVpbnQzMl90IG5leHRfdG9rZW4odWludDMyX3QgZXhwZWN0 ZWQpCj4gPiArIHsKPiA+ICstI2RlZmluZSBjb25jYXRfaW5zZXJ0ZWQgKEcubmV4dF90b2tlbl9f Y29uY2F0X2luc2VydGVkKQo+ID4gKy0jZGVmaW5lIHNhdmVfdGNsYXNzwqDCoMKgwqAgKEcubmV4 dF90b2tlbl9fc2F2ZV90Y2xhc3MpCj4gPiArLSNkZWZpbmUgc2F2ZV9pbmZvwqDCoMKgwqDCoMKg IChHLm5leHRfdG9rZW5fX3NhdmVfaW5mbykKPiA+ICstLyogSW5pdGlhbGl6ZWQgdG8gVENfT1BU RVJNOiAqLwo+ID4gKy0jZGVmaW5lIGx0Y2xhc3PCoMKgwqDCoMKgwqDCoMKgIChHLm5leHRfdG9r ZW5fX2x0Y2xhc3MpCj4gPiArKyNkZWZpbmUgY29uY2F0X2luc2VydGVkIChHMS5uZXh0X3Rva2Vu X19jb25jYXRfaW5zZXJ0ZWQpCj4gPiArKyNkZWZpbmUgc2F2ZV90Y2xhc3PCoMKgwqDCoCAoRzEu bmV4dF90b2tlbl9fc2F2ZV90Y2xhc3MpCj4gPiArKyNkZWZpbmUgc2F2ZV9pbmZvwqDCoMKgwqDC oMKgIChHMS5uZXh0X3Rva2VuX19zYXZlX2luZm8pCj4gPiArIAo+ID4gKy3CoMKgwqDCoMKgwqBj aGFyICpwLCAqczsKPiA+ICsrwqDCoMKgwqDCoMKgY2hhciAqcDsKPiA+ICvCoMKgwqDCoMKgwqDC oGNvbnN0IGNoYXIgKnRsOwo+ID4gKy3CoMKgwqDCoMKgwqB1aW50MzJfdCB0YzsKPiA+ICvCoMKg wqDCoMKgwqDCoGNvbnN0IHVpbnQzMl90ICp0aTsKPiA+ICsrwqDCoMKgwqDCoMKgdWludDMyX3Qg dGMsIGxhc3RfdG9rZW5fY2xhc3M7Cj4gPiArKwo+ID4gKyvCoMKgwqDCoMKgwqBsYXN0X3Rva2Vu X2NsYXNzID0gdF90Y2xhc3M7IC8qIHRfdGNsYXNzIGlzIGluaXRpYWxpemVkIHRvCj4gPiBUQ19O RVdMSU5FICovCj4gPiArKwo+ID4gKyvCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVz KCkgZXhwZWN0ZWQoJXgpOiIsIF9fZnVuY19fLAo+ID4gZXhwZWN0ZWQpOwo+ID4gKyvCoMKgwqDC oMKgwqBkZWJ1Z19wYXJzZV9wcmludF90YyhleHBlY3RlZCk7Cj4gPiArK8KgwqDCoMKgwqDCoGRl YnVnX3ByaW50Zl9wYXJzZSgiXG4iKTsKPiA+ICsgCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAodF9y b2xsYmFjaykgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50 Zl9wYXJzZSgiJXM6IHVzaW5nIHJvbGxlZC1iYWNrIHRva2VuXG4iLAo+ID4gX19mdW5jX18pOwo+ ID4gK0BAIC0xMDgwLDYgKzExMTEsMTAgQEAgc3RhdGljIHVpbnQzMl90IG5leHRfdG9rZW4odWlu dDMyX3QKPiA+IGV4cGVjdGVkKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRf aW5mbyA9IHNhdmVfaW5mbzsKPiA+ICvCoMKgwqDCoMKgwqDCoH0gZWxzZSB7Cj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcCA9IGdfcG9zOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKGdfc2F2ZWRfY2ggIT0gJ1wwJykgewo+ID4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCpwID0gZ19zYXZlZF9jaDsKPiA+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnX3NhdmVkX2NoID0gJ1ww JzsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICvCoCByZWFkbmV4dDoK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwID0gc2tpcF9zcGFjZXMocCk7Cj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ19saW5lbm8gPSB0X2xpbmVubzsKPiA+ ICtAQCAtMTA4NywxNSArMTEyMiwxMiBAQCBzdGF0aWMgdWludDMyX3QgbmV4dF90b2tlbih1aW50 MzJfdAo+ID4gZXhwZWN0ZWQpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHdoaWxlICgqcCAhPSAnXG4nICYmICpwICE9ICdcMCcpCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBw Kys7Cj4gPiArIAo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCpwID09ICdc bicpCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdF9s aW5lbm8rKzsKPiA+ICstCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCpw ID09ICdcMCcpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgdGMgPSBUQ19FT0Y7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IHRva2VuIGZvdW5kOgo+ID4gVENf RU9GXG4iLCBfX2Z1bmNfXyk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBl bHNlIGlmICgqcCA9PSAnXCInKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoC8qIGl0J3MgYSBzdHJpbmcgKi8KPiA+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0X3N0cmluZyA9IHMgPSArK3A7Cj4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciAqcyA9IHRfc3Ry aW5nID0gKytwOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB3aGlsZSAoKnAgIT0gJ1wiJykgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciAqcHA7Cj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp ZiAoKnAgPT0gJ1wwJyB8fCAqcCA9PSAnXG4nKQo+ID4gK0BAIC0xMTEwLDcgKzExNDIsNyBAQCBz dGF0aWMgdWludDMyX3QgbmV4dF90b2tlbih1aW50MzJfdAo+ID4gZXhwZWN0ZWQpCj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9w YXJzZSgiJXM6IHRva2VuIGZvdW5kOiclcycKPiA+IFRDX1NUUklOR1xuIiwgX19mdW5jX18sIHRf c3RyaW5nKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2UgaWYgKChl eHBlY3RlZCAmIFRDX1JFR0VYUCkgJiYgKnAgPT0gJy8nKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGl0J3MgcmVnZXhwICovCj4gPiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdF9zdHJpbmcgPSBzID0g KytwOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNo YXIgKnPCoD0gdF9zdHJpbmcgPSArK3A7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHdoaWxlICgqcCAhPSAnLycpIHsKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgqcCA9 PSAnXDAnIHx8ICpwID09ICdcbicpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vy cm9yKEVNU0dfVU5FWFBfRU9TCj4gPiApOwo+ID4gK0BAIC0xMTQxLDYgKzExNzMsMTEgQEAgc3Rh dGljIHVpbnQzMl90IG5leHRfdG9rZW4odWludDMyX3QKPiA+IGV4cGVjdGVkKQo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0YyA9IFRDX05VTUJFUjsK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdf cHJpbnRmX3BhcnNlKCIlczogdG9rZW4gZm91bmQ6JWYKPiA+IFRDX05VTUJFUlxuIiwgX19mdW5j X18sIHRfZG91YmxlKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ug ewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYXIg KmVuZF9vZl9uYW1lOwo+ID4gKysKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZiAoKnAgPT0gJ1xuJykKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdF9saW5lbm8rKzsKPiA+ICsr Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIHNl YXJjaCBmb3Igc29tZXRoaW5nIGtub3duICovCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRsID0gdG9rZW5saXN0Owo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0YyA9IDB4MDAwMDAwMDE7Cj4gPiArQEAg LTExNTUsOSArMTE5Miw5IEBAIHN0YXRpYyB1aW50MzJfdCBuZXh0X3Rva2VuKHVpbnQzMl90Cj4g PiBleHBlY3RlZCkKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHRva2VuIG1hdGNoZXMsCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBhbmQg aXQncyBub3QgYSBsb25nZXIgd29yZCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+ID4gKy3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKHRjICYg KGV4cGVjdGVkIHwgVENfV09SRCB8Cj4gPiBUQ19ORVdMSU5FKSkKPiA+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCh0YyAm IChleHBlY3RlZCB8IFRTX1dPUkQgfAo+ID4gVENfTkVXTElORSkpCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJiYgc3Ry bmNtcChwLCB0bCwgbCkgPT0gMAo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJiYgISgodGMgJiBUQ19XT1JEKSAmJgo+ID4g aXNhbG51bV8ocFtsXSkpCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmJiAhKCh0YyAmIFRTX1dPUkQpICYmCj4gPiBpc2Fs bnVtXyhwW2xdKSkKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCkgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIHRo ZW4gdGhpcyBpcyB3aGF0IHdlIGFyZQo+ID4gbG9va2luZyBmb3IgKi8KPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB0X2luZm8gPSAqdGk7Cj4gPiArQEAgLTExNzQsNjcgKzEyMTEsOTQgQEAgc3Rh dGljIHVpbnQzMl90IG5leHRfdG9rZW4odWludDMyX3QKPiA+IGV4cGVjdGVkKQo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIWlzYWxudW1fKCpw KSkKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHN5bnRheF9lcnJvcihFTVNHX1VORVhQX1RPS0VOKTsgLyoKPiA+IG5vCj4g PiAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAv KiB5ZXMgKi8KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB0X3N0cmluZyA9IC0tcDsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB3aGlsZSAoaXNhbG51bV8oKisrcCkpIHsKPiA+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcFstMV0gPSAqcDsK PiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcFstMV0gPSAnXDAn Owo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRjID0g VENfVkFSSUFCTEU7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLyogYWxzbyBjb25zdW1lIHdoaXRlc3BhY2UgYmV0d2Vlbgo+ID4gZnVuY3Rpb25uYW1l IGFuZCBicmFja2V0ICovCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWYgKCEoZXhwZWN0ZWQgJiBUQ19WQVJJQUJMRSkgfHwgKGV4cGVjdGVkCj4gPiAm Cj4gPiBUQ19BUlJBWSkpCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgdF9zdHJpbmcgPSBwOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHdoaWxlIChpc2FsbnVtXygqcCkpCj4gPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHArKzsKPiA+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbmRfb2ZfbmFtZSA9 IHA7Cj4gPiArKwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmIChsYXN0X3Rva2VuX2NsYXNzID09IFRDX0ZVTkNERUNMKQo+ID4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBlYXQg c3BhY2UgaW4gImZ1bmN0aW9uIEZVTkMKPiA+ICguLi4pCj4gPiB7Li4ufSIgZGVjbGFyYXRpb24g Ki8KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHAgPSBza2lwX3NwYWNlcyhwKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbHNlIGlmIChleHBlY3RlZCAmIFRDX0FSUkFZKSB7 Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoC8qIGVhdCBzcGFjZSBiZXR3ZWVuIGFycmF5IG5hbWUgYW5kCj4gPiBbCj4gPiAq Lwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBjaGFyICpzID0gc2tpcF9zcGFjZXMocCk7Cj4gPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgqcyA9PSAn WycpIC8qIGFycmF5IHJlZiwgbm90Cj4gPiBqdXN0Cj4gPiBhIG5hbWU/ICovCj4gPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBwID0gczsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB9Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgLyogZWxzZTogZG8gTk9UIGNvbnN1bWUgd2hpdGVzcGFjZSBhZnRlcgo+ID4gdmFy aWFibGUgbmFtZSEKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKiBnYXdrIGFsbG93cyBkZWZpbml0aW9uICJmdW5jdGlvbiBGVU5DCj4gPiAocCkKPiA+ IHsuLi59IiAtIG5vdGUgc3BhY2UsCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICogYnV0IGRpc2FsbG93cyB0aGUgY2FsbCAiRlVOQyAocCkiCj4gPiBi ZWNhdXNlCj4gPiBpdCBpc24ndCBvbmUgLQo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAqIGV4cHJlc3Npb24gInYgKGEpIiBzaG91bGQgTk9UIGJlIHBh cnNlZAo+ID4gYXMKPiA+IFRDX0ZVTkNUSU9OOgo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGl0IGlzIGEgdmFsaWQgY29uY2F0ZW5hdGlvbiBpZiAi diIgaXMgYQo+ID4gdmFyaWFibGUsCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICogbm90IGEgZnVuY3Rpb24gbmFtZSAoYW5kIHR5cGUgb2YgbmFtZSBp cwo+ID4gbm90IGtub3duIGF0IHBhcnNlIHRpbWUpLgo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+ID4gKysKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCpwID09ICcoJykgewo+ID4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBw Kys7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB0YyA9IFRDX0ZVTkNUSU9OOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3Bh cnNlKCIlczogdG9rZW4KPiA+IGZvdW5kOiclcycgVENfRlVOQ1RJT05cbiIsIF9fZnVuY19fLCB0 X3N0cmluZyk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgfSBlbHNlIGlmICgqcCA9PSAnWycpIHsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcCsrOwo+ID4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0YyA9IFRD X0FSUkFZOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiB0b2tlbgo+ID4gZm91bmQ6 JyVzJyBUQ19BUlJBWVxuIiwgX19mdW5jX18sIHRfc3RyaW5nKTsKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsKPiA+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCpw ID09ICdbJykgewo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcCsrOwo+ID4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgdGMgPSBUQ19BUlJBWTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3By aW50Zl9wYXJzZSgiJXM6Cj4gPiB0b2tlbgo+ID4gZm91bmQ6JyVzJyBUQ19BUlJBWVxuIiwgX19m dW5jX18sIHRfc3RyaW5nKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOgo+ID4gdG9rZW4KPiA+IGZvdW5kOiclcycgVENfVkFS SUFCTEVcbiIsIF9fZnVuY19fLCB0X3N0cmluZyk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRjID0gVENfVkFSSUFCTEU7 Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IHRva2VuCj4gPiBmb3VuZDonJXMnIFRD X1ZBUklBQkxFXG4iLCBfX2Z1bmNfXywgdF9zdHJpbmcpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZW5kX29mX25h bWUgPT0gcCkgewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogdGhlcmUgaXMgbm8gc3BhY2Ug Zm9yCj4gPiB0cmFpbGluZyBOVUwgaW4gdF9zdHJpbmchCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKiBXZSBuZWVkIHRvIHNhdmUgdGhlIGNoYXIKPiA+IHdlIGFyZSBnb2luZyB0byBOVUwuCj4g PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiAod2UnbGwgdXNlIGl0IGluIGZ1dHVyZQo+ID4gY2Fs bCB0byBuZXh0X3Rva2VuKCkpCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGdfc2F2ZWRfY2ggPSAqZW5kX29mX25hbWU7Cj4gPiArKy8vIGVzcGVj aWFsbHkgcGF0aG9sb2dpY2FsIGV4YW1wbGUgaXMgVj0iYWJjIjsgVi4yIC0gaXQncyBWCj4gPiBj b25jYXRlbmF0ZWQgdG8gLjIKPiA+ICsrLy8gKGl0IGV2YWx1YXRlcyB0byAiYWJjMC4yIikuIEJl Y2F1c2Ugb2YgdGhpcyBjYXNlLCB3ZSBjYW4ndAo+ID4gc2ltcGx5IGNhY2hlCj4gPiArKy8vICcu JyBhbmQgYW5hbHl6ZSBpdCBsYXRlcjogd2UgYWxzbyBoYXZlIHRvICpzdG9yZSBpdCBiYWNrKiBp bgo+ID4gbmV4dAo+ID4gKysvLyBuZXh0X3Rva2VuKCksIGluIG9yZGVyIHRvIGdpdmUgbXlfc3Ry dG9kKCkgdGhlIHVuZGFtYWdlZCAiLjIiCj4gPiBzdHJpbmcuCj4gPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCplbmRfb2ZfbmFtZSA9ICdcMCc7 IC8qIHRlcm1pbmF0ZSB0X3N0cmluZwo+ID4gKi8KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB9Cj4gPiArwqAgdG9rZW5fZm91bmQ6Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZ19wb3MgPSBwOwo+ID4gKyAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAvKiBza2lwcGluZyBuZXdsaW5lcyBpbiBzb21lIGNhc2VzICovCj4gPiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKGx0Y2xhc3MgJiBUQ19OT1RFUk0pICYmICh0YyAmIFRD X05FV0xJTkUpKQo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKChsYXN0X3Rv a2VuX2NsYXNzICYgVFNfTk9URVJNKSAmJiAodGMgJgo+ID4gVENfTkVXTElORSkpCj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gcmVhZG5leHQ7 Cj4gPiArIAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGluc2VydCBjb25j YXRlbmF0aW9uIG9wZXJhdG9yIHdoZW4gbmVlZGVkICovCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiAleCAleCAleAo+ID4gY29uY2F0X2lu c2VydGVkP1xuIiwKPiA+IF9fZnVuY19fLAo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoChsdGNsYXNzICYgVENfQ09OQ0FUMSksICh0YyAmIFRDX0NPTkNB VDIpLAo+ID4gKGV4cGVjdGVkICYgVENfQklOT1ApKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlmICgobHRjbGFzcyAmIFRDX0NPTkNBVDEpICYmICh0YyAmIFRDX0NPTkNBVDIp ICYmCj4gPiAoZXhwZWN0ZWQgJiBUQ19CSU5PUCkKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAmJiAhKGx0Y2xhc3MgPT0gVENfTEVOR1RIICYmIHRjID09IFRDX1NFUVNUQVJUKSAv Kgo+ID4gYnV0IG5vdCBmb3IgImxlbmd0aCguLi4iICovCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBjb25jYXRfaW5zZXJ0ZWQgaWYgYWxs Cj4gPiBub256ZXJvOiAleCAleCAleCAleFxuIiwgX19mdW5jX18sCj4gPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKGxhc3RfdG9rZW5fY2xhc3MgJiBUU19D T05DQVRfTCksICh0YyAmCj4gPiBUU19DT05DQVRfUiksIChleHBlY3RlZCAmIFRTX0JJTk9QKSwK PiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAhKGxhc3Rf dG9rZW5fY2xhc3MgPT0gVENfTEVOR1RIICYmIHRjID09Cj4gPiBUQ19MUEFSRU4pKTsKPiA+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgobGFzdF90b2tlbl9jbGFzcyAmIFRTX0NP TkNBVF9MKSAmJiAodGMgJgo+ID4gVFNfQ09OQ0FUX1IpICYmIChleHBlY3RlZCAmIFRTX0JJTk9Q KQo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICYmICEobGFzdF90b2tlbl9jbGFz cyA9PSBUQ19MRU5HVEggJiYgdGMgPT0KPiA+IFRDX0xQQVJFTikgLyogYnV0IG5vdCBmb3IgImxl bmd0aCguLi4iICovCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKSB7Cj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbmNhdF9pbnNl cnRlZCA9IFRSVUU7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHNhdmVfdGNsYXNzID0gdGM7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHNhdmVfaW5mbyA9IHRfaW5mbzsKPiA+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0YyA9IFRDX0JJTk9QOwo+ID4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRjID0gVENfQklOT1BYOwo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0X2luZm8g PSBPQ19DT05DQVQgfCBTUyB8IFAoMzUpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoH0KPiA+ICsgCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmlu dGZfcGFyc2UoIiVzOiB0X3RjbGFzcz10Yz0leFxuIiwKPiA+IF9fZnVuY19fLAo+ID4gdF90Y2xh c3MpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRfdGNsYXNzID0gdGM7Cj4g PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiB0 X3RjbGFzcz10Yz0leFxuIiwKPiA+IF9fZnVuY19fLAo+ID4gdGMpOwo+ID4gK8KgwqDCoMKgwqDC oMKgfQo+ID4gKy3CoMKgwqDCoMKgwqBsdGNsYXNzID0gdF90Y2xhc3M7Cj4gPiArLQo+ID4gK8Kg wqDCoMKgwqDCoMKgLyogQXJlIHdlIHJlYWR5IGZvciB0aGlzPyAqLwo+ID4gKy3CoMKgwqDCoMKg wqBpZiAoIShsdGNsYXNzICYgZXhwZWN0ZWQpKSB7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBzeW50YXhfZXJyb3IoKGx0Y2xhc3MgJiAoVENfTkVXTElORSB8IFRDX0VPRikpID8K PiA+ICsrwqDCoMKgwqDCoMKgaWYgKCEodF90Y2xhc3MgJiBleHBlY3RlZCkpIHsKPiA+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRheF9lcnJvcigobGFzdF90b2tlbl9jbGFzcyAm IChUQ19ORVdMSU5FIHwKPiA+IFRDX0VPRikpID8KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEVNU0dfVU5FWFBfRU9TIDog RU1TR19VTkVYUF9UT0tFTik7Cj4gPiArwqDCoMKgwqDCoMKgwqB9Cj4gPiArIAo+ID4gKy3CoMKg wqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiByZXR1cm5pbmcsIGx0Y2xhc3M6JXgKPiA+ IHRfZG91YmxlOiVmXG4iLAo+ID4gX19mdW5jX18sIGx0Y2xhc3MsIHRfZG91YmxlKTsKPiA+ICst wqDCoMKgwqDCoMKgcmV0dXJuIGx0Y2xhc3M7Cj4gPiArK8KgwqDCoMKgwqDCoGRlYnVnX3ByaW50 Zl9wYXJzZSgiJXM6IHJldHVybmluZywgdF9kb3VibGU6JWYgdF90Y2xhc3M6IiwKPiA+IF9fZnVu Y19fLCB0X2RvdWJsZSk7Cj4gPiArK8KgwqDCoMKgwqDCoGRlYnVnX3BhcnNlX3ByaW50X3RjKHRf dGNsYXNzKTsKPiA+ICsrwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCJcbiIpOwo+ID4g KysKPiA+ICsrwqDCoMKgwqDCoMKgcmV0dXJuIHRfdGNsYXNzOwo+ID4gKyAjdW5kZWYgY29uY2F0 X2luc2VydGVkCj4gPiArICN1bmRlZiBzYXZlX3RjbGFzcwo+ID4gKyAjdW5kZWYgc2F2ZV9pbmZv Cj4gPiArLSN1bmRlZiBsdGNsYXNzCj4gPiArIH0KPiA+ICsgCj4gPiArLXN0YXRpYyB2b2lkIHJv bGxiYWNrX3Rva2VuKHZvaWQpCj4gPiArK3N0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcm9sbGJh Y2tfdG9rZW4odm9pZCkKPiA+ICsgewo+ID4gK8KgwqDCoMKgwqDCoMKgdF9yb2xsYmFjayA9IFRS VUU7Cj4gPiArIH0KPiA+ICtAQCAtMTI1MSwxNjkgKzEzMTUsMTg4IEBAIHN0YXRpYyBub2RlICpu ZXdfbm9kZSh1aW50MzJfdCBpbmZvKQo+ID4gKyAKPiA+ICsgc3RhdGljIHZvaWQgbWtfcmVfbm9k ZShjb25zdCBjaGFyICpzLCBub2RlICpuLCByZWdleF90ICpyZSkKPiA+ICsgewo+ID4gKy3CoMKg wqDCoMKgwqBuLT5pbmZvID0gT0NfUkVHRVhQOwo+ID4gKyvCoMKgwqDCoMKgwqBuLT5pbmZvID0g VElfUkVHRVhQOwo+ID4gK8KgwqDCoMKgwqDCoMKgbi0+bC5yZSA9IHJlOwo+ID4gK8KgwqDCoMKg wqDCoMKgbi0+ci5pcmUgPSByZSArIDE7Cj4gPiArwqDCoMKgwqDCoMKgwqB4cmVnY29tcChyZSwg cywgUkVHX0VYVEVOREVEKTsKPiA+ICvCoMKgwqDCoMKgwqDCoHhyZWdjb21wKHJlICsgMSwgcywg UkVHX0VYVEVOREVEIHwgUkVHX0lDQVNFKTsKPiA+ICsgfQo+ID4gKyAKPiA+ICstc3RhdGljIG5v ZGUgKmNvbmRpdGlvbih2b2lkKQo+ID4gKytzdGF0aWMgbm9kZSAqcGFyc2VfZXhwcih1aW50MzJf dCk7Cj4gPiArKwo+ID4gKytzdGF0aWMgbm9kZSAqcGFyc2VfbHJwYXJlbl9saXN0KHZvaWQpCj4g PiArIHsKPiA+ICstwqDCoMKgwqDCoMKgbmV4dF90b2tlbihUQ19TRVFTVEFSVCk7Cj4gPiArLcKg wqDCoMKgwqDCoHJldHVybiBwYXJzZV9leHByKFRDX1NFUVRFUk0pOwo+ID4gKyvCoMKgwqDCoMKg wqBuZXh0X3Rva2VuKFRDX0xQQVJFTik7Cj4gPiArK8KgwqDCoMKgwqDCoHJldHVybiBwYXJzZV9l eHByKFRDX1JQQVJFTik7Cj4gPiArIH0KPiA+ICsgCj4gPiArIC8qIHBhcnNlIGV4cHJlc3Npb24g dGVybWluYXRlZCBieSBnaXZlbiBhcmd1bWVudCwgcmV0dXJuIHB0cgo+ID4gK8KgICogdG8gYnVp bHQgc3VidHJlZS4gVGVybWluYXRvciBpcyBlYXRlbiBieSBwYXJzZV9leHByICovCj4gPiArLXN0 YXRpYyBub2RlICpwYXJzZV9leHByKHVpbnQzMl90IGlleHApCj4gPiArK3N0YXRpYyBub2RlICpw YXJzZV9leHByKHVpbnQzMl90IHRlcm1fdGMpCj4gPiArIHsKPiA+ICvCoMKgwqDCoMKgwqDCoG5v ZGUgc247Cj4gPiArwqDCoMKgwqDCoMKgwqBub2RlICpjbiA9ICZzbjsKPiA+ICvCoMKgwqDCoMKg wqDCoG5vZGUgKnZuLCAqZ2xwdHI7Cj4gPiArLcKgwqDCoMKgwqDCoHVpbnQzMl90IHRjLCB4dGM7 Cj4gPiArK8KgwqDCoMKgwqDCoHVpbnQzMl90IHRjLCBleHBlY3RlZF90YzsKPiA+ICvCoMKgwqDC oMKgwqDCoHZhciAqdjsKPiA+ICsgCj4gPiArLcKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJz ZSgiJXMoJXgpXG4iLCBfX2Z1bmNfXywgaWV4cCk7Cj4gPiArK8KgwqDCoMKgwqDCoGRlYnVnX3By aW50Zl9wYXJzZSgiJXMoKSB0ZXJtX3RjKCV4KToiLCBfX2Z1bmNfXywgdGVybV90Yyk7Cj4gPiAr K8KgwqDCoMKgwqDCoGRlYnVnX3BhcnNlX3ByaW50X3RjKHRlcm1fdGMpOwo+ID4gKyvCoMKgwqDC oMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIlxuIik7Cj4gPiArIAo+ID4gK8KgwqDCoMKgwqDCoMKg c24uaW5mbyA9IFBSSU1BU0s7Cj4gPiArwqDCoMKgwqDCoMKgwqBzbi5yLm4gPSBzbi5hLm4gPSBn bHB0ciA9IE5VTEw7Cj4gPiArLcKgwqDCoMKgwqDCoHh0YyA9IFRDX09QRVJBTkQgfCBUQ19VT1BQ UkUgfCBUQ19SRUdFWFAgfCBpZXhwOwo+ID4gKyvCoMKgwqDCoMKgwqBleHBlY3RlZF90YyA9IFRT X09QRVJBTkQgfCBUU19VT1BQUkUgfCBUQ19SRUdFWFAgfCB0ZXJtX3RjOwo+ID4gKyAKPiA+ICst wqDCoMKgwqDCoMKgd2hpbGUgKCEoKHRjID0gbmV4dF90b2tlbih4dGMpKSAmIGlleHApKSB7Cj4g PiArK8KgwqDCoMKgwqDCoHdoaWxlICghKCh0YyA9IG5leHRfdG9rZW4oZXhwZWN0ZWRfdGMpKSAm IHRlcm1fdGMpKSB7Cj4gPiArIAo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYg KGdscHRyICYmICh0X2luZm8gPT0gKE9DX0NPTVBBUkUgfCBWViB8IFAoMzkpIHwKPiA+IDIpKSkg ewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGdscHRyICYmICh0X2luZm8g PT0gVElfTEVTUykpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgLyogaW5wdXQgcmVkaXJlY3Rpb24gKDwpIGF0dGFjaGVkIHRvIGdscHRyCj4gPiBu b2RlICovCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IGlucHV0IHJlZGlyXG4iLAo+ID4gX19mdW5jX18pOwo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbiA9IGds cHRyLT5sLm4gPSBuZXdfbm9kZShPQ19DT05DQVQgfCBTUyB8Cj4gPiBQKDM3KSk7Cj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5hLm4gPSBnbHB0 cjsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4dGMg PSBUQ19PUEVSQU5EIHwgVENfVU9QUFJFOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGV4cGVjdGVkX3RjID0gVFNfT1BFUkFORCB8IFRTX1VPUFBSRTsK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ2xwdHIg PSBOVUxMOwo+ID4gKy0KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSBp ZiAodGMgJiAoVENfQklOT1AgfCBUQ19VT1BQT1NUKSkgewo+ID4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRDX0JJ Tk9QIHwKPiA+IFRDX1VPUFBPU1QKPiA+IHRjOiV4XG4iLCBfX2Z1bmNfXywgdGMpOwo+ID4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRpbnVlOwo+ID4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWYgKHRjICYgKFRTX0JJTk9QIHwgVENfVU9QUE9TVCkpIHsKPiA+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2Uo IiVzOiBUU19CSU5PUCB8Cj4gPiBUQ19VT1BQT1NUCj4gPiB0YzoleFxuIiwgX19mdW5jX18sIHRj KTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyog Zm9yIGJpbmFyeSBhbmQgcG9zdGZpeC11bmFyeSBvcGVyYXRvcnMsCj4gPiBqdW1wIGJhY2sgb3Zl cgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBw cmV2aW91cyBvcGVyYXRvcnMgd2l0aCBoaWdoZXIgcHJpb3JpdHkKPiA+ICovCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZuID0gY247Cj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdoaWxlICgoKHRfaW5m byAmIFBSSU1BU0spID4gKHZuLT5hLm4tPmluZm8KPiA+ICYKPiA+IFBSSU1BU0syKSkKPiA+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfHwgKCh0 X2luZm8gPT0gdm4tPmluZm8pICYmICgodF9pbmZvICYKPiA+IE9QQ0xTTUFTSykgPT0gT0NfQ09M T04pKQo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8fCAoKHRfaW5mbyA9PSB2bi0+aW5mbykgJiYgdF9pbmZvID09Cj4gPiBUSV9DT0xPTikK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKSB7Cj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB2biA9IHZuLT5hLm47Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIXZuLT5hLm4pCj4gPiBzeW50YXhf ZXJyb3IoRU1TR19VTkVYUF9UT0tFTik7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZiAoKHRfaW5mbyAmIE9QQ0xTTUFTSykgPT0gT0NfVEVSTkFSWSkKPiA+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodF9pbmZv ID09IFRJX1RFUk5BUlkpCj4gPiArKy8vVE9ETzogd2h5Pwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdF9pbmZvICs9IFAo Nik7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNu ID0gdm4tPmEubi0+ci5uID0gbmV3X25vZGUodF9pbmZvKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmEubiA9IHZuLT5hLm47Cj4gPiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRjICYgVENfQklO T1ApIHsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp ZiAodGMgJiBUU19CSU5PUCkgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmwubiA9IHZuOwo+ID4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4dGMg PSBUQ19PUEVSQU5EIHwgVENfVU9QUFJFIHwKPiA+IFRDX1JFR0VYUDsKPiA+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCh0 X2luZm8gJiBPUENMU01BU0spID09Cj4gPiBPQ19QR0VUTElORSkgewo+ID4gKysvL0ZJWE1FOiB0 aGlzIGlzIHRoZSBwbGFjZSB0byBkZXRlY3QgYW5kIHJlamVjdCBhc3NpZ25tZW50cyB0bwo+ID4g bm9uLQo+ID4gbHZhbHVlcy4KPiA+ICsrLy9DdXJyZW50bHkgd2UgYWxsb3cgImFzc2lnbm1lbnRz IiB0byBjb25zdHMgYW5kIHRlbXBvcmFyaWVzLAo+ID4gbm9uc2Vuc2UgbGlrZSB0aGlzOgo+ID4g KysvLyBhd2sgJ0JFR0lOIHsgInF3ZSIgPSAxIH0nCj4gPiArKy8vIGF3ayAnQkVHSU4geyA3ICo9 IDcgfScKPiA+ICsrLy8gYXdrICdCRUdJTiB7IGxlbmd0aCgicXdlIikgPSAxIH0nCj4gPiArKy8v IGF3ayAnQkVHSU4geyAoMSsxKSArPSAzIH0nCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGV4cGVjdGVkX3RjID0gVFNfT1BF UkFORCB8Cj4gPiBUU19VT1BQUkUKPiA+ID4gVENfUkVHRVhQOwo+ID4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodF9pbmZv ID09IFRJX1BHRVRMSU5FKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogaXQncyBhIHBp cGUgKi8KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuZXh0X3Rva2VuKFRDX0dFVExJTkUpOwo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGdpdmUgbWF4aW11bSBwcmlvcml0eSB0bwo+ID4g dGhpcyBwaXBlICovCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmluZm8gJj0gflBSSU1B U0s7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4dGMgPSBUQ19PUEVSQU5EIHwKPiA+IFRDX1VP UFBSRQo+ID4gPiBUQ19CSU5PUCB8IGlleHA7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBleHBl Y3RlZF90YyA9IFRTX09QRVJBTkQgfAo+ID4gVFNfVU9QUFJFIHwgVFNfQklOT1AgfCB0ZXJtX3Rj Owo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB9IGVsc2Ugewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPnIubiA9IHZuOwo+ID4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4dGMgPSBU Q19PUEVSQU5EIHwgVENfVU9QUFJFIHwKPiA+IFRDX0JJTk9QIHwgaWV4cDsKPiA+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXhw ZWN0ZWRfdGMgPSBUU19PUEVSQU5EIHwKPiA+IFRTX1VPUFBSRQo+ID4gPiBUU19CSU5PUCB8IHRl cm1fdGM7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdm4t PmEubiA9IGNuOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNvbnRpbnVlOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gKyAK PiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7Cj4gPiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIl czogb3RoZXJcbiIsCj4gPiBfX2Z1bmNfXyk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogZm9yIG9wZXJhbmRzIGFuZCBwcmVmaXgtdW5hcnkgb3Bl cmF0b3JzLAo+ID4gYXR0YWNoIHRoZW0KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKiB0byBsYXN0IG5vZGUgKi8KPiA+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2biA9IGNuOwo+ID4gKy3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuID0gdm4tPnIubiA9IG5ld19ub2RlKHRf aW5mbyk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Y24tPmEubiA9IHZuOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHh0YyA9IFRDX09QRVJBTkQgfCBUQ19VT1BQUkUgfCBUQ19SRUdFWFA7Cj4gPiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRjICYgKFRDX09Q RVJBTkQgfCBUQ19SRUdFWFApKSB7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRD X09QRVJBTkQKPiA+IHwKPiA+IFRDX1JFR0VYUFxuIiwgX19mdW5jX18pOwo+ID4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4dGMg PSBUQ19VT1BQUkUgfCBUQ19VT1BQT1NUIHwKPiA+IFRDX0JJTk9QIHwgVENfT1BFUkFORCB8IGll eHA7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoC8qIG9uZSBzaG91bGQgYmUgdmVyeSBjYXJlZnVsIHdpdGgKPiA+IHN3aXRj aCBvbiB0Y2xhc3MgLQo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBvbmx5IHNpbXBsZSB0Y2xhc3NlcyBzaG91bGQgYmUK PiA+IHVzZWQhICovCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN3aXRjaCAodGMpIHsKPiA+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBUQ19WQVJJ QUJMRToKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgY2FzZSBUQ19BUlJBWToKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRl YnVnX3ByaW50Zl9wYXJzZSgiJXM6Cj4gPiBUQ19WQVJJQUJMRSB8IFRDX0FSUkFZXG4iLCBfX2Z1 bmNfXyk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+aW5mbyA9IE9DX1ZBUjsKPiA+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHYgPSBoYXNoX3NlYXJjaChhaGFzaCwKPiA+IHRfc3RyaW5nKTsK PiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh2ICE9IE5VTEwpIHsKPiA+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+aW5mbyA9Cj4gPiBPQ19GTkFSRzsKPiA+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+bC5haWR4ID0gdi0KPiA+ID4g eC5haWR4Owo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsKPiA+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+bC52ID0KPiA+IG5ld3Zhcih0X3N0cmluZyk7 Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAo dGMgJiBUQ19BUlJBWSkgewo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGNuLT5pbmZvIHw9IHhTOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGNuLT5yLm4gPQo+ID4gcGFyc2VfZXhwcihUQ19BUlJURVJNKTsKPiA+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoH0KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogb3RoZXIsIHRfaW5mbzol eFxuIiwKPiA+IF9fZnVuY19fLCB0X2luZm8pOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLyogZm9yIG9wZXJhbmRzIGFuZCBwcmVmaXgtdW5hcnkgb3BlcmF0b3JzLCBhdHRhY2gK PiA+IHRoZW0KPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHRvIGxhc3Qgbm9k ZSAqLwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdm4gPSBjbjsKPiA+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuID0gdm4tPnIubiA9IG5ld19ub2RlKHRfaW5mbyk7 Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+YS5uID0gdm47Cj4gPiArIAo+ ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBjYXNlIFRDX05VTUJFUjoKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBUQ19TVFJJTkc6Cj4gPiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOgo+ID4gVENfTlVNQkVSIHwg VENfU1RSSU5HXG4iLCBfX2Z1bmNfXyk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+aW5m byA9IE9DX1ZBUjsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHYgPSBjbi0+bC52ID0KPiA+IHh6 YWxsb2Moc2l6ZW9mKHZhcikpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRjICYgVENf TlVNQkVSKQo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNldHZhcl9p KHYsCj4gPiB0X2RvdWJsZSk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbHNlIHsKPiA+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXR2YXJfcyh2LAo+ID4gdF9zdHJp bmcpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHh0YyAmPSB+VENf VU9QUE9TVDsKPiA+IC8qICJzdHIiKysgaXMgbm90IGFsbG93ZWQgKi8KPiA+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoH0KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZXhwZWN0ZWRfdGMgPSBUU19PUEVSQU5EIHwgVFNfVU9QUFJF IHwgVENfUkVHRVhQOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRfaW5m byA9PSBUSV9QUkVJTkMgfHwgdF9pbmZvID09IFRJX1BSRURFQykKPiA+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBleHBlY3RlZF90YyA9IFRTX0xWQUxVRSB8 IFRDX1VPUFBSRTE7Cj4gPiArIAo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFRDX1JFR0VYUDoKPiA+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6Cj4gPiBUQ19SRUdFWFBcbiIsIF9f ZnVuY19fKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG1rX3JlX25vZGUodF9zdHJpbmcsIGNu LAo+ID4geHphbGxvYyhzaXplb2YocmVnZXhfdCkqMikpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgYnJlYWs7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoISh0YyAmIChU U19PUEVSQU5EIHwgVENfUkVHRVhQKSkpCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7Cj4gPiArIAo+ID4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFRDX0ZVTkNU SU9OOgo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczoKPiA+ IFRDX0ZVTkNUSU9OXG4iLCBfX2Z1bmNfXyk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+ aW5mbyA9IE9DX0ZVTkM7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+ci5mID0KPiA+IG5l d2Z1bmModF9zdHJpbmcpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmwubiA9IGNvbmRp dGlvbigpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBUU19PUEVSQU5EIHwgVENf UkVHRVhQXG4iLAo+ID4gX19mdW5jX18pOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZXhwZWN0ZWRfdGMgPSBUU19VT1BQUkUgfCBUQ19VT1BQT1NUIHwgVFNfQklOT1AgfAo+ID4g VFNfT1BFUkFORCB8IHRlcm1fdGM7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAv KiBvbmUgc2hvdWxkIGJlIHZlcnkgY2FyZWZ1bCB3aXRoIHN3aXRjaCBvbiB0Y2xhc3MKPiA+IC0K PiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIG9ubHkgc2ltcGxlIHRjbGFzc2Vz IHNob3VsZCBiZSB1c2VkIChUQ194eXosIG5vdAo+ID4gVFNfeHl6KSAqLwo+ID4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgc3dpdGNoICh0Yykgewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgY2FzZSBUQ19WQVJJQUJMRToKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGNhc2UgVENfQVJSQVk6Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogVENfVkFSSUFCTEUgfAo+ID4g VENfQVJSQVlcbiIsIF9fZnVuY19fKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBjbi0+aW5mbyA9IE9DX1ZBUjsKPiA+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2ID0gaGFzaF9zZWFyY2goYWhhc2gsIHRfc3Ry aW5nKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp ZiAodiAhPSBOVUxMKSB7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5pbmZvID0gT0NfRk5BUkc7Cj4gPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNu LT5sLmFpZHggPSB2LT54LmFpZHg7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmwudiA9IG5ld3Zhcih0X3N0cmlu Zyk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0YyAm IFRDX0FSUkFZKSB7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5pbmZvIHw9IHhTOwo+ID4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+ci5uID0g cGFyc2VfZXhwcihUQ19BUlJURVJNKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiArIAo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFRDX1NFUVNUQVJUOgo+ID4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczoKPiA+IFRDX1NFUVNU QVJUXG4iLCBfX2Z1bmNfXyk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbiA9IHZuLT5yLm4g PQo+ID4gcGFyc2VfZXhwcihUQ19TRVFURVJNKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlm ICghY24pCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vy cm9yKCJFbXB0eQo+ID4gc2VxdWVuY2UiKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5h Lm4gPSB2bjsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBUQ19OVU1CRVI6Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBjYXNlIFRDX1NUUklORzoKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBUQ19OVU1CRVIgfAo+ ID4gVENfU1RSSU5HXG4iLCBfX2Z1bmNfXyk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmluZm8gPSBPQ19WQVI7Cj4gPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdiA9IGNuLT5sLnYgPSB4emFsbG9jKHNp emVvZih2YXIpKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAodGMgJiBUQ19OVU1CRVIpCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNldHZhcl9pKHYsIHRfZG91YmxlKTsK PiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbHNlIHsK PiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgc2V0dmFyX3ModiwgdF9zdHJpbmcpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBleHBlY3RlZF90YyAmPSB+ VENfVU9QUE9TVDsgLyoKPiA+ICJzdHIiKysgaXMgbm90IGFsbG93ZWQgKi8KPiA+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiArIAo+ID4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBj YXNlIFRDX0dFVExJTkU6Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFy c2UoIiVzOgo+ID4gVENfR0VUTElORVxuIiwgX19mdW5jX18pOwo+ID4gKy3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZ2xwdHIgPSBjbjsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHh0YyA9IFRDX09QRVJB TkQgfAo+ID4gVENfVU9QUFJFCj4gPiA+IFRDX0JJTk9QIHwgaWV4cDsKPiA+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGJyZWFrOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBU Q19SRUdFWFA6Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogVENfUkVHRVhQXG4iLAo+ID4gX19mdW5jX18pOwo+ ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG1rX3JlX25v ZGUodF9zdHJpbmcsIGNuLAo+ID4geHphbGxvYyhzaXplb2YocmVnZXhfdCkqMikpOwo+ID4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gKyAK PiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY2FzZSBUQ19CVUlMVElOOgo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdf cHJpbnRmX3BhcnNlKCIlczoKPiA+IFRDX0JVSUxUSU5cbiIsIF9fZnVuY19fKTsKPiA+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGNuLT5sLm4gPSBjb25kaXRpb24oKTsKPiA+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGJyZWFrOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBUQ19G VU5DVElPTjoKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBUQ19GVU5DVElPTlxuIiwKPiA+IF9fZnVuY19fKTsK PiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+aW5m byA9IE9DX0ZVTkM7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgY24tPnIuZiA9IG5ld2Z1bmModF9zdHJpbmcpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5sLm4gPSBwYXJzZV9leHByKFRDX1JQQVJF Tik7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJl YWs7Cj4gPiArIAo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFRDX0xFTkdUSDoKPiA+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6Cj4gPiBUQ19MRU5HVEhcbiIsIF9fZnVuY19fKTsK PiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5leHRfdG9rZW4oVENfU0VRU1RBUlQgLyoKPiA+IGxl bmd0aCguLi4pICovCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCBU Q19PUFRFUk3CoMKgwqAgLyoKPiA+IGxlbmd0aDsgKG9yIG5ld2xpbmUpKi8KPiA+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IFRDX0dSUFRFUk3CoMKgIC8qCj4gPiBsZW5n dGggfSAqLwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHwgVENfQklO T1BYwqDCoMKgIC8qCj4gPiBsZW5ndGggPG9wPiBOVU0gKi8KPiA+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB8IFRDX0NPTU1BwqDCoMKgwqAgLyoKPiA+IHByaW50IGxlbmd0 aCwgMSAqLwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJvbGxiYWNrX3Rva2VuKCk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodF90Y2xh c3MgJiBUQ19TRVFTVEFSVCkKPiA+IHsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAvKiBJdCB3YXMgYSAiKCIKPiA+IHRva2VuLiBIYW5kbGUganVzdCBsaWtlIFRDX0JV SUxUSU4gKi8KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+bC5u ID0KPiA+IGNvbmRpdGlvbigpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGNhc2UgVENfTFBBUkVOOgo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRDX0xQQVJFTlxuIiwK PiA+IF9fZnVuY19fKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBjbiA9IHZuLT5yLm4gPSBwYXJzZV9leHByKFRDX1JQQVJFTik7Cj4gPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFjbikKPiA+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg c3ludGF4X2Vycm9yKCJFbXB0eSBzZXF1ZW5jZSIpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5hLm4gPSB2bjsKPiA+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ICsrCj4gPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFRDX0dFVExJTkU6Cj4gPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczog VENfR0VUTElORVxuIiwKPiA+IF9fZnVuY19fKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnbHB0ciA9IGNuOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGV4cGVjdGVkX3RjID0gVFNfT1BFUkFORCB8IFRT X1VPUFBSRSB8Cj4gPiBUU19CSU5PUCB8IHRlcm1fdGM7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiArKwo+ID4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBUQ19CVUlMVElOOgo+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRDX0JV SUxUSU5cbiIsCj4gPiBfX2Z1bmNfXyk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY24tPmwubiA9IHBhcnNlX2xycGFyZW5fbGlzdCgpOwo+ID4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gKysK PiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgVENfTEVOR1RIOgo+ID4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9w YXJzZSgiJXM6IFRDX0xFTkdUSFxuIiwKPiA+IF9fZnVuY19fKTsKPiA+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0YyA9IG5leHRfdG9rZW4oVENfTFBBUkVO IC8qIGxlbmd0aCguLi4pICovCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHwgVENfU0VNSUNPTMKgwqAgLyogbGVuZ3RoOyAq Lwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB8IFRDX05FV0xJTkXCoMKgIC8qIGxlbmd0aDxuZXdsaW5lPgo+ID4gKi8KPiA+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfCBUQ19SQlJBQ0XCoMKgwqAgLyogbGVuZ3RoIH0gKi8KPiA+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCBUQ19CSU5P UFjCoMKgwqAgLyogbGVuZ3RoIDxvcD4gTlVNCj4gPiAqLwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IFRDX0NPTU1BwqDC oMKgwqAgLyogcHJpbnQgbGVuZ3RoLCAxCj4gPiAqLwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRjICE9IFRDX0xQQVJFTikKPiA+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcm9sbGJh Y2tfdG9rZW4oKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBlbHNlIHsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogSXQgd2FzIGEgIigiIHRva2VuLiBIYW5kbGUganVzdAo+ ID4gbGlrZSBUQ19CVUlMVElOICovCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5sLm4gPSBwYXJzZV9leHByKFRDX1JQ QVJFTik7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0KPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVh azsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArLcKgwqDCoMKgwqDC oH0KPiA+ICsrwqDCoMKgwqDCoMKgfSAvKiB3aGlsZSgpICovCj4gPiArIAo+ID4gK8KgwqDCoMKg wqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlcygpIHJldHVybnMgJXBcbiIsIF9fZnVuY19fLCBz bi5yLm4pOwo+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIHNuLnIubjsKPiA+ICtAQCAtMTQzMCw3 ICsxNTEzLDcgQEAgc3RhdGljIG5vZGUgKmNoYWluX25vZGUodWludDMyX3QgaW5mbykKPiA+ICvC oMKgwqDCoMKgwqDCoGlmIChzZXEtPnByb2dyYW1uYW1lICE9IGdfcHJvZ25hbWUpIHsKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXEtPnByb2dyYW1uYW1lID0gZ19wcm9nbmFt ZTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuID0gY2hhaW5fbm9kZShPQ19O RVdTT1VSQ0UpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+bC5uZXdfcHJv Z25hbWUgPSB4c3RyZHVwKGdfcHJvZ25hbWUpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgbi0+bC5uZXdfcHJvZ25hbWUgPSBnX3Byb2duYW1lOwo+ID4gK8KgwqDCoMKgwqDCoMKg fQo+ID4gKyAKPiA+ICvCoMKgwqDCoMKgwqDCoG4gPSBzZXEtPmxhc3Q7Cj4gPiArQEAgLTE0NDYs MTQgKzE1MjksMTYgQEAgc3RhdGljIHZvaWQgY2hhaW5fZXhwcih1aW50MzJfdCBpbmZvKQo+ID4g KyAKPiA+ICvCoMKgwqDCoMKgwqDCoG4gPSBjaGFpbl9ub2RlKGluZm8pOwo+ID4gKyAKPiA+ICst wqDCoMKgwqDCoMKgbi0+bC5uID0gcGFyc2VfZXhwcihUQ19PUFRFUk0gfCBUQ19HUlBURVJNKTsK PiA+ICsrwqDCoMKgwqDCoMKgbi0+bC5uID0gcGFyc2VfZXhwcihUQ19TRU1JQ09MIHwgVENfTkVX TElORSB8IFRDX1JCUkFDRSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoKGluZm8gJiBPRl9SRVFV SVJFRCkgJiYgIW4tPmwubikKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzeW50 YXhfZXJyb3IoRU1TR19UT09fRkVXX0FSR1MpOwo+ID4gKyAKPiA+ICstwqDCoMKgwqDCoMKgaWYg KHRfdGNsYXNzICYgVENfR1JQVEVSTSkKPiA+ICsrwqDCoMKgwqDCoMKgaWYgKHRfdGNsYXNzICYg VENfUkJSQUNFKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJvbGxiYWNrX3Rv a2VuKCk7Cj4gPiArIH0KPiA+ICsgCj4gPiArK3N0YXRpYyB2b2lkIGNoYWluX2dyb3VwKHZvaWQp Owo+ID4gKysKPiA+ICsgc3RhdGljIG5vZGUgKmNoYWluX2xvb3Aobm9kZSAqbm4pCj4gPiArIHsK PiA+ICvCoMKgwqDCoMKgwqDCoG5vZGUgKm4sICpuMiwgKnNhdmVfYnJrLCAqc2F2ZV9jb250Owo+ ID4gK0BAIC0xNDc3LDIwNyArMTU2MiwyODQgQEAgc3RhdGljIG5vZGUgKmNoYWluX2xvb3Aobm9k ZSAqbm4pCj4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gbjsKPiA+ICsgfQo+ID4gKyAKPiA+ICsr c3RhdGljIHZvaWQgY2hhaW5fdW50aWxfcmJyYWNlKHZvaWQpCj4gPiArK3sKPiA+ICsrwqDCoMKg wqDCoMKgdWludDMyX3QgdGM7Cj4gPiArK8KgwqDCoMKgwqDCoHdoaWxlICgodGMgPSBuZXh0X3Rv a2VuKFRTX0dSUFNFUSB8IFRDX1JCUkFDRSkpICE9Cj4gPiBUQ19SQlJBQ0UpCj4gPiB7Cj4gPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiAhVENf UkJSQUNFXG4iLCBfX2Z1bmNfXyk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp ZiAodGMgPT0gVENfTkVXTElORSkKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBjb250aW51ZTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHJvbGxiYWNrX3Rva2VuKCk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFp bl9ncm91cCgpOwo+ID4gKyvCoMKgwqDCoMKgwqB9Cj4gPiArK8KgwqDCoMKgwqDCoGRlYnVnX3By aW50Zl9wYXJzZSgiJXM6IFRDX1JCUkFDRVxuIiwgX19mdW5jX18pOwo+ID4gKyt9Cj4gPiArKwo+ ID4gKyAvKiBwYXJzZSBncm91cCBhbmQgYXR0YWNoIGl0IHRvIGNoYWluICovCj4gPiArIHN0YXRp YyB2b2lkIGNoYWluX2dyb3VwKHZvaWQpCj4gPiArIHsKPiA+ICstwqDCoMKgwqDCoMKgdWludDMy X3QgYzsKPiA+ICsrwqDCoMKgwqDCoMKgdWludDMyX3QgdGM7Cj4gPiArwqDCoMKgwqDCoMKgwqBu b2RlICpuLCAqbjIsICpuMzsKPiA+ICsgCj4gPiArwqDCoMKgwqDCoMKgwqBkbyB7Cj4gPiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjID0gbmV4dF90b2tlbihUQ19HUlBTRVEpOwo+ID4g Ky3CoMKgwqDCoMKgwqB9IHdoaWxlIChjICYgVENfTkVXTElORSk7Cj4gPiArLQo+ID4gKy3CoMKg wqDCoMKgwqBpZiAoYyAmIFRDX0dSUFNUQVJUKSB7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBUQ19HUlBTVEFSVFxuIiwgX19mdW5jX18p Owo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2hpbGUgKG5leHRfdG9rZW4oVENf R1JQU0VRIHwgVENfR1JQVEVSTSkgIT0KPiA+IFRDX0dSUFRFUk0pIHsKPiA+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVz OiAhVENfR1JQVEVSTVxuIiwKPiA+IF9fZnVuY19fKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodF90Y2xhc3MgJiBUQ19ORVdMSU5FKQo+ID4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBjb250aW51ZTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByb2xsYmFja190b2tlbigpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNoYWluX2dyb3VwKCk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmlu dGZfcGFyc2UoIiVzOiBUQ19HUlBURVJNXG4iLCBfX2Z1bmNfXyk7Cj4gPiArLcKgwqDCoMKgwqDC oH0gZWxzZSBpZiAoYyAmIChUQ19PUFNFUSB8IFRDX09QVEVSTSkpIHsKPiA+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRDX09QU0VRIHwgVENf T1BURVJNXG4iLAo+ID4gX19mdW5jX18pOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdGMgPSBuZXh0X3Rva2VuKFRTX0dSUFNFUSk7Cj4gPiArK8KgwqDCoMKgwqDCoH0gd2hpbGUg KHRjID09IFRDX05FV0xJTkUpOwo+ID4gKysKPiA+ICsrwqDCoMKgwqDCoMKgaWYgKHRjID09IFRD X0xCUkFDRSkgewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRm X3BhcnNlKCIlczogVENfTEJSQUNFXG4iLCBfX2Z1bmNfXyk7Cj4gPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBjaGFpbl91bnRpbF9yYnJhY2UoKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHJldHVybjsKPiA+ICsrwqDCoMKgwqDCoMKgfQo+ID4gKyvCoMKgwqDCoMKg wqBpZiAodGMgJiAoVFNfT1BTRVEgfCBUQ19TRU1JQ09MKSkgewo+ID4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogVFNfT1BTRVEgfCBUQ19TRU1J Q09MXG4iLAo+ID4gX19mdW5jX18pOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHJvbGxiYWNrX3Rva2VuKCk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hh aW5fZXhwcihPQ19FWEVDIHwgVngpOwo+ID4gKy3CoMKgwqDCoMKgwqB9IGVsc2Ugewo+ID4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogVENfU1RBVEVNTlQgKi8KPiA+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRDX1NUQVRFTU5U KD8pXG4iLAo+ID4gX19mdW5jX18pOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg c3dpdGNoICh0X2luZm8gJiBPUENMU01BU0spIHsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGNhc2UgU1RfSUY6Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogU1RfSUZcbiIsCj4gPiBfX2Z1bmNf Xyk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbiA9 IGNoYWluX25vZGUoT0NfQlIgfCBWeCk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgbi0+bC5uID0gY29uZGl0aW9uKCk7Cj4gPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gPiArK8KgwqDCoMKgwqDCoH0KPiA+ICsrCj4gPiAr K8KgwqDCoMKgwqDCoC8qIFRTX1NUQVRFTU5UICovCj4gPiArK8KgwqDCoMKgwqDCoGRlYnVnX3By aW50Zl9wYXJzZSgiJXM6IFRTX1NUQVRFTU5UKD8pXG4iLCBfX2Z1bmNfXyk7Cj4gPiArK8KgwqDC oMKgwqDCoHN3aXRjaCAodF9pbmZvICYgT1BDTFNNQVNLKSB7Cj4gPiArK8KgwqDCoMKgwqDCoGNh c2UgU1RfSUY6Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZf cGFyc2UoIiVzOiBTVF9JRlxuIiwgX19mdW5jX18pOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgbiA9IGNoYWluX25vZGUoT0NfQlIgfCBWeCk7Cj4gPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBuLT5sLm4gPSBwYXJzZV9scnBhcmVuX2xpc3QoKTsKPiA+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYWluX2dyb3VwKCk7Cj4gPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBuMiA9IGNoYWluX25vZGUoT0NfRVhFQyk7Cj4gPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBuLT5yLm4gPSBzZXEtPmxhc3Q7Cj4gPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZiAobmV4dF90b2tlbihUU19HUlBTRVEgfCBUQ19SQlJBQ0UgfCBUQ19F TFNFKSA9PQo+ID4gVENfRUxTRSkgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBjaGFpbl9ncm91cCgpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4yID0gY2hhaW5fbm9kZShPQ19FWEVDKTsKPiA+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuLT5yLm4gPSBzZXEt Pmxhc3Q7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKG5leHRfdG9rZW4oVENfR1JQU0VRIHwgVENfR1JQVEVSTSB8Cj4gPiBUQ19FTFNFKSA9PSBU Q19FTFNFKSB7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNoYWluX2dyb3VwKCk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4yLT5hLm4gPSBzZXEt Pmxhc3Q7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg fSBlbHNlIHsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcm9sbGJhY2tfdG9rZW4oKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbjItPmEubiA9IHNlcS0+bGFzdDsKPiA+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcm9sbGJhY2tfdG9rZW4oKTsKPiA+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJy ZWFrOwo+ID4gKyAKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgU1RfV0hJ TEU6Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVi dWdfcHJpbnRmX3BhcnNlKCIlczogU1RfV0hJTEVcbiIsCj4gPiBfX2Z1bmNfXyk7Cj4gPiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbjIgPSBjb25kaXRpb24o KTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuID0g Y2hhaW5fbG9vcChOVUxMKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBuLT5sLm4gPSBuMjsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ICsrwqDCoMKgwqDCoMKgY2FzZSBTVF9XSElMRToK PiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6 IFNUX1dISUxFXG4iLCBfX2Z1bmNfXyk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBuMiA9IHBhcnNlX2xycGFyZW5fbGlzdCgpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgbiA9IGNoYWluX2xvb3AoTlVMTCk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBuLT5sLm4gPSBuMjsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFr Owo+ID4gKyAKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgU1RfRE86Cj4g PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJp bnRmX3BhcnNlKCIlczogU1RfRE9cbiIsCj4gPiBfX2Z1bmNfXyk7Cj4gPiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbjIgPSBjaGFpbl9ub2RlKE9DX0VYRUMp Owo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4gPSBj aGFpbl9sb29wKE5VTEwpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoG4yLT5hLm4gPSBuLT5hLm47Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV4dF90b2tlbihUQ19XSElMRSk7Cj4gPiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+bC5uID0gY29uZGl0aW9uKCk7 Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7 Cj4gPiArK8KgwqDCoMKgwqDCoGNhc2UgU1RfRE86Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBTVF9ET1xuIiwgX19mdW5jX18pOwo+ID4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbjIgPSBjaGFpbl9ub2RlKE9DX0VYRUMpOwo+ ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbiA9IGNoYWluX2xvb3AoTlVMTCk7Cj4g PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuMi0+YS5uID0gbi0+YS5uOwo+ID4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV4dF90b2tlbihUQ19XSElMRSk7Cj4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuLT5sLm4gPSBwYXJzZV9scnBhcmVuX2xpc3QoKTsK PiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gKyAKPiA+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgU1RfRk9SOgo+ID4gKy3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFNU X0ZPUlxuIiwKPiA+IF9fZnVuY19fKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBuZXh0X3Rva2VuKFRDX1NFUVNUQVJUKTsKPiA+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuMiA9IHBhcnNlX2V4cHIoVENfU0VN SUNPTCB8IFRDX1NFUVRFUk0pOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGlmICh0X3RjbGFzcyAmIFRDX1NFUVRFUk0pIHvCoMKgwqDCoC8qIGZvci1p bgo+ID4gKi8KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFuMiB8fCAobjItPmluZm8gJiBPUENMU01BU0spCj4gPiAh PQo+ID4gT0NfSU4pCj4gPiArLQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRheF9lcnJvcihF TVNHX1VORVhQX1RPS0VOCj4gPiApOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuID0gY2hhaW5fbm9kZShPQ19XQUxLSU5J VCB8IFZWKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgbi0+bC5uID0gbjItPmwubjsKPiA+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+ci5uID0gbjIt PnIubjsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgbiA9IGNoYWluX2xvb3AoTlVMTCk7Cj4gPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4tPmluZm8gPSBP Q19XQUxLTkVYVCB8IFZ4Owo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuLT5sLm4gPSBuMi0+bC5uOwo+ID4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogZm9yICg7OykKPiA+ICovCj4g PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoG4gPSBjaGFpbl9ub2RlKE9DX0VYRUMgfCBWeCk7Cj4gPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4tPmwubiA9IG4y Owo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBuMiA9IHBhcnNlX2V4cHIoVENfU0VNSUNPTCk7Cj4gPiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4zID0gcGFy c2VfZXhwcihUQ19TRVFURVJNKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbiA9IGNoYWluX2xvb3AobjMpOwo+ID4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBuLT5sLm4gPSBuMjsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFuMikKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oG4tPmluZm8gPSBPQ19FWEVDOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoH0KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBicmVhazsKPiA+ICsrwqDCoMKgwqDCoMKgY2FzZSBTVF9GT1I6Cj4gPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBTVF9GT1JcbiIs IF9fZnVuY19fKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5leHRfdG9rZW4o VENfTFBBUkVOKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4yID0gcGFyc2Vf ZXhwcihUQ19TRU1JQ09MIHwgVENfUlBBUkVOKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmICh0X3RjbGFzcyAmIFRDX1JQQVJFTikge8KgwqDCoMKgwqAvKiBmb3IgKEkgaW4g QVJSQVkpCj4gPiAqLwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmICghbjIgfHwgbjItPmluZm8gIT0gVElfSU4pCj4gPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRheF9lcnJv cihFTVNHX1VORVhQX1RPS0VOKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBuID0gY2hhaW5fbm9kZShPQ19XQUxLSU5JVCB8IFZWKTsKPiA+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuLT5sLm4gPSBuMi0+bC5u Owo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4tPnIu biA9IG4yLT5yLm47Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgbiA9IGNoYWluX2xvb3AoTlVMTCk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+aW5mbyA9IE9DX1dBTEtORVhUIHwgVng7Cj4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+bC5uID0gbjItPmwu bjsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogZm9yICg7OykgKi8KPiA+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuID0gY2hhaW5fbm9k ZShPQ19FWEVDIHwgVngpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoG4tPmwubiA9IG4yOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoG4yID0gcGFyc2VfZXhwcihUQ19TRU1JQ09MKTsKPiA+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuMyA9IHBhcnNlX2V4cHIoVENf UlBBUkVOKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBuID0gY2hhaW5fbG9vcChuMyk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgbi0+bC5uID0gbjI7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFuMikKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+aW5mbyA9IE9DX0VYRUM7 Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ICsgCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBjYXNlIE9DX1BSSU5UOgo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2Fz ZSBPQ19QUklOVEY6Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogT0NfUFJJTlRbRl1cbiIsCj4gPiBfX2Z1bmNf Xyk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbiA9 IGNoYWluX25vZGUodF9pbmZvKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBuLT5sLm4gPSBwYXJzZV9leHByKFRDX09QVEVSTSB8IFRDX09VVFJEUiB8 Cj4gPiBUQ19HUlBURVJNKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZiAodF90Y2xhc3MgJiBUQ19PVVRSRFIpIHsKPiA+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+aW5mbyB8 PSB0X2luZm87Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoG4tPnIubiA9IHBhcnNlX2V4cHIoVENfT1BURVJNIHwKPiA+IFRD X0dSUFRFUk0pOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoH0KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp ZiAodF90Y2xhc3MgJiBUQ19HUlBURVJNKQo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByb2xsYmFja190b2tlbigpOwo+ID4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4g KyvCoMKgwqDCoMKgwqBjYXNlIE9DX1BSSU5UOgo+ID4gKyvCoMKgwqDCoMKgwqBjYXNlIE9DX1BS SU5URjoKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJz ZSgiJXM6IE9DX1BSSU5UW0ZdXG4iLCBfX2Z1bmNfXyk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBuID0gY2hhaW5fbm9kZSh0X2luZm8pOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgbi0+bC5uID0gcGFyc2VfZXhwcihUQ19TRU1JQ09MIHwgVENfTkVXTElORSB8 Cj4gPiBUQ19PVVRSRFIgfCBUQ19SQlJBQ0UpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKHRfdGNsYXNzICYgVENfT1VUUkRSKSB7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+aW5mbyB8PSB0X2luZm87Cj4gPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+ci5uID0gcGFyc2VfZXhw cihUQ19TRU1JQ09MIHwgVENfTkVXTElORQo+ID4gfAo+ID4gVENfUkJSQUNFKTsKPiA+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmICh0X3RjbGFzcyAmIFRDX1JCUkFDRSkKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByb2xsYmFja190b2tlbigpOwo+ID4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiArIAo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY2FzZSBPQ19CUkVBSzoKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBPQ19CUkVBS1xuIiwKPiA+ IF9fZnVuY19fKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBuID0gY2hhaW5fbm9kZShPQ19FWEVDKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuLT5hLm4gPSBicmVha19wdHI7Cj4gPiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhaW5fZXhwcih0X2luZm8pOwo+ ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ ID4gKyvCoMKgwqDCoMKgwqBjYXNlIE9DX0JSRUFLOgo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogT0NfQlJFQUtcbiIsIF9fZnVuY19fKTsK PiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4gPSBjaGFpbl9ub2RlKE9DX0VYRUMp Owo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFicmVha19wdHIpCj4gPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vycm9y KCInYnJlYWsnIG5vdCBpbiBhIGxvb3AiKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoG4tPmEubiA9IGJyZWFrX3B0cjsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGNoYWluX2V4cHIodF9pbmZvKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJy ZWFrOwo+ID4gKyAKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgT0NfQ09O VElOVUU6Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZGVidWdfcHJpbnRmX3BhcnNlKCIlczogT0NfQ09OVElOVUVcbiIsCj4gPiBfX2Z1bmNfXyk7Cj4g PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbiA9IGNoYWlu X25vZGUoT0NfRVhFQyk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgbi0+YS5uID0gY29udGludWVfcHRyOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYWluX2V4cHIodF9pbmZvKTsKPiA+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ICsrwqDCoMKg wqDCoMKgY2FzZSBPQ19DT05USU5VRToKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IE9DX0NPTlRJTlVFXG4iLCBfX2Z1bmNfXyk7Cj4gPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuID0gY2hhaW5fbm9kZShPQ19FWEVDKTsKPiA+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghY29udGludWVfcHRyKQo+ID4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRheF9lcnJvcigi J2NvbnRpbnVlJyBub3QgaW4gYSBsb29wIik7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBuLT5hLm4gPSBjb250aW51ZV9wdHI7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBjaGFpbl9leHByKHRfaW5mbyk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBicmVhazsKPiA+ICsgCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBkZWxl dGUsIG5leHQsIG5leHRmaWxlLCByZXR1cm4sIGV4aXQgKi8KPiA+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGRlZmF1bHQ6Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogZGVmYXVsdFxuIiwKPiA+IF9f ZnVuY19fKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBjaGFpbl9leHByKHRfaW5mbyk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9 Cj4gPiArK8KgwqDCoMKgwqDCoC8qIGRlbGV0ZSwgbmV4dCwgbmV4dGZpbGUsIHJldHVybiwgZXhp dCAqLwo+ID4gKyvCoMKgwqDCoMKgwqBkZWZhdWx0Ogo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogZGVmYXVsdFxuIiwgX19mdW5jX18pOwo+ ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhaW5fZXhwcih0X2luZm8pOwo+ID4g K8KgwqDCoMKgwqDCoMKgfQo+ID4gKyB9Cj4gPiArIAo+ID4gKyBzdGF0aWMgdm9pZCBwYXJzZV9w cm9ncmFtKGNoYXIgKnApCj4gPiArIHsKPiA+ICstwqDCoMKgwqDCoMKgdWludDMyX3QgdGNsYXNz Owo+ID4gKy3CoMKgwqDCoMKgwqBub2RlICpjbjsKPiA+ICstwqDCoMKgwqDCoMKgZnVuYyAqZjsK PiA+ICstwqDCoMKgwqDCoMKgdmFyICp2Owo+ID4gKyvCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZf cGFyc2UoIiVzKClcbiIsIF9fZnVuY19fKTsKPiA+ICsgCj4gPiArwqDCoMKgwqDCoMKgwqBnX3Bv cyA9IHA7Cj4gPiArwqDCoMKgwqDCoMKgwqB0X2xpbmVubyA9IDE7Cj4gPiArLcKgwqDCoMKgwqDC oHdoaWxlICgodGNsYXNzID0gbmV4dF90b2tlbihUQ19FT0YgfCBUQ19PUFNFUSB8IFRDX0dSUFNU QVJUCj4gPiB8Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgVENfT1BURVJNIHwgVENfQkVHSU4gfCBUQ19FTkQgfAo+ID4gVENfRlVOQ0RFQ0wpKQo+ID4g IT0gVENfRU9GKSB7Cj4gPiArK8KgwqDCoMKgwqDCoGZvciAoOzspIHsKPiA+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHVpbnQzMl90IHRjbGFzczsKPiA+ICsgCj4gPiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodGNsYXNzICYgVENfT1BURVJNKSB7Cj4gPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNl KCIlczogVENfT1BURVJNXG4iLAo+ID4gX19mdW5jX18pOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgdGNsYXNzID0gbmV4dF90b2tlbihUU19PUFNFUSB8IFRDX0xCUkFDRSB8IFRD X0JFR0lOCj4gPiB8Cj4gPiBUQ19FTkQgfCBUQ19GVU5DREVDTAo+ID4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHwgVENfRU9GIHwgVENfTkVXTElORSAvKiBi dXQgbm90IFRDX1NFTUlDT0wKPiA+ICovKTsKPiA+ICsrIGdvdF90b2s6Cj4gPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodGNsYXNzID09IFRDX0VPRikgewo+ID4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgi JXM6IFRDX0VPRlxuIiwKPiA+IF9fZnVuY19fKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoH0KPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0Y2xhc3MgPT0g VENfTkVXTElORSkgewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRDX05FV0xJTkVcbiIsCj4gPiBfX2Z1bmNf Xyk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNv bnRpbnVlOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICstCj4gPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXEgPSAmbWFpbnNlcTsKPiA+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0Y2xhc3MgJiBUQ19CRUdJTikgewo+ID4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRjbGFzcyA9PSBUQ19CRUdJTikgewo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZf cGFyc2UoIiVzOiBUQ19CRUdJTlxuIiwKPiA+IF9fZnVuY19fKTsKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2VxID0gJmJlZ2luc2VxOwo+ID4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYWluX2dyb3VwKCk7 Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2UgaWYgKHRjbGFzcyAmIFRD X0VORCkgewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oC8qIGVuc3VyZSB0aGVyZSBpcyBubyBuZXdsaW5lIGJldHdlZW4gQkVHSU4KPiA+IGFuZCB7ICov Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV4dF90 b2tlbihUQ19MQlJBQ0UpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGNoYWluX3VudGlsX3JicmFjZSgpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gbmV4dF90b2s7Cj4gPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAo dGNsYXNzID09IFRDX0VORCkgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBUQ19FTkRcbiIsCj4gPiBfX2Z1 bmNfXyk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHNlcSA9ICZlbmRzZXE7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY2hhaW5fZ3JvdXAoKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0gZWxzZSBpZiAodGNsYXNzICYgVENfRlVOQ0RFQ0wpIHsKPiA+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBlbnN1cmUgdGhlcmUgaXMgbm8gbmV3bGlu ZSBiZXR3ZWVuIEVORAo+ID4gYW5kCj4gPiB7ICovCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV4dF90b2tlbihUQ19MQlJBQ0UpOwo+ID4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYWluX3VudGlsX3JicmFj ZSgpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdv dG8gbmV4dF90b2s7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodGNsYXNzID09IFRDX0ZVTkNERUNMKSB7Cj4g PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnVuYyAqZjsK PiA+ICsrCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRDX0ZVTkNERUNMXG4iLAo+ID4gX19mdW5jX18pOwo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuZXh0X3Rv a2VuKFRDX0ZVTkNUSU9OKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBnX3BvcysrOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBmID0gbmV3ZnVuYyh0X3N0cmluZyk7Cj4gPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZi0+Ym9keS5maXJzdCA9IE5VTEw7Cj4gPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZi0+bmFyZ3MgPSAw Owo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIE1h dGNoIGZ1bmMgYXJnIGxpc3Q6IGEgY29tbWEgc2VwIGxpc3Qgb2YKPiA+ID4gPSAwIGFyZ3MsIGFu ZCBhIGNsb3NlIHBhcmVuICovCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgd2hpbGUgKG5leHRfdG9rZW4oVENfVkFSSUFCTEUgfCBUQ19TRVFURVJNCj4g PiB8Cj4gPiBUQ19DT01NQSkpIHsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogRWl0aGVyIGFuIGVtcHR5IGFyZyBsaXN0 LCBvcgo+ID4gdHJhaWxpbmcgY29tbWEgZnJvbSBwcmV2IGl0ZXIKPiA+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogbXVzdCBi ZSBmb2xsb3dlZCBieSBhbiBhcmcgKi8KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGYtPm5hcmdzID09IDAgJiYgdF90 Y2xhc3MgPT0KPiA+IFRDX1NFUVRFUk0pCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsK PiA+ICstCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoC8qIFRDX1NFUVNUQVJUL1RDX0NPTU1BIG11c3QgYmUKPiA+IGZvbGxv d2VkIGJ5IFRDX1ZBUklBQkxFICovCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0X3RjbGFzcyAhPSBUQ19WQVJJQUJM RSkKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAo Zi0+ZGVmaW5lZCkKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vycm9yKCJEdXBsaWNhdGUgZnVuY3Rpb24iKTsK PiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmLT5kZWZp bmVkID0gMTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAvL2YtPmJvZHkuZmlyc3QgPSBOVUxMOyAtIGFscmVhZHkgaXMKPiA+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvL2YtPm5hcmdzID0gMDsgLSBhbHJlYWR5 IGlzCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyog ZnVuYyBhcmcgbGlzdDogY29tbWEgc2VwIGxpc3Qgb2YgYXJncywKPiA+IGFuZAo+ID4gYSBjbG9z ZSBwYXJlbiAqLwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGZvciAoOzspIHsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmFyICp2Owo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAobmV4dF90b2tlbihU Q19WQVJJQUJMRSB8Cj4gPiBUQ19SUEFSRU4pID09IFRDX1JQQVJFTikgewo+ID4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKGYtPm5hcmdzID09IDApCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgYnJlYWs7IC8qIGZ1bmMoKSBpcwo+ID4gb2sgKi8KPiA+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoC8qIGZ1bmMoYSwpIGlzIG5vdCBvayAqLwo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHN5bnRheF9lcnJvcihFTVNHX1VORVhQX1RPSwo+ID4gRU4KPiA+ICk7Cj4gPiArLQo+ ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB9Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB2ID0gZmluZHZhcihhaGFzaCwgdF9zdHJpbmcpOwo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdi0+eC5haWR4ID0gZi0+bmFyZ3MrKzsKPiA+ICstCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBBcmcgZm9sbG93 ZWQgZWl0aGVyIGJ5IGVuZCBvZgo+ID4gYXJnCj4gPiBsaXN0IG9yIDEgY29tbWEgKi8KPiA+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWYgKG5leHRfdG9rZW4oVENfQ09NTUEgfAo+ID4gVENfU0VRVEVSTSkKPiA+ICYgVENfU0VR VEVSTSkKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWYgKG5leHRfdG9rZW4oVENfQ09NTUEgfAo+ID4gVENfUlBBUkVOKQo+ ID4gPT0gVENfUlBBUkVOKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAodF90Y2xhc3MgIT0gVENfQ09NTUEpCj4gPiArLQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHN5bnRheF9lcnJvcihFTVNHX1VORVhQX1RPS0VOCj4gPiApOwo+ID4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBpdCB3YXMg YSBjb21tYSwgd2UgYXRlIGl0ICovCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoH0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgc2VxID0gJmYtPmJvZHk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhaW5fZ3JvdXAoKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbGVhcl9hcnJheShhaGFzaCk7Cj4gPiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2UgaWYgKHRjbGFzcyAmIFRDX09QU0VRKSB7 Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdf cHJpbnRmX3BhcnNlKCIlczogVENfT1BTRVFcbiIsCj4gPiBfX2Z1bmNfXyk7Cj4gPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogZW5zdXJlIHRoZXJlIGlz IHsgYWZ0ZXIgImZ1bmMgRiguLi4pIiAtCj4gPiBidXQgbmV3bGluZXMgYXJlIGFsbG93ZWQgKi8K PiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3aGlsZSAo bmV4dF90b2tlbihUQ19MQlJBQ0UgfCBUQ19ORVdMSU5FKQo+ID4gPT0KPiA+IFRDX05FV0xJTkUp Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGNvbnRpbnVlOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGNoYWluX3VudGlsX3JicmFjZSgpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhhc2hfY2xlYXIoYWhhc2gpOwo+ID4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gbmV4dF90b2s7Cj4g PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBzZXEgPSAmbWFpbnNlcTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmICh0Y2xhc3MgJiBUU19PUFNFUSkgewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5vZGUgKmNuOwo+ID4gKysKPiA+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBU U19PUFNFUVxuIiwKPiA+IF9fZnVuY19fKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcm9sbGJhY2tfdG9rZW4oKTsKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24gPSBjaGFpbl9ub2RlKE9DX1RFU1Qp Owo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5s Lm4gPSBwYXJzZV9leHByKFRDX09QVEVSTSB8IFRDX0VPRiB8Cj4gPiBUQ19HUlBTVEFSVCk7Cj4g PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRfdGNs YXNzICYgVENfR1JQU1RBUlQpIHsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczoKPiA+ IFRDX0dSUFNUQVJUXG4iLCBfX2Z1bmNfXyk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJvbGxiYWNrX3Rva2VuKCk7Cj4g PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGNoYWluX2dyb3VwKCk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgY24tPmwubiA9IHBhcnNlX2V4cHIoVENfU0VNSUNPTCB8Cj4gPiBUQ19O RVdMSU5FCj4gPiA+IFRDX0VPRiB8IFRDX0xCUkFDRSk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRfdGNsYXNzID09IFRDX0xCUkFDRSkgewo+ ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOgo+ID4gVENfTEJSQUNFXG4iLAo+ID4gX19m dW5jX18pOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBjaGFpbl91bnRpbF9yYnJhY2UoKTsKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsKPiA+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdf cHJpbnRmX3BhcnNlKCIlczoKPiA+ICFUQ19HUlBTVEFSVFxuIiwgX19mdW5jX18pOwo+ID4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAvKiBubyBhY3Rpb24sIGFzc3VtZSBkZWZhdWx0ICJ7Cj4gPiBwcmludAo+ID4gfSIgKi8KPiA+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczoKPiA+ICFUQ19MQlJBQ0VcbiIsIF9fZnVuY19f KTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGNoYWluX25vZGUoT0NfUFJJTlQpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5yLm4gPSBtYWluc2VxLmxhc3Q7Cj4gPiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2UgLyogaWYgKHRjbGFzcyAmIFRDX0dSUFNU QVJUKSAqLyB7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogVENfR1JQU1RBUlQoPylcbiIsCj4gPiBfX2Z1bmNf Xyk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcm9s bGJhY2tfdG9rZW4oKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBjaGFpbl9ncm91cCgpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGdvdG8gbmV4dF90b2s7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfQo+ID4gKy3CoMKgwqDCoMKgwqB9Cj4gPiArLcKgwqDCoMKgwqDCoGRlYnVnX3By aW50Zl9wYXJzZSgiJXM6IFRDX0VPRlxuIiwgX19mdW5jX18pOwo+ID4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgLyogdGNsYXNzID09IFRDX0xCUkFDRSAqLwo+ID4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogVENfTEJSQUNFKD8pXG4i LCBfX2Z1bmNfXyk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFpbl91bnRp bF9yYnJhY2UoKTsKPiA+ICsrIG5leHRfdG9rOgo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLyogU2FtZSBhcyBuZXh0X3Rva2VuKCkgYXQgdGhlIHRvcCBvZiB0aGUgbG9vcCwgKwo+ ID4gVENfU0VNSUNPTCAqLwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGNsYXNz ID0gbmV4dF90b2tlbihUU19PUFNFUSB8IFRDX0xCUkFDRSB8IFRDX0JFR0lOCj4gPiB8Cj4gPiBU Q19FTkQgfCBUQ19GVU5DREVDTAo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHwgVENfRU9GIHwgVENfTkVXTElORSB8IFRDX1NFTUlDT0wpOwo+ID4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogZ2F3ayBhbGxvd3MgbWFueSBuZXdsaW5lcywg YnV0IGRvZXMgbm90IGFsbG93Cj4gPiBtb3JlCj4gPiB0aGFuIG9uZSBzZW1pY29sb246Cj4gPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKsKgIEJFR0lOIHsuLi59PG5ld2xpbmU+Ozxu ZXdsaW5lPjsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHdvdWxkIGNvbXBs YWluICJlYWNoIHJ1bGUgbXVzdCBoYXZlIGEgcGF0dGVybiBvcgo+ID4gYW4gYWN0aW9uIHBhcnQi Lgo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogU2FtZSBtZXNzYWdlIGZvcgo+ ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICrCoCA7IEJFR0lOIHsuLi59Cj4gPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlmICh0Y2xhc3MgIT0gVENfU0VNSUNPTCkKPiA+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIGdvdF90b2s7IC8qIHVzZSB0aGlzIHRv a2VuICovCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBlbHNlOiBsb29wIGJh Y2sgLSBhdGUgdGhlIHNlbWljb2xvbiwgZ2V0IGFuZCB1c2UKPiA+IF9uZXh0XyB0b2tlbiAqLwo+ ID4gKyvCoMKgwqDCoMKgwqB9IC8qIGZvciAoOzspICovCj4gPiArIH0KPiA+ICsgCj4gPiArLQo+ ID4gKyAvKiAtLS0tLS0tLSBwcm9ncmFtIGV4ZWN1dGlvbiBwYXJ0IC0tLS0tLS0tICovCj4gPiAr IAo+ID4gKysvKiB0ZW1wb3JhcnkgdmFyaWFibGVzIGFsbG9jYXRvciAqLwo+ID4gKytzdGF0aWMg dmFyICpudmFsbG9jKGludCBzeikKPiA+ICsrewo+ID4gKyvCoMKgwqDCoMKgwqByZXR1cm4geHph bGxvYyhzeiAqIHNpemVvZih2YXIpKTsKPiA+ICsrfQo+ID4gKysKPiA+ICsrc3RhdGljIHZvaWQg bnZmcmVlKHZhciAqdiwgaW50IHN6KQo+ID4gKyt7Cj4gPiArK8KgwqDCoMKgwqDCoHZhciAqcCA9 IHY7Cj4gPiArKwo+ID4gKyvCoMKgwqDCoMKgwqB3aGlsZSAoLS1zeiA+PSAwKSB7Cj4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKHAtPnR5cGUgJiAoVkZfQVJSQVkgfCBWRl9D SElMRCkpID09IFZGX0FSUkFZKQo+ID4gewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNsZWFyX2FycmF5KGlhbWFycmF5KHApKTsKPiA+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcmVlKHAtPnguYXJyYXktPml0 ZW1zKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBm cmVlKHAtPnguYXJyYXkpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHAtPnR5cGUgJiBWRl9XQUxLKSB7Cj4g PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2Fsa2VyX2xp c3QgKm47Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg d2Fsa2VyX2xpc3QgKncgPSBwLT54LndhbGtlcjsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfd2Fsa2VyKCJudmZyZWU6IGZyZWVp bmcgd2Fsa2VyCj4gPiBAJXBcbiIsICZwLT54LndhbGtlcik7Cj4gPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcC0+eC53YWxrZXIgPSBOVUxMOwo+ID4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdoaWxlICh3KSB7Cj4g PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoG4gPSB3LT5wcmV2Owo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfd2Fsa2VyKCIgZnJlZSgl cClcbiIsCj4gPiB3KTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnJlZSh3KTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdyA9IG47Cj4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Y2xydmFyKHApOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcCsrOwo+ID4gKyvC oMKgwqDCoMKgwqB9Cj4gPiArKwo+ID4gKyvCoMKgwqDCoMKgwqBmcmVlKHYpOwo+ID4gKyt9Cj4g PiArKwo+ID4gKyBzdGF0aWMgbm9kZSAqbWtfc3BsaXR0ZXIoY29uc3QgY2hhciAqcywgdHNwbGl0 dGVyICpzcGwpCj4gPiArIHsKPiA+ICvCoMKgwqDCoMKgwqDCoHJlZ2V4X3QgKnJlLCAqaXJlOwo+ ID4gK0BAIC0xNjg2LDcgKzE4NDgsNyBAQCBzdGF0aWMgbm9kZSAqbWtfc3BsaXR0ZXIoY29uc3Qg Y2hhciAqcywKPiA+IHRzcGxpdHRlciAqc3BsKQo+ID4gK8KgwqDCoMKgwqDCoMKgcmUgPSAmc3Bs LT5yZVswXTsKPiA+ICvCoMKgwqDCoMKgwqDCoGlyZSA9ICZzcGwtPnJlWzFdOwo+ID4gK8KgwqDC oMKgwqDCoMKgbiA9ICZzcGwtPm47Cj4gPiArLcKgwqDCoMKgwqDCoGlmICgobi0+aW5mbyAmIE9Q Q0xTTUFTSykgPT0gT0NfUkVHRVhQKSB7Cj4gPiArK8KgwqDCoMKgwqDCoGlmIChuLT5pbmZvID09 IFRJX1JFR0VYUCkgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlZ2ZyZWUo cmUpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlZ2ZyZWUoaXJlKTsgLy8g VE9ETzogbnVrZSBpcmUsIHVzZSByZSsxPwo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gK0BAIC0x Njk5LDIxICsxODYxLDI4IEBAIHN0YXRpYyBub2RlICpta19zcGxpdHRlcihjb25zdCBjaGFyICpz LAo+ID4gdHNwbGl0dGVyICpzcGwpCj4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gbjsKPiA+ICsg fQo+ID4gKyAKPiA+ICstLyogdXNlIG5vZGUgYXMgYSByZWd1bGFyIGV4cHJlc3Npb24uIFN1cHBs aWVkIHdpdGggbm9kZSBwdHIgYW5kCj4gPiByZWdleF90Cj4gPiArK3N0YXRpYyB2YXIgKmV2YWx1 YXRlKG5vZGUgKiwgdmFyICopOwo+ID4gKysKPiA+ICsrLyogVXNlIG5vZGUgYXMgYSByZWd1bGFy IGV4cHJlc3Npb24uIFN1cHBsaWVkIHdpdGggbm9kZSBwdHIgYW5kCj4gPiByZWdleF90Cj4gPiAr wqAgKiBzdG9yYWdlIHNwYWNlLiBSZXR1cm4gcHRyIHRvIHJlZ2V4IChpZiByZXN1bHQgcG9pbnRz IHRvIHByZWcsCj4gPiBpdAo+ID4gc2hvdWxkCj4gPiArLSAqIGJlIGxhdGVyIHJlZ2ZyZWUnZCBt YW51YWxseQo+ID4gKysgKiBiZSBsYXRlciByZWdmcmVlJ2QgbWFudWFsbHkpLgo+ID4gK8KgICov Cj4gPiArIHN0YXRpYyByZWdleF90ICphc19yZWdleChub2RlICpvcCwgcmVnZXhfdCAqcHJlZykK PiA+ICsgewo+ID4gK8KgwqDCoMKgwqDCoMKgaW50IGNmbGFnczsKPiA+ICstwqDCoMKgwqDCoMKg dmFyICp2Owo+ID4gK8KgwqDCoMKgwqDCoMKgY29uc3QgY2hhciAqczsKPiA+ICsgCj4gPiArLcKg wqDCoMKgwqDCoGlmICgob3AtPmluZm8gJiBPUENMU01BU0spID09IE9DX1JFR0VYUCkgewo+ID4g KyvCoMKgwqDCoMKgwqBpZiAob3AtPmluZm8gPT0gVElfUkVHRVhQKSB7Cj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGljYXNlID8gb3AtPnIuaXJlIDogb3AtPmwucmU7 Cj4gPiArwqDCoMKgwqDCoMKgwqB9Cj4gPiArLcKgwqDCoMKgwqDCoHYgPSBudmFsbG9jKDEpOwo+ ID4gKy3CoMKgwqDCoMKgwqBzID0gZ2V0dmFyX3MoZXZhbHVhdGUob3AsIHYpKTsKPiA+ICsrCj4g PiArK8KgwqDCoMKgwqDCoC8vdG1wdmFyID0gbnZhbGxvYygxKTsKPiA+ICsrI2RlZmluZSBUTVBW QVIgKCZHLmFzX3JlZ2V4X190bXB2YXIpCj4gPiArK8KgwqDCoMKgwqDCoC8vIFdlIHVzZSBhIHNp bmdsZSAic3RhdGljIiB0bXB2YXIgKGluc3RlYWQgb2Ygb24tc3RhY2sgb3IKPiA+IG1hbGxvY2Vk IG9uZSkKPiA+ICsrwqDCoMKgwqDCoMKgLy8gdG8gZGVjcmVhc2UgbWVtb3J5IGNvbnN1bXB0aW9u IGluIGRlZXBseS1yZWN1cnNpdmUgYXdrCj4gPiBwcm9ncmFtcy4KPiA+ICsrwqDCoMKgwqDCoMKg Ly8gVGhlIHJ1bGUgdG8gd29yayBzYWZlbHkgaXMgdG8gbmV2ZXIgY2FsbCBldmFsdWF0ZSgpCj4g PiB3aGlsZQo+ID4gb3VyIHN0YXRpYwo+ID4gKyvCoMKgwqDCoMKgwqAvLyBUTVBWQVIncyB2YWx1 ZSBpcyBzdGlsbCBuZWVkZWQuCj4gPiArK8KgwqDCoMKgwqDCoHMgPSBnZXR2YXJfcyhldmFsdWF0 ZShvcCwgVE1QVkFSKSk7Cj4gPiArIAo+ID4gK8KgwqDCoMKgwqDCoMKgY2ZsYWdzID0gaWNhc2Ug PyBSRUdfRVhURU5ERUQgfCBSRUdfSUNBU0UgOiBSRUdfRVhURU5ERUQ7Cj4gPiArwqDCoMKgwqDC oMKgwqAvKiBUZXN0Y2FzZSB3aGVyZSBSRUdfRVhURU5ERUQgZmFpbHMgKHVucGFpcmVkICd7Jyk6 Cj4gPiArQEAgLTE3MjUsNyArMTg5NCw4IEBAIHN0YXRpYyByZWdleF90ICphc19yZWdleChub2Rl ICpvcCwgcmVnZXhfdAo+ID4gKnByZWcpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY2ZsYWdzICY9IH5SRUdfRVhURU5ERUQ7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgeHJlZ2NvbXAocHJlZywgcywgY2ZsYWdzKTsKPiA+ICvCoMKgwqDCoMKgwqDCoH0KPiA+ ICstwqDCoMKgwqDCoMKgbnZmcmVlKHYpOwo+ID4gKyvCoMKgwqDCoMKgwqAvL252ZnJlZSh0bXB2 YXIsIDEpOwo+ID4gKysjdW5kZWYgVE1QVkFSCj4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gcHJl ZzsKPiA+ICsgfQo+ID4gKyAKPiA+ICtAQCAtMTc0NSwxMiArMTkxNSwyMiBAQCBzdGF0aWMgY2hh ciogcXJlYWxsb2MoY2hhciAqYiwgaW50IG4sIGludAo+ID4gKnNpemUpCj4gPiArIC8qIHJlc2l6 ZSBmaWVsZCBzdG9yYWdlIHNwYWNlICovCj4gPiArIHN0YXRpYyB2b2lkIGZzcmVhbGxvYyhpbnQg c2l6ZSkKPiA+ICsgewo+ID4gKy3CoMKgwqDCoMKgwqBpbnQgaTsKPiA+ICsrwqDCoMKgwqDCoMKg aW50IGksIG5ld3NpemU7Cj4gPiArIAo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKHNpemUgPj0gbWF4 ZmllbGRzKSB7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBTYW5pdHkgY2Fw LCBlYXNpZXIgdGhhbiBjYXRlcmluZyBmb3Igb3ZlcmZsb3dzCj4gPiAqLwo+ID4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHNpemUgPiAweGZmZmZmZikKPiA+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBiYl9kaWVfbWVtb3J5X2V4aGF1c3Rl ZCgpOwo+ID4gKysKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpID0gbWF4Zmll bGRzOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG1heGZpZWxkcyA9IHNpemUg KyAxNjsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEZpZWxkcyA9IHhyZWFsbG9j KEZpZWxkcywgbWF4ZmllbGRzICoKPiA+IHNpemVvZihGaWVsZHNbMF0pKTsKPiA+ICsrCj4gPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuZXdzaXplID0gbWF4ZmllbGRzICogc2l6ZW9m KEZpZWxkc1swXSk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmlu dGZfZXZhbCgiZnNyZWFsbG9jOiB4cmVhbGxvYyglcCwgJXUpXG4iLAo+ID4gRmllbGRzLCBuZXdz aXplKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEZpZWxkcyA9IHhyZWFsbG9j KEZpZWxkcywgbmV3c2l6ZSk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1 Z19wcmludGZfZXZhbCgiZnNyZWFsbG9jOiBGaWVsZHM9JXAuLiVwXG4iLAo+ID4gRmllbGRzLCAo Y2hhciopRmllbGRzICsgbmV3c2l6ZSAtIDEpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLyogXl5eIGRpZCBGaWVsZHNbXSBtb3ZlPyBkZWJ1ZyBhaWQgZm9yIEwudiBnZXR0aW5n Cj4gPiAidXBzdGFnZWQiIGJ5IFIudiBpbiBldmFsdWF0ZSgpICovCj4gPiArKwo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZvciAoOyBpIDwgbWF4ZmllbGRzOyBpKyspIHsKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRmllbGRzW2ld LnR5cGUgPSBWRl9TUEVDSUFMOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBGaWVsZHNbaV0uc3RyaW5nID0gTlVMTDsKPiA+ICtAQCAtMTgwMiwxMyAr MTk4MiwxMyBAQCBzdGF0aWMgaW50IGF3a19zcGxpdChjb25zdCBjaGFyICpzLCBub2RlCj4gPiAq c3BsLCBjaGFyICoqc2xpc3QpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY1sy XSA9ICdcbic7Cj4gPiArIAo+ID4gK8KgwqDCoMKgwqDCoMKgbiA9IDA7Cj4gPiArLcKgwqDCoMKg wqDCoGlmICgoc3BsLT5pbmZvICYgT1BDTFNNQVNLKSA9PSBPQ19SRUdFWFApIHvCoCAvKiByZWdl eCBzcGxpdAo+ID4gKi8KPiA+ICsrwqDCoMKgwqDCoMKgaWYgKHNwbC0+aW5mbyA9PSBUSV9SRUdF WFApIHvCoCAvKiByZWdleCBzcGxpdCAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmICghKnMpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybiBuOyAvKiAiIjogemVybyBmaWVsZHMgKi8KPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBuKys7IC8qIGF0IGxlYXN0IG9uZSBmaWVsZCB3aWxsIGJlIHRoZXJl ICovCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZG8gewo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbnQgbDsKPiA+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZWdtYXRjaF90IHBtYXRjaFsy XTsgLy8gVE9ETzogd2h5IFsyXT8gWzFdCj4gPiBpcyBlbm91Z2guLi4KPiA+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZWdtYXRjaF90IHBtYXRjaFsxXTsK PiA+ICsgCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGwgPSBzdHJjc3BuKHMsIGMrMik7IC8qIGxlbiB0aWxsIG5leHQgTlVMCj4gPiBvcgo+ID4gXG4g Ki8KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYg KHJlZ2V4ZWMxX25vbmVtcHR5KGljYXNlID8gc3BsLT5yLmlyZSA6Cj4gPiBzcGwtPmwucmUsIHMs IHBtYXRjaCkgPT0gMAo+ID4gK0BAIC0xOTY5LDcgKzIxNDksNyBAQCBzdGF0aWMgbm9kZSAqbmV4 dGFyZyhub2RlICoqcG4pCj4gPiArwqDCoMKgwqDCoMKgwqBub2RlICpuOwo+ID4gKyAKPiA+ICvC oMKgwqDCoMKgwqDCoG4gPSAqcG47Cj4gPiArLcKgwqDCoMKgwqDCoGlmIChuICYmIChuLT5pbmZv ICYgT1BDTFNNQVNLKSA9PSBPQ19DT01NQSkgewo+ID4gKyvCoMKgwqDCoMKgwqBpZiAobiAmJiBu LT5pbmZvID09IFRJX0NPTU1BKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg KnBuID0gbi0+ci5uOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4gPSBuLT5s Lm47Cj4gPiArwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ID4gK0BAIC0yMDAwLDggKzIxODAsNyBA QCBzdGF0aWMgdm9pZCBoYXNod2Fsa19pbml0KHZhciAqdiwgeGhhc2gKPiA+ICphcnJheSkKPiA+ ICvCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBhcnJheS0+Y3NpemU7IGkrKykgewo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhpID0gYXJyYXktPml0ZW1zW2ldOwo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdoaWxlIChoaSkgewo+ID4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cmNweSh3LT5lbmQsIGhpLT5u YW1lKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBu ZXh0d29yZCgmdy0+ZW5kKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB3LT5lbmQgPSBzdHBjcHkody0+ZW5kLCBoaS0+bmFtZSkgKyAxOwo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoaSA9IGhpLT5uZXh0 Owo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICvCoMKgwqDCoMKgwqDC oH0KPiA+ICtAQCAtMjAyNywxNSArMjIwNiwxOCBAQCBzdGF0aWMgaW50IGhhc2h3YWxrX25leHQo dmFyICp2KQo+ID4gKyAvKiBldmFsdWF0ZSBub2RlLCByZXR1cm4gMSB3aGVuIHJlc3VsdCBpcyB0 cnVlLCAwIG90aGVyd2lzZSAqLwo+ID4gKyBzdGF0aWMgaW50IHB0ZXN0KG5vZGUgKnBhdHRlcm4p Cj4gPiArIHsKPiA+ICstwqDCoMKgwqDCoMKgLyogcHRlc3RfX3YgaXMgInN0YXRpYyI6IHRvIHNh dmUgc3RhY2sgc3BhY2U/ICovCj4gPiArLcKgwqDCoMKgwqDCoHJldHVybiBpc3RydWUoZXZhbHVh dGUocGF0dGVybiwgJkcucHRlc3RfX3YpKTsKPiA+ICsrwqDCoMKgwqDCoMKgLy8gV2UgdXNlIGEg c2luZ2xlICJzdGF0aWMiIHRtcHZhciAoaW5zdGVhZCBvZiBvbi1zdGFjayBvcgo+ID4gbWFsbG9j ZWQgb25lKQo+ID4gKyvCoMKgwqDCoMKgwqAvLyB0byBkZWNyZWFzZSBtZW1vcnkgY29uc3VtcHRp b24gaW4gZGVlcGx5LXJlY3Vyc2l2ZSBhd2sKPiA+IHByb2dyYW1zLgo+ID4gKyvCoMKgwqDCoMKg wqAvLyBUaGUgcnVsZSB0byB3b3JrIHNhZmVseSBpcyB0byBuZXZlciBjYWxsIGV2YWx1YXRlKCkK PiA+IHdoaWxlCj4gPiBvdXIgc3RhdGljCj4gPiArK8KgwqDCoMKgwqDCoC8vIFRNUFZBUidzIHZh bHVlIGlzIHN0aWxsIG5lZWRlZC4KPiA+ICsrwqDCoMKgwqDCoMKgcmV0dXJuIGlzdHJ1ZShldmFs dWF0ZShwYXR0ZXJuLCAmRy5wdGVzdF9fdG1wdmFyKSk7Cj4gPiArIH0KPiA+ICsgCj4gPiArIC8q IHJlYWQgbmV4dCByZWNvcmQgZnJvbSBzdHJlYW0gcnNtIGludG8gYSB2YXJpYWJsZSB2ICovCj4g PiArIHN0YXRpYyBpbnQgYXdrX2dldGxpbmUocnN0cmVhbSAqcnNtLCB2YXIgKnYpCj4gPiArIHsK PiA+ICvCoMKgwqDCoMKgwqDCoGNoYXIgKmI7Cj4gPiArLcKgwqDCoMKgwqDCoHJlZ21hdGNoX3Qg cG1hdGNoWzJdOyAvLyBUT0RPOiB3aHkgWzJdPyBbMV0gaXMgZW5vdWdoLi4uCj4gPiArK8KgwqDC oMKgwqDCoHJlZ21hdGNoX3QgcG1hdGNoWzFdOwo+ID4gK8KgwqDCoMKgwqDCoMKgaW50IHNpemUs IGEsIHAsIHBwID0gMDsKPiA+ICvCoMKgwqDCoMKgwqDCoGludCBmZCwgc28sIGVvLCByLCBycDsK PiA+ICvCoMKgwqDCoMKgwqDCoGNoYXIgYywgKm0sICpzOwo+ID4gK0BAIC0yMDYxLDcgKzIyNDMs NyBAQCBzdGF0aWMgaW50IGF3a19nZXRsaW5lKHJzdHJlYW0gKnJzbSwgdmFyICp2KQo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNvID0gZW8gPSBwOwo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHIgPSAxOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmIChwID4gMCkgewo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlmICgocnNwbGl0dGVyLm4uaW5mbyAmIE9QQ0xTTUFTSykgPT0KPiA+IE9DX1JF R0VYUCkgewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlmIChyc3BsaXR0ZXIubi5pbmZvID09IFRJX1JFR0VYUCkgewo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJlZ2V4 ZWMoaWNhc2UgPwo+ID4gcnNwbGl0dGVyLm4uci5pcmUKPiA+IDogcnNwbGl0dGVyLm4ubC5yZSwK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGIsIDEsCj4gPiBwbWF0Y2gsCj4gPiAwKSA9PSAwKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgc28gPSBwbWF0Y2hbMF0ucm1fc287Cj4gPiArQEAgLTIxMzMsNDIgKzIzMTUsMzYgQEAgc3Rh dGljIGludCBhd2tfZ2V0bGluZShyc3RyZWFtICpyc20sIHZhcgo+ID4gKnYpCj4gPiArwqDCoMKg wqDCoMKgwqByZXR1cm4gcjsKPiA+ICsgfQo+ID4gKyAKPiA+ICstc3RhdGljIGludCBmbXRfbnVt KGNoYXIgKmIsIGludCBzaXplLCBjb25zdCBjaGFyICpmb3JtYXQsIGRvdWJsZQo+ID4gbiwKPiA+ IGludCBpbnRfYXNfaW50KQo+ID4gKy17Cj4gPiArLcKgwqDCoMKgwqDCoGludCByID0gMDsKPiA+ ICstwqDCoMKgwqDCoMKgY2hhciBjOwo+ID4gKy3CoMKgwqDCoMKgwqBjb25zdCBjaGFyICpzID0g Zm9ybWF0Owo+ID4gKy0KPiA+ICstwqDCoMKgwqDCoMKgaWYgKGludF9hc19pbnQgJiYgbiA9PSAo bG9uZyBsb25nKW4pIHsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHIgPSBzbnBy aW50ZihiLCBzaXplLCAiJWxsZCIsIChsb25nIGxvbmcpbik7Cj4gPiArLcKgwqDCoMKgwqDCoH0g ZWxzZSB7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkbyB7IGMgPSAqczsgfSB3 aGlsZSAoYyAmJiAqKytzKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChz dHJjaHIoImRpb3V4WCIsIGMpKSB7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgciA9IHNucHJpbnRmKGIsIHNpemUsIGZvcm1hdCwgKGludCluKTsKPiA+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSBpZiAoc3RyY2hyKCJlRWZnRyIs IGMpKSB7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ciA9IHNucHJpbnRmKGIsIHNpemUsIGZvcm1hdCwgbik7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9IGVsc2Ugewo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHN5bnRheF9lcnJvcihFTVNHX0lOVl9GTVQpOwo+ID4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gKy3CoMKgwqDCoMKgwqB9Cj4gPiArLcKgwqDCoMKgwqDC oHJldHVybiByOwo+ID4gKy19Cj4gPiArLQo+ID4gKyAvKiBmb3JtYXR0ZWQgb3V0cHV0IGludG8g YW4gYWxsb2NhdGVkIGJ1ZmZlciwgcmV0dXJuIHB0ciB0bwo+ID4gYnVmZmVyCj4gPiAqLwo+ID4g Ky1zdGF0aWMgY2hhciAqYXdrX3ByaW50Zihub2RlICpuKQo+ID4gKysjaWYgIUVOQUJMRV9GRUFU VVJFX0FXS19HTlVfRVhURU5TSU9OUwo+ID4gKysjIGRlZmluZSBhd2tfcHJpbnRmKGEsIGIpIGF3 a19wcmludGYoYSkKPiA+ICsrI2VuZGlmCj4gPiArK3N0YXRpYyBjaGFyICphd2tfcHJpbnRmKG5v ZGUgKm4sIHNpemVfdCAqbGVuKQo+ID4gKyB7Cj4gPiArLcKgwqDCoMKgwqDCoGNoYXIgKmIgPSBO VUxMOwo+ID4gKy3CoMKgwqDCoMKgwqBjaGFyICpmbXQsICpzLCAqZjsKPiA+ICstwqDCoMKgwqDC oMKgY29uc3QgY2hhciAqczE7Cj4gPiArLcKgwqDCoMKgwqDCoGludCBpLCBqLCBpbmNyLCBic2l6 ZTsKPiA+ICstwqDCoMKgwqDCoMKgY2hhciBjLCBjMTsKPiA+ICstwqDCoMKgwqDCoMKgdmFyICp2 LCAqYXJnOwo+ID4gKy0KPiA+ICstwqDCoMKgwqDCoMKgdiA9IG52YWxsb2MoMSk7Cj4gPiArLcKg wqDCoMKgwqDCoGZtdCA9IGYgPSB4c3RyZHVwKGdldHZhcl9zKGV2YWx1YXRlKG5leHRhcmcoJm4p LCB2KSkpOwo+ID4gKy0KPiA+ICsrwqDCoMKgwqDCoMKgY2hhciAqYjsKPiA+ICsrwqDCoMKgwqDC oMKgY2hhciAqZm10LCAqZjsKPiA+ICsrwqDCoMKgwqDCoMKgc2l6ZV90IGk7Cj4gPiArKwo+ID4g KyvCoMKgwqDCoMKgwqAvL3RtcHZhciA9IG52YWxsb2MoMSk7Cj4gPiArKyNkZWZpbmUgVE1QVkFS ICgmRy5hd2tfcHJpbnRmX190bXB2YXIpCj4gPiArK8KgwqDCoMKgwqDCoC8vIFdlIHVzZSBhIHNp bmdsZSAic3RhdGljIiB0bXB2YXIgKGluc3RlYWQgb2Ygb24tc3RhY2sgb3IKPiA+IG1hbGxvY2Vk IG9uZSkKPiA+ICsrwqDCoMKgwqDCoMKgLy8gdG8gZGVjcmVhc2UgbWVtb3J5IGNvbnN1bXB0aW9u IGluIGRlZXBseS1yZWN1cnNpdmUgYXdrCj4gPiBwcm9ncmFtcy4KPiA+ICsrwqDCoMKgwqDCoMKg Ly8gVGhlIHJ1bGUgdG8gd29yayBzYWZlbHkgaXMgdG8gbmV2ZXIgY2FsbCBldmFsdWF0ZSgpCj4g PiB3aGlsZQo+ID4gb3VyIHN0YXRpYwo+ID4gKyvCoMKgwqDCoMKgwqAvLyBUTVBWQVIncyB2YWx1 ZSBpcyBzdGlsbCBuZWVkZWQuCj4gPiArK8KgwqDCoMKgwqDCoGZtdCA9IGYgPSB4c3RyZHVwKGdl dHZhcl9zKGV2YWx1YXRlKG5leHRhcmcoJm4pLCBUTVBWQVIpKSk7Cj4gPiArK8KgwqDCoMKgwqDC oC8vIF5eXl5eXl5eXiBoZXJlIHdlIGltbWVkaWF0ZWx5IHN0cmR1cCgpIHRoZSB2YWx1ZSwgc28g dGhlCj4gPiBsYXRlciBjYWxsCj4gPiArK8KgwqDCoMKgwqDCoC8vIHRvIGV2YWx1YXRlKCkgcG90 ZW50aWFsbHkgcmVjdXJzaW5nIGludG8gYW5vdGhlcgo+ID4gYXdrX3ByaW50ZigpIGNhbid0Cj4g PiArK8KgwqDCoMKgwqDCoC8vIG1hbmdsZSB0aGUgdmFsdWUuCj4gPiArKwo+ID4gKyvCoMKgwqDC oMKgwqBiID0gTlVMTDsKPiA+ICvCoMKgwqDCoMKgwqDCoGkgPSAwOwo+ID4gKy3CoMKgwqDCoMKg wqB3aGlsZSAoKmYpIHsKPiA+ICsrwqDCoMKgwqDCoMKgd2hpbGUgKCpmKSB7IC8qICJwcmludCBv bmUgZm9ybWF0IHNwZWMiIGxvb3AgKi8KPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGNoYXIgKnM7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFyIGM7Cj4gPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFyIHN2Owo+ID4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgdmFyICphcmc7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzaXplX3Qgc2xlbjsKPiA+ICsrCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cyA9IGY7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2hpbGUgKCpmICYmICgq ZiAhPSAnJScgfHwgKisrZiA9PSAnJScpKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBmKys7Cj4gPiArQEAgLTIxNzcsMzggKzIzNTMsNjggQEAgc3Rh dGljIGNoYXIgKmF3a19wcmludGYobm9kZSAqbikKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRheF9lcnJvcigiJSp4 IGZvcm1hdHMgYXJlIG5vdAo+ID4gc3VwcG9ydGVkIik7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGYrKzsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9Cj4gPiArLQo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW5j ciA9IChmIC0gcykgKyBNQVhWQVJGTVQ7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBiID0gcXJlYWxsb2MoYiwgaW5jciArIGksICZic2l6ZSk7Cj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgYyA9ICpmOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKGMgIT0gJ1wwJykKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBmKys7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjMSA9ICpmOwo+ ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFjKSB7Cj4gPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogVGFpbCBvZiBmbXQgd2l0aCBu byBwZXJjZW50IGNoYXJzLAo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAqIG9yICIuLi4uJSIgKHBlcmNlbnQgc2VlbiwgYnV0IG5vIGZvcm1hdAo+ID4g c3BlY2lmaWVyIGNoYXIgZm91bmQpCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICovCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgc2xlbiA9IHN0cmxlbihzKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIHRhaWw7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdiA9ICorK2Y7 Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKmYgPSAnXDAnOwo+ID4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYXJnID0gZXZhbHVhdGUobmV4dGFyZygmbiksIHYpOwo+ ID4gKy0KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGogPSBpOwo+ID4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGMgPT0gJ2MnIHx8ICFjKSB7Cj4gPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaSArPSBzcHJpbnRmKGIraSwg cywgaXNfbnVtZXJpYyhhcmcpID8KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoChjaGFyKWdldHZh cl9pKGFyZykgOgo+ID4gKmdldHZhcl9zKGFyZykpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfSBlbHNlIGlmIChjID09ICdzJykgewo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHMxID0gZ2V0dmFyX3MoYXJnKTsKPiA+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBiID0gcXJlYWxsb2MoYiwgaW5j citpK3N0cmxlbihzMSksICZic2l6ZSk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaSArPSBzcHJpbnRmKGIraSwgcywgczEpOwo+ID4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgYXJnID0gZXZhbHVhdGUobmV4dGFyZygmbiksIFRNUFZBUik7 Cj4gPiArKwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogUmVzdWx0IGNhbiBi ZSBhcmJpdHJhcmlseSBsb25nLiBFeGFtcGxlOgo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICrCoCBwcmludGYgIiU5OTk5OXMiLCAiQk9PTSIKPiA+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAqLwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGMg PT0gJ2MnKSB7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY2hhciBjYyA9IGlzX251bWVyaWMoYXJnKSA/IGdldHZhcl9pKGFyZykgOgo+ID4gKmdldHZh cl9zKGFyZyk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY2hhciAqciA9IHhhc3ByaW50ZihzLCBjYyA/IGNjIDogJ14nIC8qCj4gPiBlbHNlCj4gPiBz dHJsZW4gd2lsbCBiZSB3cm9uZyAqLyk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgc2xlbiA9IHN0cmxlbihyKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoY2MgPT0gJ1wwJykgLyogaWYgY2MgaXMg TlVMLCByZS1mb3JtYXQKPiA+IHRoZSBzdHJpbmcgd2l0aCBpdCAqLwo+ID4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzcHJpbnRm KHIsIHMsIGNjKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBzID0gcjsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGkgKz0gZm10 X251bShiK2ksIGluY3IsIHMsIGdldHZhcl9pKGFyZyksCj4gPiBGQUxTRSk7Cj4gPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGMgPT0gJ3MnKSB7Cj4g PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHMgPSB4YXNwcmludGYocywgZ2V0dmFyX3MoYXJnKSk7Cj4gPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsKPiA+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZG91Ymxl IGQgPSBnZXR2YXJfaShhcmcpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoc3RyY2hyKCJkaW91eFgiLCBjKSkgewo+ ID4gKysvL1RPRE86IG1ha2UgaXQgd2lkZXIgaGVyZSAoJXggLT4gJWxseCBldGMpPwo+ID4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcyA9IHhhc3ByaW50ZihzLCAoaW50KWQpOwo+ID4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVs c2UgaWYgKHN0cmNocigiZUVmRmdHYUEiLCBjKSkgewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cyA9IHhhc3ByaW50ZihzLCBkKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsKPiA+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHN5bnRheF9lcnJvcihFTVNHX0lOVl9GTVQpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNsZW4gPSBzdHJsZW4ocyk7Cj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgKmYgPSBjMTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCpmID0g c3Y7Cj4gPiArIAo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogaWYgdGhlcmUg d2FzIGFuIGVycm9yIHdoaWxlIHNwcmludGYsIHJldHVybgo+ID4gdmFsdWUKPiA+IGlzIG5lZ2F0 aXZlICovCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoaSA8IGopCj4gPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaSA9IGo7Cj4gPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoaSA9PSAwKSB7Cj4gPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYiA9IHM7Cj4gPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaSA9IHNsZW47Cj4gPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7Cj4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArKyB0YWlsOgo+ID4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgYiA9IHhyZWFsbG9jKGIsIGkgKyBzbGVuICsgMSk7Cj4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJjcHkoYiArIGksIHMpOwo+ID4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaSArPSBzbGVuOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWYgKCFjKSAvKiB0YWlsPyAqLwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZnJlZShzKTsKPiA+ICvCoMKgwqDCoMKgwqDCoH0KPiA+ICsgCj4gPiArwqDCoMKgwqDC oMKgwqBmcmVlKGZtdCk7Cj4gPiArLcKgwqDCoMKgwqDCoG52ZnJlZSh2KTsKPiA+ICstwqDCoMKg wqDCoMKgYiA9IHhyZWFsbG9jKGIsIGkgKyAxKTsKPiA+ICstwqDCoMKgwqDCoMKgYltpXSA9ICdc MCc7Cj4gPiArK8KgwqDCoMKgwqDCoC8vbnZmcmVlKHRtcHZhciwgMSk7Cj4gPiArKyN1bmRlZiBU TVBWQVIKPiA+ICsrCj4gPiArKyNpZiBFTkFCTEVfRkVBVFVSRV9BV0tfR05VX0VYVEVOU0lPTlMK PiA+ICsrwqDCoMKgwqDCoMKgaWYgKGxlbikKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCpsZW4gPSBpOwo+ID4gKysjZW5kaWYKPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBiOwo+ ID4gKyB9Cj4gPiArIAo+ID4gK0BAIC0yMzM4LDMzICsyNTQ0LDU5IEBAIHN0YXRpYyBOT0lOTElO RSBpbnQgZG9fbWt0aW1lKGNvbnN0IGNoYXIKPiA+ICpkcykKPiA+ICvCoMKgwqDCoMKgwqDCoHJl dHVybiBta3RpbWUoJnRoZW4pOwo+ID4gKyB9Cj4gPiArIAo+ID4gKysvKiBSZWR1Y2Ugc3RhY2sg dXNhZ2UgaW4gZXhlY19idWlsdGluKCkgYnkga2VlcGluZyBtYXRjaCgpIGNvZGUKPiA+IHNlcGFy YXRlICovCj4gPiArK3N0YXRpYyBOT0lOTElORSB2YXIgKmRvX21hdGNoKG5vZGUgKmFuMSwgY29u c3QgY2hhciAqYXMwKQo+ID4gKyt7Cj4gPiArK8KgwqDCoMKgwqDCoHJlZ21hdGNoX3QgcG1hdGNo WzFdOwo+ID4gKyvCoMKgwqDCoMKgwqByZWdleF90IHNyZWcsICpyZTsKPiA+ICsrwqDCoMKgwqDC oMKgaW50IG4sIHN0YXJ0LCBsZW47Cj4gPiArKwo+ID4gKyvCoMKgwqDCoMKgwqByZSA9IGFzX3Jl Z2V4KGFuMSwgJnNyZWcpOwo+ID4gKyvCoMKgwqDCoMKgwqBuID0gcmVnZXhlYyhyZSwgYXMwLCAx LCBwbWF0Y2gsIDApOwo+ID4gKyvCoMKgwqDCoMKgwqBpZiAocmUgPT0gJnNyZWcpCj4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZWdmcmVlKHJlKTsKPiA+ICsrwqDCoMKgwqDCoMKg c3RhcnQgPSAwOwo+ID4gKyvCoMKgwqDCoMKgwqBsZW4gPSAtMTsKPiA+ICsrwqDCoMKgwqDCoMKg aWYgKG4gPT0gMCkgewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RhcnQgPSBw bWF0Y2hbMF0ucm1fc28gKyAxOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGVu ID0gcG1hdGNoWzBdLnJtX2VvIC0gcG1hdGNoWzBdLnJtX3NvOwo+ID4gKyvCoMKgwqDCoMKgwqB9 Cj4gPiArK8KgwqDCoMKgwqDCoHNldHZhcl9pKG5ld3ZhcigiUkxFTkdUSCIpLCBsZW4pOwo+ID4g KyvCoMKgwqDCoMKgwqByZXR1cm4gc2V0dmFyX2kobmV3dmFyKCJSU1RBUlQiKSwgc3RhcnQpOwo+ ID4gKyt9Cj4gPiArKwo+ID4gKysvKiBSZWR1Y2Ugc3RhY2sgdXNhZ2UgaW4gZXZhbHVhdGUoKSBi eSBrZWVwaW5nIGJ1aWx0aW5zJyBjb2RlCj4gPiBzZXBhcmF0ZSAqLwo+ID4gKyBzdGF0aWMgTk9J TkxJTkUgdmFyICpleGVjX2J1aWx0aW4obm9kZSAqb3AsIHZhciAqcmVzKQo+ID4gKyB7Cj4gPiAr ICNkZWZpbmUgdHNwbCAoRy5leGVjX2J1aWx0aW5fX3RzcGwpCj4gPiArIAo+ID4gKy3CoMKgwqDC oMKgwqB2YXIgKnR2Owo+ID4gKyvCoMKgwqDCoMKgwqB2YXIgKnRtcHZhcnM7Cj4gPiArwqDCoMKg wqDCoMKgwqBub2RlICphbls0XTsKPiA+ICvCoMKgwqDCoMKgwqDCoHZhciAqYXZbNF07Cj4gPiAr wqDCoMKgwqDCoMKgwqBjb25zdCBjaGFyICphc1s0XTsKPiA+ICstwqDCoMKgwqDCoMKgcmVnbWF0 Y2hfdCBwbWF0Y2hbMl07Cj4gPiArLcKgwqDCoMKgwqDCoHJlZ2V4X3Qgc3JlZywgKnJlOwo+ID4g K8KgwqDCoMKgwqDCoMKgbm9kZSAqc3BsOwo+ID4gK8KgwqDCoMKgwqDCoMKgdWludDMyX3QgaXNy LCBpbmZvOwo+ID4gK8KgwqDCoMKgwqDCoMKgaW50IG5hcmdzOwo+ID4gK8KgwqDCoMKgwqDCoMKg dGltZV90IHR0Owo+ID4gK8KgwqDCoMKgwqDCoMKgaW50IGksIGwsIGxsLCBuOwo+ID4gKyAKPiA+ ICstwqDCoMKgwqDCoMKgdHYgPSBudmFsbG9jKDQpOwo+ID4gKyvCoMKgwqDCoMKgwqB0bXB2YXJz ID0gbnZhbGxvYyg0KTsKPiA+ICsrI2RlZmluZSBUTVBWQVIwICh0bXB2YXJzKQo+ID4gKysjZGVm aW5lIFRNUFZBUjEgKHRtcHZhcnMgKyAxKQo+ID4gKysjZGVmaW5lIFRNUFZBUjIgKHRtcHZhcnMg KyAyKQo+ID4gKysjZGVmaW5lIFRNUFZBUjMgKHRtcHZhcnMgKyAzKQo+ID4gKysjZGVmaW5lIFRN UFZBUihpKSAodG1wdmFycyArIChpKSkKPiA+ICvCoMKgwqDCoMKgwqDCoGlzciA9IGluZm8gPSBv cC0+aW5mbzsKPiA+ICvCoMKgwqDCoMKgwqDCoG9wID0gb3AtPmwubjsKPiA+ICsgCj4gPiArwqDC oMKgwqDCoMKgwqBhdlsyXSA9IGF2WzNdID0gTlVMTDsKPiA+ICvCoMKgwqDCoMKgwqDCoGZvciAo aSA9IDA7IGkgPCA0ICYmIG9wOyBpKyspIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBhbltpXSA9IG5leHRhcmcoJm9wKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmIChpc3IgJiAweDA5MDAwMDAwKQo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGF2W2ldID0gZXZhbHVhdGUoYW5baV0sICZ0dltpXSk7Cj4gPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoaXNyICYgMHgwODAwMDAwMCkKPiA+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhc1tpXSA9IGdldHZh cl9zKGF2W2ldKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChpc3IgJiAw eDA5MDAwMDAwKSB7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgYXZbaV0gPSBldmFsdWF0ZShhbltpXSwgVE1QVkFSKGkpKTsKPiA+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoaXNyICYgMHgwODAwMDAwMCkK PiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgYXNbaV0gPSBnZXR2YXJfcyhhdltpXSk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaXNyID4+PSAx Owo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gKyAKPiA+ICtAQCAtMjM4Niw4ICsyNjE4LDggQEAg c3RhdGljIE5PSU5MSU5FIHZhciAqZXhlY19idWlsdGluKG5vZGUgKm9wLAo+ID4gdmFyICpyZXMp Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciAqcywgKnMxOwo+ID4gKyAK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAobmFyZ3MgPiAyKSB7Cj4gPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3BsID0gKGFuWzJd LT5pbmZvICYgT1BDTFNNQVNLKSA9PQo+ID4gT0NfUkVHRVhQCj4gPiA/Cj4gPiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGFuWzJd IDoKPiA+IG1rX3NwbGl0dGVyKGdldHZhcl9zKGV2YWx1YXRlKGFuWzJdLCAmdHZbMl0pKSwgJnRz cGwpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNw bCA9IChhblsyXS0+aW5mbyA9PSBUSV9SRUdFWFApID8gYW5bMl0KPiA+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgOgo+ID4gbWtf c3BsaXR0ZXIoZ2V0dmFyX3MoZXZhbHVhdGUoYW5bMl0sIFRNUFZBUjIpKSwgJnRzcGwpOwo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7Cj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNwbCA9ICZmc3BsaXR0ZXIubjsKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArQEAgLTI1MDEsMjAgKzI3MzMs NyBAQCBzdGF0aWMgTk9JTkxJTkUgdmFyICpleGVjX2J1aWx0aW4obm9kZSAqb3AsCj4gPiB2YXIg KnJlcykKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ICsgCj4g PiArwqDCoMKgwqDCoMKgwqBjYXNlIEJfbWE6Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZSA9IGFzX3JlZ2V4KGFuWzFdLCAmc3JlZyk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBuID0gcmVnZXhlYyhyZSwgYXNbMF0sIDEsIHBtYXRjaCwgMCk7Cj4gPiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAobiA9PSAwKSB7Cj4gPiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcG1hdGNoWzBdLnJtX3NvKys7Cj4gPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcG1hdGNoWzBdLnJt X2VvKys7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ID4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBtYXRjaFswXS5ybV9z byA9IDA7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cG1hdGNoWzBdLnJtX2VvID0gLTE7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9 Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXR2YXJfaShuZXd2YXIoIlJTVEFS VCIpLCBwbWF0Y2hbMF0ucm1fc28pOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg c2V0dmFyX2kobmV3dmFyKCJSTEVOR1RIIiksIHBtYXRjaFswXS5ybV9lbyAtCj4gPiBwbWF0Y2hb MF0ucm1fc28pOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2V0dmFyX2kocmVz LCBwbWF0Y2hbMF0ucm1fc28pOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYg KHJlID09ICZzcmVnKQo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJlZ2ZyZWUocmUpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVz ID0gZG9fbWF0Y2goYW5bMV0sIGFzWzBdKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBicmVhazsKPiA+ICsgCj4gPiArwqDCoMKgwqDCoMKgwqBjYXNlIEJfZ2U6Cj4gPiArQEAg LTI1MzAsMTQgKzI3NDksNzkgQEAgc3RhdGljIE5PSU5MSU5FIHZhciAqZXhlY19idWlsdGluKG5v ZGUKPiA+ICpvcCwKPiA+IHZhciAqcmVzKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGJyZWFrOwo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gKyAKPiA+ICstwqDCoMKgwqDCoMKg bnZmcmVlKHR2KTsKPiA+ICsrwqDCoMKgwqDCoMKgbnZmcmVlKHRtcHZhcnMsIDQpOwo+ID4gKysj dW5kZWYgVE1QVkFSMAo+ID4gKysjdW5kZWYgVE1QVkFSMQo+ID4gKysjdW5kZWYgVE1QVkFSMgo+ ID4gKysjdW5kZWYgVE1QVkFSMwo+ID4gKysjdW5kZWYgVE1QVkFSCj4gPiArKwo+ID4gK8KgwqDC oMKgwqDCoMKgcmV0dXJuIHJlczsKPiA+ICsgI3VuZGVmIHRzcGwKPiA+ICsgfQo+ID4gKyAKPiA+ ICsrLyogaWYgZXhwciBsb29rcyBsaWtlICJ2YXI9dmFsdWUiLCBwZXJmb3JtIGFzc2lnbm1lbnQg YW5kIHJldHVybgo+ID4gMSwKPiA+ICsrICogb3RoZXJ3aXNlIHJldHVybiAwICovCj4gPiArK3N0 YXRpYyBpbnQgaXNfYXNzaWdubWVudChjb25zdCBjaGFyICpleHByKQo+ID4gKyt7Cj4gPiArK8Kg wqDCoMKgwqDCoGNoYXIgKmV4cHJjLCAqdmFsOwo+ID4gKysKPiA+ICsrwqDCoMKgwqDCoMKgdmFs ID0gKGNoYXIqKWVuZG9mbmFtZShleHByKTsKPiA+ICsrwqDCoMKgwqDCoMKgaWYgKHZhbCA9PSAo Y2hhciopZXhwciB8fCAqdmFsICE9ICc9Jykgewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuIEZBTFNFOwo+ID4gKyvCoMKgwqDCoMKgwqB9Cj4gPiArKwo+ID4gKyvCoMKg wqDCoMKgwqBleHByYyA9IHhzdHJkdXAoZXhwcik7Cj4gPiArK8KgwqDCoMKgwqDCoHZhbCA9IGV4 cHJjICsgKHZhbCAtIGV4cHIpOwo+ID4gKyvCoMKgwqDCoMKgwqAqdmFsKysgPSAnXDAnOwo+ID4g KysKPiA+ICsrwqDCoMKgwqDCoMKgdW5lc2NhcGVfc3RyaW5nX2luX3BsYWNlKHZhbCk7Cj4gPiAr K8KgwqDCoMKgwqDCoHNldHZhcl91KG5ld3ZhcihleHByYyksIHZhbCk7Cj4gPiArK8KgwqDCoMKg wqDCoGZyZWUoZXhwcmMpOwo+ID4gKyvCoMKgwqDCoMKgwqByZXR1cm4gVFJVRTsKPiA+ICsrfQo+ ID4gKysKPiA+ICsrLyogc3dpdGNoIHRvIG5leHQgaW5wdXQgZmlsZSAqLwo+ID4gKytzdGF0aWMg cnN0cmVhbSAqbmV4dF9pbnB1dF9maWxlKHZvaWQpCj4gPiArK3sKPiA+ICsrI2RlZmluZSByc23C oMKgwqDCoMKgwqDCoMKgwqAgKEcubmV4dF9pbnB1dF9maWxlX19yc20pCj4gPiArKyNkZWZpbmUg ZmlsZXNfaGFwcGVuIChHLm5leHRfaW5wdXRfZmlsZV9fZmlsZXNfaGFwcGVuKQo+ID4gKysKPiA+ ICsrwqDCoMKgwqDCoMKgY29uc3QgY2hhciAqZm5hbWUsICppbmQ7Cj4gPiArKwo+ID4gKyvCoMKg wqDCoMKgwqBpZiAocnNtLkYpCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmY2xv c2UocnNtLkYpOwo+ID4gKyvCoMKgwqDCoMKgwqByc20uRiA9IE5VTEw7Cj4gPiArK8KgwqDCoMKg wqDCoHJzbS5wb3MgPSByc20uYWR2ID0gMDsKPiA+ICsrCj4gPiArK8KgwqDCoMKgwqDCoGZvciAo OzspIHsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChnZXR2YXJfaShpbnR2 YXJbQVJHSU5EXSkrMSA+PQo+ID4gZ2V0dmFyX2koaW50dmFyW0FSR0NdKSkgewo+ID4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChmaWxlc19oYXBwZW4p Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHJldHVybiBOVUxMOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGZuYW1lID0gIi0iOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJzbS5GID0gc3RkaW47Cj4gPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB9Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbmQgPSBn ZXR2YXJfcyhpbmN2YXIoaW50dmFyW0FSR0lORF0pKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGZuYW1lID0gZ2V0dmFyX3MoZmluZHZhcihpYW1hcnJheShpbnR2YXJbQVJHVl0p LAo+ID4gaW5kKSk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZm5hbWUg JiYgKmZuYW1lICYmICFpc19hc3NpZ25tZW50KGZuYW1lKSkgewo+ID4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJzbS5GID0geGZvcGVuX3N0ZGluKGZuYW1l KTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVh azsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICsrwqDCoMKgwqDCoMKg fQo+ID4gKysKPiA+ICsrwqDCoMKgwqDCoMKgZmlsZXNfaGFwcGVuID0gVFJVRTsKPiA+ICsrwqDC oMKgwqDCoMKgc2V0dmFyX3MoaW50dmFyW0ZJTEVOQU1FXSwgZm5hbWUpOwo+ID4gKyvCoMKgwqDC oMKgwqByZXR1cm4gJnJzbTsKPiA+ICsrI3VuZGVmIHJzbQo+ID4gKysjdW5kZWYgZmlsZXNfaGFw cGVuCj4gPiArK30KPiA+ICsrCj4gPiArIC8qCj4gPiArwqAgKiBFdmFsdWF0ZSBub2RlIC0gdGhl IGhlYXJ0IG9mIHRoZSBwcm9ncmFtLiBTdXBwbGllZCB3aXRoCj4gPiBzdWJ0cmVlCj4gPiArLSAq IGFuZCBwbGFjZSB3aGVyZSB0byBzdG9yZSByZXN1bHQuIHJldHVybnMgcHRyIHRvIHJlc3VsdC4K PiA+ICsrICogYW5kICJyZXMiIHZhcmlhYmxlIHRvIGFzc2lnbiB0aGUgcmVzdWx0IHRvIGlmIHdl IGV2YWx1YXRlIGFuCj4gPiBleHByZXNzaW9uLgo+ID4gKysgKiBJZiBub2RlIHJlZmVycyB0byBl LmcuIGEgdmFyaWFibGUgb3IgYSBmaWVsZCwgbm8gYXNzaWdubWVudAo+ID4gaGFwcGVucy4KPiA+ ICsrICogUmV0dXJuIHB0ciB0byB0aGUgcmVzdWx0ICh3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSB0 aGUgInJlcyIKPiA+IHZhcmlhYmxlISkKPiA+ICvCoCAqLwo+ID4gKyAjZGVmaW5lIFhDKG4pICgo bikgPj4gOCkKPiA+ICsgCj4gPiArQEAgLTI1NDksMTQgKzI4MzMsMTYgQEAgc3RhdGljIHZhciAq ZXZhbHVhdGUobm9kZSAqb3AsIHZhciAqcmVzKQo+ID4gKyAjZGVmaW5lIHNlZWTCoMKgIChHLmV2 YWx1YXRlX19zZWVkKQo+ID4gKyAjZGVmaW5lIHNyZWfCoMKgIChHLmV2YWx1YXRlX19zcmVnKQo+ ID4gKyAKPiA+ICstwqDCoMKgwqDCoMKgdmFyICp2MTsKPiA+ICsrwqDCoMKgwqDCoMKgdmFyICp0 bXB2YXJzOwo+ID4gKyAKPiA+ICvCoMKgwqDCoMKgwqDCoGlmICghb3ApCj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHNldHZhcl9zKHJlcywgTlVMTCk7Cj4gPiArIAo+ ID4gK8KgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoImVudGVyZWQgJXMoKVxuIiwgX19m dW5jX18pOwo+ID4gKyAKPiA+ICstwqDCoMKgwqDCoMKgdjEgPSBudmFsbG9jKDIpOwo+ID4gKyvC oMKgwqDCoMKgwqB0bXB2YXJzID0gbnZhbGxvYygyKTsKPiA+ICsrI2RlZmluZSBUTVBWQVIwICh0 bXB2YXJzKQo+ID4gKysjZGVmaW5lIFRNUFZBUjEgKHRtcHZhcnMgKyAxKQo+ID4gKyAKPiA+ICvC oMKgwqDCoMKgwqDCoHdoaWxlIChvcCkgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCB7Cj4gPiArQEAgLTI1NzgsNDggKzI4NjQsMzUgQEAgc3RhdGljIHZhciAqZXZh bHVhdGUobm9kZSAqb3AsIHZhciAqcmVzKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoG9wMSA9IG9wLT5sLm47Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVi dWdfcHJpbnRmX2V2YWwoIm9waW5mbzolMDh4IG9wbjolMDh4XG4iLCBvcGluZm8sCj4gPiBvcG4p Owo+ID4gKyAKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qICJkZWxldGUiIGlz IHNwZWNpYWw6Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiAiZGVsZXRlIGFy cmF5W3Zhci0tXSIgbXVzdCBldmFsdWF0ZSBpbmRleCBleHByCj4gPiBvbmx5IG9uY2UsCj4gPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBtdXN0IG5vdCBldmFsdWF0ZSBpdCBpbiAi ZXhlY3V0ZSBpbmV2aXRhYmxlCj4gPiB0aGluZ3MiIHBhcnQuCj4gPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKi8KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChY QyhvcGluZm8gJiBPUENMU01BU0spID09IFhDKE9DX0RFTEVURSkpIHsKPiA+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1aW50MzJfdCBpbmZvID0gb3AxLT5p bmZvICYgT1BDTFNNQVNLOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHZhciAqdjsKPiA+ICstCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIkRFTEVURVxuIik7Cj4gPiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGluZm8gPT0gT0Nf VkFSKSB7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHYgPSBvcDEtPmwudjsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2UgaWYgKGluZm8gPT0gT0NfRk5BUkcpIHsKPiA+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgdiA9ICZmbmFyZ3Nbb3AxLT5sLmFpZHhdOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRheF9lcnJvcihF TVNHX05PVF9BUlJBWSk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBleGVj dXRlIGluZXZpdGFibGUgdGhpbmdzICovCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAob3BpbmZvICYgT0ZfUkVTMSkgewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlmICgob3BpbmZvICYgT0ZfUkVRVUlSRUQpICYmICFvcDEpCj4g PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHN5bnRheF9lcnJvcihFTVNHX1RPT19GRVdfQVJHUyk7Cj4gPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgTC52ID0gZXZhbHVhdGUob3AxLCBUTVBW QVIwKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp ZiAob3BpbmZvICYgT0ZfU1RSMSkgewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBMLnMgPSBnZXR2YXJfcyhMLnYpOwo+ID4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiTC5zOiclcydcbiIsCj4gPiBMLnMpOwo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKG9wMS0+ci5uKSB7IC8qIGFy cmF5IHJlZj8gKi8KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgY29uc3QgY2hhciAqczsKPiA+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcyA9IGdldHZhcl9z KGV2YWx1YXRlKG9wMS0+ci5uLAo+ID4gdjEpKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaGFzaF9yZW1vdmUoaWFtYXJy YXkodiksIHMpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoH0gZWxzZSB7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNsZWFyX2FycmF5KGlhbWFycmF5KHYpKTsKPiA+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAob3BpbmZvICYgT0Zf TlVNMSkgewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBMX2QgPSBnZXR2YXJfaShMLnYpOwo+ID4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmlu dGZfZXZhbCgiTF9kOiVmXG4iLCBMX2QpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZ290byBuZXh0Owo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgfQo+ID4gKy0KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGV4ZWN1dGUg aW5ldml0YWJsZSB0aGluZ3MgKi8KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlm IChvcGluZm8gJiBPRl9SRVMxKQo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoEwudiA9IGV2YWx1YXRlKG9wMSwgdjEpOwo+ID4gKy3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWYgKG9waW5mbyAmIE9GX1JFUzIpCj4gPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgUi52ID0gZXZhbHVhdGUob3AtPnIubiwgdjEr MSk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAob3BpbmZvICYgT0ZfU1RS MSkgewo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEwu cyA9IGdldHZhcl9zKEwudik7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIkwuczonJXMnXG4iLCBMLnMpOwo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmIChvcGluZm8gJiBPRl9TVFIyKSB7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgUi5zID0gZ2V0dmFyX3MoUi52KTsKPiA+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgi Ui5zOiclcydcbiIsIFIucyk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4g PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAob3BpbmZvICYgT0ZfTlVNMSkgewo+ ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoExfZCA9IGdl dHZhcl9pKEwudik7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIkxfZDolZlxuIiwgTF9kKTsKPiA+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoC8qIE5COiBNdXN0IGdldCBzdHJpbmcvbnVtZXJpYyB2YWx1ZXMg b2YgTCAoZG9uZQo+ID4gYWJvdmUpCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg KiBfYmVmb3JlXyBldmFsdWF0ZSgpJ2luZyBSLnY6IGlmIGJvdGggTCBhbmQgUiBhcmUKPiA+ICRO Tk5zLAo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogYW5kIHJpZ2h0IG9uZSBp cyBsYXJnZSwgdGhlbiBMLnYgcG9pbnRzIHRvCj4gPiBGaWVsZHNbTk5OMV0sCj4gPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBzZWNvbmQgZXZhbHVhdGUoKSByZWFsbG9jYXRlcyBh bmQgbW92ZXMgKCEpCj4gPiBGaWVsZHNbXSwKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAqIFIudiBwb2ludHMgdG8gRmllbGRzW05OTjJdIGJ1dCBMLnYgbm93IHBvaW50cyB0bwo+ ID4gZnJlZWQgbWVtIQo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogKFNlZW4g dHJ5aW5nIHRvIGV2YWx1YXRlICIkNDQ0ICQ0NDQ0NCIpCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKi8KPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChvcGlu Zm8gJiBPRl9SRVMyKSB7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgUi52ID0gZXZhbHVhdGUob3AtPnIubiwgVE1QVkFSMSk7Cj4gPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLy9UT0RPOiBMLnYgbWF5IGJlIGlu dmFsaWQgbm93LCBzZXQgTC52IHRvCj4gPiBOVUxMIHRvIGNhdGNoIGJ1Z3M/Cj4gPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLy9MLnYgPSBOVUxMOwo+ID4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChvcGluZm8g JiBPRl9TVFIyKSB7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoFIucyA9IGdldHZhcl9zKFIudik7Cj4gPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVn X3ByaW50Zl9ldmFsKCJSLnM6JyVzJ1xuIiwKPiA+IFIucyk7Cj4gPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoH0KPiA+ICsgCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVi dWdfcHJpbnRmX2V2YWwoInN3aXRjaCgweCV4KVxuIiwgWEMob3BpbmZvICYKPiA+IE9QQ0xTTUFT SykpOwo+ID4gK0BAIC0yNjI5LDcgKzI5MDIsOCBAQCBzdGF0aWMgdmFyICpldmFsdWF0ZShub2Rl ICpvcCwgdmFyICpyZXMpCj4gPiArIAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oC8qIHRlc3QgcGF0dGVybiAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNh c2UgWEMoIE9DX1RFU1QgKToKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZiAoKG9wMS0+aW5mbyAmIE9QQ0xTTUFTSykgPT0gT0NfQ09NTUEpIHsKPiA+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmlu dGZfZXZhbCgiVEVTVFxuIik7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKG9wMS0+aW5mbyA9PSBUSV9DT01NQSkgewo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogaXQn cyByYW5nZSBwYXR0ZXJuICovCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKG9waW5mbyAmIE9GX0NIRUNLRUQpIHx8 Cj4gPiBwdGVzdChvcDEtPmwubikpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBvcC0+aW5m byB8PSBPRl9DSEVDS0VEOwo+ID4gK0BAIC0yNjQ2LDI1ICsyOTIwLDMyIEBAIHN0YXRpYyB2YXIg KmV2YWx1YXRlKG5vZGUgKm9wLCB2YXIgKnJlcykKPiA+ICsgCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgLyoganVzdCBldmFsdWF0ZSBhbiBleHByZXNzaW9uLCBhbHNvIHVzZWQg YXMKPiA+IHVuY29uZGl0aW9uYWwganVtcCAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGNhc2UgWEMoIE9DX0VYRUMgKToKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiRVhFQ1xuIik7Cj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gKyAK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBicmFuY2gsIHVzZWQgaW4gaWYt ZWxzZSBhbmQgdmFyaW91cyBsb29wcyAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNhc2UgWEMoIE9DX0JSICk6Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIkJSXG4iKTsKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgb3AgPSBpc3RydWUoTC52KSA/IG9w LT5hLm4gOiBvcC0+ci5uOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBicmVhazsKPiA+ICsgCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgLyogaW5pdGlhbGl6ZSBmb3ItaW4gbG9vcCAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGNhc2UgWEMoIE9DX1dBTEtJTklUICk6Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIldBTEtJTklUXG4i KTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaGFz aHdhbGtfaW5pdChMLnYsIGlhbWFycmF5KFIudikpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ICsgCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgLyogZ2V0IG5leHQgYXJyYXkgaXRlbSAqLwo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMoIE9DX1dBTEtORVhUICk6Cj4gPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwo IldBTEtORVhUXG4iKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgb3AgPSBoYXNod2Fsa19uZXh0KEwudikgPyBvcC0+YS5uIDogb3AtCj4gPiA+ci5u Owo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVh azsKPiA+ICsgCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0Nf UFJJTlQgKToKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMoIE9DX1BS SU5URiApOiB7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZGVidWdfcHJpbnRmX2V2YWwoIlBSSU5UIC9cbiIpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgY2FzZSBYQyggT0NfUFJJTlRGICk6Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIlBSSU5URlxuIik7 Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB7Cj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEZJTEUgKkYgPSBzdGRvdXQ7Cj4gPiArIAo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAob3At PnIubikgewo+ID4gK0BAIC0yNjgyLDU1ICsyOTYzLDk0IEBAIHN0YXRpYyB2YXIgKmV2YWx1YXRl KG5vZGUgKm9wLCB2YXIgKnJlcykKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEYgPSByc20tPkY7Cj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICsgCj4gPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogQ2FuJ3QganVzdCBjaGVj ayAnb3BpbmZvID09IE9DX1BSSU5UJwo+ID4gaGVyZSwgcGFyc2VyIE9Scwo+ID4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGFkZGl0aW9uYWwgYml0cyB0 byBvcGluZm9zIG9mCj4gPiBwcmludC9wcmludGYKPiA+IHdpdGggcmVkaXJlY3RzCj4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgob3BpbmZvICYgT1BD TFNNQVNLKSA9PSBPQ19QUklOVCkgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFvcDEpIHsKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBmcHV0cyhnZXR2YXJfcyhpbnR2YXJbRjBdKSwKPiA+IEYpOwo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgfSBlbHNlIHsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdoaWxlIChvcDEpIHsKPiA+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2YXIgKnYgPQo+ID4gZXZhbHVhdGUo bmV4dGFyZygmb3AxKSwgdjEpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yICg7Oykgewo+ ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZhciAqdiA9Cj4gPiBldmFs dWF0ZShuZXh0YXJnKCZvcDEpLCBUTVBWQVIwKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWYgKHYtPnR5cGUgJgo+ID4gVkZfTlVNQkVSKSB7Cj4gPiArLQo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm10X251 bShnX2J1Zgo+ID4gLAo+ID4gTUFYVkFSRk1ULCBnZXR2YXJfcyhpbnR2YXJbT0ZNVF0pLAo+ID4g Ky0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiDCoMKgCj4gPiDCoGdldHZhcl9pKHYpLCBU UlVFKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZm10X251bShnZXQKPiA+IHZhCj4gPiByX3MoaW50dmFyW09GTVRdKSwKPiA+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoAo+ID4gwqDCoAo+ID4gwqDCoMKgZ2V0dmFyX2kodikpOwo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnB1dHMoZ19i dWYKPiA+ICwKPiA+IEYpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB9IGVsc2Ugewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZnB1dHMoZ2V0dmEKPiA+IHJfCj4gPiBzKHYpLCBGKTsKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gKy0KPiA+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAob3AxKQo+ID4gKy0KPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZwdXRzKGdldHZhcl8KPiA+IHMo Cj4gPiBpbnR2YXJbT0ZTXSksIEYpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmICghb3AxKQo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBmcHV0cyhnZXR2YXJfcyhpbnR2Cj4gPiBhcgo+ID4gW09GU10pLCBGKTsKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcHV0cyhnZXR2YXJf cyhpbnR2YXJbT1JTXSksIEYpOwo+ID4gKy0KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Uge8KgwqDCoMKgwqDCoMKgwqAvKiBPQ19QUklOVEYg Ki8KPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgY2hhciAqcyA9IGF3a19wcmludGYob3AxKTsKPiA+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Uge8KgwqDCoMKgwqDCoMKgwqAv KiBQUklOVEYgKi8KPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgSUZfRkVBVFVSRV9BV0tfR05VX0VYVEVOU0lPTlMoc2l6ZV8K PiA+IHQKPiA+IGxlbjspCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYXIgKnMgPSBhd2tfcHJpbnRmKG9wMSwgJmxlbik7 Cj4gPiArKyNpZiBFTkFCTEVfRkVBVFVSRV9BV0tfR05VX0VYVEVOU0lPTlMKPiA+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZndy aXRlKHMsIGxlbiwgMSwgRik7Cj4gPiArKyNlbHNlCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcHV0cyhzLCBGKTsKPiA+ ICsrI2VuZGlmCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBmcmVlKHMpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGZmbHVzaChGKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfQo+ID4gKyAKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGNh c2UgWEMoIE9DX0RFTEVURSApOiAtIG1vdmVkIHRvIGhhcHBlbiBiZWZvcmUKPiA+IGFyZwo+ID4g ZXZhbHVhdGlvbiAqLwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQygg T0NfREVMRVRFICk6Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIkRFTEVURVxuIik7Cj4gPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgLyogImRlbGV0ZSIgaXMgc3BlY2lhbDoKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiAiZGVsZXRlIGFycmF5W3Zhci0tXSIgbXVzdCBl dmFsdWF0ZQo+ID4gaW5kZXgKPiA+IGV4cHIgb25seSBvbmNlLgo+ID4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVpbnQzMl90IGluZm8gPSBvcDEtPmluZm8gJiBP UENMU01BU0s7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdmFyICp2Owo+ID4gKysKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZiAoaW5mbyA9PSBPQ19WQVIpIHsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdiA9IG9wMS0+bC52Owo+ ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSBp ZiAoaW5mbyA9PSBPQ19GTkFSRykgewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2ID0gJmZuYXJnc1tvcDEtPmwuYWlkeF07 Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNl IHsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgc3ludGF4X2Vycm9yKEVNU0dfTk9UX0FSUkFZKTsKPiA+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKG9wMS0+ci5uKSB7IC8qIGFycmF5IHJl Zj8gKi8KPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgY29uc3QgY2hhciAqczsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcyA9IGdldHZhcl9zKGV2YWx1 YXRlKG9wMS0+ci5uLAo+ID4gVE1QVkFSMCkpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoYXNoX3JlbW92ZShpYW1hcnJh eSh2KSwgcyk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgfSBlbHNlIHsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgY2xlYXJfYXJyYXkoaWFtYXJyYXkodikpOwo+ID4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICsgCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgY2FzZSBYQyggT0NfTkVXU09VUkNFICk6Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIk5FV1NPVVJDRVxuIik7 Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdfcHJv Z25hbWUgPSBvcC0+bC5uZXdfcHJvZ25hbWU7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gKyAKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19SRVRVUk4gKToKPiA+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiUkVUVVJOXG4i KTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29w eXZhcihyZXMsIEwudik7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGJyZWFrOwo+ID4gKyAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBjYXNlIFhDKCBPQ19ORVhURklMRSApOgo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJORVhURklMRVxuIik7Cj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5leHRmaWxlID0g VFJVRTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19ORVhU ICk6Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVi dWdfcHJpbnRmX2V2YWwoIk5FWFRcbiIpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBuZXh0cmVjID0gVFJVRTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19ET05FICk6Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIkRPTkVcbiIpOwo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbHJ2YXIo cmVzKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg YnJlYWs7Cj4gPiArIAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMo IE9DX0VYSVQgKToKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBhd2tfZXhpdChMX2QpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJFWElUXG4iKTsKPiA+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAob3AxKQo+ID4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBHLmV4 aXRjb2RlID0gKGludClMX2Q7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgYXdrX2V4aXQoKTsKPiA+ICsgCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgLyogLS0gcmVjdXJzaXZlIG5vZGUgdHlwZSAtLSAqLwo+ID4gKyAKPiA+ICtAQCAt Mjc0OSwxNSArMzA2OSwxOCBAQCBzdGF0aWMgdmFyICpldmFsdWF0ZShub2RlICpvcCwgdmFyICpy ZXMpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJy ZWFrOwo+ID4gKyAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBP Q19JTiApOgo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGRlYnVnX3ByaW50Zl9ldmFsKCJJTlxuIik7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNldHZhcl9pKHJlcywgaGFzaF9zZWFyY2goaWFtYXJyYXko Ui52KSwKPiA+IEwucykKPiA+ID8gMSA6IDApOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ICsgCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0NfUkVHRVhQICk6Cj4gPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIlJFR0VYUFxu Iik7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG9w MSA9IG9wOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBMLnMgPSBnZXR2YXJfcyhpbnR2YXJbRjBdKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byByZV9jb250Owo+ID4gKyAKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19NQVRDSCApOgo+ID4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJN QVRDSFxuIik7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoG9wMSA9IG9wLT5yLm47Cj4gPiArwqAgcmVfY29udDoKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgewo+ID4gK0BAIC0yNzcyLDYxICszMDk1LDgw IEBAIHN0YXRpYyB2YXIgKmV2YWx1YXRlKG5vZGUgKm9wLCB2YXIgKnJlcykKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19NT1ZFICk6Cj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJN T1ZFXG4iKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgLyogaWYgc291cmNlIGlzIGEgdGVtcG9yYXJ5IHN0cmluZywganVzawo+ID4gcmVsaW5rIGl0 IHRvIGRlc3QgKi8KPiA+ICstLy9EaXNhYmxlZDogaWYgUi52IGlzIG51bWVyaWMgYnV0IGhhcHBl bnMgdG8gaGF2ZSBjYWNoZWQgUi52LQo+ID4gPiBzdHJpbmcsCj4gPiArLS8vdGhlbiBMLnYgZW5k cyB1cCBiZWluZyBhIHN0cmluZywgd2hpY2ggaXMgd3JvbmcKPiA+ICstLy/CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKFIudiA9PSB2MSsxICYmIFIudi0+c3RyaW5n KSB7Cj4gPiArLS8vwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXMgPSBzZXR2YXJfcChMLnYsIFIudi0+c3RyaW5nKTsKPiA+ICstLy/CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFIudi0+ c3RyaW5nID0gTlVMTDsKPiA+ICstLy/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfSBlbHNlIHsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZiAoUi52ID09IFRNUFZBUjEKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgJiYgIShSLnYtPnR5cGUgJiBWRl9OVU1CRVIpCj4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oC8qIFdoeSBjaGVjayAhTlVNQkVSPyBpZiBSLnYgaXMgYQo+ID4gbnVtYmVyIGJ1dCBoYXMgY2Fj aGVkIFIudi0+c3RyaW5nLAo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBMLnYgZW5kcyB1cCBhIHN0cmluZywgd2hpY2gg aXMKPiA+IHdyb25nICovCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC8qJiYgUi52LT5zdHJpbmcgLSBhbHdheXMgbm90IE5VTEwKPiA+IChyaWdodD8p Cj4gPiAqLwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCkgewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqByZXMgPSBzZXR2YXJfcChMLnYsIFIudi0+c3RyaW5nKTsKPiA+IC8qCj4g PiBhdm9pZHMgc3RyZHVwICovCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFIudi0+c3RyaW5nID0gTlVMTDsKPiA+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgcmVzID0gY29weXZhcihMLnYsIFIudik7Cj4gPiArLS8vwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB9Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGJyZWFrOwo+ID4gKyAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBjYXNlIFhDKCBPQ19URVJOQVJZICk6Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWYgKChvcC0+ci5uLT5pbmZvICYgT1BDTFNNQVNLKSAhPQo+ID4g T0NfQ09MT04pCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZGVidWdfcHJpbnRmX2V2YWwoIlRFUk5BUllcbiIpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChvcC0+ci5uLT5pbmZvICE9IFRJX0NPTE9O KQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgc3ludGF4X2Vycm9yKEVNU0dfUE9TU0lCTEVfRVJST1IpOwo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXMgPSBldmFsdWF0ZShp c3RydWUoTC52KSA/IG9wLT5yLm4tPmwubiA6Cj4gPiBvcC0+ci5uLT5yLm4sIHJlcyk7Cj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4g KyAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19GVU5DICk6 IHsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2YXIg KnZiZWcsICp2Owo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHZhciAqYXJndmFycywgKnN2X2ZuYXJnczsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29uc3QgY2hhciAqc3ZfcHJvZ25hbWU7Cj4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50IG5hcmdzLCBpOwo+ ID4gKyAKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAv KiBUaGUgYm9keSBtaWdodCBiZSBlbXB0eSwgc3RpbGwgaGFzIHRvCj4gPiBldmFsCj4gPiB0aGUg YXJncyAqLwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlmICghb3AtPnIubi0+aW5mbyAmJiAhb3AtPnIuZi0+Ym9keS5maXJzdCkKPiA+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgi RlVOQ1xuIik7Cj4gPiArKwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlmICghb3AtPnIuZi0+ZGVmaW5lZCkKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRheF9lcnJvcihF TVNHX1VOREVGX0ZVTkMpOwo+ID4gKyAKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB2YmVnID0gdiA9IG52YWxsb2Mob3AtPnIuZi0+bmFyZ3MgKyAxKTsK PiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBUaGUg Ym9keSBtaWdodCBiZSBlbXB0eSwgc3RpbGwgaGFzIHRvCj4gPiBldmFsCj4gPiB0aGUgYXJncyAq Lwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5hcmdz ID0gb3AtPnIuZi0+bmFyZ3M7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgYXJndmFycyA9IG52YWxsb2MobmFyZ3MpOwo+ID4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGkgPSAwOwo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3aGlsZSAob3AxKSB7Cj4gPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZh ciAqYXJnID0gZXZhbHVhdGUobmV4dGFyZygmb3AxKSwKPiA+IHYxKTsKPiA+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29weXZh cih2LCBhcmcpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB2LT50eXBlIHw9IFZGX0NISUxEOwo+ID4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2LT54LnBh cmVudCA9IGFyZzsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCsrdiAtIHZiZWcgPj0gb3AtPnIuZi0+bmFyZ3MpCj4g PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmFyICphcmcgPSBldmFsdWF0 ZShuZXh0YXJnKCZvcDEpLAo+ID4gVE1QVkFSMCk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChpID09IG5hcmdzKSB7 Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBjYWxsIHdpdGggbW9yZSBhcmd1bWVudHMKPiA+ IHRoYW4gZnVuY3Rpb24gdGFrZXMuCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiAoZ2F3ayB3 YXJuczogIndhcm5pbmc6Cj4gPiBmdW5jdGlvbiAnZicgY2FsbGVkIHdpdGggbW9yZSBhcmd1bWVu dHMgdGhhbiBkZWNsYXJlZCIpLgo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogVGhleSBhcmUg c3RpbGwKPiA+IGV2YWx1YXRlZCwKPiA+IGJ1dCBkaXNjYXJkZWQ6ICovCj4gPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBjbHJ2YXIoYXJnKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRpbnVl Owo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvcHl2YXIoJmFyZ3ZhcnNbaV0sIGFyZyk7Cj4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGFyZ3ZhcnNbaV0udHlwZSB8PSBWRl9DSElMRDsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYXJndmFyc1tpXS54LnBhcmVu dCA9IGFyZzsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaSsrOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArIAo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHYgPSBmbmFyZ3M7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm5hcmdzID0gdmJlZzsKPiA+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdl9mbmFyZ3MgPSBmbmFyZ3M7Cj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN2X3Byb2duYW1l ID0gZ19wcm9nbmFtZTsKPiA+ICsgCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZm5hcmdzID0gYXJndmFyczsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVzID0gZXZhbHVhdGUob3AtPnIuZi0+Ym9keS5m aXJzdCwgcmVzKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBudmZyZWUoYXJndmFycywgbmFyZ3MpOwo+ID4gKyAKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ19wcm9nbmFtZSA9IHN2X3Byb2duYW1lOwo+ ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG52ZnJlZShm bmFyZ3MpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGZuYXJncyA9IHY7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZm5hcmdzID0gc3ZfZm5hcmdzOwo+ID4gKyAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfQo+ID4gKyAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBj YXNlIFhDKCBPQ19HRVRMSU5FICk6Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBj YXNlIFhDKCBPQ19QR0VUTElORSApOiB7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIkdFVExJTkUgL1xuIik7Cj4gPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19QR0VUTElORSApOgo+ID4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50 Zl9ldmFsKCJQR0VUTElORVxuIik7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB7 Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJzdHJl YW0gKnJzbTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaW50IGk7Cj4gPiArIAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZiAob3AxKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByc20gPSBuZXdmaWxlKEwucyk7Cj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAoIXJzbS0+Rikgewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogTkI6IGNhbid0 IHVzZSAib3BpbmZvID09Cj4gPiBUSV9QR0VUTElORSIsIHdvdWxkIGJyZWFrICJjbWQiIHwgZ2V0 bGluZSAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgob3BpbmZvICYgT1BDTFNNQVNL KSA9PQo+ID4gT0NfUEdFVExJTkUpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcnNtLT5GID0gcG9wZW4oTC5zLAo+ID4gInIiKTsKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcnNtLT5pc19waXBlID0KPiA+IFRSVUU7Cj4gPiArQEAg LTI4NjEsMTYgKzMyMDMsMzQgQEAgc3RhdGljIHZhciAqZXZhbHVhdGUobm9kZSAqb3AsIHZhciAq cmVzKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIHNpbXBsZSBidWlsdGlu cyAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMoIE9DX0ZCTFRJ TiApOiB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGRvdWJsZSBSX2QgPSBSX2Q7IC8qIGZvciBjb21waWxlciAqLwo+ID4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJGQkxUSU5c biIpOwo+ID4gKysKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAob3AxICYmIG9wMS0+aW5mbyA9PSBUSV9DT01NQSkKPiA+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogU2ltcGxl IGJ1aWx0aW5zIHRha2Ugb25lIGFyZwo+ID4gbWF4aW11bSAqLwo+ID4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzeW50YXhfZXJy b3IoIlRvbyBtYW55IGFyZ3VtZW50cyIpOwo+ID4gKyAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3dpdGNoIChvcG4pIHsKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBGX2luOgo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Ul9kID0gKGxvbmcgbG9uZylMX2Q7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ICsgCj4gPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBGX3JuOgo+ID4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBSX2QgPSAoZG91YmxlKXJhbmQoKSAvCj4gPiAoZG91YmxlKVJBTkRfTUFYOwo+ID4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgRl9ybjogLypyYW5k Ki8KPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKG9wMSkKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRheF9lcnJv cigiVG9vIG1hbnkKPiA+IGFyZ3VtZW50cyIpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHsKPiA+ICsrI2lmIFJBTkRfTUFYID49IDB4N2ZmZmZmZmYK PiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgdWludDMyX3QgdSA9ICgodWludDMyX3QpcmFuZCgpIDw8Cj4gPiAxNikKPiA+IF4g cmFuZCgpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB1aW50NjRfdCB2ID0gKCh1aW50NjRfdClyYW5kKCkgPDwKPiA+IDMy KQo+ID4gPiB1Owo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAvKiB0aGUgYWJvdmUgc2hpZnQrb3IgaXMgb3B0aW1pemVkCj4g PiBvdXQgb24gMzItYml0IGFyY2hlcyAqLwo+ID4gKysjIGlmIFJBTkRfTUFYID4gMHg3ZmZmZmZm Zgo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB2ICY9IDB4N2ZmZmZmZmZmZmZmZmZmZlVMTDsKPiA+ICsrIyBlbmRpZgo+ID4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBSX2QgPSAoZG91YmxlKXYgLwo+ID4gMHg4MDAwMDAwMDAwMDAwMDAwVUxMOwo+ID4gKysj ZWxzZQo+ID4gKysjIGVycm9yIE5vdCBpbXBsZW1lbnRlZCBmb3IgdGhpcyB2YWx1ZSBvZiBSQU5E X01BWAo+ID4gKysjZW5kaWYKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gKy0KPiA+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgRl9jbzoKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChF TkFCTEVfRkVBVFVSRV9BV0tfTElCTSkgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFJfZCA9 IGNvcyhMX2QpOwo+ID4gK0BAIC0yOTEwLDcgKzMyNzAsOSBAQCBzdGF0aWMgdmFyICpldmFsdWF0 ZShub2RlICpvcCwgdmFyICpyZXMpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzcmFuZChzZWVkKTsKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJy ZWFrOwo+ID4gKyAKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBjYXNlIEZfdGk6Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY2FzZSBGX3RpOiAvKnN5c3RpbWUqLwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAob3AxKQo+ID4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vycm9yKCJUb28gbWFueQo+ID4gYXJndW1lbnRzIik7 Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBSX2QgPSB0aW1lKE5VTEwpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiArIAo+ID4g K0BAIC0yOTQ5LDcgKzMzMTEsNyBAQCBzdGF0aWMgdmFyICpldmFsdWF0ZShub2RlICpvcCwgdmFy ICpyZXMpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByc3RyZWFtICpyc207Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbnQgZXJyID0gMDsKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJzbSA9IChyc3RyZWFtCj4gPiAqKWhhc2hfc2VhcmNoKGZkaGFzaCwKPiA+IEwucyk7 Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJPQ19GQkxUSU4gRl9jbAo+ID4gcnNtOiVwXG4i LCByc20pOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiT0NfRkJMVElOIGNsb3NlOgo+ID4g b3AxOiVwIHM6JyVzJyByc206JXBcbiIsIG9wMSwgTC5zLCByc20pOwo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJz bSkgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJPQ19GQkxU SQo+ID4gTgo+ID4gRl9jbCAiCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCJyc20tPmlzX3BpcGU6JWQsIC0KPiA+ID4gRjolcFxuIiwKPiA+ICtAQCAtMjk2MCw2ICsz MzIyLDExIEBAIHN0YXRpYyB2YXIgKmV2YWx1YXRlKG5vZGUgKm9wLCB2YXIgKnJlcykKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAocnNt LT5GKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSByc20t PmlzX3BpcGUKPiA+ID8KPiA+IHBjbG9zZShyc20tPkYpIDogZmNsb3NlKHJzbS0+Rik7Cj4gPiAr Ky8vVE9ETzogZml4IHRoaXMgY2FzZToKPiA+ICsrLy8gJCBhd2sgJ0JFR0lOIHsgcHJpbnQgY2xv c2UoIiIpOyBwcmludCBFUlJOTyB9Jwo+ID4gKysvLyAtMQo+ID4gKysvLyBjbG9zZSBvZiByZWRp cmVjdGlvbiB0aGF0IHdhcyBuZXZlciBvcGVuZWQKPiA+ICsrLy8gKHdlIHByaW50IDAsIDApCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnJlZShyc20tPmJ1ZmZlcik7Cj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaGFzaF9yZW1vdmUoZmRoYXNoLCBMLnMpOwo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gK0BA IC0yOTc0LDE0ICszMzQxLDE4IEBAIHN0YXRpYyB2YXIgKmV2YWx1YXRlKG5vZGUgKm9wLCB2YXIg KnJlcykKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArIAo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMoIE9DX0JVSUxUSU4gKToKPiA+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZf ZXZhbCgiQlVJTFRJTlxuIik7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHJlcyA9IGV4ZWNfYnVpbHRpbihvcCwgcmVzKTsKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiArIAo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMoIE9DX1NQUklOVEYgKToKPiA+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXR2YXJfcChyZXMs IGF3a19wcmludGYob3AxKSk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIlNQUklOVEZcbiIpOwo+ID4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNldHZhcl9wKHJlcywgYXdrX3By aW50ZihvcDEsIE5VTEwpKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiArIAo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY2FzZSBYQyggT0NfVU5BUlkgKTogewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY2FzZSBYQyggT0NfVU5BUlkgKToKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiVU5BUllcbiIpOwo+ID4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBkb3VibGUgTGQsIFJfZDsKPiA+ICsgCj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoExkID0gUl9kID0gZ2V0dmFyX2ko Ui52KTsKPiA+ICtAQCAtMzAxMSw3ICszMzgyLDkgQEAgc3RhdGljIHZhciAqZXZhbHVhdGUobm9k ZSAqb3AsIHZhciAqcmVzKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBicmVhazsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4g PiArIAo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0NfRklFTEQg KTogewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0NfRklFTEQg KToKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1 Z19wcmludGZfZXZhbCgiRklFTERcbiIpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp bnQgaSA9IChpbnQpZ2V0dmFyX2koUi52KTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGkgPCAwKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vycm9yKEVN U0dfTkVHQVRJVkVfRklFTEQpOwo+ID4gK0BAIC0zMDI4LDI2ICszNDAxLDMzIEBAIHN0YXRpYyB2 YXIgKmV2YWx1YXRlKG5vZGUgKm9wLCB2YXIgKnJlcykKPiA+ICsgCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgLyogY29uY2F0ZW5hdGlvbiAoIiAiKSBhbmQgaW5kZXggam9pbmlu ZyAoIiwiKSAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMoIE9D X0NPTkNBVCApOgo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJDT05DQVQgL1xuIik7Cj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0NfQ09NTUEgKTogewo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb25zdCBjaGFyICpzZXAgPSAiIjsKPiA+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKG9waW5m byAmIE9QQ0xTTUFTSykgPT0gT0NfQ09NTUEpCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIkNPTU1BXG4iKTsKPiA+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAob3BpbmZvID09 IFRJX0NPTU1BKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgc2VwID0gZ2V0dmFyX3MoaW50dmFyW1NVQlNFUF0pOwo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXR2YXJfcChy ZXMsIHhhc3ByaW50ZigiJXMlcyVzIiwgTC5zLCBzZXAsCj4gPiBSLnMpKTsKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gKyAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19MQU5EICk6Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIkxBTkRcbiIpOwo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXR2YXJfaShy ZXMsIGlzdHJ1ZShMLnYpID8gcHRlc3Qob3AtPnIubikKPiA+IDoKPiA+IDApOwo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ICsgCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0NfTE9SICk6Cj4gPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRm X2V2YWwoIkxPUlxuIik7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHNldHZhcl9pKHJlcywgaXN0cnVlKEwudikgPyAxIDogcHRlc3Qob3AtCj4gPiA+ IHIubikpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBicmVhazsKPiA+ICsgCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBY QyggT0NfQklOQVJZICk6Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhD KCBPQ19SRVBMQUNFICk6IHsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiQklOQVJZIC9cbiIpOwo+ID4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0NfUkVQTEFDRSApOgo+ID4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJS RVBMQUNFXG4iKTsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHsKPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZG91YmxlIFJfZCA9IGdl dHZhcl9pKFIudik7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIkJJTkFSWS9SRVBMQUNFOiBSX2Q6JWYKPiA+IG9wbjol Y1xuIiwgUl9kLCBvcG4pOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJSX2Q6JWYgb3BuOiVjXG4iLCBSX2QsCj4gPiBv cG4pOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBz d2l0Y2ggKG9wbikgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBjYXNlICcrJzoKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoExfZCArPSBSX2Q7Cj4gPiArQEAgLTMwODMsNiAr MzQ2Myw3IEBAIHN0YXRpYyB2YXIgKmV2YWx1YXRlKG5vZGUgKm9wLCB2YXIgKnJlcykKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19DT01QQVJFICk6IHsKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50IGkgPSBp OyAvKiBmb3IgY29tcGlsZXIgKi8KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZG91YmxlIExkOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJDT01QQVJFXG4iKTsKPiA+ICsg Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChp c19udW1lcmljKEwudikgJiYgaXNfbnVtZXJpYyhSLnYpKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBMZCA9IGdldHZh cl9pKEwudikgLSBnZXR2YXJfaShSLnYpOwo+ID4gK0BAIC0zMTA5LDcgKzM0OTAsNyBAQCBzdGF0 aWMgdmFyICpldmFsdWF0ZShub2RlICpvcCwgdmFyICpyZXMpCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGVmYXVsdDoKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vycm9yKEVNU0dfUE9TU0lCTEVfRVJST1IpOwo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gLyogc3dpdGNoICovCj4gPiArLSBuZXh0 Ogo+ID4gKysKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKG9waW5mbyAm IE9QQ0xTTUFTSykgPD0gU0hJRlRfVElMX1RISVMpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG9wID0gb3AtPmEubjsKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpZiAoKG9waW5mbyAmIE9QQ0xTTUFTSykgPj0gUkVDVVJfRlJPTV9U SElTKQo+ID4gK0BAIC0zMTE4LDcgKzM0OTksMTAgQEAgc3RhdGljIHZhciAqZXZhbHVhdGUobm9k ZSAqb3AsIHZhciAqcmVzKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBicmVhazsKPiA+ICvCoMKgwqDCoMKgwqDCoH0gLyogd2hpbGUgKG9wKSAqLwo+ ID4gKyAKPiA+ICstwqDCoMKgwqDCoMKgbnZmcmVlKHYxKTsKPiA+ICsrwqDCoMKgwqDCoMKgbnZm cmVlKHRtcHZhcnMsIDIpOwo+ID4gKysjdW5kZWYgVE1QVkFSMAo+ID4gKysjdW5kZWYgVE1QVkFS MQo+ID4gKysKPiA+ICvCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJyZXR1cm5pbmcg ZnJvbSAlcygpOiAlcFxuIiwgX19mdW5jX18sCj4gPiByZXMpOwo+ID4gK8KgwqDCoMKgwqDCoMKg cmV0dXJuIHJlczsKPiA+ICsgI3VuZGVmIGZuYXJncwo+ID4gK0BAIC0zMTI2LDI1ICszNTEwLDIx IEBAIHN0YXRpYyB2YXIgKmV2YWx1YXRlKG5vZGUgKm9wLCB2YXIgKnJlcykKPiA+ICsgI3VuZGVm IHNyZWcKPiA+ICsgfQo+ID4gKyAKPiA+ICstCj4gPiArIC8qIC0tLS0tLS0tIG1haW4gJiBjby4g LS0tLS0tLS0gKi8KPiA+ICsgCj4gPiArLXN0YXRpYyBpbnQgYXdrX2V4aXQoaW50IHIpCj4gPiAr K3N0YXRpYyBpbnQgYXdrX2V4aXQodm9pZCkKPiA+ICsgewo+ID4gKy3CoMKgwqDCoMKgwqB2YXIg dHY7Cj4gPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpOwo+ID4gKy3CoMKgwqDCoMKgwqBoYXNo X2l0ZW0gKmhpOwo+ID4gKy0KPiA+ICstwqDCoMKgwqDCoMKgemVyb19vdXRfdmFyKCZ0dik7Cj4g PiArIAo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFleGl0aW5nKSB7Cj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZXhpdGluZyA9IFRSVUU7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgbmV4dHJlYyA9IEZBTFNFOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZXZhbHVhdGUoZW5kc2VxLmZpcnN0LCAmdHYpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZXZhbHVhdGUoZW5kc2VxLmZpcnN0LCAmRy5leGl0X190bXB2YXIpOwo+ID4g K8KgwqDCoMKgwqDCoMKgfQo+ID4gKyAKPiA+ICvCoMKgwqDCoMKgwqDCoC8qIHdhaXRpbmcgZm9y IGNoaWxkcmVuICovCj4gPiArwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgZmRoYXNoLT5j c2l6ZTsgaSsrKSB7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoYXNoX2l0ZW0g KmhpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhpID0gZmRoYXNoLT5pdGVt c1tpXTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3aGlsZSAoaGkpIHsKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGhpLT5k YXRhLnJzLkYgJiYgaGktPmRhdGEucnMuaXNfcGlwZSkKPiA+ICtAQCAtMzE1Myw2NSArMzUzMyw3 IEBAIHN0YXRpYyBpbnQgYXdrX2V4aXQoaW50IHIpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfQo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gKyAKPiA+ICstwqDCoMKgwqDCoMKg ZXhpdChyKTsKPiA+ICstfQo+ID4gKy0KPiA+ICstLyogaWYgZXhwciBsb29rcyBsaWtlICJ2YXI9 dmFsdWUiLCBwZXJmb3JtIGFzc2lnbm1lbnQgYW5kIHJldHVybgo+ID4gMSwKPiA+ICstICogb3Ro ZXJ3aXNlIHJldHVybiAwICovCj4gPiArLXN0YXRpYyBpbnQgaXNfYXNzaWdubWVudChjb25zdCBj aGFyICpleHByKQo+ID4gKy17Cj4gPiArLcKgwqDCoMKgwqDCoGNoYXIgKmV4cHJjLCAqdmFsOwo+ ID4gKy0KPiA+ICstwqDCoMKgwqDCoMKgaWYgKCFpc2FsbnVtXygqZXhwcikgfHwgKHZhbCA9IHN0 cmNocihleHByLCAnPScpKSA9PSBOVUxMKQo+ID4gewo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIEZBTFNFOwo+ID4gKy3CoMKgwqDCoMKgwqB9Cj4gPiArLQo+ID4gKy3C oMKgwqDCoMKgwqBleHByYyA9IHhzdHJkdXAoZXhwcik7Cj4gPiArLcKgwqDCoMKgwqDCoHZhbCA9 IGV4cHJjICsgKHZhbCAtIGV4cHIpOwo+ID4gKy3CoMKgwqDCoMKgwqAqdmFsKysgPSAnXDAnOwo+ ID4gKy0KPiA+ICstwqDCoMKgwqDCoMKgdW5lc2NhcGVfc3RyaW5nX2luX3BsYWNlKHZhbCk7Cj4g PiArLcKgwqDCoMKgwqDCoHNldHZhcl91KG5ld3ZhcihleHByYyksIHZhbCk7Cj4gPiArLcKgwqDC oMKgwqDCoGZyZWUoZXhwcmMpOwo+ID4gKy3CoMKgwqDCoMKgwqByZXR1cm4gVFJVRTsKPiA+ICst fQo+ID4gKy0KPiA+ICstLyogc3dpdGNoIHRvIG5leHQgaW5wdXQgZmlsZSAqLwo+ID4gKy1zdGF0 aWMgcnN0cmVhbSAqbmV4dF9pbnB1dF9maWxlKHZvaWQpCj4gPiArLXsKPiA+ICstI2RlZmluZSBy c23CoMKgwqDCoMKgwqDCoMKgwqAgKEcubmV4dF9pbnB1dF9maWxlX19yc20pCj4gPiArLSNkZWZp bmUgZmlsZXNfaGFwcGVuIChHLm5leHRfaW5wdXRfZmlsZV9fZmlsZXNfaGFwcGVuKQo+ID4gKy0K PiA+ICstwqDCoMKgwqDCoMKgRklMRSAqRjsKPiA+ICstwqDCoMKgwqDCoMKgY29uc3QgY2hhciAq Zm5hbWUsICppbmQ7Cj4gPiArLQo+ID4gKy3CoMKgwqDCoMKgwqBpZiAocnNtLkYpCj4gPiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmY2xvc2UocnNtLkYpOwo+ID4gKy3CoMKgwqDCoMKg wqByc20uRiA9IE5VTEw7Cj4gPiArLcKgwqDCoMKgwqDCoHJzbS5wb3MgPSByc20uYWR2ID0gMDsK PiA+ICstCj4gPiArLcKgwqDCoMKgwqDCoGZvciAoOzspIHsKPiA+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGlmIChnZXR2YXJfaShpbnR2YXJbQVJHSU5EXSkrMSA+PQo+ID4gZ2V0dmFy X2koaW50dmFyW0FSR0NdKSkgewo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGlmIChmaWxlc19oYXBwZW4pCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBOVUxMOwo+ID4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZuYW1lID0gIi0i Owo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEYgPSBz dGRpbjsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBi cmVhazsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGluZCA9IGdldHZhcl9zKGluY3ZhcihpbnR2YXJbQVJHSU5EXSkp Owo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm5hbWUgPSBnZXR2YXJfcyhmaW5k dmFyKGlhbWFycmF5KGludHZhcltBUkdWXSksCj4gPiBpbmQpKTsKPiA+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmIChmbmFtZSAmJiAqZm5hbWUgJiYgIWlzX2Fzc2lnbm1lbnQoZm5h bWUpKSB7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg RiA9IHhmb3Blbl9zdGRpbihmbmFtZSk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB9Cj4gPiArLcKgwqDCoMKgwqDCoH0KPiA+ICstCj4gPiArLcKgwqDCoMKgwqDCoGZpbGVzX2hh cHBlbiA9IFRSVUU7Cj4gPiArLcKgwqDCoMKgwqDCoHNldHZhcl9zKGludHZhcltGSUxFTkFNRV0s IGZuYW1lKTsKPiA+ICstwqDCoMKgwqDCoMKgcnNtLkYgPSBGOwo+ID4gKy3CoMKgwqDCoMKgwqBy ZXR1cm4gJnJzbTsKPiA+ICstI3VuZGVmIHJzbQo+ID4gKy0jdW5kZWYgZmlsZXNfaGFwcGVuCj4g PiArK8KgwqDCoMKgwqDCoGV4aXQoRy5leGl0Y29kZSk7Cj4gPiArIH0KPiA+ICsgCj4gPiArIGlu dCBhd2tfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIE1BSU5fRVhURVJOQUxMWV9WSVNJQkxF Owo+ID4gK0BAIC0zMjI0LDEyICszNTQ2LDcgQEAgaW50IGF3a19tYWluKGludCBhcmdjIFVOVVNF RF9QQVJBTSwgY2hhcgo+ID4gKiphcmd2KQo+ID4gKyAjaWYgRU5BQkxFX0ZFQVRVUkVfQVdLX0dO VV9FWFRFTlNJT05TCj4gPiArwqDCoMKgwqDCoMKgwqBsbGlzdF90ICpsaXN0X2UgPSBOVUxMOwo+ ID4gKyAjZW5kaWYKPiA+ICstwqDCoMKgwqDCoMKgaW50IGksIGo7Cj4gPiArLcKgwqDCoMKgwqDC oHZhciAqdjsKPiA+ICstwqDCoMKgwqDCoMKgdmFyIHR2Owo+ID4gKy3CoMKgwqDCoMKgwqBjaGFy ICoqZW52cDsKPiA+ICstwqDCoMKgwqDCoMKgY2hhciAqdm5hbWVzID0gKGNoYXIgKil2TmFtZXM7 IC8qIGNoZWF0ICovCj4gPiArLcKgwqDCoMKgwqDCoGNoYXIgKnZ2YWx1ZXMgPSAoY2hhciAqKXZW YWx1ZXM7Cj4gPiArK8KgwqDCoMKgwqDCoGludCBpOwo+ID4gKyAKPiA+ICvCoMKgwqDCoMKgwqDC oElOSVRfRygpOwo+ID4gKyAKPiA+ICtAQCAtMzIzOCw0OCArMzU1NSw0MyBAQCBpbnQgYXdrX21h aW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyCj4gPiAqKmFyZ3YpCj4gPiArwqDCoMKgwqDC oMKgwqBpZiAoRU5BQkxFX0xPQ0FMRV9TVVBQT1JUKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHNldGxvY2FsZShMQ19OVU1FUklDLCAiQyIpOwo+ID4gKyAKPiA+ICstwqDCoMKg wqDCoMKgemVyb19vdXRfdmFyKCZ0dik7Cj4gPiArLQo+ID4gKy3CoMKgwqDCoMKgwqAvKiBhbGxv Y2F0ZSBnbG9iYWwgYnVmZmVyICovCj4gPiArLcKgwqDCoMKgwqDCoGdfYnVmID0geG1hbGxvYyhN QVhWQVJGTVQgKyAxKTsKPiA+ICstCj4gPiArLcKgwqDCoMKgwqDCoHZoYXNoID0gaGFzaF9pbml0 KCk7Cj4gPiArLcKgwqDCoMKgwqDCoGFoYXNoID0gaGFzaF9pbml0KCk7Cj4gPiArLcKgwqDCoMKg wqDCoGZkaGFzaCA9IGhhc2hfaW5pdCgpOwo+ID4gKy3CoMKgwqDCoMKgwqBmbmhhc2ggPSBoYXNo X2luaXQoKTsKPiA+ICstCj4gPiArwqDCoMKgwqDCoMKgwqAvKiBpbml0aWFsaXplIHZhcmlhYmxl cyAqLwo+ID4gKy3CoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyAqdm5hbWVzOyBpKyspIHsKPiA+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludHZhcltpXSA9IHYgPSBuZXd2YXIobmV4dHdv cmQoJnZuYW1lcykpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCp2dmFs dWVzICE9ICdcMzc3JykKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBzZXR2YXJfcyh2LCBuZXh0d29yZCgmdnZhbHVlcykpOwo+ID4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZWxzZQo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHNldHZhcl9pKHYsIDApOwo+ID4gKy0KPiA+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmICgqdm5hbWVzID09ICcqJykgewo+ID4gKy3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHYtPnR5cGUgfD0gVkZfU1BFQ0lBTDsKPiA+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2bmFtZXMrKzsK PiA+ICsrwqDCoMKgwqDCoMKgdmhhc2ggPSBoYXNoX2luaXQoKTsKPiA+ICsrwqDCoMKgwqDCoMKg ewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciAqdm5hbWVzID0gKGNoYXIg Kil2TmFtZXM7IC8qIGNoZWF0ICovCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBj aGFyICp2dmFsdWVzID0gKGNoYXIgKil2VmFsdWVzOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZm9yIChpID0gMDsgKnZuYW1lczsgaSsrKSB7Cj4gPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmFyICp2Owo+ID4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludHZhcltpXSA9IHYgPSBuZXd2YXIobmV4 dHdvcmQoJnZuYW1lcykpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlmICgqdnZhbHVlcyAhPSAnXDM3NycpCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNldHZhcl9zKHYsIG5l eHR3b3JkKCZ2dmFsdWVzKSk7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZWxzZQo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXR2YXJfaSh2LCAwKTsKPiA+ICsrCj4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCp2bmFtZXMgPT0g JyonKSB7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHYtPnR5cGUgfD0gVkZfU1BFQ0lBTDsKPiA+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdm5hbWVzKys7 Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICvCoMKgwqDCoMKgwqDCoH0KPiA+ ICsgCj4gPiArwqDCoMKgwqDCoMKgwqBoYW5kbGVfc3BlY2lhbChpbnR2YXJbRlNdKTsKPiA+ICvC oMKgwqDCoMKgwqDCoGhhbmRsZV9zcGVjaWFsKGludHZhcltSU10pOwo+ID4gKyAKPiA+ICstwqDC oMKgwqDCoMKgbmV3ZmlsZSgiL2Rldi9zdGRpbiIpLT5GID0gc3RkaW47Cj4gPiArLcKgwqDCoMKg wqDCoG5ld2ZpbGUoIi9kZXYvc3Rkb3V0IiktPkYgPSBzdGRvdXQ7Cj4gPiArLcKgwqDCoMKgwqDC oG5ld2ZpbGUoIi9kZXYvc3RkZXJyIiktPkYgPSBzdGRlcnI7Cj4gPiArLQo+ID4gK8KgwqDCoMKg wqDCoMKgLyogSHVoLCBwZW9wbGUgcmVwb3J0IHRoYXQgc29tZXRpbWVzIGVudmlyb24gaXMgTlVM TC4gT2gKPiA+IHdlbGwuICovCj4gPiArLcKgwqDCoMKgwqDCoGlmIChlbnZpcm9uKSBmb3IgKGVu dnAgPSBlbnZpcm9uOyAqZW52cDsgZW52cCsrKSB7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAvKiBlbnZpcm9uIGlzIHdyaXRhYmxlLCB0aHVzIHdlIGRvbid0IHN0cmR1cCBpdAo+ ID4gbmVlZGxlc3NseSAqLwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciAq cyA9ICplbnZwOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciAqczEgPSBz dHJjaHIocywgJz0nKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChzMSkg ewo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCpzMSA9 ICdcMCc7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg LyogQm90aCBmaW5kdmFyIGFuZCBzZXR2YXJfdSB0YWtlIGNvbnN0Cj4gPiBjaGFyKgo+ID4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGFzIDJuZCBhcmcg LT4gZW52aXJvbm1lbnQgaXMgbm90IHRyYXNoZWQKPiA+ICovCj4gPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2V0dmFyX3UoZmluZHZhcihpYW1hcnJheShp bnR2YXJbRU5WSVJPTl0pLAo+ID4gcyksIHMxICsgMSk7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKnMxID0gJz0nOwo+ID4gKyvCoMKgwqDCoMKgwqBp ZiAoZW52aXJvbikgewo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciAqKmVu dnA7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3IgKGVudnAgPSBlbnZpcm9u OyAqZW52cDsgZW52cCsrKSB7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgLyogZW52aXJvbiBpcyB3cml0YWJsZSwgdGh1cyB3ZSBkb24ndAo+ID4gc3Ry ZHVwCj4gPiBpdCBuZWVkbGVzc2x5ICovCj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY2hhciAqcyA9ICplbnZwOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYXIgKnMxID0gc3RyY2hyKHMsICc9Jyk7Cj4g PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHMxKSB7 Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCpzMSA9ICdcMCc7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIEJvdGggZmluZHZhciBhbmQgc2V0dmFy X3UgdGFrZQo+ID4gY29uc3QgY2hhcioKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogYXMgMm5kIGFyZyAtPiBlbnZpcm9u bWVudCBpcyBub3QKPiA+IHRyYXNoZWQgKi8KPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2V0dmFyX3UoZmluZHZhcihpYW1h cnJheShpbnR2YXJbRU4KPiA+IFZJCj4gPiBST05dKSwgcyksIHMxICsgMSk7Cj4gPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCpz MSA9ICc9JzsKPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB9Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gK8KgwqDCoMKgwqDC oMKgfQo+ID4gK8KgwqDCoMKgwqDCoMKgb3B0ID0gZ2V0b3B0MzIoYXJndiwgT1BUU1RSX0FXSywg Jm9wdF9GLCAmbGlzdF92LCAmbGlzdF9mLAo+ID4gSUZfRkVBVFVSRV9BV0tfR05VX0VYVEVOU0lP TlMoJmxpc3RfZSwpIE5VTEwpOwo+ID4gK0BAIC0zMjk1LDIwICszNjA3LDE5IEBAIGludCBhd2tf bWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIKPiA+ICoqYXJndikKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIWlzX2Fzc2lnbm1lbnQobGxpc3RfcG9wKCZsaXN0 X3YpKSkKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg YmJfc2hvd191c2FnZSgpOwo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gKysKPiA+ICsrwqDCoMKg wqDCoMKgLyogUGFyc2UgYWxsIHN1cHBsaWVkIHByb2dyYW1zICovCj4gPiArK8KgwqDCoMKgwqDC oGZuaGFzaCA9IGhhc2hfaW5pdCgpOwo+ID4gKyvCoMKgwqDCoMKgwqBhaGFzaCA9IGhhc2hfaW5p dCgpOwo+ID4gK8KgwqDCoMKgwqDCoMKgd2hpbGUgKGxpc3RfZikgewo+ID4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY2hhciAqcyA9IE5VTEw7Cj4gPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBGSUxFICpmcm9tX2ZpbGU7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpbnQgZmQ7Cj4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFyICpzOwo+ ID4gKyAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnX3Byb2duYW1lID0gbGxp c3RfcG9wKCZsaXN0X2YpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnJvbV9m aWxlID0geGZvcGVuX3N0ZGluKGdfcHJvZ25hbWUpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgLyogb25lIGJ5dGUgaXMgcmVzZXJ2ZWQgZm9yIHNvbWUgdHJpY2sgaW4KPiA+IG5l eHRfdG9rZW4KPiA+ICovCj4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3IgKGkg PSBqID0gMTsgaiA+IDA7IGkgKz0gaikgewo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHMgPSB4cmVhbGxvYyhzLCBpICsgNDA5Nik7Cj4gPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaiA9IGZyZWFkKHMgKyBpLCAx LCA0MDk0LCBmcm9tX2ZpbGUpOwo+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc1tpXSA9ICdcMCc7Cj4gPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmY2xvc2UoZnJvbV9maWxlKTsKPiA+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHBhcnNlX3Byb2dyYW0ocyArIDEpOwo+ID4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZmQgPSB4b3Blbl9zdGRpbihnX3Byb2duYW1lKTsKPiA+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHMgPSB4bWFsbG9jX3JlYWQoZmQsIE5VTEwpOyAvKiBp dCdzIE5VTC10ZXJtaW5hdGVkCj4gPiAqLwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY2xvc2UoZmQpOwo+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGFyc2VfcHJv Z3JhbShzKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcmVlKHMpOwo+ID4g K8KgwqDCoMKgwqDCoMKgfQo+ID4gK8KgwqDCoMKgwqDCoMKgZ19wcm9nbmFtZSA9ICJjbWQuIGxp bmUiOwo+ID4gK0BAIC0zMzE3LDExICszNjI4LDIzIEBAIGludCBhd2tfbWFpbihpbnQgYXJnYyBV TlVTRURfUEFSQU0sIGNoYXIKPiA+ICoqYXJndikKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBwYXJzZV9wcm9ncmFtKGxsaXN0X3BvcCgmbGlzdF9lKSk7Cj4gPiArwqDCoMKgwqDC oMKgwqB9Cj4gPiArICNlbmRpZgo+ID4gKysvL0ZJWE1FOiBwcmVzZXJ2ZSBvcmRlciBvZiAtZSBh bmQgLWYKPiA+ICsrLy9UT0RPOiBpbXBsZW1lbnQgLWkgTElCUkFSWSBhbmQgLUUgRklMRSB0b28s IHRoZXkgYXJlIGVhc3ktaXNoCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoIShvcHQgJiAoT1BUX2Yg fCBPUFRfZSkpKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCEqYXJn dikKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYmJf c2hvd191c2FnZSgpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBhcnNlX3By b2dyYW0oKmFyZ3YrKyk7Cj4gPiArwqDCoMKgwqDCoMKgwqB9Cj4gPiArK8KgwqDCoMKgwqDCoC8q IEZyZWUgdW51c2VkIHBhcnNlIHN0cnVjdHVyZXMgKi8KPiA+ICsrwqDCoMKgwqDCoMKgLy9oYXNo X2ZyZWUoZm5oYXNoKTsgLy8gfjI1MCBieXRlcyB3aGVuIGVtcHR5LCB1c2VkIG9ubHkKPiA+IGZv cgo+ID4gZnVuY3Rpb24gbmFtZXMKPiA+ICsrwqDCoMKgwqDCoMKgLy9eXl5eXl5eXl5eXl5eXl5e XiBkb2VzIG5vdCB3b3JrLCBoYXNoX2NsZWFyKCkgaW5zaWRlCj4gPiBTRUdWcwo+ID4gKyvCoMKg wqDCoMKgwqAvLyAoSU9XOiBoYXNoX2NsZWFyKCkgYXNzdW1lcyBpdCdzIGEgaGFzaCBvZiB2YXJp YWJsZXMuCj4gPiBmbmhhc2ggaXMgbm90KS4KPiA+ICsrwqDCoMKgwqDCoMKgZnJlZShmbmhhc2gt Pml0ZW1zKTsKPiA+ICsrwqDCoMKgwqDCoMKgZnJlZShmbmhhc2gpOwo+ID4gKyvCoMKgwqDCoMKg wqBmbmhhc2ggPSBOVUxMOyAvLyBkZWJ1Zwo+ID4gKyvCoMKgwqDCoMKgwqAvL2hhc2hfZnJlZShh aGFzaCk7IC8vIGVtcHR5IGFmdGVyIHBhcnNpbmcsIHdpbGwgcmV1c2UgYXMKPiA+IGZkaGFzaCBp bnN0ZWFkIG9mIGZyZWVpbmcKPiA+ICsrCj4gPiArK8KgwqDCoMKgwqDCoC8qIFBhcnNpbmcgZG9u ZSwgb24gdG8gZXhlY3V0aW5nICovCj4gPiArIAo+ID4gK8KgwqDCoMKgwqDCoMKgLyogZmlsbCBp biBBUkdWIGFycmF5ICovCj4gPiArwqDCoMKgwqDCoMKgwqBzZXRhcmlfdShpbnR2YXJbQVJHVl0s IDAsICJhd2siKTsKPiA+ICtAQCAtMzMzMCw5ICszNjUzLDE0IEBAIGludCBhd2tfbWFpbihpbnQg YXJnYyBVTlVTRURfUEFSQU0sIGNoYXIKPiA+ICoqYXJndikKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBzZXRhcmlfdShpbnR2YXJbQVJHVl0sICsraSwgKmFyZ3YrKyk7Cj4gPiAr wqDCoMKgwqDCoMKgwqBzZXR2YXJfaShpbnR2YXJbQVJHQ10sIGkgKyAxKTsKPiA+ICsgCj4gPiAr LcKgwqDCoMKgwqDCoGV2YWx1YXRlKGJlZ2luc2VxLmZpcnN0LCAmdHYpOwo+ID4gKyvCoMKgwqDC oMKgwqAvL2ZkaGFzaCA9IGFoYXNoOyAvLyBkb25lIHZpYSBkZWZpbmUKPiA+ICsrwqDCoMKgwqDC oMKgbmV3ZmlsZSgiL2Rldi9zdGRpbiIpLT5GID0gc3RkaW47Cj4gPiArK8KgwqDCoMKgwqDCoG5l d2ZpbGUoIi9kZXYvc3Rkb3V0IiktPkYgPSBzdGRvdXQ7Cj4gPiArK8KgwqDCoMKgwqDCoG5ld2Zp bGUoIi9kZXYvc3RkZXJyIiktPkYgPSBzdGRlcnI7Cj4gPiArKwo+ID4gKyvCoMKgwqDCoMKgwqBl dmFsdWF0ZShiZWdpbnNlcS5maXJzdCwgJkcubWFpbl9fdG1wdmFyKTsKPiA+ICvCoMKgwqDCoMKg wqDCoGlmICghbWFpbnNlcS5maXJzdCAmJiAhZW5kc2VxLmZpcnN0KQo+ID4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgYXdrX2V4aXQoRVhJVF9TVUNDRVNTKTsKPiA+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGF3a19leGl0KCk7Cj4gPiArIAo+ID4gK8KgwqDCoMKgwqDCoMKg LyogaW5wdXQgZmlsZSBjb3VsZCBhbHJlYWR5IGJlIG9wZW5lZCBpbiBCRUdJTiBibG9jayAqLwo+ ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFpRikKPiA+ICtAQCAtMzM0Nyw3ICszNjc1LDcgQEAgaW50 IGF3a19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhcgo+ID4gKiphcmd2KQo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuZXh0cmVjID0gRkFM U0U7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlu Y3ZhcihpbnR2YXJbTlJdKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaW5jdmFyKGludHZhcltGTlJdKTsKPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBldmFsdWF0ZShtYWluc2VxLmZpcnN0LCAmdHYpOwo+ ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGV2YWx1YXRl KG1haW5zZXEuZmlyc3QsICZHLm1haW5fX3RtcHZhcik7Cj4gPiArIAo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAobmV4dGZpbGUpCj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBicmVhazsKPiA+ICtAQCAtMzM1OSw2ICszNjg3LDYgQEAgaW50IGF3a19tYWluKGludCBhcmdj IFVOVVNFRF9QQVJBTSwgY2hhcgo+ID4gKiphcmd2KQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlGID0gbmV4dF9pbnB1dF9maWxlKCk7Cj4gPiArwqDCoMKgwqDCoMKgwqB9Cj4g PiArIAo+ID4gKy3CoMKgwqDCoMKgwqBhd2tfZXhpdChFWElUX1NVQ0NFU1MpOwo+ID4gKyvCoMKg wqDCoMKgwqBhd2tfZXhpdCgpOwo+ID4gK8KgwqDCoMKgwqDCoMKgLypyZXR1cm4gMDsqLwo+ID4g KyB9Cj4gPiBkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAw MDItbWFuLWZpeC0KPiA+IHNlZ2ZhdWx0LQo+ID4gaW4tbWFuLTEucGF0Y2ggYi9tZXRhL3JlY2lw ZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMi1tYW4tZml4LQo+ID4gc2VnZmF1bHQtaW4tbWFu LTEucGF0Y2gKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwLi40 YTkzMGI3YjZmCj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9tZXRhL3JlY2lwZXMtY29yZS9i dXN5Ym94L2J1c3lib3gvMDAwMi1tYW4tZml4LXNlZ2ZhdWx0LWluLQo+ID4gbWFuLQo+ID4gMS5w YXRjaAo+ID4gQEAgLTAsMCArMSwzMCBAQAo+ID4gK0Zyb20gNDk3NWNhY2U5YmY5NmJmZGUxNzRm OGJiNWNjNDA2OGQyZWEyOTRkNCBNb24gU2VwIDE3IDAwOjAwOjAwCj4gPiAyMDAxCj4gPiArRnJv bTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KPiA+ICtEYXRlOiBU dWUsIDE1IEp1biAyMDIxIDE0OjQ3OjQ2ICswMjAwCj4gPiArU3ViamVjdDogW1BBVENIXSBtYW46 IGZpeCBzZWdmYXVsdCBpbiAibWFuIDEiCj4gPiArCj4gPiArZnVuY3Rpb27CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIG9sZMKgwqDCoMKgIG5ld8KgwqAKPiA+IGRlbHRhCj4gPiArbWFu X21haW7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDk0MsKgwqDCoMKgCj4gPiA5NTTC oMKgwqDCoAo+ID4gKzEyCj4gPiArCj4gPiArU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28g PHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KPiA+ICsKPiA+ICtVcHN0cmVhbS1TdGF0dXM6IEJh Y2twb3J0IFs0ZDRmYzVjYTVlZTRmXQo+ID4gK0NWRTogQ1ZFLTIwMjEtNDIzNzMKPiA+ICtTaWdu ZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Cj4gPiArLS0tCj4gPiAr IG1pc2N1dGlscy9tYW4uYyB8IDIgKy0KPiA+ICsgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCj4gPiArCj4gPiArZGlmZiAtLWdpdCBhL21pc2N1dGlscy9tYW4u YyBiL21pc2N1dGlscy9tYW4uYwo+ID4gK2luZGV4IDcyMmY2NjQxZS4uZDMxOWU4YmJhIDEwMDY0 NAo+ID4gKy0tLSBhL21pc2N1dGlscy9tYW4uYwo+ID4gKysrKyBiL21pc2N1dGlscy9tYW4uYwo+ ID4gK0BAIC0zMjQsNyArMzI0LDcgQEAgaW50IG1hbl9tYWluKGludCBhcmdjIFVOVVNFRF9QQVJB TSwgY2hhcgo+ID4gKiphcmd2KQo+ID4gKyAKPiA+ICvCoMKgwqDCoMKgwqDCoC8qIGlzIDFzdCBB UkcgYSBTRUNUSU9OPyAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgc2VjX2xpc3QgPSBjb25mX3NlY19s aXN0Owo+ID4gKy3CoMKgwqDCoMKgwqBpZiAoaXNfc2VjdGlvbl9uYW1lKGNvbmZfc2VjX2xpc3Qs ICphcmd2KSkgewo+ID4gKyvCoMKgwqDCoMKgwqBpZiAoaXNfc2VjdGlvbl9uYW1lKGNvbmZfc2Vj X2xpc3QsICphcmd2KSAmJiBhcmd2WzFdKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLyogeWVzICovCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2VjX2xp c3QgPSAqYXJndisrOwo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gZGlmZiAtLWdpdCBhL21ldGEv cmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjMzLjIuYmIKPiA+IGIvbWV0YS9yZWNpcGVz LWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMzMuMi5iYgo+ID4gaW5kZXggNDRjODNhYjgzYy4uNGEw ZDNiNDU1NiAxMDA2NDQKPiA+IC0tLSBhL21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJv eF8xLjMzLjIuYmIKPiA+ICsrKyBiL21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8x LjMzLjIuYmIKPiA+IEBAIC00OCw2ICs0OCw4IEBAIFNSQ19VUkkgPQo+ID4gImh0dHBzOi8vYnVz eWJveC5uZXQvZG93bmxvYWRzL2J1c3lib3gtJHtQVn0udGFyLmJ6MjtuYW1lPXRhcmJhbGzCoFwK PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiA+IGZpbGU6Ly8wMDAxLXN5c2N0bC1pZ25vcmUt RUlPLW9mLXN0YWJsZV9zZWNyZXQtYmVsb3ctcHJvYy1zeXMtbmUucGF0Y2gKPiA+IMKgXAo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gZmlsZTovLzAwMDEtZ2VuX2J1aWxkX2ZpbGVzLVVz ZS1DLWxvY2FsZS13aGVuLWNhbGxpbmctc2VkLW9uLWdsby5wYXRjaAo+ID4gwqBcCj4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGZpbGU6Ly8wMDAxLW1rdGVtcC1hZGQtdG1wZGlyLW9wdGlvbi5w YXRjaMKgXAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGZpbGU6Ly8wMDAxLWF3ay1maXgtQ1ZF cy5wYXRjaMKgXAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGZpbGU6Ly8wMDAyLW1hbi1maXgt c2VnZmF1bHQtaW4tbWFuLTEucGF0Y2jCoFwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIgo+ ID4gwqBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9tdXNsLmNmZ8KgIgo+ID4g wqAKPiA+IAo+ID4gCj4gPiAKPiAKPiAKPiAtPS09LT0tPS09LT0tPS09LT0tPS09LQo+IExpbmtz OiBZb3UgcmVjZWl2ZSBhbGwgbWVzc2FnZXMgc2VudCB0byB0aGlzIGdyb3VwLgo+IFZpZXcvUmVw bHkgT25saW5lICgjMTYwMDM2KToKPiBodHRwczovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvZy9v cGVuZW1iZWRkZWQtY29yZS9tZXNzYWdlLzE2MDAzNgo+IE11dGUgVGhpcyBUb3BpYzogaHR0cHM6 Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL210Lzg3ODkzMDI4LzM2MTY3MDIKPiBHcm91cCBPd25l cjogb3BlbmVtYmVkZGVkLWNvcmUrb3duZXJAbGlzdHMub3BlbmVtYmVkZGVkLm9yZwo+IFVuc3Vi c2NyaWJlOgo+IGh0dHBzOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9nL29wZW5lbWJlZGRlZC1j b3JlL3Vuc3ViwqBbCj4gYW51ai5taXR0YWxAaW50ZWwuY29tXQo+IC09LT0tPS09LT0tPS09LT0t PS09LT0tCj4gCgo=