From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web12.6192.1594368369254615276 for ; Fri, 10 Jul 2020 01:06:09 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=F/GSWC0l; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: liming.gao@intel.com) IronPort-SDR: +S//aU0q8n+9OsTW/e08Dq4utZL9YLjQw3Y+fqaBSxAxt/YXsjGKIE1iqBpCmHUEt6wEr5JTBj UNvWZ38ecqxw== X-IronPort-AV: E=McAfee;i="6000,8403,9677"; a="149635517" X-IronPort-AV: E=Sophos;i="5.75,335,1589266800"; d="scan'208";a="149635517" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jul 2020 01:06:07 -0700 IronPort-SDR: 8nhQMUidillj52SqsWOQaJm/pW2q0qhc1JlbpSWwSCLrz/eRVLvPBxrbRN88a5N4vB29y2KVHe ckqsS4dBjn5g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,335,1589266800"; d="scan'208";a="316517483" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga002.fm.intel.com with ESMTP; 10 Jul 2020 01:06:04 -0700 Received: from fmsmsx153.amr.corp.intel.com (10.18.125.6) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 10 Jul 2020 01:06:04 -0700 Received: from FMSEDG001.ED.cps.intel.com (10.1.192.133) by FMSMSX153.amr.corp.intel.com (10.18.125.6) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 10 Jul 2020 01:06:03 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.48) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 10 Jul 2020 01:06:03 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AGFTjZyP/wUI6OEdkR8OEihepCNfT7IMNpwq5eUaZh302H0TX/eIG1YulEq+k0UbvCKmodFeoFWkE0o8IEgUpuAkPexuqfykYvJbDo7CKARj+PlLB2E1r27fuvaZUpL04elPwtwXl6VI8SR10zqDEjyR3PZSnFrqswo0i7D3+1oMnHn4+vpzQjc4fb7nldTz3Fi1UKvbN9oE7/T4b5GIkhMuW3SGy63Ct8l40G2oHjuDcZXcQOm7jUvk8SuDQ2NLEZ3V4wBiXSl0i/O3EsRnX35NJ2ma8ikAOrxnLFK36TLpXvim4cx6sM+dQJC1P9HAVvFVCPIWHeD2BgImDhsxzw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3qrnSbIdwFdRvYlwD6Qegu2yu5aUrLUwQjZ+2Y/bTFY=; b=DIQtIWMWYent6oWsTI2iCAUdTTyphIw3xn3hviqPEj4xMtrd/SZAsEIvpoujgCAjvdKwMeSz0jgSTq6KtVU0nYnAl0uTioZ09/4pAwvOaTBkHY+2cnOnGJXXTJJGaWWCeNq/hU/0SSKdxGDhEXfAttrChVcDBCtZKhJw4xCti32wgZP0Losmv06vYWtTJUg7DnUGu5KtYiwhRYKLPyBIOtLYyFUETw8KKmp10xEY64MuFU8TxmMXLeuOJUk5CFMRQuYAuoXdVav3VjToorH0asT7PKs3LeFDl1gb0jGYzllkyq24utRFVyG9kRIVceoOdCnvKZsMhsmMA2Shedb+iw== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3qrnSbIdwFdRvYlwD6Qegu2yu5aUrLUwQjZ+2Y/bTFY=; b=F/GSWC0l6GgWvK14smzavszQHollVOkzXJO7SdQtqoOibp3cSnSjYZXXXTR3IbVRhXIOVTCU64Mk7TQTSpd5N5C4N/ECRH4YolIpoiJ8iBjqulSKWGZ1pFAHqXJzoK5cU9XqpTpxfffjxYiTzSr5rVYYX+bd2S0y+QERjLDMh2Y= Received: from MWHPR11MB1630.namprd11.prod.outlook.com (2603:10b6:301:e::7) by MWHPR11MB1309.namprd11.prod.outlook.com (2603:10b6:300:20::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.21; Fri, 10 Jul 2020 08:06:01 +0000 Received: from MWHPR11MB1630.namprd11.prod.outlook.com ([fe80::7847:b564:1b55:b67e]) by MWHPR11MB1630.namprd11.prod.outlook.com ([fe80::7847:b564:1b55:b67e%6]) with mapi id 15.20.3174.023; Fri, 10 Jul 2020 08:06:01 +0000 From: "Liming Gao" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: Sean Brogan , Bret Barkelew , "Yao, Jiewen" Subject: Re: [Patch 04/15] MdePkg/BaseLib: Break out IA32/X64 GCC inline privileged functions Thread-Topic: [Patch 04/15] MdePkg/BaseLib: Break out IA32/X64 GCC inline privileged functions Thread-Index: AQHWQqqmlcMXDxldM0WGasoSQZP0aaj/bkPwgAAxZYCAAPnEUA== Date: Fri, 10 Jul 2020 08:06:01 +0000 Message-ID: References: <20200615001918.22164-1-michael.d.kinney@intel.com> <20200615001918.22164-5-michael.d.kinney@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.2.0.6 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.217] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c980eee3-d8b2-4f82-df5e-08d824a81604 x-ms-traffictypediagnostic: MWHPR11MB1309: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: yDsHjyBA4KAe0PmvyicqLjGnKtsXfDt9qekiyXocCsREtRA4a0N25+6Otm4e2kiYu3CSPU3X9SnrW9uqRqDcNXgWzn4ooPcn1oBKps2Y6zKo6N8wHJ7OkytgfJ05WbNqPSenZJVCeEsTU9vRhCMMEhta1Z21doVSC9ZhmlEe8Fgf6I+29fO0d9aXQNNzcM/86KPu4CX5DjdPutV98qy1mhxnPPuXVsCKGQUnIJl97KrghVyfPN1+Pm1pAiFyUAL5QARYbUD97TQtwX43mHHHa6NSt/LQCVSqOf8nvALTY3GZz37tx1ZhjgmwMZrasO+BX9FMFx8sxkQb+UJqQjp7ff11bMMJiS2+oJeqnV+qteRxWtY2DwYHj4Wz7LJ3UCXkKQod11UaRnzMAcbMhDfUPA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR11MB1630.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(396003)(136003)(366004)(346002)(39860400002)(376002)(966005)(54906003)(30864003)(316002)(110136005)(33656002)(107886003)(8936002)(8676002)(66556008)(71200400001)(5660300002)(86362001)(7696005)(19627235002)(66476007)(66946007)(83380400001)(45080400002)(76116006)(52536014)(66446008)(64756008)(9686003)(2906002)(53546011)(26005)(55016002)(186003)(4326008)(6506007)(478600001)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: C/7C4M5mpaedsvfaFiIy6E1hVSjaLsFTjzxMIUPkk1sYagjSM+1MpGGBVdq/o38Qo3wspLJ/iI9qHaaP6Jk34dtE3olH9X2S7lVPAB97d0Q8ZHYGBKDmipXThOlqjzr0EeHcUo/YrqWAeZTmZBOcsjA0ACEgwf95V5+RhwZ2sUxxNYFl1hHxvku6QIoldxHJLr46oKn4XxjjWn20Yg91EI4OCnO1uocEmuGd+HIXwUnHO1TpcxJuSvD5IVmXsO9C3pYKk9WBe0pAQMdKXq3K7P3aqKHlI1wi8hgRpW5hKshtIl90dihER/IYWZfpsz58tZboOd57Px0dta8PzihpQPeaAXamBk0+NX3JCj50GHIX0S7w+X7hiqsSKTkkVPIZwixQkTlW1WG505MUvrBu6KOwUdnaN0G64nQH3/W6UIkAM9CG4IYc3EPJfNEtu9uhMj0sbIc9FRnncekbLYEaYLwu5FN5zu552TGsc8B9+8+HyTjxTfQpFNishZtCgOUR MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR11MB1630.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c980eee3-d8b2-4f82-df5e-08d824a81604 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jul 2020 08:06:01.3070 (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: Dc5uyhyOYvu5GWWrXV9DTNrr1abi9sxpOY33Jjc6eKLnd+r5RW2KSjIc2wnwVQOKyng74mSVX4wjkT0jGH+5iQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1309 Return-Path: liming.gao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TWlrZToNCiAgU28sIEdjY0lubGluZS5jIGZpbGUgY2FuJ3QgYmUgdXNlZCBpbiB0aGUgdW5pdCB0 ZXN0IEJhc2VMaWIuIA0KDQpUaGFua3MNCkxpbWluZw0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCkZyb206IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4g DQpTZW50OiAyMDIw5bm0N+aciDEw5pelIDE6MDENClRvOiBHYW8sIExpbWluZyA8bGltaW5nLmdh b0BpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgS2lubmV5LCBNaWNoYWVsIEQgPG1p Y2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KQ2M6IFNlYW4gQnJvZ2FuIDxzZWFuLmJyb2dhbkBt aWNyb3NvZnQuY29tPjsgQnJldCBCYXJrZWxldyA8QnJldC5CYXJrZWxld0BtaWNyb3NvZnQuY29t PjsgWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KU3ViamVjdDogUkU6IFtQYXRj aCAwNC8xNV0gTWRlUGtnL0Jhc2VMaWI6IEJyZWFrIG91dCBJQTMyL1g2NCBHQ0MgaW5saW5lIHBy aXZpbGVnZWQgZnVuY3Rpb25zDQoNCkxpbWluZywNCg0KSW4gb3JkZXIgdG8gc3VwcG9ydCBob3N0 IGJhc2VkIHVuaXQgdGVzdHMsIGFsbCB0aGUgY29kZQ0KaGFzIHRvIGJlIGNvbXBhdGlibGUgd2l0 aCBhIHVzZXIgbW9kZSBwcm9jZXNzLiAgVGhpcyBtZWFucw0KYW55IGZ1bmN0aW9ucyB0aGF0IGV4 ZWN1dGUgaW5zdHJ1Y3Rpb25zIHRoYXQgYXJlIG5vdCBhbGxvd2VkDQppbiBhIHVzZXIgbW9kZSBw cm9jZXNzIG5lZWQgdG8gYmUgc2VwYXJhdGVkIG91dC4NCg0KRm9yIHRoZSBJQTMyL1g2NCBzcGVj aWZpYyBHY2NJbmxpbmUuYyBmaWxlcywgdGhlIGFuYWx5c2lzDQp3YXMgZG9uZSBmb3IgQVBJcyB0 aGF0IHVzZSBpbnN0cnVjdGlvbnMgdGhhdCB3b3VsZCANCmdlbmVyYXRlIGFuIGV4Y2VwdGlvbiBp biBhIHVzZXIgbW9kZSBwcm9jZXNzLg0KDQpJbiBhZGRpdGlvbiwgdGhlIEJhc2VMaWIgZnVuY3Rp b25zIHRoYXQgcmV0dXJuIHN5c3RlbQ0Kc3RhdGUgKGUuZy4gQ1MvRFMvRVMvU1MvRlMvR1MpIGFy ZSBhbHNvIHNwbGl0IG91dC4gIEl0DQpkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIHJldHVybiBzeXN0 ZW0gc3RhdGUgaW5mb3JtYXRpb24NCmZyb20gdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgdXNlciBt b2RlIHByb2Nlc3MuICBJbnN0ZWFkLA0KdGhlIEZXIGNvZGUgdW5kZXIgdGVzdCB3b3VsZCBleHBl Y3Qgc3lzdGVtIHN0YXRlIHRoYXQNCm1hdGNoZXMgYSBGVyBleGVjdXRpb24gZW52aXJvbm1lbnQu ICBFYWNoIHVuaXQgdGVzdA0KaW1wbGVtZW50YXRpb24gaGFzIHRoZSBvcHRpb24gb2YgcHJvdmlk aW5nIGVtdWxhdGlvbg0Kb2YgdGhpcyBzeXN0ZW0gc3RhdGUgaWYgdGhhdCBpcyByZXF1aXJlZCB0 byBleGVyY2lzZSB0aGUNCmNvZGUgdW5kZXIgdGVzdC4NCg0KTm8gY2hhbmdlcyB0byB0aGUgTVNG VCBzcGVjaWZpYyBCYXNlTGliIGltcGxlbWVudGF0aW9uDQp3ZXJlIHJlcXVpcmVkIGJlY2F1c2Ug dGhlcmUgdGhvc2UgYXJlIGFscmVhZHkgc3BsaXQgb3V0DQp0byBvbmUgZnVuY3Rpb24gcGVyIGZp bGUuDQoNCkJlc3QgcmVnYXJkcywNCg0KTWlrZQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+IEZyb206IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gU2VudDog VGh1cnNkYXksIEp1bHkgOSwgMjAyMCA3OjA3IEFNDQo+IFRvOiBLaW5uZXksIE1pY2hhZWwgRCA8 bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+Ow0KPiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBD YzogU2VhbiBCcm9nYW4gPHNlYW4uYnJvZ2FuQG1pY3Jvc29mdC5jb20+OyBCcmV0DQo+IEJhcmtl bGV3IDxCcmV0LkJhcmtlbGV3QG1pY3Jvc29mdC5jb20+OyBZYW8sIEppZXdlbg0KPiA8amlld2Vu Lnlhb0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbUGF0Y2ggMDQvMTVdIE1kZVBrZy9CYXNl TGliOiBCcmVhayBvdXQNCj4gSUEzMi9YNjQgR0NDIGlubGluZSBwcml2aWxlZ2VkIGZ1bmN0aW9u cw0KPiANCj4gTWlrZToNCj4gICBJcyB0aGVyZSB0aGUgcnVsZSB0byBrbm93IHdoaWNoIGZ1bmN0 aW9uIGNhbid0IGJlIGluDQo+IHVuaXQgdGVzdD8gQW5kLCB0aG9zZSBmdW5jdGlvbnMgd2lsbCBi ZSBpbiBHY2NJbmxpbmUuYw0KPiBvciBHY2NJbmxpbmVQcml2LmM/IFRoZXJlIGlzIG5vIGNoYW5n ZSBpbiBNU0ZUIEMgc291cmNlDQo+IGZpbGUsIGJlY2F1c2UgTVNGVCBDIHNvdXJjZSBmaWxlIGhh cyBiZWVuIHNlcGFyYXRlZCBhcw0KPiB0aGUgZnVuY3Rpb24gbGV2ZWwuIFJpZ2h0Pw0KPiANCj4g VGhhbmtzDQo+IExpbWluZw0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJv bTogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+IFNl bnQ6IE1vbmRheSwgSnVuZSAxNSwgMjAyMCA4OjE5IEFNDQo+ID4gVG86IGRldmVsQGVkazIuZ3Jv dXBzLmlvDQo+ID4gQ2M6IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47IFNlYW4g QnJvZ2FuDQo+IDxzZWFuLmJyb2dhbkBtaWNyb3NvZnQuY29tPjsgQnJldCBCYXJrZWxldw0KPiA8 QnJldC5CYXJrZWxld0BtaWNyb3NvZnQuY29tPjsNCj4gPiBZYW8sIEppZXdlbiA8amlld2VuLnlh b0BpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogW1BhdGNoIDA0LzE1XSBNZGVQa2cvQmFzZUxpYjog QnJlYWsgb3V0DQo+IElBMzIvWDY0IEdDQyBpbmxpbmUgcHJpdmlsZWdlZCBmdW5jdGlvbnMNCj4g Pg0KPiA+IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjgw MA0KPiA+DQo+ID4gQnJlYWsgb3V0IHRoZSBJQTMyL1g2NCBHQ0MgaW5saW5lIGZ1bmN0aW9ucyB0 aGF0IGNhbg0KPiBub3QgYmUgdXNlZA0KPiA+IGluIGEgdW5pdCB0ZXN0IGhvc3QgYXBwbGljYXRp b24gaW50byB0aGVpciBvd24gc291cmNlDQo+IGZpbGUuICBUaGlzDQo+ID4gZG9lcyBub3QgbWFr ZSBhbnkgY2hhbmdlcyB0byB0aGUgQmFzZUxpYiBsaWJyYXJ5DQo+IGluc3RhbmNlLiAgVGhpcw0K PiA+IGlzIGluIHByZXBhcmF0aW9uIGZvciBhIG5ldyBCYXNlTGliIGluc3RhbmNlcyB0aGF0IGlz DQo+IHNhZmUgdG8gdXNlDQo+ID4gd2l0aCBob3N0LWJhc2VkIHVuaXQgdGVzdCBhcHBsaWNhdGlv bnMuDQo+ID4NCj4gPiBDYzogTGltaW5nIEdhbyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+ID4g Q2M6IFNlYW4gQnJvZ2FuIDxzZWFuLmJyb2dhbkBtaWNyb3NvZnQuY29tPg0KPiA+IENjOiBCcmV0 IEJhcmtlbGV3IDxCcmV0LkJhcmtlbGV3QG1pY3Jvc29mdC5jb20+DQo+ID4gQ2M6IEppZXdlbiBZ YW8gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgRCBL aW5uZXkNCj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICBNZGVQ a2cvTGlicmFyeS9CYXNlTGliL0Jhc2VMaWIuaW5mICAgICAgICAgICAgfCAgICA0DQo+ICstDQo+ ID4gIE1kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvSWEzMi9HY2NJbmxpbmUuYyAgICAgICB8IDExODEN Cj4gKy0tLS0tLS0tLS0tLS0tLQ0KPiA+ICAuLi4vSWEzMi97R2NjSW5saW5lLmMgPT4gR2NjSW5s aW5lUHJpdi5jfSAgICAgfCAgNjAxDQo+ICstLS0tLS0tDQo+ID4gIE1kZVBrZy9MaWJyYXJ5L0Jh c2VMaWIvWDY0L0djY0lubGluZS5jICAgICAgICB8IDEyNDANCj4gKy0tLS0tLS0tLS0tLS0tLS0N Cj4gPiAgLi4uL1g2NC97R2NjSW5saW5lLmMgPT4gR2NjSW5saW5lUHJpdi5jfSAgICAgIHwgIDU3 Mg0KPiArLS0tLS0tLQ0KPiA+ICA1IGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDM1 ODcgZGVsZXRpb25zKC0pDQo+ID4gIGNvcHkgTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9JYTMyL3tH Y2NJbmxpbmUuYyA9Pg0KPiBHY2NJbmxpbmVQcml2LmN9ICg2MiUpDQo+ID4gIGNvcHkgTWRlUGtn L0xpYnJhcnkvQmFzZUxpYi9YNjQve0djY0lubGluZS5jID0+DQo+IEdjY0lubGluZVByaXYuY30g KDY1JSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlTGliL0Jhc2VM aWIuaW5mDQo+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9CYXNlTGliLmluZg0KPiA+IGluZGV4 IGE1N2FlMmRhMzEuLmM3NDBhODE5Y2EgMTAwNjQ0DQo+ID4gLS0tIGEvTWRlUGtnL0xpYnJhcnkv QmFzZUxpYi9CYXNlTGliLmluZg0KPiA+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvQmFz ZUxpYi5pbmYNCj4gPiBAQCAtMSw3ICsxLDcgQEANCj4gPiAgIyMgQGZpbGUNCj4gPiAgIyAgQmFz ZSBMaWJyYXJ5IGltcGxlbWVudGF0aW9uLg0KPiA+ICAjDQo+ID4gLSMgIENvcHlyaWdodCAoYykg MjAwNyAtIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwNCj4gcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4gPiArIyAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAyMCwgSW50ZWwgQ29ycG9yYXRpb24u IEFsbA0KPiByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICAjICBQb3J0aW9ucyBjb3B5cmlnaHQg KGMpIDIwMDggLSAyMDA5LCBBcHBsZSBJbmMuIEFsbA0KPiByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiA+ICAjICBQb3J0aW9ucyBjb3B5cmlnaHQgKGMpIDIwMTEgLSAyMDEzLCBBUk0gTHRkLiBBbGwN Cj4gcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiAgIyAgQ29weXJpZ2h0IChjKSAyMDIwLCBIZXds ZXR0IFBhY2thcmQgRW50ZXJwcmlzZQ0KPiBEZXZlbG9wbWVudCBMUC4gQWxsIHJpZ2h0cyByZXNl cnZlZC48QlI+DQo+ID4gQEAgLTE1Niw2ICsxNTYsNyBAQCBbU291cmNlcy5JYTMyXQ0KPiA+DQo+ ID4NCj4gPiAgICBJYTMyL0djY0lubGluZS5jIHwgR0NDDQo+ID4gKyAgSWEzMi9HY2NJbmxpbmVQ cml2LmMgfCBHQ0MNCj4gPiAgICBJYTMyL1RodW5rMTYubmFzbQ0KPiA+ICAgIElhMzIvRW5hYmxl RGlzYWJsZUludGVycnVwdHMubmFzbXwgR0NDDQo+ID4gICAgSWEzMi9FbmFibGVQYWdpbmc2NC5u YXNtDQo+ID4gQEAgLTMxMCw2ICszMTEsNyBAQCBbU291cmNlcy5YNjRdDQo+ID4gICAgWDg2UGF0 Y2hJbnN0cnVjdGlvbi5jDQo+ID4gICAgWDg2U3BlY3VsYXRpb25CYXJyaWVyLmMNCj4gPiAgICBY NjQvR2NjSW5saW5lLmMgfCBHQ0MNCj4gPiArICBYNjQvR2NjSW5saW5lUHJpdi5jIHwgR0NDDQo+ ID4gICAgWDY0L0VuYWJsZURpc2FibGVJbnRlcnJ1cHRzLm5hc20NCj4gPiAgICBYNjQvRGlzYWJs ZVBhZ2luZzY0Lm5hc20NCj4gPiAgICBYNjQvUmRSYW5kLm5hc20NCj4gPiBkaWZmIC0tZ2l0IGEv TWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9JYTMyL0djY0lubGluZS5jDQo+IGIvTWRlUGtnL0xpYnJh cnkvQmFzZUxpYi9JYTMyL0djY0lubGluZS5jDQo+ID4gaW5kZXggNTI4NzIwMGY4Ny4uNmVkOTM4 MTg3YSAxMDA2NDQNCj4gPiAtLS0gYS9NZGVQa2cvTGlicmFyeS9CYXNlTGliL0lhMzIvR2NjSW5s aW5lLmMNCj4gPiArKysgYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL0lhMzIvR2NjSW5saW5lLmMN Cj4gPiBAQCAtMSw3ICsxLDcgQEANCj4gPiAgLyoqIEBmaWxlDQo+ID4gICAgR0NDIGlubGluZSBp bXBsZW1lbnRhdGlvbiBvZiBCYXNlTGliIHByb2Nlc3Nvcg0KPiBzcGVjaWZpYyBmdW5jdGlvbnMu DQo+ID4NCj4gPiAtICBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsDQo+IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDA2 IC0gMjAyMCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbA0KPiByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiA+ICAgIFBvcnRpb25zIGNvcHlyaWdodCAoYykgMjAwOCAtIDIwMDksIEFwcGxlIEluYy4gQWxs DQo+IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPg0KPiA+IEBAIC0xMCw4ICsxMCw2IEBADQo+ID4NCj4g PiAgI2luY2x1ZGUgIkJhc2VMaWJJbnRlcm5hbHMuaCINCj4gPg0KPiA+IC0NCj4gPiAtDQo+ID4g IC8qKg0KPiA+ICAgIFVzZWQgdG8gc2VyaWFsaXplIGxvYWQgYW5kIHN0b3JlIG9wZXJhdGlvbnMu DQo+ID4NCj4gPiBAQCAtMzEsNDEgKzI5LDYgQEAgTWVtb3J5RmVuY2UgKA0KPiA+ICAgIF9fYXNt X18gX192b2xhdGlsZV9fICgiIjo6OiJtZW1vcnkiKTsNCj4gPiAgfQ0KPiA+DQo+ID4gLQ0KPiA+ IC0vKioNCj4gPiAtICBFbmFibGVzIENQVSBpbnRlcnJ1cHRzLg0KPiA+IC0NCj4gPiAtICBFbmFi bGVzIENQVSBpbnRlcnJ1cHRzLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVZPSUQNCj4gPiAtRUZJ QVBJDQo+ID4gLUVuYWJsZUludGVycnVwdHMgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4g LXsNCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoInN0aSI6OjogIm1lbW9yeSIpOw0KPiA+ IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgRGlzYWJsZXMgQ1BVIGludGVycnVw dHMuDQo+ID4gLQ0KPiA+IC0gIERpc2FibGVzIENQVSBpbnRlcnJ1cHRzLg0KPiA+IC0NCj4gPiAt KiovDQo+ID4gLVZPSUQNCj4gPiAtRUZJQVBJDQo+ID4gLURpc2FibGVJbnRlcnJ1cHRzICgNCj4g PiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18g KCJjbGkiOjo6ICJtZW1vcnkiKTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0N Cj4gPiAgLyoqDQo+ID4gICAgUmVxdWVzdHMgQ1BVIHRvIHBhdXNlIGZvciBhIHNob3J0IHBlcmlv ZCBvZiB0aW1lLg0KPiA+DQo+ID4gQEAgLTgyLDcgKzQ1LDYgQEAgQ3B1UGF1c2UgKA0KPiA+ICAg IF9fYXNtX18gX192b2xhdGlsZV9fICgicGF1c2UiKTsNCj4gPiAgfQ0KPiA+DQo+ID4gLQ0KPiA+ ICAvKioNCj4gPiAgICBHZW5lcmF0ZXMgYSBicmVha3BvaW50IG9uIHRoZSBDUFUuDQo+ID4NCj4g PiBAQCAtOTksNzUgKzYxLDYgQEAgQ3B1QnJlYWtwb2ludCAoDQo+ID4gICAgX19hc21fXyBfX3Zv bGF0aWxlX18gKCJpbnQgJDMiKTsNCj4gPiAgfQ0KPiA+DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoq DQo+ID4gLSAgUmV0dXJucyBhIDY0LWJpdCBNYWNoaW5lIFNwZWNpZmljIFJlZ2lzdGVyKE1TUiku DQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSA2NC1iaXQgTVNSIHNwZWNpZmll ZCBieQ0KPiBJbmRleC4gTm8gcGFyYW1ldGVyIGNoZWNraW5nIGlzDQo+ID4gLSAgcGVyZm9ybWVk IG9uIEluZGV4LCBhbmQgc29tZSBJbmRleCB2YWx1ZXMgbWF5IGNhdXNlDQo+IENQVSBleGNlcHRp b25zLiBUaGUNCj4gPiAtICBjYWxsZXIgbXVzdCBlaXRoZXIgZ3VhcmFudGVlIHRoYXQgSW5kZXgg aXMgdmFsaWQsDQo+IG9yIHRoZSBjYWxsZXIgbXVzdCBzZXQgdXANCj4gPiAtICBleGNlcHRpb24g aGFuZGxlcnMgdG8gY2F0Y2ggdGhlIGV4Y2VwdGlvbnMuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25s eSBhdmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFy YW0gIEluZGV4IFRoZSAzMi1iaXQgTVNSIGluZGV4IHRvIHJlYWQuDQo+ID4gLQ0KPiA+IC0gIEBy ZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBNU1IgaWRlbnRpZmllZCBieSBJbmRleC4NCj4gPiAtDQo+ ID4gLSoqLw0KPiA+IC1VSU5UNjQNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWRNc3I2NCAoDQo+ ID4gLSAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEluZGV4DQo+ID4gLSAgKQ0K PiA+IC17DQo+ID4gLSAgVUlOVDY0IERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xh dGlsZV9fICgNCj4gPiAtICAgICJyZG1zciINCj4gPiAtICAgIDogIj1BIiAoRGF0YSkgICAvLyAl MA0KPiA+IC0gICAgOiAiYyIgIChJbmRleCkgIC8vICUxDQo+ID4gLSAgICApOw0KPiA+IC0NCj4g PiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVz IGEgNjQtYml0IHZhbHVlIHRvIGEgTWFjaGluZSBTcGVjaWZpYw0KPiBSZWdpc3RlcihNU1IpLCBh bmQgcmV0dXJucyB0aGUNCj4gPiAtICB2YWx1ZS4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIHRoZSA2 NC1iaXQgdmFsdWUgc3BlY2lmaWVkIGJ5IFZhbHVlIHRvIHRoZQ0KPiBNU1Igc3BlY2lmaWVkIGJ5 IEluZGV4LiBUaGUNCj4gPiAtICA2NC1iaXQgdmFsdWUgd3JpdHRlbiB0byB0aGUgTVNSIGlzIHJl dHVybmVkLiBObw0KPiBwYXJhbWV0ZXIgY2hlY2tpbmcgaXMNCj4gPiAtICBwZXJmb3JtZWQgb24g SW5kZXggb3IgVmFsdWUsIGFuZCBzb21lIG9mIHRoZXNlIG1heQ0KPiBjYXVzZSBDUFUgZXhjZXB0 aW9ucy4gVGhlDQo+ID4gLSAgY2FsbGVyIG11c3QgZWl0aGVyIGd1YXJhbnRlZSB0aGF0IEluZGV4 IGFuZCBWYWx1ZQ0KPiBhcmUgdmFsaWQsIG9yIHRoZSBjYWxsZXINCj4gPiAtICBtdXN0IGVzdGFi bGlzaCBwcm9wZXIgZXhjZXB0aW9uIGhhbmRsZXJzLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkg YXZhaWxhYmxlIG9uDQo+ID4gLSAgSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFt ICBJbmRleCBUaGUgMzItYml0IE1TUiBpbmRleCB0byB3cml0ZS4NCj4gPiAtICBAcGFyYW0gIFZh bHVlIFRoZSA2NC1iaXQgdmFsdWUgdG8gd3JpdGUgdG8gdGhlIE1TUi4NCj4gPiAtDQo+ID4gLSAg QHJldHVybiBWYWx1ZQ0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQ2NA0KPiA+IC1FRklBUEkN Cj4gPiAtQXNtV3JpdGVNc3I2NCAoDQo+ID4gLSAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAg ICAgICAgIEluZGV4LA0KPiA+IC0gIElOICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBW YWx1ZQ0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4g PiAtICAgICJ3cm1zciINCj4gPiAtICAgIDoNCj4gPiAtICAgIDogImMiIChJbmRleCksDQo+ID4g LSAgICAgICJBIiAoVmFsdWUpDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gVmFs dWU7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0NCj4gPiAgLyoqDQo+ID4gICAgUmVhZHMg dGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIEVGTEFHUyByZWdpc3Rlci4NCj4gPg0KPiA+IEBAIC0x OTUsOTY1ICs4OCw2IEBAIEFzbVJlYWRFZmxhZ3MgKA0KPiA+ICAgIHJldHVybiBFZmxhZ3M7DQo+ ID4gIH0NCj4gPg0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJy ZW50IHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDANCj4gKENSMCkuDQo+ID4gLQ0KPiA+ IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIENSMC4gVGhpcw0KPiBm dW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuIFRoaXMg cmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24N Cj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBDb250 cm9sIFJlZ2lzdGVyIDAgKENSMCkuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4gPiAt RUZJQVBJDQo+ID4gLUFzbVJlYWRDcjAgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsN Cj4gPiAtICBVSU5UTiAgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9f ICgNCj4gPiAtICAgICJtb3ZsICUlY3IwLCUwIg0KPiA+IC0gICAgOiAiPWEiIChEYXRhKQ0KPiA+ IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4g LQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgQ29udHJv bCBSZWdpc3RlciAyDQo+IChDUjIpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0 aGUgY3VycmVudCB2YWx1ZSBvZiBDUjIuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFi bGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUg b24NCj4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gLSAgWDY0Lg0KPiA+IC0NCj4g PiAtICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiB0aGUgQ29udHJvbCBSZWdpc3RlciAyIChDUjIpLg0K PiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkQ3Iy ICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVE4gRGF0YTsNCj4g PiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdmwgJSVjcjIs ICUwIg0KPiA+IC0gICAgOiAiPXIiIChEYXRhKQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAg cmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBj dXJyZW50IHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDMNCj4gKENSMykuDQo+ID4gLQ0K PiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIENSMy4gVGhpcw0K PiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuIFRo aXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUg b24NCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBD b250cm9sIFJlZ2lzdGVyIDMgKENSMykuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4g PiAtRUZJQVBJDQo+ID4gLUFzbVJlYWRDcjMgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4g LXsNCj4gPiAtICBVSU5UTiBEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVf XyAoDQo+ID4gLSAgICAibW92bCAlJWNyMywgJTAiDQo+ID4gLSAgICA6ICI9ciIgKERhdGEpDQo+ ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4g PiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBDb250 cm9sIFJlZ2lzdGVyIDQNCj4gKENSNCkuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5z IHRoZSBjdXJyZW50IHZhbHVlIG9mIENSNC4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWls YWJsZQ0KPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1 ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiAtICBYNjQuDQo+ID4gLQ0K PiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDQgKENSNCku DQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWRD cjQgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UTiBEYXRhOw0K PiA+IC0NCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92bCAlJWNy NCwgJTAiDQo+ID4gLSAgICA6ICI9YSIgKERhdGEpDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAt ICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFdy aXRlcyBhIHZhbHVlIHRvIENvbnRyb2wgUmVnaXN0ZXIgMCAoQ1IwKS4NCj4gPiAtDQo+ID4gLSAg V3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIENSMC4gVGhpcw0KPiBmdW5jdGlvbiBp cyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMyIGFuZCBYNjQuIFRoaXMgd3JpdGVzIGEg MzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiBYNjQuDQo+ID4g LQ0KPiA+IC0gIEBwYXJhbSAgQ3IwIFRoZSB2YWx1ZSB0byB3cml0ZSB0byBDUjAuDQo+ID4gLQ0K PiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gQ1IwLg0KPiA+IC0NCj4gPiAtKiov DQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZUNyMCAoDQo+ID4gLSAgVUlO VE4gIENyMA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgN Cj4gPiAtICAgICJtb3ZsICUwLCAlJWNyMCINCj4gPiAtICAgIDoNCj4gPiAtICAgIDogInIiIChD cjApDQo+ID4gLSAgICApOw0KPiA+IC0gIHJldHVybiBDcjA7DQo+ID4gLX0NCj4gPiAtDQo+ID4g LQ0KPiA+IC0vKioNCj4gPiAtICBXcml0ZXMgYSB2YWx1ZSB0byBDb250cm9sIFJlZ2lzdGVyIDIg KENSMikuDQo+ID4gLQ0KPiA+IC0gIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBD UjIuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAtICBJQS0zMiBh bmQgWDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0KPiBhbmQgYSA2NC1i aXQgdmFsdWUgb24gWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIENyMiBUaGUgdmFsdWUgdG8g d3JpdGUgdG8gQ1IyLg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRv IENSMi4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNt V3JpdGVDcjIgKA0KPiA+IC0gIFVJTlROICBDcjINCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBf X2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92bCAlMCwgJSVjcjIiDQo+ID4gLSAg ICA6DQo+ID4gLSAgICA6ICJyIiAoQ3IyKQ0KPiA+IC0gICAgKTsNCj4gPiAtICByZXR1cm4gQ3Iy Ow0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIGEgdmFsdWUg dG8gQ29udHJvbCBSZWdpc3RlciAzIChDUjMpLg0KPiA+IC0NCj4gPiAtICBXcml0ZXMgYW5kIHJl dHVybnMgYSBuZXcgdmFsdWUgdG8gQ1IzLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxh YmxlIG9uDQo+ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUg b24gSUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBh cmFtICBDcjMgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIENSMy4NCj4gPiAtDQo+ID4gLSAgQHJldHVy biBUaGUgdmFsdWUgd3JpdHRlbiB0byBDUjMuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4N Cj4gPiAtRUZJQVBJDQo+ID4gLUFzbVdyaXRlQ3IzICgNCj4gPiAtICBVSU5UTiAgQ3IzDQo+ID4g LSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1v dmwgJTAsICUlY3IzIg0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAiciIgKENyMykNCj4gPiAtICAg ICk7DQo+ID4gLSAgcmV0dXJuIENyMzsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0K PiA+IC0gIFdyaXRlcyBhIHZhbHVlIHRvIENvbnRyb2wgUmVnaXN0ZXIgNCAoQ1I0KS4NCj4gPiAt DQo+ID4gLSAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIENSNC4gVGhpcw0KPiBm dW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMyIGFuZCBYNjQuIFRoaXMg d3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiBY NjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAgQ3I0IFRoZSB2YWx1ZSB0byB3cml0ZSB0byBDUjQu DQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gQ1I0Lg0KPiA+IC0N Cj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZUNyNCAoDQo+ ID4gLSAgVUlOVE4gIENyNA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xh dGlsZV9fICgNCj4gPiAtICAgICJtb3ZsICUwLCAlJWNyNCINCj4gPiAtICAgIDoNCj4gPiAtICAg IDogInIiIChDcjQpDQo+ID4gLSAgICApOw0KPiA+IC0gIHJldHVybiBDcjQ7DQo+ID4gLX0NCj4g PiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBE ZWJ1ZyBSZWdpc3RlciAwIChEUjApLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0 aGUgY3VycmVudCB2YWx1ZSBvZiBEUjAuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFi bGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUg b24NCj4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gLSAgWDY0Lg0KPiA+IC0NCj4g PiAtICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciAwIChEUjApLg0KPiA+IC0N Cj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkRHIwICgNCj4g PiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVE4gRGF0YTsNCj4gPiAtDQo+ ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdmwgJSVkcjAsICUwIg0K PiA+IC0gICAgOiAiPXIiIChEYXRhKQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJu IERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUg Y3VycmVudCB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciAxIChEUjEpLg0KPiA+IC0NCj4gPiAtICBS ZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjEuIFRoaXMNCj4gZnVuY3Rp b24gaXMgb25seSBhdmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0LiBUaGlzIHJldHVy bnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4g LSAgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3Rl ciAxIChEUjEpLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+ IC1Bc21SZWFkRHIxICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlO VE4gRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAg Im1vdmwgJSVkcjEsICUwIg0KPiA+IC0gICAgOiAiPXIiIChEYXRhKQ0KPiA+IC0gICAgKTsNCj4g PiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioN Cj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciAyIChEUjIp Lg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBE UjIuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBh bmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gSUEtMzIgYW5kIGEgNjQt Yml0IHZhbHVlIG9uDQo+ID4gLSAgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1 ZSBvZiBEZWJ1ZyBSZWdpc3RlciAyIChEUjIpLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRO DQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkRHIyICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0K PiA+IC17DQo+ID4gLSAgVUlOVE4gRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0 aWxlX18gKA0KPiA+IC0gICAgIm1vdmwgJSVkcjIsICUwIg0KPiA+IC0gICAgOiAiPXIiIChEYXRh KQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAt DQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEZWJ1 ZyBSZWdpc3RlciAzIChEUjMpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUg Y3VycmVudCB2YWx1ZSBvZiBEUjMuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUN Cj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24N Cj4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gLSAgWDY0Lg0KPiA+IC0NCj4gPiAt ICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciAzIChEUjMpLg0KPiA+IC0NCj4g PiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkRHIzICgNCj4gPiAt ICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVE4gRGF0YTsNCj4gPiAtDQo+ID4g LSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdmwgJSVkcjMsICUwIg0KPiA+ IC0gICAgOiAiPXIiIChEYXRhKQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERh dGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3Vy cmVudCB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA0IChEUjQpLg0KPiA+IC0NCj4gPiAtICBSZWFk cyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjQuIFRoaXMNCj4gZnVuY3Rpb24g aXMgb25seSBhdmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0LiBUaGlzIHJldHVybnMg YSAzMi1iaXQgdmFsdWUgb24NCj4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gLSAg WDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA0 IChEUjQpLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1B c21SZWFkRHI0ICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVE4g RGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1v dmwgJSVkcjQsICUwIg0KPiA+IC0gICAgOiAiPXIiIChEYXRhKQ0KPiA+IC0gICAgKTsNCj4gPiAt DQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4g PiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA1IChEUjUpLg0K PiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjUu IFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQg WDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gSUEtMzIgYW5kIGEgNjQtYml0 IHZhbHVlIG9uDQo+ID4gLSAgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSBv ZiBEZWJ1ZyBSZWdpc3RlciA1IChEUjUpLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkRHI1ICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+ IC17DQo+ID4gLSAgVUlOVE4gRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxl X18gKA0KPiA+IC0gICAgIm1vdmwgJSVkcjUsICUwIg0KPiA+IC0gICAgOiAiPXIiIChEYXRhKQ0K PiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEZWJ1ZyBS ZWdpc3RlciA2IChEUjYpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3Vy cmVudCB2YWx1ZSBvZiBEUjYuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4g PiAtICBvbiBJQS0zMiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4g SUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gLSAgWDY0Lg0KPiA+IC0NCj4gPiAtICBA cmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA2IChEUjYpLg0KPiA+IC0NCj4gPiAt KiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkRHI2ICgNCj4gPiAtICBW T0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVE4gRGF0YTsNCj4gPiAtDQo+ID4gLSAg X19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdmwgJSVkcjYsICUwIg0KPiA+IC0g ICAgOiAiPXIiIChEYXRhKQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7 DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVu dCB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA3IChEUjcpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBh bmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjcuIFRoaXMNCj4gZnVuY3Rpb24gaXMg b25seSBhdmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAz Mi1iaXQgdmFsdWUgb24NCj4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gLSAgWDY0 Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA3IChE UjcpLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21S ZWFkRHI3ICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVE4gRGF0 YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdmwg JSVkcjcsICUwIg0KPiA+IC0gICAgOiAiPXIiIChEYXRhKQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAt ICBXcml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciAwIChEUjApLg0KPiA+IC0NCj4gPiAt ICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFIwLiBUaGlzDQo+IGZ1bmN0aW9u IGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMg YSAzMi1iaXQgdmFsdWUgb24gSUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4g PiAtDQo+ID4gLSAgQHBhcmFtICBEcjAgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIERyMC4NCj4gPiAt DQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciAwDQo+ IChEUjApLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1B c21Xcml0ZURyMCAoDQo+ID4gLSAgVUlOVE4gIERyMA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0g IF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3ZsICUwLCAlJWRyMCINCj4gPiAt ICAgIDoNCj4gPiAtICAgIDogInIiIChEcjApDQo+ID4gLSAgICApOw0KPiA+IC0gIHJldHVybiBE cjA7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBXcml0ZXMgYSB2YWx1 ZSB0byBEZWJ1ZyBSZWdpc3RlciAxIChEUjEpLg0KPiA+IC0NCj4gPiAtICBXcml0ZXMgYW5kIHJl dHVybnMgYSBuZXcgdmFsdWUgdG8gRFIxLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxh YmxlIG9uDQo+ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUg b24gSUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBh cmFtICBEcjEgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIERyMS4NCj4gPiAtDQo+ID4gLSAgQHJldHVy biBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciAxDQo+IChEUjEpLg0KPiA+IC0N Cj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZURyMSAoDQo+ ID4gLSAgVUlOVE4gIERyMQ0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xh dGlsZV9fICgNCj4gPiAtICAgICJtb3ZsICUwLCAlJWRyMSINCj4gPiAtICAgIDoNCj4gPiAtICAg IDogInIiIChEcjEpDQo+ID4gLSAgICApOw0KPiA+IC0gIHJldHVybiBEcjE7DQo+ID4gLX0NCj4g PiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBXcml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBSZWdp c3RlciAyIChEUjIpLg0KPiA+IC0NCj4gPiAtICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFs dWUgdG8gRFIyLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gLSAg SUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzINCj4gYW5k IGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBEcjIgVGhlIHZh bHVlIHRvIHdyaXRlIHRvIERyMi4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgd3Jp dHRlbiB0byBEZWJ1ZyBSZWdpc3RlciAyDQo+IChEUjIpLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4g LVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZURyMiAoDQo+ID4gLSAgVUlOVE4gIERy Mg0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAt ICAgICJtb3ZsICUwLCAlJWRyMiINCj4gPiAtICAgIDoNCj4gPiAtICAgIDogInIiIChEcjIpDQo+ ID4gLSAgICApOw0KPiA+IC0gIHJldHVybiBEcjI7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+ IC0vKioNCj4gPiAtICBXcml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciAzIChEUjMpLg0K PiA+IC0NCj4gPiAtICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFIzLiBUaGlz DQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gLSAgSUEtMzIgYW5kIFg2NC4g VGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVl IG9uIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBEcjMgVGhlIHZhbHVlIHRvIHdyaXRlIHRv IERyMy4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBS ZWdpc3RlciAzDQo+IChEUjMpLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVG SUFQSQ0KPiA+IC1Bc21Xcml0ZURyMyAoDQo+ID4gLSAgVUlOVE4gIERyMw0KPiA+IC0gICkNCj4g PiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3ZsICUwLCAl JWRyMyINCj4gPiAtICAgIDoNCj4gPiAtICAgIDogInIiIChEcjMpDQo+ID4gLSAgICApOw0KPiA+ IC0gIHJldHVybiBEcjM7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBX cml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciA0IChEUjQpLg0KPiA+IC0NCj4gPiAtICBX cml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFI0LiBUaGlzDQo+IGZ1bmN0aW9uIGlz IG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMgYSAz Mi1iaXQgdmFsdWUgb24gSUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiAt DQo+ID4gLSAgQHBhcmFtICBEcjQgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIERyNC4NCj4gPiAtDQo+ ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciA0DQo+IChE UjQpLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21X cml0ZURyNCAoDQo+ID4gLSAgVUlOVE4gIERyNA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9f YXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3ZsICUwLCAlJWRyNCINCj4gPiAtICAg IDoNCj4gPiAtICAgIDogInIiIChEcjQpDQo+ID4gLSAgICApOw0KPiA+IC0gIHJldHVybiBEcjQ7 DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBXcml0ZXMgYSB2YWx1ZSB0 byBEZWJ1ZyBSZWdpc3RlciA1IChEUjUpLg0KPiA+IC0NCj4gPiAtICBXcml0ZXMgYW5kIHJldHVy bnMgYSBuZXcgdmFsdWUgdG8gRFI1LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxl IG9uDQo+ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24g SUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFt ICBEcjUgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIERyNS4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBU aGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciA1DQo+IChEUjUpLg0KPiA+IC0NCj4g PiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZURyNSAoDQo+ID4g LSAgVUlOVE4gIERyNQ0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGls ZV9fICgNCj4gPiAtICAgICJtb3ZsICUwLCAlJWRyNSINCj4gPiAtICAgIDoNCj4gPiAtICAgIDog InIiIChEcjUpDQo+ID4gLSAgICApOw0KPiA+IC0gIHJldHVybiBEcjU7DQo+ID4gLX0NCj4gPiAt DQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBXcml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBSZWdpc3Rl ciA2IChEUjYpLg0KPiA+IC0NCj4gPiAtICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUg dG8gRFI2LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gLSAgSUEt MzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzINCj4gYW5kIGEg NjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBEcjYgVGhlIHZhbHVl IHRvIHdyaXRlIHRvIERyNi4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRl biB0byBEZWJ1ZyBSZWdpc3RlciA2DQo+IChEUjYpLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJ TlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZURyNiAoDQo+ID4gLSAgVUlOVE4gIERyNg0K PiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAg ICJtb3ZsICUwLCAlJWRyNiINCj4gPiAtICAgIDoNCj4gPiAtICAgIDogInIiIChEcjYpDQo+ID4g LSAgICApOw0KPiA+IC0gIHJldHVybiBEcjY7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0v KioNCj4gPiAtICBXcml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciA3IChEUjcpLg0KPiA+ IC0NCj4gPiAtICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFI3LiBUaGlzDQo+ IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhp cyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVlIG9u IFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBEcjcgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIERy Ny4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdp c3RlciA3DQo+IChEUjcpLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQ SQ0KPiA+IC1Bc21Xcml0ZURyNyAoDQo+ID4gLSAgVUlOVE4gIERyNw0KPiA+IC0gICkNCj4gPiAt ew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3ZsICUwLCAlJWRy NyINCj4gPiAtICAgIDoNCj4gPiAtICAgIDogInIiIChEcjcpDQo+ID4gLSAgICApOw0KPiA+IC0g IHJldHVybiBEcjc7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFk cyB0aGUgY3VycmVudCB2YWx1ZSBvZiBDb2RlIFNlZ21lbnQgUmVnaXN0ZXINCj4gKENTKS4NCj4g PiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgQ1MuIFRo aXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAtICBJQS0zMiBhbmQgWDY0 Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIENTLg0KPiA+IC0N Cj4gPiAtKiovDQo+ID4gLVVJTlQxNg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZENzICgNCj4g PiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVDE2ICBEYXRhOw0KPiA+IC0N Cj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92ICAgJSVjcywgJTAi DQo+ID4gLSAgICA6Ij1hIiAoRGF0YSkNCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVy biBEYXRhOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhl IGN1cnJlbnQgdmFsdWUgb2YgRGF0YSBTZWdtZW50IFJlZ2lzdGVyDQo+IChEUykuDQo+ID4gLQ0K PiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIERTLiBUaGlzDQo+ IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gLSAgSUEtMzIgYW5kIFg2NC4NCj4g PiAtDQo+ID4gLSAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBEUy4NCj4gPiAtDQo+ID4g LSoqLw0KPiA+IC1VSU5UMTYNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWREcyAoDQo+ID4gLSAg Vk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlQxNiAgRGF0YTsNCj4gPiAtDQo+ID4g LSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdiAgJSVkcywgJTAiDQo+ID4g LSAgICA6Ij1hIiAoRGF0YSkNCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRh Ow0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJl bnQgdmFsdWUgb2YgRXh0cmEgU2VnbWVudCBSZWdpc3Rlcg0KPiAoRVMpLg0KPiA+IC0NCj4gPiAt ICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBFUy4gVGhpcw0KPiBmdW5j dGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0K PiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgRVMuDQo+ID4gLQ0KPiA+IC0qKi8N Cj4gPiAtVUlOVDE2DQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkRXMgKA0KPiA+IC0gIFZPSUQN Cj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UMTYgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9f YXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3YgICUlZXMsICUwIg0KPiA+IC0gICAg OiI9YSIgKERhdGEpDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4g PiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZh bHVlIG9mIEZTIERhdGEgU2VnbWVudCBSZWdpc3Rlcg0KPiAoRlMpLg0KPiA+IC0NCj4gPiAtICBS ZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBGUy4gVGhpcw0KPiBmdW5jdGlv biBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+ IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgRlMuDQo+ID4gLQ0KPiA+IC0qKi8NCj4g PiAtVUlOVDE2DQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkRnMgKA0KPiA+IC0gIFZPSUQNCj4g PiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UMTYgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNt X18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3YgICUlZnMsICUwIg0KPiA+IC0gICAgOiI9 YSIgKERhdGEpDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAt fQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVl IG9mIEdTIERhdGEgU2VnbWVudCBSZWdpc3Rlcg0KPiAoR1MpLg0KPiA+IC0NCj4gPiAtICBSZWFk cyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBHUy4gVGhpcw0KPiBmdW5jdGlvbiBp cyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0g IEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgR1MuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAt VUlOVDE2DQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkR3MgKA0KPiA+IC0gIFZPSUQNCj4gPiAt ICApDQo+ID4gLXsNCj4gPiAtICBVSU5UMTYgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18g X192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3YgICUlZ3MsICUwIg0KPiA+IC0gICAgOiI9YSIg KERhdGEpDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0K PiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9m IFN0YWNrIFNlZ21lbnQgUmVnaXN0ZXINCj4gKFNTKS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMgYW5k IHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgU1MuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25s eSBhdmFpbGFibGUgb24NCj4gPiAtICBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0 dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIFNTLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQx Ng0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZFNzICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0K PiA+IC17DQo+ID4gLSAgVUlOVDE2ICBEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2FzbV9fIF9fdm9s YXRpbGVfXyAoDQo+ID4gLSAgICAibW92ICAlJWRzLCAlMCINCj4gPiAtICAgIDoiPWEiIChEYXRh KQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAt DQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBUYXNr IFJlZ2lzdGVyIChUUikuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJy ZW50IHZhbHVlIG9mIFRSLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ ID4gLSAgSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgY3VycmVudCB2 YWx1ZSBvZiBUUi4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UMTYNCj4gPiAtRUZJQVBJDQo+ ID4gLUFzbVJlYWRUciAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJ TlQxNiAgRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0g ICAgInN0ciAgJTAiDQo+ID4gLSAgICA6ICI9YSIgKERhdGEpDQo+ID4gLSAgICApOw0KPiA+IC0N Cj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+ IC0gIFJlYWRzIHRoZSBjdXJyZW50IEdsb2JhbCBEZXNjcmlwdG9yIFRhYmxlDQo+IFJlZ2lzdGVy KEdEVFIpIGRlc2NyaXB0b3IuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBj dXJyZW50IEdEVFIgZGVzY3JpcHRvciBhbmQNCj4gcmV0dXJucyBpdCBpbiBHZHRyLiBUaGlzDQo+ ID4gLSAgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAt DQo+ID4gLSAgQHBhcmFtICBHZHRyICBUaGUgcG9pbnRlciB0byBhIEdEVFIgZGVzY3JpcHRvci4N Cj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1JbnRlcm5hbFg4 NlJlYWRHZHRyICgNCj4gPiAtICBPVVQgICAgIElBMzJfREVTQ1JJUFRPUiAgICAgICAgICAgKkdk dHINCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4g LSAgICAic2dkdCAlMCINCj4gPiAtICAgIDogIj1tIiAoKkdkdHIpDQo+ID4gLSAgICApOw0KPiA+ IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IEds b2JhbCBEZXNjcmlwdG9yIFRhYmxlIFJlZ2lzdGVyDQo+IChHRFRSKSBkZXNjcmlwdG9yLg0KPiA+ IC0NCj4gPiAtICBXcml0ZXMgYW5kIHRoZSBjdXJyZW50IEdEVFIgZGVzY3JpcHRvciBzcGVjaWZp ZWQgYnkNCj4gR2R0ci4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+IC0gIG9ubHkgYXZhaWxhYmxlIG9u IElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAgR2R0ciAgVGhlIHBvaW50ZXIg dG8gYSBHRFRSIGRlc2NyaXB0b3IuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1F RklBUEkNCj4gPiAtSW50ZXJuYWxYODZXcml0ZUdkdHIgKA0KPiA+IC0gIElOICAgICAgQ09OU1Qg SUEzMl9ERVNDUklQVE9SICAgICAqR2R0cg0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNt X18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJsZ2R0ICUwIg0KPiA+IC0gICAgOg0KPiA+IC0g ICAgOiAibSIgKCpHZHRyKQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLX0NCj4gPiAtDQo+ID4g LQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCBJbnRlcnJ1cHQgRGVzY3JpcHRv ciBUYWJsZQ0KPiBSZWdpc3RlcihHRFRSKSBkZXNjcmlwdG9yLg0KPiA+IC0NCj4gPiAtICBSZWFk cyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBJRFRSIGRlc2NyaXB0b3IgYW5kDQo+IHJldHVybnMg aXQgaW4gSWR0ci4gVGhpcw0KPiA+IC0gIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIElB LTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAgSWR0ciAgVGhlIHBvaW50ZXIgdG8g YSBJRFRSIGRlc2NyaXB0b3IuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1FRklB UEkNCj4gPiAtSW50ZXJuYWxYODZSZWFkSWR0ciAoDQo+ID4gLSAgT1VUICAgICBJQTMyX0RFU0NS SVBUT1IgICAgICAgICAgICpJZHRyDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBf X3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgInNpZHQgICUwIg0KPiA+IC0gICAgOiAiPW0iICgqSWR0 cikNCj4gPiAtICAgICk7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBX cml0ZXMgdGhlIGN1cnJlbnQgSW50ZXJydXB0IERlc2NyaXB0b3IgVGFibGUNCj4gUmVnaXN0ZXIo R0RUUikgZGVzY3JpcHRvci4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IElEVFIg ZGVzY3JpcHRvciBhbmQgcmV0dXJucyBpdA0KPiBpbiBJZHRyLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ ID4gLSAgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBh cmFtICBJZHRyICBUaGUgcG9pbnRlciB0byBhIElEVFIgZGVzY3JpcHRvci4NCj4gPiAtDQo+ID4g LSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1JbnRlcm5hbFg4NldyaXRlSWR0ciAo DQo+ID4gLSAgSU4gICAgICBDT05TVCBJQTMyX0RFU0NSSVBUT1IgICAgICpJZHRyDQo+ID4gLSAg KQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgImxpZHQg JTAiDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJtIiAoKklkdHIpDQo+ID4gLSAgICApOw0KPiA+ IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgTG9j YWwgRGVzY3JpcHRvciBUYWJsZQ0KPiBSZWdpc3RlcihMRFRSKSBzZWxlY3Rvci4NCj4gPiAtDQo+ ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgMTYtYml0IExEVFINCj4gZGVzY3Jp cHRvciB2YWx1ZS4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+IC0gIG9ubHkgYXZhaWxhYmxlIG9uIElB LTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQgc2VsZWN0b3Ig b2YgTERULg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQxNg0KPiA+IC1FRklBUEkNCj4gPiAt QXNtUmVhZExkdHIgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5U MTYgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAg ICJzbGR0ICAlMCINCj4gPiAtICAgIDogIj1nIiAoRGF0YSkgICAvLyAlMA0KPiA+IC0gICAgKTsN Cj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0v KioNCj4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgTG9jYWwgRGVzY3JpcHRvciBUYWJsZSBSZWdp c3Rlcg0KPiAoR0RUUikgc2VsZWN0b3IuDQo+ID4gLQ0KPiA+IC0gIFdyaXRlcyBhbmQgdGhlIGN1 cnJlbnQgTERUUiBkZXNjcmlwdG9yIHNwZWNpZmllZCBieQ0KPiBMZHRyLiBUaGlzIGZ1bmN0aW9u IGlzDQo+ID4gLSAgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4g LSAgQHBhcmFtICBMZHRyICAxNi1iaXQgTERUUiBzZWxlY3RvciB2YWx1ZS4NCj4gPiAtDQo+ID4g LSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZUxkdHIgKA0KPiA+IC0g IElOICAgICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICBMZHRyDQo+ID4gLSAgKQ0KPiA+IC17 DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgImxsZHR3ICAlMCINCj4g PiAtICAgIDoNCj4gPiAtICAgIDogImciIChMZHRyKSAgIC8vICUwDQo+ID4gLSAgICApOw0KPiA+ IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAgLyoqDQo+ID4gICAgU2F2ZSB0aGUgY3VycmVudCBmbG9h dGluZyBwb2ludC9TU0UvU1NFMiBjb250ZXh0IHRvDQo+IGEgYnVmZmVyLg0KPiA+DQo+ID4gQEAg LTE2NTAsMTE2ICs1ODQsMyBAQCBBc21SZWFkVHNjICgNCj4gPg0KPiA+ICAgIHJldHVybiBEYXRh Ow0KPiA+ICB9DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJl bnQgdmFsdWUgb2YgYSBQZXJmb3JtYW5jZSBDb3VudGVyDQo+IChQTUMpLg0KPiA+IC0NCj4gPiAt ICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBwZXJmb3JtYW5jZQ0KPiBj b3VudGVyIHNwZWNpZmllZCBieQ0KPiA+IC0gIEluZGV4LiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkg YXZhaWxhYmxlIG9uIElBLTMyIGFuZA0KPiBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAgSW5k ZXggVGhlIDMyLWJpdCBQZXJmb3JtYW5jZSBDb3VudGVyIGluZGV4DQo+IHRvIHJlYWQuDQo+ID4g LQ0KPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBQTUMgc3BlY2lmaWVkIGJ5IEluZGV4 Lg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQ2NA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVh ZFBtYyAoDQo+ID4gLSAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEluZGV4DQo+ ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVDY0ICBEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2Fz bV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAicmRwbWMiDQo+ID4gLSAgICA6ICI9QSIgKERh dGEpDQo+ID4gLSAgICA6ICJjIiAgKEluZGV4KQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAg cmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8q Kg0KPiA+IC0gIEV4ZWN1dGVzIGEgV0JJTlZEIGluc3RydWN0aW9uLg0KPiA+IC0NCj4gPiAtICBF eGVjdXRlcyBhIFdCSU5WRCBpbnN0cnVjdGlvbi4gVGhpcyBmdW5jdGlvbiBpcw0KPiBvbmx5IGF2 YWlsYWJsZSBvbiBJQS0zMiBhbmQNCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAt Vk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV2JpbnZkICgNCj4gPiAtICBWT0lEDQo+ID4gLSAg KQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJ3YmludmQiOjo6Im1lbW9y eSIpOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgRXhlY3V0ZXMgYSBJ TlZEIGluc3RydWN0aW9uLg0KPiA+IC0NCj4gPiAtICBFeGVjdXRlcyBhIElOVkQgaW5zdHJ1Y3Rp b24uIFRoaXMgZnVuY3Rpb24gaXMgb25seQ0KPiBhdmFpbGFibGUgb24gSUEtMzIgYW5kDQo+ID4g LSAgWDY0Lg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVZPSUQNCj4gPiAtRUZJQVBJDQo+ID4gLUFz bUludmQgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9f dm9sYXRpbGVfXyAoImludmQiOjo6Im1lbW9yeSIpOw0KPiA+IC0NCj4gPiAtfQ0KPiA+IC0NCj4g PiAtDQo+ID4gLS8qKg0KPiA+IC0gIEZsdXNoZXMgYSBjYWNoZSBsaW5lIGZyb20gYWxsIHRoZSBp bnN0cnVjdGlvbiBhbmQNCj4gZGF0YSBjYWNoZXMgd2l0aGluIHRoZQ0KPiA+IC0gIGNvaGVyZW5j eSBkb21haW4gb2YgdGhlIENQVS4NCj4gPiAtDQo+ID4gLSAgRmx1c2hlZCB0aGUgY2FjaGUgbGlu ZSBzcGVjaWZpZWQgYnkgTGluZWFyQWRkcmVzcywNCj4gYW5kIHJldHVybnMgTGluZWFyQWRkcmVz cy4NCj4gPiAtICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZCBY NjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAgTGluZWFyQWRkcmVzcyBUaGUgYWRkcmVzcyBvZiB0 aGUgY2FjaGUgbGluZQ0KPiB0byBmbHVzaC4gSWYgdGhlIENQVSBpcw0KPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICBpbiBhIHBoeXNpY2FsIGFkZHJlc3NpbmcNCj4gbW9kZSwgdGhlbiBMaW5l YXJBZGRyZXNzIGlzIGENCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgcGh5c2ljYWwgYWRk cmVzcy4gSWYgdGhlIENQVQ0KPiBpcyBpbiBhIHZpcnR1YWwNCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgYWRkcmVzc2luZyBtb2RlLCB0aGVuDQo+IExpbmVhckFkZHJlc3MgaXMgYSB2aXJ0 dWFsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuDQo+ID4gLQ0KPiA+IC0g IEByZXR1cm4gTGluZWFyQWRkcmVzcw0KPiA+IC0qKi8NCj4gPiAtVk9JRCAqDQo+ID4gLUVGSUFQ SQ0KPiA+IC1Bc21GbHVzaENhY2hlTGluZSAoDQo+ID4gLSAgSU4gICAgICBWT0lEICAgICAgICAg ICAgICAgICAgICAgICpMaW5lYXJBZGRyZXNzDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlO VDMyICBSZWdFZHg7DQo+ID4gLQ0KPiA+IC0gIC8vDQo+ID4gLSAgLy8gSWYgdGhlIENQVSBkb2Vz IG5vdCBzdXBwb3J0IENMRkxVU0ggaW5zdHJ1Y3Rpb24sDQo+ID4gLSAgLy8gdGhlbiBwcm9tb3Rl IGZsdXNoIHJhbmdlIHRvIGZsdXNoIGVudGlyZSBjYWNoZS4NCj4gPiAtICAvLw0KPiA+IC0gIEFz bUNwdWlkICgweDAxLCBOVUxMLCBOVUxMLCBOVUxMLCAmUmVnRWR4KTsNCj4gPiAtICBpZiAoKFJl Z0VkeCAmIEJJVDE5KSA9PSAwKSB7DQo+ID4gLSAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIndi aW52ZCI6OjoibWVtb3J5Iik7DQo+ID4gLSAgICByZXR1cm4gTGluZWFyQWRkcmVzczsNCj4gPiAt ICB9DQo+ID4gLQ0KPiA+IC0NCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAg ICAiY2xmbHVzaCAoJTApIg0KPiA+IC0gICAgOiAiK2EiIChMaW5lYXJBZGRyZXNzKQ0KPiA+IC0g ICAgOg0KPiA+IC0gICAgOiAibWVtb3J5Ig0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0 dXJuIExpbmVhckFkZHJlc3M7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IGRpZmYgLS1naXQg YS9NZGVQa2cvTGlicmFyeS9CYXNlTGliL0lhMzIvR2NjSW5saW5lLmMNCj4gYi9NZGVQa2cvTGli cmFyeS9CYXNlTGliL0lhMzIvR2NjSW5saW5lUHJpdi5jDQo+ID4gc2ltaWxhcml0eSBpbmRleCA2 MiUNCj4gPiBjb3B5IGZyb20gTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9JYTMyL0djY0lubGluZS5j DQo+ID4gY29weSB0byBNZGVQa2cvTGlicmFyeS9CYXNlTGliL0lhMzIvR2NjSW5saW5lUHJpdi5j DQo+ID4gaW5kZXggNTI4NzIwMGY4Ny4uMzBhYTYzMjQzYiAxMDA2NDQNCj4gPiAtLS0gYS9NZGVQ a2cvTGlicmFyeS9CYXNlTGliL0lhMzIvR2NjSW5saW5lLmMNCj4gPiArKysgYi9NZGVQa2cvTGli cmFyeS9CYXNlTGliL0lhMzIvR2NjSW5saW5lUHJpdi5jDQo+ID4gQEAgLTEsNyArMSw4IEBADQo+ ID4gIC8qKiBAZmlsZQ0KPiA+IC0gIEdDQyBpbmxpbmUgaW1wbGVtZW50YXRpb24gb2YgQmFzZUxp YiBwcm9jZXNzb3INCj4gc3BlY2lmaWMgZnVuY3Rpb25zLg0KPiA+ICsgIEdDQyBpbmxpbmUgaW1w bGVtZW50YXRpb24gb2YgQmFzZUxpYiBwcm9jZXNzb3INCj4gc3BlY2lmaWMgZnVuY3Rpb25zIHRo YXQgdXNlDQo+ID4gKyAgcHJpdmxpZGdlZCBpbnN0cnVjdGlvbnMuDQo+ID4NCj4gPiAtICBDb3B5 cmlnaHQgKGMpIDIwMDYgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsDQo+IHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAyMCwgSW50ZWwgQ29y cG9yYXRpb24uIEFsbA0KPiByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICAgIFBvcnRpb25zIGNv cHlyaWdodCAoYykgMjAwOCAtIDIwMDksIEFwcGxlIEluYy4gQWxsDQo+IHJpZ2h0cyByZXNlcnZl ZC48QlI+DQo+ID4gICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQNCj4gPg0KPiA+IEBAIC0xMCwyOCArMTEsNiBAQA0KPiA+DQo+ID4gICNpbmNsdWRlICJCYXNl TGliSW50ZXJuYWxzLmgiDQo+ID4NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBVc2Vk IHRvIHNlcmlhbGl6ZSBsb2FkIGFuZCBzdG9yZSBvcGVyYXRpb25zLg0KPiA+IC0NCj4gPiAtICBB bGwgbG9hZHMgYW5kIHN0b3JlcyB0aGF0IHByb2NlZWQgY2FsbHMgdG8gdGhpcw0KPiBmdW5jdGlv biBhcmUgZ3VhcmFudGVlZCB0byBiZQ0KPiA+IC0gIGdsb2JhbGx5IHZpc2libGUgd2hlbiB0aGlz IGZ1bmN0aW9uIHJldHVybnMuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1FRklB UEkNCj4gPiAtTWVtb3J5RmVuY2UgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4g PiAtICAvLyBUaGlzIGlzIGEgbGl0dGxlIGJpdCBvZiBvdmVya2lsbCBhbmQgaXQgaXMgbW9yZQ0K PiBhYm91dCB0aGUgY29tcGlsZXIgdGhhdCBpdCBpcw0KPiA+IC0gIC8vIGFjdHVhbGx5IHByb2Nl c3NvciBzeW5jaHJvbml6YXRpb24uIFRoaXMgaXMgbGlrZQ0KPiB0aGUgX1JlYWRXcml0ZUJhcnJp ZXINCj4gPiAtICAvLyBNaWNyb3NvZnQgc3BlY2lmaWMgaW50cmluc2ljDQo+ID4gLSAgX19hc21f XyBfX3ZvbGF0aWxlX18gKCIiOjo6Im1lbW9yeSIpOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4g PiAgLyoqDQo+ID4gICAgRW5hYmxlcyBDUFUgaW50ZXJydXB0cy4NCj4gPg0KPiA+IEBAIC02Myw0 NCArNDIsNiBAQCBEaXNhYmxlSW50ZXJydXB0cyAoDQo+ID4gICAgX19hc21fXyBfX3ZvbGF0aWxl X18gKCJjbGkiOjo6ICJtZW1vcnkiKTsNCj4gPiAgfQ0KPiA+DQo+ID4gLQ0KPiA+IC0NCj4gPiAt DQo+ID4gLS8qKg0KPiA+IC0gIFJlcXVlc3RzIENQVSB0byBwYXVzZSBmb3IgYSBzaG9ydCBwZXJp b2Qgb2YgdGltZS4NCj4gPiAtDQo+ID4gLSAgUmVxdWVzdHMgQ1BVIHRvIHBhdXNlIGZvciBhIHNo b3J0IHBlcmlvZCBvZiB0aW1lLg0KPiBUeXBpY2FsbHkgdXNlZCBpbiBNUA0KPiA+IC0gIHN5c3Rl bXMgdG8gcHJldmVudCBtZW1vcnkgc3RhcnZhdGlvbiB3aGlsZSB3YWl0aW5nDQo+IGZvciBhIHNw aW4gbG9jay4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1D cHVQYXVzZSAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18g X192b2xhdGlsZV9fICgicGF1c2UiKTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0K PiA+IC0gIEdlbmVyYXRlcyBhIGJyZWFrcG9pbnQgb24gdGhlIENQVS4NCj4gPiAtDQo+ID4gLSAg R2VuZXJhdGVzIGEgYnJlYWtwb2ludCBvbiB0aGUgQ1BVLiBUaGUgYnJlYWtwb2ludA0KPiBtdXN0 IGJlIGltcGxlbWVudGVkIHN1Y2gNCj4gPiAtICB0aGF0IGNvZGUgY2FuIHJlc3VtZSBub3JtYWwg ZXhlY3V0aW9uIGFmdGVyIHRoZQ0KPiBicmVha3BvaW50Lg0KPiA+IC0NCj4gPiAtKiovDQo+ID4g LVZPSUQNCj4gPiAtRUZJQVBJDQo+ID4gLUNwdUJyZWFrcG9pbnQgKA0KPiA+IC0gIFZPSUQNCj4g PiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImludCAkMyIpOw0K PiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtDQo+ID4gIC8qKg0KPiA+ICAgIFJldHVybnMgYSA2 NC1iaXQgTWFjaGluZSBTcGVjaWZpYyBSZWdpc3RlcihNU1IpLg0KPiA+DQo+ID4gQEAgLTE2Niwz NyArMTA3LDYgQEAgQXNtV3JpdGVNc3I2NCAoDQo+ID4gICAgcmV0dXJuIFZhbHVlOw0KPiA+ICB9 DQo+ID4NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2 YWx1ZSBvZiB0aGUgRUZMQUdTIHJlZ2lzdGVyLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0 dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgRUZMQUdTDQo+IHJlZ2lzdGVyLiBUaGlzIGZ1 bmN0aW9uIGlzDQo+ID4gLSAgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4gVGhpcyBy ZXR1cm5zIGEgMzItDQo+IGJpdCB2YWx1ZSBvbiBJQS0zMiBhbmQgYQ0KPiA+IC0gIDY0LWJpdCB2 YWx1ZSBvbiBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gRUZMQUdTIG9uIElBLTMyIG9yIFJG TEFHUyBvbiBYNjQuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4gPiAtRUZJQVBJDQo+ ID4gLUFzbVJlYWRFZmxhZ3MgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAt ICBVSU5UTiBFZmxhZ3M7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4g PiAtICAgICJwdXNoZmwgICAgIFxuXHQiDQo+ID4gLSAgICAicG9wbCAlMCAgICAgICAgIg0KPiA+ IC0gICAgOiAiPXIiIChFZmxhZ3MpDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4g RWZsYWdzOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtDQo+ID4gIC8qKg0KPiA+ICAgIFJl YWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDANCj4gKENSMCku DQo+ID4NCj4gPiBAQCAtMTE1Myw1MDUgKzEwNjMsNiBAQCBBc21Xcml0ZUxkdHIgKA0KPiA+ICAg ICAgKTsNCj4gPiAgfQ0KPiA+DQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBTYXZlIHRoZSBjdXJy ZW50IGZsb2F0aW5nIHBvaW50L1NTRS9TU0UyIGNvbnRleHQgdG8NCj4gYSBidWZmZXIuDQo+ID4g LQ0KPiA+IC0gIFNhdmVzIHRoZSBjdXJyZW50IGZsb2F0aW5nIHBvaW50L1NTRS9TU0UyIHN0YXRl IHRvDQo+IHRoZSBidWZmZXIgc3BlY2lmaWVkIGJ5DQo+ID4gLSAgQnVmZmVyLiBCdWZmZXIgbXVz dCBiZSBhbGlnbmVkIG9uIGEgMTYtYnl0ZQ0KPiBib3VuZGFyeS4gVGhpcyBmdW5jdGlvbiBpcyBv bmx5DQo+ID4gLSAgYXZhaWxhYmxlIG9uIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBw YXJhbSAgQnVmZmVyICBUaGUgcG9pbnRlciB0byBhIGJ1ZmZlciB0byBzYXZlIHRoZQ0KPiBmbG9h dGluZyBwb2ludC9TU0UvU1NFMiBjb250ZXh0Lg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVZPSUQN Cj4gPiAtRUZJQVBJDQo+ID4gLUludGVybmFsWDg2RnhTYXZlICgNCj4gPiAtICBPVVQgICAgIElB MzJfRlhfQlVGRkVSICAgICAgICAgICAgKkJ1ZmZlcg0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0g IF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJmeHNhdmUgJTAiDQo+ID4gLSAgICA6 DQo+ID4gLSAgICA6ICJtIiAoKkJ1ZmZlcikgIC8vICUwDQo+ID4gLSAgICApOw0KPiA+IC19DQo+ ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVzdG9yZXMgdGhlIGN1cnJlbnQgZmxvYXRp bmcgcG9pbnQvU1NFL1NTRTINCj4gY29udGV4dCBmcm9tIGEgYnVmZmVyLg0KPiA+IC0NCj4gPiAt ICBSZXN0b3JlcyB0aGUgY3VycmVudCBmbG9hdGluZyBwb2ludC9TU0UvU1NFMiBzdGF0ZQ0KPiBm cm9tIHRoZSBidWZmZXIgc3BlY2lmaWVkDQo+ID4gLSAgYnkgQnVmZmVyLiBCdWZmZXIgbXVzdCBi ZSBhbGlnbmVkIG9uIGEgMTYtYnl0ZQ0KPiBib3VuZGFyeS4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+ IC0gIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJh bSAgQnVmZmVyICBUaGUgcG9pbnRlciB0byBhIGJ1ZmZlciB0byBzYXZlIHRoZQ0KPiBmbG9hdGlu ZyBwb2ludC9TU0UvU1NFMiBjb250ZXh0Lg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVZPSUQNCj4g PiAtRUZJQVBJDQo+ID4gLUludGVybmFsWDg2RnhSZXN0b3JlICgNCj4gPiAtICBJTiAgICAgIENP TlNUIElBMzJfRlhfQlVGRkVSICAgICAgKkJ1ZmZlcg0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0g IF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJmeHJzdG9yICUwIg0KPiA+IC0gICAg Og0KPiA+IC0gICAgOiAibSIgKCpCdWZmZXIpICAvLyAlMA0KPiA+IC0gICAgKTsNCj4gPiAtfQ0K PiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9m IDY0LWJpdCBNTVggUmVnaXN0ZXIgIzANCj4gKE1NMCkuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFu ZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIE1NMC4gVGhpcw0KPiBmdW5jdGlvbiBpcyBv bmx5IGF2YWlsYWJsZQ0KPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBy ZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgTU0wLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJ TlQ2NA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZE1tMCAoDQo+ID4gLSAgVk9JRA0KPiA+IC0g ICkNCj4gPiAtew0KPiA+IC0gIFVJTlQ2NCAgRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBf X3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgInB1c2ggJSVlYXggICAgICAgICAgXG5cdCINCj4gPiAt ICAgICJwdXNoICUlZWF4ICAgICAgICAgIFxuXHQiDQo+ID4gLSAgICAibW92cSAlJW1tMCwgICgl JWVzcClcblx0Ig0KPiA+IC0gICAgInBvcCAgJSVlYXggICAgICAgICAgXG5cdCINCj4gPiAtICAg ICJwb3AgICUlZWR4ICAgICAgICAgIFxuXHQiDQo+ID4gLSAgICA6ICI9QSIgIChEYXRhKSAgICAg ICAvLyAlMA0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0N Cj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBv ZiA2NC1iaXQgTU1YIFJlZ2lzdGVyICMxDQo+IChNTTEpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBh bmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTEuIFRoaXMNCj4gZnVuY3Rpb24gaXMg b25seSBhdmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBA cmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIE1NMS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1V SU5UNjQNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWRNbTEgKA0KPiA+IC0gIFZPSUQNCj4gPiAt ICApDQo+ID4gLXsNCj4gPiAtICBVSU5UNjQgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18g X192b2xhdGlsZV9fICgNCj4gPiAtICAgICJwdXNoICUlZWF4ICAgICAgICAgIFxuXHQiDQo+ID4g LSAgICAicHVzaCAlJWVheCAgICAgICAgICBcblx0Ig0KPiA+IC0gICAgIm1vdnEgJSVtbTEsICAo JSVlc3ApXG5cdCINCj4gPiAtICAgICJwb3AgICUlZWF4ICAgICAgICAgIFxuXHQiDQo+ID4gLSAg ICAicG9wICAlJWVkeCAgICAgICAgICBcblx0Ig0KPiA+IC0gICAgOiAiPUEiICAoRGF0YSkgICAg ICAgLy8gJTANCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+IC19 DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUg b2YgNjQtYml0IE1NWCBSZWdpc3RlciAjMg0KPiAoTU0yKS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMg YW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgTU0yLiBUaGlzDQo+IGZ1bmN0aW9uIGlz IG9ubHkgYXZhaWxhYmxlDQo+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAg QHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBNTTIuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAt VUlOVDY0DQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkTW0yICgNCj4gPiAtICBWT0lEDQo+ID4g LSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVDY0ICBEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2FzbV9f IF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAicHVzaCAlJWVheCAgICAgICAgICBcblx0Ig0KPiA+ IC0gICAgInB1c2ggJSVlYXggICAgICAgICAgXG5cdCINCj4gPiAtICAgICJtb3ZxICUlbW0yLCAg KCUlZXNwKVxuXHQiDQo+ID4gLSAgICAicG9wICAlJWVheCAgICAgICAgICBcblx0Ig0KPiA+IC0g ICAgInBvcCAgJSVlZHggICAgICAgICAgXG5cdCINCj4gPiAtICAgIDogIj1BIiAgKERhdGEpICAg ICAgIC8vICUwDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAt fQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVl IG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzMNCj4gKE1NMykuDQo+ID4gLQ0KPiA+IC0gIFJlYWRz IGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIE1NMy4gVGhpcw0KPiBmdW5jdGlvbiBp cyBvbmx5IGF2YWlsYWJsZQ0KPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0g IEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgTU0zLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4g LVVJTlQ2NA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZE1tMyAoDQo+ID4gLSAgVk9JRA0KPiA+ IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlQ2NCAgRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21f XyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgInB1c2ggJSVlYXggICAgICAgICAgXG5cdCINCj4g PiAtICAgICJwdXNoICUlZWF4ICAgICAgICAgIFxuXHQiDQo+ID4gLSAgICAibW92cSAlJW1tMywg ICglJWVzcClcblx0Ig0KPiA+IC0gICAgInBvcCAgJSVlYXggICAgICAgICAgXG5cdCINCj4gPiAt ICAgICJwb3AgICUlZWR4ICAgICAgICAgIFxuXHQiDQo+ID4gLSAgICA6ICI9QSIgIChEYXRhKSAg ICAgICAvLyAlMA0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4g LX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1 ZSBvZiA2NC1iaXQgTU1YIFJlZ2lzdGVyICM0DQo+IChNTTQpLg0KPiA+IC0NCj4gPiAtICBSZWFk cyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTQuIFRoaXMNCj4gZnVuY3Rpb24g aXMgb25seSBhdmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAt ICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIE1NNC4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+ IC1VSU5UNjQNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWRNbTQgKA0KPiA+IC0gIFZPSUQNCj4g PiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UNjQgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNt X18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJwdXNoICUlZWF4ICAgICAgICAgIFxuXHQiDQo+ ID4gLSAgICAicHVzaCAlJWVheCAgICAgICAgICBcblx0Ig0KPiA+IC0gICAgIm1vdnEgJSVtbTQs ICAoJSVlc3ApXG5cdCINCj4gPiAtICAgICJwb3AgICUlZWF4ICAgICAgICAgIFxuXHQiDQo+ID4g LSAgICAicG9wICAlJWVkeCAgICAgICAgICBcblx0Ig0KPiA+IC0gICAgOiAiPUEiICAoRGF0YSkg ICAgICAgLy8gJTANCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFs dWUgb2YgNjQtYml0IE1NWCBSZWdpc3RlciAjNQ0KPiAoTU01KS4NCj4gPiAtDQo+ID4gLSAgUmVh ZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgTU01LiBUaGlzDQo+IGZ1bmN0aW9u IGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4g LSAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBNTTUuDQo+ID4gLQ0KPiA+IC0qKi8NCj4g PiAtVUlOVDY0DQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkTW01ICgNCj4gPiAtICBWT0lEDQo+ ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVDY0ICBEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2Fz bV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAicHVzaCAlJWVheCAgICAgICAgICBcblx0Ig0K PiA+IC0gICAgInB1c2ggJSVlYXggICAgICAgICAgXG5cdCINCj4gPiAtICAgICJtb3ZxICUlbW01 LCAgKCUlZXNwKVxuXHQiDQo+ID4gLSAgICAicG9wICAlJWVheCAgICAgICAgICBcblx0Ig0KPiA+ IC0gICAgInBvcCAgJSVlZHggICAgICAgICAgXG5cdCINCj4gPiAtICAgIDogIj1BIiAgKERhdGEp ICAgICAgIC8vICUwDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4gRGF0YTsNCj4g PiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZh bHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzYNCj4gKE1NNikuDQo+ID4gLQ0KPiA+IC0gIFJl YWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIE1NNi4gVGhpcw0KPiBmdW5jdGlv biBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+ IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgTU02Lg0KPiA+IC0NCj4gPiAtKiovDQo+ ID4gLVVJTlQ2NA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZE1tNiAoDQo+ID4gLSAgVk9JRA0K PiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlQ2NCAgRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19h c21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgInB1c2ggJSVlYXggICAgICAgICAgXG5cdCIN Cj4gPiAtICAgICJwdXNoICUlZWF4ICAgICAgICAgIFxuXHQiDQo+ID4gLSAgICAibW92cSAlJW1t NiwgICglJWVzcClcblx0Ig0KPiA+IC0gICAgInBvcCAgJSVlYXggICAgICAgICAgXG5cdCINCj4g PiAtICAgICJwb3AgICUlZWR4ICAgICAgICAgIFxuXHQiDQo+ID4gLSAgICA6ICI9QSIgIChEYXRh KSAgICAgICAvLyAlMA0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2 YWx1ZSBvZiA2NC1iaXQgTU1YIFJlZ2lzdGVyICM3DQo+IChNTTcpLg0KPiA+IC0NCj4gPiAtICBS ZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTcuIFRoaXMNCj4gZnVuY3Rp b24gaXMgb25seSBhdmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4g PiAtICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIE1NNy4NCj4gPiAtDQo+ID4gLSoqLw0K PiA+IC1VSU5UNjQNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWRNbTcgKA0KPiA+IC0gIFZPSUQN Cj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UNjQgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9f YXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJwdXNoICUlZWF4ICAgICAgICAgIFxuXHQi DQo+ID4gLSAgICAicHVzaCAlJWVheCAgICAgICAgICBcblx0Ig0KPiA+IC0gICAgIm1vdnEgJSVt bTcsICAoJSVlc3ApXG5cdCINCj4gPiAtICAgICJwb3AgICUlZWF4ICAgICAgICAgIFxuXHQiDQo+ ID4gLSAgICAicG9wICAlJWVkeCAgICAgICAgICBcblx0Ig0KPiA+IC0gICAgOiAiPUEiICAoRGF0 YSkgICAgICAgLy8gJTANCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0K PiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50 IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzANCj4gKE1NMCkuDQo+ID4gLQ0KPiA+IC0g IFdyaXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTAuIFRoaXMgZnVuY3Rpb24gaXMNCj4gb25s eSBhdmFpbGFibGUgb24gSUEzMiBhbmQNCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJh bSAgVmFsdWUgVGhlIDY0LWJpdCB2YWx1ZSB0byB3cml0ZSB0byBNTTAuDQo+ID4gLQ0KPiA+IC0q Ki8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV3JpdGVNbTAgKA0KPiA+IC0gIElO ICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiA+IC0gICkNCj4gPiAtew0K PiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3ZxICUwLCAlJW1tMCIg IC8vICUwDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJtIiAoVmFsdWUpDQo+ID4gLSAgICApOw0K PiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50 IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzENCj4gKE1NMSkuDQo+ID4gLQ0KPiA+IC0g IFdyaXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTEuIFRoaXMgZnVuY3Rpb24gaXMNCj4gb25s eSBhdmFpbGFibGUgb24gSUEzMiBhbmQNCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJh bSAgVmFsdWUgVGhlIDY0LWJpdCB2YWx1ZSB0byB3cml0ZSB0byBNTTEuDQo+ID4gLQ0KPiA+IC0q Ki8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV3JpdGVNbTEgKA0KPiA+IC0gIElO ICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiA+IC0gICkNCj4gPiAtew0K PiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3ZxICUwLCAlJW1tMSIg IC8vICUwDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJtIiAoVmFsdWUpDQo+ID4gLSAgICApOw0K PiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50 IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzINCj4gKE1NMikuDQo+ID4gLQ0KPiA+IC0g IFdyaXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTIuIFRoaXMgZnVuY3Rpb24gaXMNCj4gb25s eSBhdmFpbGFibGUgb24gSUEzMiBhbmQNCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJh bSAgVmFsdWUgVGhlIDY0LWJpdCB2YWx1ZSB0byB3cml0ZSB0byBNTTIuDQo+ID4gLQ0KPiA+IC0q Ki8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV3JpdGVNbTIgKA0KPiA+IC0gIElO ICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiA+IC0gICkNCj4gPiAtew0K PiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3ZxICUwLCAlJW1tMiIg IC8vICUwDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJtIiAoVmFsdWUpDQo+ID4gLSAgICApOw0K PiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50 IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzMNCj4gKE1NMykuDQo+ID4gLQ0KPiA+IC0g IFdyaXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTMuIFRoaXMgZnVuY3Rpb24gaXMNCj4gb25s eSBhdmFpbGFibGUgb24gSUEzMiBhbmQNCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJh bSAgVmFsdWUgVGhlIDY0LWJpdCB2YWx1ZSB0byB3cml0ZSB0byBNTTMuDQo+ID4gLQ0KPiA+IC0q Ki8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV3JpdGVNbTMgKA0KPiA+IC0gIElO ICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiA+IC0gICkNCj4gPiAtew0K PiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3ZxICUwLCAlJW1tMyIg IC8vICUwDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJtIiAoVmFsdWUpDQo+ID4gLSAgICApOw0K PiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50 IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzQNCj4gKE1NNCkuDQo+ID4gLQ0KPiA+IC0g IFdyaXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTQuIFRoaXMgZnVuY3Rpb24gaXMNCj4gb25s eSBhdmFpbGFibGUgb24gSUEzMiBhbmQNCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJh bSAgVmFsdWUgVGhlIDY0LWJpdCB2YWx1ZSB0byB3cml0ZSB0byBNTTQuDQo+ID4gLQ0KPiA+IC0q Ki8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV3JpdGVNbTQgKA0KPiA+IC0gIElO ICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiA+IC0gICkNCj4gPiAtew0K PiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3ZxICUwLCAlJW1tNCIg IC8vICUwDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJtIiAoVmFsdWUpDQo+ID4gLSAgICApOw0K PiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50 IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzUNCj4gKE1NNSkuDQo+ID4gLQ0KPiA+IC0g IFdyaXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTUuIFRoaXMgZnVuY3Rpb24gaXMNCj4gb25s eSBhdmFpbGFibGUgb24gSUEzMiBhbmQNCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJh bSAgVmFsdWUgVGhlIDY0LWJpdCB2YWx1ZSB0byB3cml0ZSB0byBNTTUuDQo+ID4gLQ0KPiA+IC0q Ki8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV3JpdGVNbTUgKA0KPiA+IC0gIElO ICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiA+IC0gICkNCj4gPiAtew0K PiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3ZxICUwLCAlJW1tNSIg IC8vICUwDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJtIiAoVmFsdWUpDQo+ID4gLSAgICApOw0K PiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50 IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzYNCj4gKE1NNikuDQo+ID4gLQ0KPiA+IC0g IFdyaXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTYuIFRoaXMgZnVuY3Rpb24gaXMNCj4gb25s eSBhdmFpbGFibGUgb24gSUEzMiBhbmQNCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJh bSAgVmFsdWUgVGhlIDY0LWJpdCB2YWx1ZSB0byB3cml0ZSB0byBNTTYuDQo+ID4gLQ0KPiA+IC0q Ki8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV3JpdGVNbTYgKA0KPiA+IC0gIElO ICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiA+IC0gICkNCj4gPiAtew0K PiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3ZxICUwLCAlJW1tNiIg IC8vICUwDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJtIiAoVmFsdWUpDQo+ID4gLSAgICApOw0K PiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50 IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzcNCj4gKE1NNykuDQo+ID4gLQ0KPiA+IC0g IFdyaXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTcuIFRoaXMgZnVuY3Rpb24gaXMNCj4gb25s eSBhdmFpbGFibGUgb24gSUEzMiBhbmQNCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJh bSAgVmFsdWUgVGhlIDY0LWJpdCB2YWx1ZSB0byB3cml0ZSB0byBNTTcuDQo+ID4gLQ0KPiA+IC0q Ki8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV3JpdGVNbTcgKA0KPiA+IC0gIElO ICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiA+IC0gICkNCj4gPiAtew0K PiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3ZxICUwLCAlJW1tNyIg IC8vICUwDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJtIiAoVmFsdWUpDQo+ID4gLSAgICApOw0K PiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQg dmFsdWUgb2YgVGltZSBTdGFtcCBDb3VudGVyDQo+IChUU0MpLg0KPiA+IC0NCj4gPiAtICBSZWFk cyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBUU0MuIFRoaXMNCj4gZnVuY3Rpb24g aXMgb25seSBhdmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAt ICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIFRTQw0KPiA+IC0NCj4gPiAtKiovDQo+ID4g LVVJTlQ2NA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZFRzYyAoDQo+ID4gLSAgVk9JRA0KPiA+ IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlQ2NCAgRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21f XyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgInJkdHNjIg0KPiA+IC0gICAgOiAiPUEiIChEYXRh KQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAt DQo+ID4gLQ0KPiA+ICAvKioNCj4gPiAgICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIFBl cmZvcm1hbmNlIENvdW50ZXINCj4gKFBNQykuDQo+ID4NCj4gPiBAQCAtMTY4MCw5ICsxMDkxLDYg QEAgQXNtUmVhZFBtYyAoDQo+ID4gICAgcmV0dXJuIERhdGE7DQo+ID4gIH0NCj4gPg0KPiA+IC0N Cj4gPiAtDQo+ID4gLQ0KPiA+ICAvKioNCj4gPiAgICBFeGVjdXRlcyBhIFdCSU5WRCBpbnN0cnVj dGlvbi4NCj4gPg0KPiA+IEBAIC0xNjk5LDcgKzExMDcsNiBAQCBBc21XYmludmQgKA0KPiA+ICAg IF9fYXNtX18gX192b2xhdGlsZV9fICgid2JpbnZkIjo6OiJtZW1vcnkiKTsNCj4gPiAgfQ0KPiA+ DQo+ID4gLQ0KPiA+ICAvKioNCj4gPiAgICBFeGVjdXRlcyBhIElOVkQgaW5zdHJ1Y3Rpb24uDQo+ ID4NCj4gPiBAQCAtMTc2MSw1ICsxMTY4LDMgQEAgQXNtRmx1c2hDYWNoZUxpbmUgKA0KPiA+DQo+ ID4gICAgcmV0dXJuIExpbmVhckFkZHJlc3M7DQo+ID4gIH0NCj4gPiAtDQo+ID4gLQ0KPiA+IGRp ZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlTGliL1g2NC9HY2NJbmxpbmUuYw0KPiBiL01k ZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvWDY0L0djY0lubGluZS5jDQo+ID4gaW5kZXggMTU0Y2UxZjU3 ZS4uNDBhMjA4ZjE5OCAxMDA2NDQNCj4gPiAtLS0gYS9NZGVQa2cvTGlicmFyeS9CYXNlTGliL1g2 NC9HY2NJbmxpbmUuYw0KPiA+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvWDY0L0djY0lu bGluZS5jDQo+ID4gQEAgLTEsNyArMSw3IEBADQo+ID4gIC8qKiBAZmlsZQ0KPiA+ICAgIEdDQyBp bmxpbmUgaW1wbGVtZW50YXRpb24gb2YgQmFzZUxpYiBwcm9jZXNzb3INCj4gc3BlY2lmaWMgZnVu Y3Rpb25zLg0KPiA+DQo+ID4gLSAgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAxOCwgSW50ZWwgQ29y cG9yYXRpb24uIEFsbA0KPiByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIENvcHlyaWdodCAo YykgMjAwNiAtIDIwMjAsIEludGVsIENvcnBvcmF0aW9uLiBBbGwNCj4gcmlnaHRzIHJlc2VydmVk LjxCUj4NCj4gPiAgICBQb3J0aW9ucyBjb3B5cmlnaHQgKGMpIDIwMDggLSAyMDA5LCBBcHBsZSBJ bmMuIEFsbA0KPiByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICAgIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4NCj4gPiBAQCAtMzMsNDAgKzMzLDYgQEAg TWVtb3J5RmVuY2UgKA0KPiA+ICB9DQo+ID4NCj4gPg0KPiA+IC0vKioNCj4gPiAtICBFbmFibGVz IENQVSBpbnRlcnJ1cHRzLg0KPiA+IC0NCj4gPiAtICBFbmFibGVzIENQVSBpbnRlcnJ1cHRzLg0K PiA+IC0NCj4gPiAtKiovDQo+ID4gLVZPSUQNCj4gPiAtRUZJQVBJDQo+ID4gLUVuYWJsZUludGVy cnVwdHMgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9f dm9sYXRpbGVfXyAoInN0aSI6OjogIm1lbW9yeSIpOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4g PiAtLyoqDQo+ID4gLSAgRGlzYWJsZXMgQ1BVIGludGVycnVwdHMuDQo+ID4gLQ0KPiA+IC0gIERp c2FibGVzIENQVSBpbnRlcnJ1cHRzLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVZPSUQNCj4gPiAt RUZJQVBJDQo+ID4gLURpc2FibGVJbnRlcnJ1cHRzICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0K PiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJjbGkiOjo6ICJtZW1vcnkiKTsN Cj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0NCj4gPiAgLyoqDQo+ID4gICAgUmVx dWVzdHMgQ1BVIHRvIHBhdXNlIGZvciBhIHNob3J0IHBlcmlvZCBvZiB0aW1lLg0KPiA+DQo+ID4g QEAgLTEwMSw4MyArNjcsNiBAQCBDcHVCcmVha3BvaW50ICgNCj4gPiAgfQ0KPiA+DQo+ID4NCj4g PiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJldHVybnMgYSA2NC1iaXQgTWFjaGluZSBTcGVjaWZpYyBS ZWdpc3RlcihNU1IpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgNjQtYml0 IE1TUiBzcGVjaWZpZWQgYnkNCj4gSW5kZXguIE5vIHBhcmFtZXRlciBjaGVja2luZyBpcw0KPiA+ IC0gIHBlcmZvcm1lZCBvbiBJbmRleCwgYW5kIHNvbWUgSW5kZXggdmFsdWVzIG1heSBjYXVzZQ0K PiBDUFUgZXhjZXB0aW9ucy4gVGhlDQo+ID4gLSAgY2FsbGVyIG11c3QgZWl0aGVyIGd1YXJhbnRl ZSB0aGF0IEluZGV4IGlzIHZhbGlkLA0KPiBvciB0aGUgY2FsbGVyIG11c3Qgc2V0IHVwDQo+ID4g LSAgZXhjZXB0aW9uIGhhbmRsZXJzIHRvIGNhdGNoIHRoZSBleGNlcHRpb25zLiBUaGlzDQo+IGZ1 bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAt DQo+ID4gLSAgQHBhcmFtICBJbmRleCBUaGUgMzItYml0IE1TUiBpbmRleCB0byByZWFkLg0KPiA+ IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiB0aGUgTVNSIGlkZW50aWZpZWQgYnkgSW5k ZXguDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVDY0DQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21S ZWFkTXNyNjQgKA0KPiA+IC0gIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJbmRl eA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlQzMiBMb3dEYXRhOw0KPiA+IC0gIFVJTlQz MiBIaWdoRGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0g ICAgInJkbXNyIg0KPiA+IC0gICAgOiAiPWEiIChMb3dEYXRhKSwgICAvLyAlMA0KPiA+IC0gICAg ICAiPWQiIChIaWdoRGF0YSkgICAvLyAlMQ0KPiA+IC0gICAgOiAiYyIgIChJbmRleCkgICAgICAv LyAlMg0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuICgoKFVJTlQ2NClIaWdoRGF0 YSkgPDwgMzIpIHwgTG93RGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3Jp dGVzIGEgNjQtYml0IHZhbHVlIHRvIGEgTWFjaGluZSBTcGVjaWZpYw0KPiBSZWdpc3RlcihNU1Ip LCBhbmQgcmV0dXJucyB0aGUNCj4gPiAtICB2YWx1ZS4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIHRo ZSA2NC1iaXQgdmFsdWUgc3BlY2lmaWVkIGJ5IFZhbHVlIHRvIHRoZQ0KPiBNU1Igc3BlY2lmaWVk IGJ5IEluZGV4LiBUaGUNCj4gPiAtICA2NC1iaXQgdmFsdWUgd3JpdHRlbiB0byB0aGUgTVNSIGlz IHJldHVybmVkLiBObw0KPiBwYXJhbWV0ZXIgY2hlY2tpbmcgaXMNCj4gPiAtICBwZXJmb3JtZWQg b24gSW5kZXggb3IgVmFsdWUsIGFuZCBzb21lIG9mIHRoZXNlIG1heQ0KPiBjYXVzZSBDUFUgZXhj ZXB0aW9ucy4gVGhlDQo+ID4gLSAgY2FsbGVyIG11c3QgZWl0aGVyIGd1YXJhbnRlZSB0aGF0IElu ZGV4IGFuZCBWYWx1ZQ0KPiBhcmUgdmFsaWQsIG9yIHRoZSBjYWxsZXINCj4gPiAtICBtdXN0IGVz dGFibGlzaCBwcm9wZXIgZXhjZXB0aW9uIGhhbmRsZXJzLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9u bHkgYXZhaWxhYmxlIG9uDQo+ID4gLSAgSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBh cmFtICBJbmRleCBUaGUgMzItYml0IE1TUiBpbmRleCB0byB3cml0ZS4NCj4gPiAtICBAcGFyYW0g IFZhbHVlIFRoZSA2NC1iaXQgdmFsdWUgdG8gd3JpdGUgdG8gdGhlIE1TUi4NCj4gPiAtDQo+ID4g LSAgQHJldHVybiBWYWx1ZQ0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQ2NA0KPiA+IC1FRklB UEkNCj4gPiAtQXNtV3JpdGVNc3I2NCAoDQo+ID4gLSAgSU4gICAgICBVSU5UMzIgICAgICAgICAg ICAgICAgICAgIEluZGV4LA0KPiA+IC0gIElOICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAg ICBWYWx1ZQ0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlQzMiBMb3dEYXRhOw0KPiA+IC0g IFVJTlQzMiBIaWdoRGF0YTsNCj4gPiAtDQo+ID4gLSAgTG93RGF0YSAgPSAoVUlOVDMyKShWYWx1 ZSk7DQo+ID4gLSAgSGlnaERhdGEgPSAoVUlOVDMyKShWYWx1ZSA+PiAzMik7DQo+ID4gLQ0KPiA+ IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJ3cm1zciINCj4gPiAtICAgIDoN Cj4gPiAtICAgIDogImMiIChJbmRleCksDQo+ID4gLSAgICAgICJhIiAoTG93RGF0YSksDQo+ID4g LSAgICAgICJkIiAoSGlnaERhdGEpDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAtICByZXR1cm4g VmFsdWU7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0NCj4gPiAgLyoqDQo+ID4gICAgUmVh ZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIEVGTEFHUyByZWdpc3Rlci4NCj4gPg0KPiA+IEBA IC0yMDUsOTY1ICs5NCw2IEBAIEFzbVJlYWRFZmxhZ3MgKA0KPiA+ICAgIHJldHVybiBFZmxhZ3M7 DQo+ID4gIH0NCj4gPg0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBj dXJyZW50IHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDANCj4gKENSMCkuDQo+ID4gLQ0K PiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIENSMC4gVGhpcw0K PiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuIFRo aXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUg b24NCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBD b250cm9sIFJlZ2lzdGVyIDAgKENSMCkuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4g PiAtRUZJQVBJDQo+ID4gLUFzbVJlYWRDcjAgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4g LXsNCj4gPiAtICBVSU5UTiAgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGls ZV9fICgNCj4gPiAtICAgICJtb3YgICUlY3IwLCUwIg0KPiA+IC0gICAgOiAiPXIiIChEYXRhKSAg ICAgICAgICAgLy8gJTANCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0K PiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQg dmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgMg0KPiAoQ1IyKS4NCj4gPiAtDQo+ID4gLSAg UmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgQ1IyLiBUaGlzDQo+IGZ1bmN0 aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4gVGhpcyByZXR1 cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+ IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgb2YgdGhlIENvbnRyb2wg UmVnaXN0ZXIgMiAoQ1IyKS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklB UEkNCj4gPiAtQXNtUmVhZENyMiAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+ IC0gIFVJTlROIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4g PiAtICAgICJtb3YgICUlY3IyLCAgJTAiDQo+ID4gLSAgICA6ICI9ciIgKERhdGEpICAgICAgICAg ICAvLyAlMA0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0N Cj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBD b250cm9sIFJlZ2lzdGVyIDMNCj4gKENSMykuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1 cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIENSMy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2 YWlsYWJsZQ0KPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2 YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiAtICBYNjQuDQo+ID4g LQ0KPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDMgKENS MykuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJl YWRDcjMgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UTiBEYXRh Ow0KPiA+IC0NCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92ICAl JWNyMywgICUwIg0KPiA+IC0gICAgOiAiPXIiIChEYXRhKSAgICAgICAgICAgLy8gJTANCj4gPiAt ICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0N Cj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIENvbnRyb2wg UmVnaXN0ZXIgNA0KPiAoQ1I0KS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhl IGN1cnJlbnQgdmFsdWUgb2YgQ1I0LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxl DQo+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9u DQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4g LSAgQHJldHVybiBUaGUgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgNCAoQ1I0KS4NCj4g PiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZENyNCAo DQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlROIERhdGE7DQo+ID4g LQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3YgICUlY3I0LCAg JTAiDQo+ID4gLSAgICA6ICI9ciIgKERhdGEpICAgICAgICAgICAvLyAlMA0KPiA+IC0gICAgKTsN Cj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0v KioNCj4gPiAtICBXcml0ZXMgYSB2YWx1ZSB0byBDb250cm9sIFJlZ2lzdGVyIDAgKENSMCkuDQo+ ID4gLQ0KPiA+IC0gIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBDUjAuIFRoaXMN Cj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAtICBJQS0zMiBhbmQgWDY0LiBU aGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0KPiBhbmQgYSA2NC1iaXQgdmFsdWUg b24gWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIENyMCBUaGUgdmFsdWUgdG8gd3JpdGUgdG8g Q1IwLg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIENSMC4NCj4g PiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV3JpdGVDcjAg KA0KPiA+IC0gIFVJTlROICBDcjANCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9f dm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92ICAlMCwgJSVjcjAiDQo+ID4gLSAgICA6DQo+ID4g LSAgICA6ICJyIiAoQ3IwKQ0KPiA+IC0gICAgKTsNCj4gPiAtICByZXR1cm4gQ3IwOw0KPiA+IC19 DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIGEgdmFsdWUgdG8gQ29udHJv bCBSZWdpc3RlciAyIChDUjIpLg0KPiA+IC0NCj4gPiAtICBXcml0ZXMgYW5kIHJldHVybnMgYSBu ZXcgdmFsdWUgdG8gQ1IyLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzIN Cj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBDcjIg VGhlIHZhbHVlIHRvIHdyaXRlIHRvIENSMi4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFs dWUgd3JpdHRlbiB0byBDUjIuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4gPiAtRUZJ QVBJDQo+ID4gLUFzbVdyaXRlQ3IyICgNCj4gPiAtICBVSU5UTiAgQ3IyDQo+ID4gLSAgKQ0KPiA+ IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdiAgJTAsICUl Y3IyIg0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAiciIgKENyMikNCj4gPiAtICAgICk7DQo+ID4g LSAgcmV0dXJuIENyMjsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFdy aXRlcyBhIHZhbHVlIHRvIENvbnRyb2wgUmVnaXN0ZXIgMyAoQ1IzKS4NCj4gPiAtDQo+ID4gLSAg V3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIENSMy4gVGhpcw0KPiBmdW5jdGlvbiBp cyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMyIGFuZCBYNjQuIFRoaXMgd3JpdGVzIGEg MzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiBYNjQuDQo+ID4g LQ0KPiA+IC0gIEBwYXJhbSAgQ3IzIFRoZSB2YWx1ZSB0byB3cml0ZSB0byBDUjMuDQo+ID4gLQ0K PiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gQ1IzLg0KPiA+IC0NCj4gPiAtKiov DQo+ID4gLVVJTlRODQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0ZUNyMyAoDQo+ID4gLSAgVUlO VE4gIENyMw0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgN Cj4gPiAtICAgICJtb3YgICUwLCAlJWNyMyINCj4gPiAtICAgIDoNCj4gPiAtICAgIDogInIiIChD cjMpDQo+ID4gLSAgICApOw0KPiA+IC0gIHJldHVybiBDcjM7DQo+ID4gLX0NCj4gPiAtDQo+ID4g LQ0KPiA+IC0vKioNCj4gPiAtICBXcml0ZXMgYSB2YWx1ZSB0byBDb250cm9sIFJlZ2lzdGVyIDQg KENSNCkuDQo+ID4gLQ0KPiA+IC0gIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBD UjQuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAtICBJQS0zMiBh bmQgWDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0KPiBhbmQgYSA2NC1i aXQgdmFsdWUgb24gWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIENyNCBUaGUgdmFsdWUgdG8g d3JpdGUgdG8gQ1I0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRv IENSNC4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNt V3JpdGVDcjQgKA0KPiA+IC0gIFVJTlROICBDcjQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBf X2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92ICAlMCwgJSVjcjQiDQo+ID4gLSAg ICA6DQo+ID4gLSAgICA6ICJyIiAoQ3I0KQ0KPiA+IC0gICAgKTsNCj4gPiAtICByZXR1cm4gQ3I0 Ow0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJl bnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgMCAoRFIwKS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMg YW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFIwLiBUaGlzDQo+IGZ1bmN0aW9uIGlz IG9ubHkgYXZhaWxhYmxlDQo+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4gVGhpcyByZXR1cm5zIGEg MzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+IC0gIFg2 NC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgMCAo RFIwKS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNt UmVhZERyMCAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlROIERh dGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3Yg ICUlZHIwLCAlMCINCj4gPiAtICAgIDogIj1yIiAoRGF0YSkNCj4gPiAtICAgICk7DQo+ID4gLQ0K PiA+IC0gIHJldHVybiBEYXRhOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4g LSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgMSAoRFIxKS4NCj4g PiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFIxLiBU aGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gLSAgb24gSUEtMzIgYW5kIFg2 NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2 YWx1ZSBvbg0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgb2Yg RGVidWcgUmVnaXN0ZXIgMSAoRFIxKS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+ IC1FRklBUEkNCj4gPiAtQXNtUmVhZERyMSAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAt ew0KPiA+IC0gIFVJTlROIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9f ICgNCj4gPiAtICAgICJtb3YgICUlZHIxLCAlMCINCj4gPiAtICAgIDogIj1yIiAoRGF0YSkNCj4g PiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+IC19DQo+ID4gLQ0KPiA+ IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVn aXN0ZXIgMiAoRFIyKS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJl bnQgdmFsdWUgb2YgRFIyLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4g LSAgb24gSUEtMzIgYW5kIFg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElB LTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHJl dHVybiBUaGUgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgMiAoRFIyKS4NCj4gPiAtDQo+ID4gLSoq Lw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZERyMiAoDQo+ID4gLSAgVk9J RA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlROIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9f YXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3YgICUlZHIyLCAlMCINCj4gPiAtICAg IDogIj1yIiAoRGF0YSkNCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0K PiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQg dmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgMyAoRFIzKS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMgYW5k IHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFIzLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9u bHkgYXZhaWxhYmxlDQo+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4gVGhpcyByZXR1cm5zIGEgMzIt Yml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+IC0gIFg2NC4N Cj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgMyAoRFIz KS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVh ZERyMyAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlROIERhdGE7 DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3YgICUl ZHIzLCAlMCINCj4gPiAtICAgIDogIj1yIiAoRGF0YSkNCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+ IC0gIHJldHVybiBEYXRhOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAg UmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgNCAoRFI0KS4NCj4gPiAt DQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFI0LiBUaGlz DQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4g VGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1 ZSBvbg0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgb2YgRGVi dWcgUmVnaXN0ZXIgNCAoRFI0KS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1F RklBUEkNCj4gPiAtQXNtUmVhZERyNCAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0K PiA+IC0gIFVJTlROIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgN Cj4gPiAtICAgICJtb3YgICUlZHI0LCAlMCINCj4gPiAtICAgIDogIj1yIiAoRGF0YSkNCj4gPiAt ICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0N Cj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0 ZXIgNSAoRFI1KS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQg dmFsdWUgb2YgRFI1LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gLSAg b24gSUEtMzIgYW5kIFg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMy IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHJldHVy biBUaGUgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgNSAoRFI1KS4NCj4gPiAtDQo+ID4gLSoqLw0K PiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZERyNSAoDQo+ID4gLSAgVk9JRA0K PiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlROIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNt X18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3YgICUlZHI1LCAlMCINCj4gPiAtICAgIDog Ij1yIiAoRGF0YSkNCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFs dWUgb2YgRGVidWcgUmVnaXN0ZXIgNiAoRFI2KS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJl dHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFI2LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkg YXZhaWxhYmxlDQo+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0 IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+IC0gIFg2NC4NCj4g PiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgNiAoRFI2KS4N Cj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZERy NiAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlROIERhdGE7DQo+ ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3YgICUlZHI2 LCAlMCINCj4gPiAtICAgIDogIj1yIiAoRGF0YSkNCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0g IHJldHVybiBEYXRhOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVh ZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgNyAoRFI3KS4NCj4gPiAtDQo+ ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFI3LiBUaGlzDQo+ IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4gVGhp cyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBv bg0KPiA+IC0gIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgb2YgRGVidWcg UmVnaXN0ZXIgNyAoRFI3KS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklB UEkNCj4gPiAtQXNtUmVhZERyNyAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+ IC0gIFVJTlROIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4g PiAtICAgICJtb3YgICUlZHI3LCAlMCINCj4gPiAtICAgIDogIj1yIiAoRGF0YSkNCj4gPiAtICAg ICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4g PiAtLyoqDQo+ID4gLSAgV3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVnaXN0ZXIgMCAoRFIwKS4N Cj4gPiAtDQo+ID4gLSAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIERSMC4gVGhp cw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMyIGFuZCBYNjQu IFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1 ZSBvbiBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAgRHIwIFRoZSB2YWx1ZSB0byB3cml0ZSB0 byBEcjAuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gRGVidWcg UmVnaXN0ZXIgMA0KPiAoRFIwKS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1F RklBUEkNCj4gPiAtQXNtV3JpdGVEcjAgKA0KPiA+IC0gIFVJTlROICBEcjANCj4gPiAtICApDQo+ ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92ICAlMCwg JSVkcjAiDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJyIiAoRHIwKQ0KPiA+IC0gICAgKTsNCj4g PiAtICByZXR1cm4gRHIwOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAg V3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVnaXN0ZXIgMSAoRFIxKS4NCj4gPiAtDQo+ID4gLSAg V3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIERSMS4gVGhpcw0KPiBmdW5jdGlvbiBp cyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMyIGFuZCBYNjQuIFRoaXMgd3JpdGVzIGEg MzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiBYNjQuDQo+ID4g LQ0KPiA+IC0gIEBwYXJhbSAgRHIxIFRoZSB2YWx1ZSB0byB3cml0ZSB0byBEcjEuDQo+ID4gLQ0K PiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gRGVidWcgUmVnaXN0ZXIgMQ0KPiAo RFIxKS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNt V3JpdGVEcjEgKA0KPiA+IC0gIFVJTlROICBEcjENCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBf X2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92ICAlMCwgJSVkcjEiDQo+ID4gLSAg ICA6DQo+ID4gLSAgICA6ICJyIiAoRHIxKQ0KPiA+IC0gICAgKTsNCj4gPiAtICByZXR1cm4gRHIx Ow0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIGEgdmFsdWUg dG8gRGVidWcgUmVnaXN0ZXIgMiAoRFIyKS4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIGFuZCByZXR1 cm5zIGEgbmV3IHZhbHVlIHRvIERSMi4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJs ZSBvbg0KPiA+IC0gIElBLTMyIGFuZCBYNjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9u IElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJh bSAgRHIyIFRoZSB2YWx1ZSB0byB3cml0ZSB0byBEcjIuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4g VGhlIHZhbHVlIHdyaXR0ZW4gdG8gRGVidWcgUmVnaXN0ZXIgMg0KPiAoRFIyKS4NCj4gPiAtDQo+ ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV3JpdGVEcjIgKA0KPiA+ IC0gIFVJTlROICBEcjINCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRp bGVfXyAoDQo+ID4gLSAgICAibW92ICAlMCwgJSVkcjIiDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6 ICJyIiAoRHIyKQ0KPiA+IC0gICAgKTsNCj4gPiAtICByZXR1cm4gRHIyOw0KPiA+IC19DQo+ID4g LQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVnaXN0 ZXIgMyAoRFIzKS4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVl IHRvIERSMy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+IC0gIElB LTMyIGFuZCBYNjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBh IDY0LWJpdCB2YWx1ZSBvbiBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAgRHIzIFRoZSB2YWx1 ZSB0byB3cml0ZSB0byBEcjMuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0 ZW4gdG8gRGVidWcgUmVnaXN0ZXIgMw0KPiAoRFIzKS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1V SU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV3JpdGVEcjMgKA0KPiA+IC0gIFVJTlROICBEcjMN Cj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAg ICAibW92ICAlMCwgJSVkcjMiDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJyIiAoRHIzKQ0KPiA+ IC0gICAgKTsNCj4gPiAtICByZXR1cm4gRHIzOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAt LyoqDQo+ID4gLSAgV3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVnaXN0ZXIgNCAoRFI0KS4NCj4g PiAtDQo+ID4gLSAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIERSNC4gVGhpcw0K PiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMyIGFuZCBYNjQuIFRo aXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBv biBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAgRHI0IFRoZSB2YWx1ZSB0byB3cml0ZSB0byBE cjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gRGVidWcgUmVn aXN0ZXIgNA0KPiAoRFI0KS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklB UEkNCj4gPiAtQXNtV3JpdGVEcjQgKA0KPiA+IC0gIFVJTlROICBEcjQNCj4gPiAtICApDQo+ID4g LXsNCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92ICAlMCwgJSVk cjQiDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJyIiAoRHI0KQ0KPiA+IC0gICAgKTsNCj4gPiAt ICByZXR1cm4gRHI0Ow0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3Jp dGVzIGEgdmFsdWUgdG8gRGVidWcgUmVnaXN0ZXIgNSAoRFI1KS4NCj4gPiAtDQo+ID4gLSAgV3Jp dGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIERSNS4gVGhpcw0KPiBmdW5jdGlvbiBpcyBv bmx5IGF2YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMyIGFuZCBYNjQuIFRoaXMgd3JpdGVzIGEgMzIt Yml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiBYNjQuDQo+ID4gLQ0K PiA+IC0gIEBwYXJhbSAgRHI1IFRoZSB2YWx1ZSB0byB3cml0ZSB0byBEcjUuDQo+ID4gLQ0KPiA+ IC0gIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gRGVidWcgUmVnaXN0ZXIgNQ0KPiAoRFI1 KS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV3Jp dGVEcjUgKA0KPiA+IC0gIFVJTlROICBEcjUNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2Fz bV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92ICAlMCwgJSVkcjUiDQo+ID4gLSAgICA6 DQo+ID4gLSAgICA6ICJyIiAoRHI1KQ0KPiA+IC0gICAgKTsNCj4gPiAtICByZXR1cm4gRHI1Ow0K PiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIGEgdmFsdWUgdG8g RGVidWcgUmVnaXN0ZXIgNiAoRFI2KS4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIGFuZCByZXR1cm5z IGEgbmV3IHZhbHVlIHRvIERSNi4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBv bg0KPiA+IC0gIElBLTMyIGFuZCBYNjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElB LTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAg RHI2IFRoZSB2YWx1ZSB0byB3cml0ZSB0byBEcjYuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhl IHZhbHVlIHdyaXR0ZW4gdG8gRGVidWcgUmVnaXN0ZXIgNg0KPiAoRFI2KS4NCj4gPiAtDQo+ID4g LSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV3JpdGVEcjYgKA0KPiA+IC0g IFVJTlROICBEcjYNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVf XyAoDQo+ID4gLSAgICAibW92ICAlMCwgJSVkcjYiDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJy IiAoRHI2KQ0KPiA+IC0gICAgKTsNCj4gPiAtICByZXR1cm4gRHI2Ow0KPiA+IC19DQo+ID4gLQ0K PiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVnaXN0ZXIg NyAoRFI3KS4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRv IERSNy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMy IGFuZCBYNjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0 LWJpdCB2YWx1ZSBvbiBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAgRHI3IFRoZSB2YWx1ZSB0 byB3cml0ZSB0byBEcjcuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4g dG8gRGVidWcgUmVnaXN0ZXIgNw0KPiAoRFI3KS4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5U Tg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV3JpdGVEcjcgKA0KPiA+IC0gIFVJTlROICBEcjcNCj4g PiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAi bW92ICAlMCwgJSVkcjciDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJyIiAoRHI3KQ0KPiA+IC0g ICAgKTsNCj4gPiAtICByZXR1cm4gRHI3Ow0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoq DQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgQ29kZSBTZWdtZW50IFJlZ2lzdGVy DQo+IChDUykuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZh bHVlIG9mIENTLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gLSAg SUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBv ZiBDUy4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UMTYNCj4gPiAtRUZJQVBJDQo+ID4gLUFz bVJlYWRDcyAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlQxNiAg RGF0YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1v diAgICUlY3MsICUwIg0KPiA+IC0gICAgOiI9YSIgKERhdGEpDQo+ID4gLSAgICApOw0KPiA+IC0N Cj4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+ IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERhdGEgU2VnbWVudCBSZWdpc3Rlcg0KPiAo RFMpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBv ZiBEUy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMy IGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgRFMu DQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVDE2DQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFk RHMgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UMTYgIERhdGE7 DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3YgICUl ZHMsICUwIg0KPiA+IC0gICAgOiI9YSIgKERhdGEpDQo+ID4gLSAgICApOw0KPiA+IC0NCj4gPiAt ICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJl YWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIEV4dHJhIFNlZ21lbnQgUmVnaXN0ZXINCj4gKEVTKS4N Cj4gPiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRVMu IFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAtICBJQS0zMiBhbmQg WDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIEVTLg0KPiA+ IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQxNg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZEVzICgN Cj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVDE2ICBEYXRhOw0KPiA+ IC0NCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92ICAlJWVzLCAl MCINCj4gPiAtICAgIDoiPWEiIChEYXRhKQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0 dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0 aGUgY3VycmVudCB2YWx1ZSBvZiBGUyBEYXRhIFNlZ21lbnQgUmVnaXN0ZXINCj4gKEZTKS4NCj4g PiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRlMuIFRo aXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAtICBJQS0zMiBhbmQgWDY0 Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIEZTLg0KPiA+IC0N Cj4gPiAtKiovDQo+ID4gLVVJTlQxNg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZEZzICgNCj4g PiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVDE2ICBEYXRhOw0KPiA+IC0N Cj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92ICAlJWZzLCAlMCIN Cj4gPiAtICAgIDoiPWEiIChEYXRhKQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJu IERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUg Y3VycmVudCB2YWx1ZSBvZiBHUyBEYXRhIFNlZ21lbnQgUmVnaXN0ZXINCj4gKEdTKS4NCj4gPiAt DQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgR1MuIFRoaXMN Cj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAtICBJQS0zMiBhbmQgWDY0Lg0K PiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIEdTLg0KPiA+IC0NCj4g PiAtKiovDQo+ID4gLVVJTlQxNg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVhZEdzICgNCj4gPiAt ICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVDE2ICBEYXRhOw0KPiA+IC0NCj4g PiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92ICAlJWdzLCAlMCINCj4g PiAtICAgIDoiPWEiIChEYXRhKQ0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERh dGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3Vy cmVudCB2YWx1ZSBvZiBTdGFjayBTZWdtZW50IFJlZ2lzdGVyDQo+IChTUykuDQo+ID4gLQ0KPiA+ IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIFNTLiBUaGlzDQo+IGZ1 bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gLSAgSUEtMzIgYW5kIFg2NC4NCj4gPiAt DQo+ID4gLSAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBTUy4NCj4gPiAtDQo+ID4gLSoq Lw0KPiA+IC1VSU5UMTYNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWRTcyAoDQo+ID4gLSAgVk9J RA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlQxNiAgRGF0YTsNCj4gPiAtDQo+ID4gLSAg X19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdiAgJSVkcywgJTAiDQo+ID4gLSAg ICA6Ij1hIiAoRGF0YSkNCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0K PiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQg dmFsdWUgb2YgVGFzayBSZWdpc3RlciAoVFIpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0 dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBUUi4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2 YWlsYWJsZSBvbg0KPiA+IC0gIElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4g VGhlIGN1cnJlbnQgdmFsdWUgb2YgVFIuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVDE2DQo+ ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkVHIgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4g LXsNCj4gPiAtICBVSU5UMTYgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGls ZV9fICgNCj4gPiAtICAgICJzdHIgICUwIg0KPiA+IC0gICAgOiAiPXIiIChEYXRhKQ0KPiA+IC0g ICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0K PiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCBHbG9iYWwgRGVzY3JpcHRvciBUYWJs ZQ0KPiBSZWdpc3RlcihHRFRSKSBkZXNjcmlwdG9yLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQg cmV0dXJucyB0aGUgY3VycmVudCBHRFRSIGRlc2NyaXB0b3IgYW5kDQo+IHJldHVybnMgaXQgaW4g R2R0ci4gVGhpcw0KPiA+IC0gIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFu ZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAgR2R0ciAgVGhlIHBvaW50ZXIgdG8gYSBHRFRS IGRlc2NyaXB0b3IuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4g PiAtSW50ZXJuYWxYODZSZWFkR2R0ciAoDQo+ID4gLSAgT1VUICAgICBJQTMyX0RFU0NSSVBUT1Ig ICAgICAgICAgICpHZHRyDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0 aWxlX18gKA0KPiA+IC0gICAgInNnZHQgJTAiDQo+ID4gLSAgICA6ICI9bSIgKCpHZHRyKQ0KPiA+ IC0gICAgKTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFdyaXRlcyB0 aGUgY3VycmVudCBHbG9iYWwgRGVzY3JpcHRvciBUYWJsZSBSZWdpc3Rlcg0KPiAoR0RUUikgZGVz Y3JpcHRvci4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIGFuZCB0aGUgY3VycmVudCBHRFRSIGRlc2Ny aXB0b3Igc3BlY2lmaWVkIGJ5DQo+IEdkdHIuIFRoaXMgZnVuY3Rpb24gaXMNCj4gPiAtICBvbmx5 IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIEdkdHIg IFRoZSBwb2ludGVyIHRvIGEgR0RUUiBkZXNjcmlwdG9yLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4g LVZPSUQNCj4gPiAtRUZJQVBJDQo+ID4gLUludGVybmFsWDg2V3JpdGVHZHRyICgNCj4gPiAtICBJ TiAgICAgIENPTlNUIElBMzJfREVTQ1JJUFRPUiAgICAgKkdkdHINCj4gPiAtICApDQo+ID4gLXsN Cj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibGdkdCAlMCINCj4gPiAt ICAgIDoNCj4gPiAtICAgIDogIm0iICgqR2R0cikNCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC19 DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgSW50ZXJy dXB0IERlc2NyaXB0b3IgVGFibGUNCj4gUmVnaXN0ZXIoR0RUUikgZGVzY3JpcHRvci4NCj4gPiAt DQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgSURUUiBkZXNjcmlwdG9yIGFu ZA0KPiByZXR1cm5zIGl0IGluIElkdHIuIFRoaXMNCj4gPiAtICBmdW5jdGlvbiBpcyBvbmx5IGF2 YWlsYWJsZSBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIElkdHIgIFRo ZSBwb2ludGVyIHRvIGEgSURUUiBkZXNjcmlwdG9yLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVZP SUQNCj4gPiAtRUZJQVBJDQo+ID4gLUludGVybmFsWDg2UmVhZElkdHIgKA0KPiA+IC0gIE9VVCAg ICAgSUEzMl9ERVNDUklQVE9SICAgICAgICAgICAqSWR0cg0KPiA+IC0gICkNCj4gPiAtew0KPiA+ IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJzaWR0ICAlMCINCj4gPiAtICAg IDogIj1tIiAoKklkdHIpDQo+ID4gLSAgICApOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAt LyoqDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IEludGVycnVwdCBEZXNjcmlwdG9yIFRhYmxl DQo+IFJlZ2lzdGVyKEdEVFIpIGRlc2NyaXB0b3IuDQo+ID4gLQ0KPiA+IC0gIFdyaXRlcyB0aGUg Y3VycmVudCBJRFRSIGRlc2NyaXB0b3IgYW5kIHJldHVybnMgaXQNCj4gaW4gSWR0ci4gVGhpcyBm dW5jdGlvbiBpcw0KPiA+IC0gIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZCBYNjQuDQo+ID4g LQ0KPiA+IC0gIEBwYXJhbSAgSWR0ciAgVGhlIHBvaW50ZXIgdG8gYSBJRFRSIGRlc2NyaXB0b3Iu DQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtSW50ZXJuYWxY ODZXcml0ZUlkdHIgKA0KPiA+IC0gIElOICAgICAgQ09OU1QgSUEzMl9ERVNDUklQVE9SICAgICAq SWR0cg0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4g PiAtICAgICJsaWR0ICUwIg0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAibSIgKCpJZHRyKQ0KPiA+ IC0gICAgKTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRo ZSBjdXJyZW50IExvY2FsIERlc2NyaXB0b3IgVGFibGUNCj4gUmVnaXN0ZXIoTERUUikgc2VsZWN0 b3IuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IDE2LWJpdCBM RFRSDQo+IGRlc2NyaXB0b3IgdmFsdWUuIFRoaXMgZnVuY3Rpb24gaXMNCj4gPiAtICBvbmx5IGF2 YWlsYWJsZSBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSBjdXJy ZW50IHNlbGVjdG9yIG9mIExEVC4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UMTYNCj4gPiAt RUZJQVBJDQo+ID4gLUFzbVJlYWRMZHRyICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17 DQo+ID4gLSAgVUlOVDE2ICBEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVf XyAoDQo+ID4gLSAgICAic2xkdCAgJTAiDQo+ID4gLSAgICA6ICI9ZyIgKERhdGEpICAgLy8gJTAN Cj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+IC19DQo+ID4gLQ0K PiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IExvY2FsIERlc2NyaXB0 b3IgVGFibGUgUmVnaXN0ZXINCj4gKEdEVFIpIHNlbGVjdG9yLg0KPiA+IC0NCj4gPiAtICBXcml0 ZXMgYW5kIHRoZSBjdXJyZW50IExEVFIgZGVzY3JpcHRvciBzcGVjaWZpZWQgYnkNCj4gTGR0ci4g VGhpcyBmdW5jdGlvbiBpcw0KPiA+IC0gIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZCBYNjQu DQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAgTGR0ciAgMTYtYml0IExEVFIgc2VsZWN0b3IgdmFsdWUu DQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV3JpdGVM ZHRyICgNCj4gPiAtICBJTiAgICAgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgTGR0cg0KPiA+ IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJs bGR0dyAgJTAiDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJnIiAoTGR0cikgICAvLyAlMA0KPiA+ IC0gICAgKTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gIC8qKg0KPiA+ICAgIFNhdmUgdGhl IGN1cnJlbnQgZmxvYXRpbmcgcG9pbnQvU1NFL1NTRTIgY29udGV4dCB0bw0KPiBhIGJ1ZmZlci4N Cj4gPg0KPiA+IEBAIC0xNjMwLDE3MSArNTYwLDMgQEAgQXNtUmVhZFRzYyAoDQo+ID4NCj4gPiAg ICByZXR1cm4gKCgoVUlOVDY0KUhpRGF0YSkgPDwgMzIpIHwgTG93RGF0YTsNCj4gPiAgfQ0KPiA+ IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEg UGVyZm9ybWFuY2UgQ291bnRlcg0KPiAoUE1DKS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJl dHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgcGVyZm9ybWFuY2UNCj4gY291bnRlciBzcGVjaWZp ZWQgYnkNCj4gPiAtICBJbmRleC4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJ QS0zMiBhbmQNCj4gWDY0Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIEluZGV4IFRoZSAzMi1iaXQg UGVyZm9ybWFuY2UgQ291bnRlciBpbmRleA0KPiB0byByZWFkLg0KPiA+IC0NCj4gPiAtICBAcmV0 dXJuIFRoZSB2YWx1ZSBvZiB0aGUgUE1DIHNwZWNpZmllZCBieSBJbmRleC4NCj4gPiAtDQo+ID4g LSoqLw0KPiA+IC1VSU5UNjQNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWRQbWMgKA0KPiA+IC0g IElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJbmRleA0KPiA+IC0gICkNCj4gPiAt ew0KPiA+IC0gIFVJTlQzMiAgTG93RGF0YTsNCj4gPiAtICBVSU5UMzIgIEhpRGF0YTsNCj4gPiAt DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgInJkcG1jIg0KPiA+IC0g ICAgOiAiPWEiIChMb3dEYXRhKSwNCj4gPiAtICAgICAgIj1kIiAoSGlEYXRhKQ0KPiA+IC0gICAg OiAiYyIgIChJbmRleCkNCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiAoKChVSU5U NjQpSGlEYXRhKSA8PCAzMikgfCBMb3dEYXRhOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAt LyoqDQo+ID4gLSAgU2V0cyB1cCBhIG1vbml0b3IgYnVmZmVyIHRoYXQgaXMgdXNlZCBieQ0KPiBB c21Nd2FpdCgpLg0KPiA+IC0NCj4gPiAtICBFeGVjdXRlcyBhIE1PTklUT1IgaW5zdHJ1Y3Rpb24g d2l0aCB0aGUgcmVnaXN0ZXINCj4gc3RhdGUgc3BlY2lmaWVkIGJ5IEVheCwgRWN4DQo+ID4gLSAg YW5kIEVkeC4gUmV0dXJucyBFYXguIFRoaXMgZnVuY3Rpb24gaXMgb25seQ0KPiBhdmFpbGFibGUg b24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBFYXggVGhlIHZhbHVlIHRv IGxvYWQgaW50byBFQVggb3IgUkFYDQo+IGJlZm9yZSBleGVjdXRpbmcgdGhlIE1PTklUT1INCj4g PiAtICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4NCj4gPiAtICBAcGFyYW0gIEVjeCBUaGUgdmFs dWUgdG8gbG9hZCBpbnRvIEVDWCBvciBSQ1gNCj4gYmVmb3JlIGV4ZWN1dGluZyB0aGUgTU9OSVRP Ug0KPiA+IC0gICAgICAgICAgICAgIGluc3RydWN0aW9uLg0KPiA+IC0gIEBwYXJhbSAgRWR4IFRo ZSB2YWx1ZSB0byBsb2FkIGludG8gRURYIG9yIFJEWA0KPiBiZWZvcmUgZXhlY3V0aW5nIHRoZSBN T05JVE9SDQo+ID4gLSAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uDQo+ID4gLQ0KPiA+IC0gIEBy ZXR1cm4gRWF4DQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4gPiAtRUZJQVBJDQo+ID4g LUFzbU1vbml0b3IgKA0KPiA+IC0gIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBF YXgsDQo+ID4gLSAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEVjeCwNCj4gPiAt ICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgRWR4DQo+ID4gLSAgKQ0KPiA+IC17 DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vbml0b3IiDQo+ID4g LSAgICA6DQo+ID4gLSAgICA6ICJhIiAoRWF4KSwNCj4gPiAtICAgICAgImMiIChFY3gpLA0KPiA+ IC0gICAgICAiZCIgKEVkeCkNCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBFYXg7 DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBFeGVjdXRlcyBhbiBNV0FJ VCBpbnN0cnVjdGlvbi4NCj4gPiAtDQo+ID4gLSAgRXhlY3V0ZXMgYW4gTVdBSVQgaW5zdHJ1Y3Rp b24gd2l0aCB0aGUgcmVnaXN0ZXINCj4gc3RhdGUgc3BlY2lmaWVkIGJ5IEVheCBhbmQNCj4gPiAt ICBFY3guIFJldHVybnMgRWF4LiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+IG9u IElBLTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAgRWF4IFRoZSB2YWx1ZSB0byBs b2FkIGludG8gRUFYIG9yIFJBWA0KPiBiZWZvcmUgZXhlY3V0aW5nIHRoZSBNT05JVE9SDQo+ID4g LSAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uDQo+ID4gLSAgQHBhcmFtICBFY3ggVGhlIHZhbHVl IHRvIGxvYWQgaW50byBFQ1ggb3IgUkNYDQo+IGJlZm9yZSBleGVjdXRpbmcgdGhlIE1PTklUT1IN Cj4gPiAtICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBF YXgNCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+IC1FRklBUEkNCj4gPiAtQXNtTXdh aXQgKA0KPiA+IC0gIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBFYXgsDQo+ID4g LSAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEVjeA0KPiA+IC0gICkNCj4gPiAt ew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtd2FpdCINCj4gPiAt ICAgIDoNCj4gPiAtICAgIDogImEiICAoRWF4KSwNCj4gPiAtICAgICAgImMiICAoRWN4KQ0KPiA+ IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIEVheDsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAt DQo+ID4gLS8qKg0KPiA+IC0gIEV4ZWN1dGVzIGEgV0JJTlZEIGluc3RydWN0aW9uLg0KPiA+IC0N Cj4gPiAtICBFeGVjdXRlcyBhIFdCSU5WRCBpbnN0cnVjdGlvbi4gVGhpcyBmdW5jdGlvbiBpcw0K PiBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQNCj4gPiAtICBYNjQuDQo+ID4gLQ0KPiA+IC0q Ki8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV2JpbnZkICgNCj4gPiAtICBWT0lE DQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJ3YmludmQi Ojo6Im1lbW9yeSIpOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgRXhl Y3V0ZXMgYSBJTlZEIGluc3RydWN0aW9uLg0KPiA+IC0NCj4gPiAtICBFeGVjdXRlcyBhIElOVkQg aW5zdHJ1Y3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMgb25seQ0KPiBhdmFpbGFibGUgb24gSUEtMzIg YW5kDQo+ID4gLSAgWDY0Lg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVZPSUQNCj4gPiAtRUZJQVBJ DQo+ID4gLUFzbUludmQgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBf X2FzbV9fIF9fdm9sYXRpbGVfXyAoImludmQiOjo6Im1lbW9yeSIpOw0KPiA+IC0NCj4gPiAtfQ0K PiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIEZsdXNoZXMgYSBjYWNoZSBsaW5lIGZyb20g YWxsIHRoZSBpbnN0cnVjdGlvbiBhbmQNCj4gZGF0YSBjYWNoZXMgd2l0aGluIHRoZQ0KPiA+IC0g IGNvaGVyZW5jeSBkb21haW4gb2YgdGhlIENQVS4NCj4gPiAtDQo+ID4gLSAgRmx1c2hlZCB0aGUg Y2FjaGUgbGluZSBzcGVjaWZpZWQgYnkgTGluZWFyQWRkcmVzcywNCj4gYW5kIHJldHVybnMgTGlu ZWFyQWRkcmVzcy4NCj4gPiAtICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIElB LTMyIGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAgTGluZWFyQWRkcmVzcyBUaGUgYWRk cmVzcyBvZiB0aGUgY2FjaGUgbGluZQ0KPiB0byBmbHVzaC4gSWYgdGhlIENQVSBpcw0KPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICBpbiBhIHBoeXNpY2FsIGFkZHJlc3NpbmcNCj4gbW9kZSwg dGhlbiBMaW5lYXJBZGRyZXNzIGlzIGENCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgcGh5 c2ljYWwgYWRkcmVzcy4gSWYgdGhlIENQVQ0KPiBpcyBpbiBhIHZpcnR1YWwNCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgYWRkcmVzc2luZyBtb2RlLCB0aGVuDQo+IExpbmVhckFkZHJlc3Mg aXMgYSB2aXJ0dWFsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuDQo+ID4g LQ0KPiA+IC0gIEByZXR1cm4gTGluZWFyQWRkcmVzcw0KPiA+IC0qKi8NCj4gPiAtVk9JRCAqDQo+ ID4gLUVGSUFQSQ0KPiA+IC1Bc21GbHVzaENhY2hlTGluZSAoDQo+ID4gLSAgSU4gICAgICBWT0lE ICAgICAgICAgICAgICAgICAgICAgICpMaW5lYXJBZGRyZXNzDQo+ID4gLSAgKQ0KPiA+IC17DQo+ ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgImNsZmx1c2ggKCUwKSINCj4g PiAtICAgIDoNCj4gPiAtICAgIDogInIiIChMaW5lYXJBZGRyZXNzKQ0KPiA+IC0gICAgOiAibWVt b3J5Ig0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgICByZXR1cm4gTGluZWFyQWRkcmVzczsN Cj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jh c2VMaWIvWDY0L0djY0lubGluZS5jDQo+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9YNjQvR2Nj SW5saW5lUHJpdi5jDQo+ID4gc2ltaWxhcml0eSBpbmRleCA2NSUNCj4gPiBjb3B5IGZyb20gTWRl UGtnL0xpYnJhcnkvQmFzZUxpYi9YNjQvR2NjSW5saW5lLmMNCj4gPiBjb3B5IHRvIE1kZVBrZy9M aWJyYXJ5L0Jhc2VMaWIvWDY0L0djY0lubGluZVByaXYuYw0KPiA+IGluZGV4IDE1NGNlMWY1N2Uu Ljk4YmUxOWIzYzcgMTAwNjQ0DQo+ID4gLS0tIGEvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9YNjQv R2NjSW5saW5lLmMNCj4gPiArKysgYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL1g2NC9HY2NJbmxp bmVQcml2LmMNCj4gPiBAQCAtMSw3ICsxLDggQEANCj4gPiAgLyoqIEBmaWxlDQo+ID4gLSAgR0ND IGlubGluZSBpbXBsZW1lbnRhdGlvbiBvZiBCYXNlTGliIHByb2Nlc3Nvcg0KPiBzcGVjaWZpYyBm dW5jdGlvbnMuDQo+ID4gKyAgR0NDIGlubGluZSBpbXBsZW1lbnRhdGlvbiBvZiBCYXNlTGliIHBy b2Nlc3Nvcg0KPiBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCB1c2UNCj4gPiArICBwcml2bGlkZ2Vk IGluc3RydWN0aW9ucy4NCj4gPg0KPiA+IC0gIENvcHlyaWdodCAoYykgMjAwNiAtIDIwMTgsIElu dGVsIENvcnBvcmF0aW9uLiBBbGwNCj4gcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArICBDb3B5 cmlnaHQgKGMpIDIwMDYgLSAyMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsDQo+IHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+ID4gICAgUG9ydGlvbnMgY29weXJpZ2h0IChjKSAyMDA4IC0gMjAwOSwg QXBwbGUgSW5jLiBBbGwNCj4gcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiAgICBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+DQo+ID4gQEAgLTEwLDI5ICsx MSw2IEBADQo+ID4NCj4gPiAgI2luY2x1ZGUgIkJhc2VMaWJJbnRlcm5hbHMuaCINCj4gPg0KPiA+ IC0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBVc2VkIHRvIHNlcmlhbGl6ZSBsb2Fk IGFuZCBzdG9yZSBvcGVyYXRpb25zLg0KPiA+IC0NCj4gPiAtICBBbGwgbG9hZHMgYW5kIHN0b3Jl cyB0aGF0IHByb2NlZWQgY2FsbHMgdG8gdGhpcw0KPiBmdW5jdGlvbiBhcmUgZ3VhcmFudGVlZCB0 byBiZQ0KPiA+IC0gIGdsb2JhbGx5IHZpc2libGUgd2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMu DQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtTWVtb3J5RmVu Y2UgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICAvLyBUaGlzIGlzIGEg bGl0dGxlIGJpdCBvZiBvdmVya2lsbCBhbmQgaXQgaXMgbW9yZQ0KPiBhYm91dCB0aGUgY29tcGls ZXIgdGhhdCBpdCBpcw0KPiA+IC0gIC8vIGFjdHVhbGx5IHByb2Nlc3NvciBzeW5jaHJvbml6YXRp b24uIFRoaXMgaXMgbGlrZQ0KPiB0aGUgX1JlYWRXcml0ZUJhcnJpZXINCj4gPiAtICAvLyBNaWNy b3NvZnQgc3BlY2lmaWMgaW50cmluc2ljDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCIi Ojo6Im1lbW9yeSIpOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAgLyoqDQo+ID4gICAgRW5h YmxlcyBDUFUgaW50ZXJydXB0cy4NCj4gPg0KPiA+IEBAIC02NCw0NCArNDIsNiBAQCBEaXNhYmxl SW50ZXJydXB0cyAoDQo+ID4gICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJjbGkiOjo6ICJtZW1v cnkiKTsNCj4gPiAgfQ0KPiA+DQo+ID4gLQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0g IFJlcXVlc3RzIENQVSB0byBwYXVzZSBmb3IgYSBzaG9ydCBwZXJpb2Qgb2YgdGltZS4NCj4gPiAt DQo+ID4gLSAgUmVxdWVzdHMgQ1BVIHRvIHBhdXNlIGZvciBhIHNob3J0IHBlcmlvZCBvZiB0aW1l Lg0KPiBUeXBpY2FsbHkgdXNlZCBpbiBNUA0KPiA+IC0gIHN5c3RlbXMgdG8gcHJldmVudCBtZW1v cnkgc3RhcnZhdGlvbiB3aGlsZSB3YWl0aW5nDQo+IGZvciBhIHNwaW4gbG9jay4NCj4gPiAtDQo+ ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1DcHVQYXVzZSAoDQo+ID4gLSAg Vk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgicGF1 c2UiKTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIEdlbmVyYXRlcyBh IGJyZWFrcG9pbnQgb24gdGhlIENQVS4NCj4gPiAtDQo+ID4gLSAgR2VuZXJhdGVzIGEgYnJlYWtw b2ludCBvbiB0aGUgQ1BVLiBUaGUgYnJlYWtwb2ludA0KPiBtdXN0IGJlIGltcGxlbWVudGVkIHN1 Y2gNCj4gPiAtICB0aGF0IGNvZGUgY2FuIHJlc3VtZSBub3JtYWwgZXhlY3V0aW9uIGFmdGVyIHRo ZQ0KPiBicmVha3BvaW50Lg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVZPSUQNCj4gPiAtRUZJQVBJ DQo+ID4gLUNwdUJyZWFrcG9pbnQgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4g PiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImludCAkMyIpOw0KPiA+IC19DQo+ID4gLQ0KPiA+ IC0NCj4gPiAtDQo+ID4gIC8qKg0KPiA+ICAgIFJldHVybnMgYSA2NC1iaXQgTWFjaGluZSBTcGVj aWZpYyBSZWdpc3RlcihNU1IpLg0KPiA+DQo+ID4gQEAgLTE3NiwzNyArMTE2LDYgQEAgQXNtV3Jp dGVNc3I2NCAoDQo+ID4gICAgcmV0dXJuIFZhbHVlOw0KPiA+ICB9DQo+ID4NCj4gPiAtDQo+ID4g LQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgRUZMQUdT IHJlZ2lzdGVyLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2 YWx1ZSBvZiB0aGUgRUZMQUdTDQo+IHJlZ2lzdGVyLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gLSAg b25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4gVGhpcyByZXR1cm5zIGEgMzItDQo+IGJp dCB2YWx1ZSBvbiBJQS0zMiBhbmQgYQ0KPiA+IC0gIDY0LWJpdCB2YWx1ZSBvbiBYNjQuDQo+ID4g LQ0KPiA+IC0gIEByZXR1cm4gRUZMQUdTIG9uIElBLTMyIG9yIFJGTEFHUyBvbiBYNjQuDQo+ID4g LQ0KPiA+IC0qKi8NCj4gPiAtVUlOVE4NCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWRFZmxhZ3Mg KA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UTiBFZmxhZ3M7DQo+ ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJwdXNoZnEgICAg ICAgICBcblx0Ig0KPiA+IC0gICAgInBvcCAgICAgJTAgICAgICAgICAiDQo+ID4gLSAgICA6ICI9 ciIgKEVmbGFncykgICAgICAgLy8gJTANCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJldHVy biBFZmxhZ3M7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0NCj4gPiAgLyoqDQo+ID4gICAg UmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgMA0KPiAoQ1Iw KS4NCj4gPg0KPiA+IEBAIC0xMTYzLDQ3NSArMTA3Miw2IEBAIEFzbVdyaXRlTGR0ciAoDQo+ID4g ICAgICApOw0KPiA+ICB9DQo+ID4NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0gIFNhdmUgdGhlIGN1 cnJlbnQgZmxvYXRpbmcgcG9pbnQvU1NFL1NTRTIgY29udGV4dCB0bw0KPiBhIGJ1ZmZlci4NCj4g PiAtDQo+ID4gLSAgU2F2ZXMgdGhlIGN1cnJlbnQgZmxvYXRpbmcgcG9pbnQvU1NFL1NTRTIgc3Rh dGUgdG8NCj4gdGhlIGJ1ZmZlciBzcGVjaWZpZWQgYnkNCj4gPiAtICBCdWZmZXIuIEJ1ZmZlciBt dXN0IGJlIGFsaWduZWQgb24gYSAxNi1ieXRlDQo+IGJvdW5kYXJ5LiBUaGlzIGZ1bmN0aW9uIGlz IG9ubHkNCj4gPiAtICBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAg QHBhcmFtICBCdWZmZXIgIFRoZSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHNhdmUgdGhlDQo+IGZs b2F0aW5nIHBvaW50L1NTRS9TU0UyIGNvbnRleHQuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9J RA0KPiA+IC1FRklBUEkNCj4gPiAtSW50ZXJuYWxYODZGeFNhdmUgKA0KPiA+IC0gIE9VVCAgICAg SUEzMl9GWF9CVUZGRVIgICAgICAgICAgICAqQnVmZmVyDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4g LSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgImZ4c2F2ZSAlMCINCj4gPiAtICAg IDoNCj4gPiAtICAgIDogIm0iICgqQnVmZmVyKSAgLy8gJTANCj4gPiAtICAgICk7DQo+ID4gLX0N Cj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZXN0b3JlcyB0aGUgY3VycmVudCBmbG9h dGluZyBwb2ludC9TU0UvU1NFMg0KPiBjb250ZXh0IGZyb20gYSBidWZmZXIuDQo+ID4gLQ0KPiA+ IC0gIFJlc3RvcmVzIHRoZSBjdXJyZW50IGZsb2F0aW5nIHBvaW50L1NTRS9TU0UyIHN0YXRlDQo+ IGZyb20gdGhlIGJ1ZmZlciBzcGVjaWZpZWQNCj4gPiAtICBieSBCdWZmZXIuIEJ1ZmZlciBtdXN0 IGJlIGFsaWduZWQgb24gYSAxNi1ieXRlDQo+IGJvdW5kYXJ5LiBUaGlzIGZ1bmN0aW9uIGlzDQo+ ID4gLSAgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHBh cmFtICBCdWZmZXIgIFRoZSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHNhdmUgdGhlDQo+IGZsb2F0 aW5nIHBvaW50L1NTRS9TU0UyIGNvbnRleHQuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0K PiA+IC1FRklBUEkNCj4gPiAtSW50ZXJuYWxYODZGeFJlc3RvcmUgKA0KPiA+IC0gIElOICAgICAg Q09OU1QgSUEzMl9GWF9CVUZGRVIgICAgICAqQnVmZmVyDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4g LSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgImZ4cnN0b3IgJTAiDQo+ID4gLSAg ICA6DQo+ID4gLSAgICA6ICJtIiAoKkJ1ZmZlcikgIC8vICUwDQo+ID4gLSAgICApOw0KPiA+IC19 DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUg b2YgNjQtYml0IE1NWCBSZWdpc3RlciAjMA0KPiAoTU0wKS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMg YW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgTU0wLiBUaGlzDQo+IGZ1bmN0aW9uIGlz IG9ubHkgYXZhaWxhYmxlDQo+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAg QHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBNTTAuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAt VUlOVDY0DQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21SZWFkTW0wICgNCj4gPiAtICBWT0lEDQo+ID4g LSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlOVDY0ICBEYXRhOw0KPiA+IC0NCj4gPiAtICBfX2FzbV9f IF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAgICAibW92ZCAgICUlbW0wLCAgJTAgICAgXG5cdCINCj4g PiAtICAgIDogIj1yIiAgKERhdGEpICAgICAgIC8vICUwDQo+ID4gLSAgICApOw0KPiA+IC0NCj4g PiAtICByZXR1cm4gRGF0YTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0g IFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzENCj4gKE1N MSkuDQo+ID4gLQ0KPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9m IE1NMS4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+IC0gIG9uIElBLTMy IGFuZCBYNjQuDQo+ID4gLQ0KPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgTU0x Lg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVVJTlQ2NA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtUmVh ZE1tMSAoDQo+ID4gLSAgVk9JRA0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIFVJTlQ2NCAgRGF0 YTsNCj4gPiAtDQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAgIm1vdmQg ICAlJW1tMSwgICUwICAgIFxuXHQiDQo+ID4gLSAgICA6ICI9ciIgIChEYXRhKSAgICAgICAvLyAl MA0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAt DQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiA2NC1i aXQgTU1YIFJlZ2lzdGVyICMyDQo+IChNTTIpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0 dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTIuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBh dmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJu IFRoZSBjdXJyZW50IHZhbHVlIG9mIE1NMi4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UNjQN Cj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWRNbTIgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ ID4gLXsNCj4gPiAtICBVSU5UNjQgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xh dGlsZV9fICgNCj4gPiAtICAgICJtb3ZkICAlJW1tMiwgICUwICAgIFxuXHQiDQo+ID4gLSAgICA6 ICI9ciIgIChEYXRhKSAgICAgICAvLyAlMA0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0 dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0 aGUgY3VycmVudCB2YWx1ZSBvZiA2NC1iaXQgTU1YIFJlZ2lzdGVyICMzDQo+IChNTTMpLg0KPiA+ IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTMuIFRo aXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0 Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIE1NMy4NCj4gPiAt DQo+ID4gLSoqLw0KPiA+IC1VSU5UNjQNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWRNbTMgKA0K PiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UNjQgIERhdGE7DQo+ID4g LQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3ZkICAlJW1tMywg ICUwICAgIFxuXHQiDQo+ID4gLSAgICA6ICI9ciIgIChEYXRhKSAgICAgICAvLyAlMA0KPiA+IC0g ICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0K PiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiA2NC1iaXQgTU1YIFJl Z2lzdGVyICM0DQo+IChNTTQpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUg Y3VycmVudCB2YWx1ZSBvZiBNTTQuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUN Cj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSBjdXJy ZW50IHZhbHVlIG9mIE1NNC4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UNjQNCj4gPiAtRUZJ QVBJDQo+ID4gLUFzbVJlYWRNbTQgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4g PiAtICBVSU5UNjQgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgN Cj4gPiAtICAgICJtb3ZkICAlJW1tNCwgICUwICAgIFxuXHQiDQo+ID4gLSAgICA6ICI9ciIgIChE YXRhKSAgICAgICAvLyAlMA0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7 DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVu dCB2YWx1ZSBvZiA2NC1iaXQgTU1YIFJlZ2lzdGVyICM1DQo+IChNTTUpLg0KPiA+IC0NCj4gPiAt ICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTUuIFRoaXMNCj4gZnVu Y3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0N Cj4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIE1NNS4NCj4gPiAtDQo+ID4gLSoq Lw0KPiA+IC1VSU5UNjQNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWRNbTUgKA0KPiA+IC0gIFZP SUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UNjQgIERhdGE7DQo+ID4gLQ0KPiA+IC0g IF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3ZkICAlJW1tNSwgICUwICAgIFxu XHQiDQo+ID4gLSAgICA6ICI9ciIgIChEYXRhKSAgICAgICAvLyAlMA0KPiA+IC0gICAgKTsNCj4g PiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioN Cj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiA2NC1iaXQgTU1YIFJlZ2lzdGVyICM2 DQo+IChNTTYpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2 YWx1ZSBvZiBNTTYuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiAtICBv biBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVl IG9mIE1NNi4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UNjQNCj4gPiAtRUZJQVBJDQo+ID4g LUFzbVJlYWRNbTYgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5U NjQgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAg ICJtb3ZkICAlJW1tNiwgICUwICAgIFxuXHQiDQo+ID4gLSAgICA6ICI9ciIgIChEYXRhKSAgICAg ICAvLyAlMA0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gLX0N Cj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBv ZiA2NC1iaXQgTU1YIFJlZ2lzdGVyICM3DQo+IChNTTcpLg0KPiA+IC0NCj4gPiAtICBSZWFkcyBh bmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTcuIFRoaXMNCj4gZnVuY3Rpb24gaXMg b25seSBhdmFpbGFibGUNCj4gPiAtICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+IC0NCj4gPiAtICBA cmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIE1NNy4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1V SU5UNjQNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJlYWRNbTcgKA0KPiA+IC0gIFZPSUQNCj4gPiAt ICApDQo+ID4gLXsNCj4gPiAtICBVSU5UNjQgIERhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18g X192b2xhdGlsZV9fICgNCj4gPiAtICAgICJtb3ZkICAlJW1tNywgICUwICAgIFxuXHQiDQo+ID4g LSAgICA6ICI9ciIgIChEYXRhKSAgICAgICAvLyAlMA0KPiA+IC0gICAgKTsNCj4gPiAtDQo+ID4g LSAgcmV0dXJuIERhdGE7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAtICBX cml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBSZWdpc3RlciAjMA0KPiAoTU0w KS4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIE1NMC4gVGhpcyBm dW5jdGlvbiBpcw0KPiBvbmx5IGF2YWlsYWJsZSBvbiBJQTMyIGFuZA0KPiA+IC0gIFg2NC4NCj4g PiAtDQo+ID4gLSAgQHBhcmFtICBWYWx1ZSBUaGUgNjQtYml0IHZhbHVlIHRvIHdyaXRlIHRvIE1N MC4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21Xcml0 ZU1tMCAoDQo+ID4gLSAgSU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIFZhbHVlDQo+ ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0gICAg Im1vdmQgICUwLCAlJW1tMCIgIC8vICUwDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJtIiAoVmFs dWUpDQo+ID4gLSAgICApOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4gLSAg V3JpdGVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzENCj4gKE1N MSkuDQo+ID4gLQ0KPiA+IC0gIFdyaXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTEuIFRoaXMg ZnVuY3Rpb24gaXMNCj4gb25seSBhdmFpbGFibGUgb24gSUEzMiBhbmQNCj4gPiAtICBYNjQuDQo+ ID4gLQ0KPiA+IC0gIEBwYXJhbSAgVmFsdWUgVGhlIDY0LWJpdCB2YWx1ZSB0byB3cml0ZSB0byBN TTEuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtQXNtV3Jp dGVNbTEgKA0KPiA+IC0gIElOICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0K PiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAtICAg ICJtb3ZkICAlMCwgJSVtbTEiICAvLyAlMA0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAibSIgKFZh bHVlKQ0KPiA+IC0gICAgKTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+IC0g IFdyaXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiA2NC1iaXQgTU1YIFJlZ2lzdGVyICMyDQo+IChN TTIpLg0KPiA+IC0NCj4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgTU0yLiBUaGlz IGZ1bmN0aW9uIGlzDQo+IG9ubHkgYXZhaWxhYmxlIG9uIElBMzIgYW5kDQo+ID4gLSAgWDY0Lg0K PiA+IC0NCj4gPiAtICBAcGFyYW0gIFZhbHVlIFRoZSA2NC1iaXQgdmFsdWUgdG8gd3JpdGUgdG8g TU0yLg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVZPSUQNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVdy aXRlTW0yICgNCj4gPiAtICBJTiAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVmFsdWUN Cj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gLSAg ICAibW92ZCAgJTAsICUlbW0yIiAgLy8gJTANCj4gPiAtICAgIDoNCj4gPiAtICAgIDogIm0iIChW YWx1ZSkNCj4gPiAtICAgICk7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4gPiAt ICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBSZWdpc3RlciAjMw0KPiAo TU0zKS4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIE1NMy4gVGhp cyBmdW5jdGlvbiBpcw0KPiBvbmx5IGF2YWlsYWJsZSBvbiBJQTMyIGFuZA0KPiA+IC0gIFg2NC4N Cj4gPiAtDQo+ID4gLSAgQHBhcmFtICBWYWx1ZSBUaGUgNjQtYml0IHZhbHVlIHRvIHdyaXRlIHRv IE1NMy4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1Bc21X cml0ZU1tMyAoDQo+ID4gLSAgSU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIFZhbHVl DQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+IC0g ICAgIm1vdmQgICUwLCAlJW1tMyIgIC8vICUwDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJtIiAo VmFsdWUpDQo+ID4gLSAgICApOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ID4g LSAgV3JpdGVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzQNCj4g KE1NNCkuDQo+ID4gLQ0KPiA+IC0gIFdyaXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTQuIFRo aXMgZnVuY3Rpb24gaXMNCj4gb25seSBhdmFpbGFibGUgb24gSUEzMiBhbmQNCj4gPiAtICBYNjQu DQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAgVmFsdWUgVGhlIDY0LWJpdCB2YWx1ZSB0byB3cml0ZSB0 byBNTTQuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAtQXNt V3JpdGVNbTQgKA0KPiA+IC0gIElOICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBWYWx1 ZQ0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiAt ICAgICJtb3ZkICAlMCwgJSVtbTQiICAvLyAlMA0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAibSIg KFZhbHVlKQ0KPiA+IC0gICAgKTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0KPiA+ IC0gIFdyaXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiA2NC1iaXQgTU1YIFJlZ2lzdGVyICM1DQo+ IChNTTUpLg0KPiA+IC0NCj4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgTU01LiBU aGlzIGZ1bmN0aW9uIGlzDQo+IG9ubHkgYXZhaWxhYmxlIG9uIElBMzIgYW5kDQo+ID4gLSAgWDY0 Lg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gIFZhbHVlIFRoZSA2NC1iaXQgdmFsdWUgdG8gd3JpdGUg dG8gTU01Lg0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVZPSUQNCj4gPiAtRUZJQVBJDQo+ID4gLUFz bVdyaXRlTW01ICgNCj4gPiAtICBJTiAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVmFs dWUNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4g LSAgICAibW92ZCAgJTAsICUlbW01IiAgLy8gJTANCj4gPiAtICAgIDoNCj4gPiAtICAgIDogIm0i IChWYWx1ZSkNCj4gPiAtICAgICk7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC0vKioNCj4g PiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBSZWdpc3RlciAjNg0K PiAoTU02KS4NCj4gPiAtDQo+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIE1NNi4g VGhpcyBmdW5jdGlvbiBpcw0KPiBvbmx5IGF2YWlsYWJsZSBvbiBJQTMyIGFuZA0KPiA+IC0gIFg2 NC4NCj4gPiAtDQo+ID4gLSAgQHBhcmFtICBWYWx1ZSBUaGUgNjQtYml0IHZhbHVlIHRvIHdyaXRl IHRvIE1NNi4NCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1WT0lEDQo+ID4gLUVGSUFQSQ0KPiA+IC1B c21Xcml0ZU1tNiAoDQo+ID4gLSAgSU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIFZh bHVlDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ IC0gICAgIm1vdmQgICUwLCAlJW1tNiIgIC8vICUwDQo+ID4gLSAgICA6DQo+ID4gLSAgICA6ICJt IiAoVmFsdWUpDQo+ID4gLSAgICApOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLyoqDQo+ ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzcN Cj4gKE1NNykuDQo+ID4gLQ0KPiA+IC0gIFdyaXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTcu IFRoaXMgZnVuY3Rpb24gaXMNCj4gb25seSBhdmFpbGFibGUgb24gSUEzMiBhbmQNCj4gPiAtICBY NjQuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAgVmFsdWUgVGhlIDY0LWJpdCB2YWx1ZSB0byB3cml0 ZSB0byBNTTcuDQo+ID4gLQ0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1FRklBUEkNCj4gPiAt QXNtV3JpdGVNbTcgKA0KPiA+IC0gIElOICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBW YWx1ZQ0KPiA+IC0gICkNCj4gPiAtew0KPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4g PiAtICAgICJtb3ZkICAlMCwgJSVtbTciICAvLyAlMA0KPiA+IC0gICAgOg0KPiA+IC0gICAgOiAi bSIgKFZhbHVlKQ0KPiA+IC0gICAgKTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gLS8qKg0K PiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIFRpbWUgU3RhbXAgQ291bnRlcg0KPiAo VFNDKS4NCj4gPiAtDQo+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUg b2YgVFNDLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gLSAgb24gSUEt MzIgYW5kIFg2NC4NCj4gPiAtDQo+ID4gLSAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBU U0MNCj4gPiAtDQo+ID4gLSoqLw0KPiA+IC1VSU5UNjQNCj4gPiAtRUZJQVBJDQo+ID4gLUFzbVJl YWRUc2MgKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBVSU5UMzIgIExv d0RhdGE7DQo+ID4gLSAgVUlOVDMyICBIaURhdGE7DQo+ID4gLQ0KPiA+IC0gIF9fYXNtX18gX192 b2xhdGlsZV9fICgNCj4gPiAtICAgICJyZHRzYyINCj4gPiAtICAgIDogIj1hIiAoTG93RGF0YSks DQo+ID4gLSAgICAgICI9ZCIgKEhpRGF0YSkNCj4gPiAtICAgICk7DQo+ID4gLQ0KPiA+IC0gIHJl dHVybiAoKChVSU5UNjQpSGlEYXRhKSA8PCAzMikgfCBMb3dEYXRhOw0KPiA+IC19DQo+ID4gLQ0K PiA+IC0NCj4gPiAgLyoqDQo+ID4gICAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBQZXJm b3JtYW5jZSBDb3VudGVyDQo+IChQTUMpLg0KPiA+DQo+ID4gQEAgLTE2NjIsNyArMTEwMiw2IEBA IEFzbVJlYWRQbWMgKA0KPiA+ICAgIHJldHVybiAoKChVSU5UNjQpSGlEYXRhKSA8PCAzMikgfCBM b3dEYXRhOw0KPiA+ICB9DQo+ID4NCj4gPiAtDQo+ID4gIC8qKg0KPiA+ICAgIFNldHMgdXAgYSBt b25pdG9yIGJ1ZmZlciB0aGF0IGlzIHVzZWQgYnkNCj4gQXNtTXdhaXQoKS4NCj4gPg0KPiA+IEBA IC0xNjk4LDcgKzExMzcsNiBAQCBBc21Nb25pdG9yICgNCj4gPiAgICByZXR1cm4gRWF4Ow0KPiA+ ICB9DQo+ID4NCj4gPiAtDQo+ID4gIC8qKg0KPiA+ICAgIEV4ZWN1dGVzIGFuIE1XQUlUIGluc3Ry dWN0aW9uLg0KPiA+DQo+ID4gQEAgLTE3MzAsNyArMTE2OCw2IEBAIEFzbU13YWl0ICgNCj4gPiAg ICByZXR1cm4gRWF4Ow0KPiA+ICB9DQo+ID4NCj4gPiAtDQo+ID4gIC8qKg0KPiA+ICAgIEV4ZWN1 dGVzIGEgV0JJTlZEIGluc3RydWN0aW9uLg0KPiA+DQo+ID4gQEAgLTE3NDcsNyArMTE4NCw2IEBA IEFzbVdiaW52ZCAoDQo+ID4gICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJ3YmludmQiOjo6Im1l bW9yeSIpOw0KPiA+ICB9DQo+ID4NCj4gPiAtDQo+ID4gIC8qKg0KPiA+ICAgIEV4ZWN1dGVzIGEg SU5WRCBpbnN0cnVjdGlvbi4NCj4gPg0KPiA+IEBAIC0xNzk2LDUgKzEyMzIsMyBAQCBBc21GbHVz aENhY2hlTGluZSAoDQo+ID4NCj4gPiAgICAgIHJldHVybiBMaW5lYXJBZGRyZXNzOw0KPiA+ICB9 DQo+ID4gLQ0KPiA+IC0NCj4gPiAtLQ0KPiA+IDIuMjEuMC53aW5kb3dzLjENCg0K