From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web11.30139.1669001035092921568 for ; Sun, 20 Nov 2022 19:23:55 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=Vfserruh; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: yuwei.chen@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669001035; x=1700537035; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=eJia8nMy1Rs2qCFduDZjuAxisepq4oGI7/Ad3n0pRL4=; b=VfserruhvemzAbVtqQ37KDwfZTRNp1Vn34d0p3YzapcUCYGnlctGaONw bC1ipKSUFwArYEO+bByB69Fz8RkzjpcZxUymXwcuHM72SB1nBu7M9dB9E zgh+KLuFi8HU3slc6Z/SM9GsC1vaCliezeoNE5ZuoQPOR0Utuy3B+SUdR /Y+4NN12RY/WCB2jOq/jjFhFTREga+YiUVFVBmc1CDY8s5ozKz7j6+RuG PQD+q1B+URzuQkTcG/GCOTbW0oKYDW6wHvq57EukXBbC1mdOPTrEKFtZ7 UmA7hwkXth0KPGX/4x2RryWzC36I7BhdFqfHruyPRpSJIMWseK7u9TgHw A==; X-IronPort-AV: E=McAfee;i="6500,9779,10537"; a="293852407" X-IronPort-AV: E=Sophos;i="5.96,180,1665471600"; d="scan'208";a="293852407" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Nov 2022 19:23:53 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10537"; a="969914367" X-IronPort-AV: E=Sophos;i="5.96,180,1665471600"; d="scan'208";a="969914367" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga005.fm.intel.com with ESMTP; 20 Nov 2022 19:23:52 -0800 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Sun, 20 Nov 2022 19:23:52 -0800 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Sun, 20 Nov 2022 19:23:50 -0800 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Sun, 20 Nov 2022 19:23:50 -0800 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.45) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Sun, 20 Nov 2022 19:23:50 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PKE1kUSOdA5fW4nxgxJfFnaATL+84yzDfMA0YZYKJltXsJylWhD7ixRfA3SW3G7uFyd3jNlAuIYYQR8e1U2/Oa0JfavmM9HiA3oH94cds5lQn2o7+Sk6ZPemasejCu2K6CsC7RtHvUbRX9Bh35qXWjOa91ZkzMeKSmDFBC7+Eb84Pu8espVjSGxM4EETcDvBt0Ua+jDOwQqmNiYt3Bm+W7Qtmcqh7ZItRybpJNzFN9VdA3z/sAWt81lZaVMDoaQjBJ3+zbcdCpQa5Jyv14cB3Xe2goWc8Y1EYYQm8vPMySc+ol73p+xyAa/vvGN7mYEQHDj+0Eo84bZbFR/l4/yX+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=eJia8nMy1Rs2qCFduDZjuAxisepq4oGI7/Ad3n0pRL4=; b=Su3REXkB6Tj5Vp9LTEDcqzrsw15txoZxyTOrhyMrYNhYHnx9XOeuthMRk1CAnzON3pEEhzZwmJ1UNc76earybWodLxpZkGt6qbE5XdrSIeCZunMm36ZD+D3bWrEDNPYjiiQqNLKVfKmsMvDKW/g3qXY0zDI0ZeMJhj/r6cRLLwLNEH8+OmINQwdunJ8OjPbYKBBO/1NqZf4obOgv18urS1qTGjJxJeozDVtOWQ1upaXLKeNpc7weEZJl+PgGCNpqsXXM4iRprdF5PM+0a/ETvk29egK3j4magjCr6/ud14P1FysvNh7sl/bcOQYZ49pWpRT9ykRmzJepNdPbhbgWkw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from MW5PR11MB5906.namprd11.prod.outlook.com (2603:10b6:303:1a0::21) by MN0PR11MB6133.namprd11.prod.outlook.com (2603:10b6:208:3cb::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.9; Mon, 21 Nov 2022 03:23:16 +0000 Received: from MW5PR11MB5906.namprd11.prod.outlook.com ([fe80::13c5:2384:c523:d1a9]) by MW5PR11MB5906.namprd11.prod.outlook.com ([fe80::13c5:2384:c523:d1a9%8]) with mapi id 15.20.5834.011; Mon, 21 Nov 2022 03:23:16 +0000 From: "Yuwei Chen" To: "Ni, Ray" , "devel@edk2.groups.io" CC: "Yang, Yuting2" , "Feng, Bob C" , "Gao, Liming" Subject: Re: [edk2-devel] [Patch V2 1/3] [edk2-staging]BaseTools: Add Python VfrCompiler tool Thread-Topic: [edk2-devel] [Patch V2 1/3] [edk2-staging]BaseTools: Add Python VfrCompiler tool Thread-Index: AQHY+M7KpcAPOdEpzES0A1rvdpNEDq4/rR2ggAkPcrA= Date: Mon, 21 Nov 2022 03:23:15 +0000 Message-ID: References: <20221115084539.331-1-yuwei.chen@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.6.500.17 dlp-reaction: no-action dlp-product: dlpe-windows authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW5PR11MB5906:EE_|MN0PR11MB6133:EE_ x-ms-office365-filtering-correlation-id: 0b3e3419-6878-412f-65b6-08dacb6fba90 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: bKQDK5M94nMr86jmaogWrYJw7CJ1D65WkMBGJSYJr93xBg3Hgp5qptsbRFFbNb4A/w/syGbqD4SNmEwu8HY9J0YyKXK8gxGD3Xi56gYpcyLtn9AmSuMAID4oYAIfNFekQWgCfqCPdIWc+4r3Nhd+CGYO25xVtpwEuirSifXnwn00lsVEnoVY9AXuD2RR8xfudZ91vv+4uSSV/iaVuGvXvsvZJLjz6cwCrAQlN4sGV9yUSLBcz3DPWFR6E6TcBI221vNUDTBQRsUHqx/2C0aa0LTpt2854SZpmyRV1T1ZaE20LnPoN50lY+E3kXRgQZBqeR59MdEte5lfURiOlLcICXha8Pa6LPKcsNrFYVsrI+a6LMA379qUqW2Np05ExMyz+UwyzdNYEuanDgqk6Gf/ZqPKAKKD88t+l/IB/QUG0aTWxkiuLzyJ0VmVBEnzKdQzx4T9P0dimuNsYWVn0ItbVJr7RI6OaAcZ+6ZB4z9NRglIoOPwlP9dFqTatBLQfwMFW5xAIIpPTIA7BOTt1bbOV9XiXEgSlTz9eVuA1Y4gqfoj/0JHALTalKD4NmsjyNeOaAKxghBHremqKM805z+drWnRRHidoww8C9lfCtt2SNAchusUPVCBfz6d9xR7WRv97shmqgMmuUqGpB4o9dOOAhjBSwCD3EpgUvqCrRXPRVyxQm0RSPbHxtTKqKbG9uXuNY6kUL18PYdgxg29CUJPQ860eAe18g58qRY9LNDV0XdmRcrhnwpP97TZvbkftC/QcXtkWfLiqdU6MojPKZX4yQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW5PR11MB5906.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(376002)(396003)(39860400002)(346002)(366004)(136003)(451199015)(52536014)(30864003)(2906002)(4326008)(8936002)(5660300002)(66899015)(66946007)(33656002)(76116006)(966005)(41300700001)(54906003)(316002)(110136005)(38070700005)(478600001)(19627235002)(26005)(86362001)(7696005)(71200400001)(38100700002)(53546011)(83380400001)(6506007)(122000001)(9686003)(186003)(82960400001)(55016003)(64756008)(66476007)(8676002)(66446008)(66556008)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?T25nYlVqeHFHTmloYVNqN2QrOHB2Vk01OXR4aHhxeHlEVlVTL0U0empPY1Nl?= =?utf-8?B?cFBRMk02Z2grOWxJc3cyUVB1VnJkNkEyazFiWXFaRWM1ODFpdVBkaGZTOTN5?= =?utf-8?B?K0llYmgyWEtmS01aamtoZ2Q5N01DWU95ZXdjR3VTbzZsanJWb3AxaEIrMVE5?= =?utf-8?B?anJvb1dibGN0Q0pxZ1AyRHVwVlR1enJ3NmFUdXlCb05lNFJxdmoxYktzNU1s?= =?utf-8?B?KzBTTnZ4Q08vMU1iM3htaTZySFVtTTVhZUdCVG1HUFYrT0VueFR2a29FUDVI?= =?utf-8?B?SUh2NXlFeFFSb1FnMUgzY2ZwYisvS09oclhIRHVoTWV4VmpZT0g5NXl1SCtp?= =?utf-8?B?RGR1MWhnSFdRSHYwMlpDMU1yR1MzM3JTR2J3UTZLcVVIcVlSQ1lMMFp4NWtq?= =?utf-8?B?SkQ0QW9KZm0yN3c4d0wzSEJUc2U3SUVnNC8zRW5iRWRVUzcvRXJOdHhadmNa?= =?utf-8?B?U0N3OHhoMjVPazBnL0VaOFlWQkpCNldSTTUzaFU4MzVsa01YYnhkNmhEV0Ex?= =?utf-8?B?U0JrMi9KYUxreCtuOWJISlZqZ0xMcHJwUnREMlNJcy82ckRxbjBoakRSQ0VY?= =?utf-8?B?ckpuZXZKbEd3bWpzSnRmZktzVUEzUG9adGlBVEFpcVArSGE5V0FocHJCRjZh?= =?utf-8?B?QUlXN1REMWZNSXdUOEZlTGNMemVQcW1YTG9VMXZDL0dpNGtXVHdMZjdnVGYy?= =?utf-8?B?SEJmZFJZU3d3MUxtWU1mZWRZTVJuZ3JVbGNpNjJKTFExNXk4VWplelJoWlZF?= =?utf-8?B?YjZLUjZnNnIvY1RJRCtmQStoa2s1bzhWKzBUU09yNXNtUklDd3NJYlIwdTJ5?= =?utf-8?B?Q1BPN0lLa0hHYUhlZ3NOa1h5OTArazlqMUI1bTZLQTRCVWN4ZFhIQ1NUTmIy?= =?utf-8?B?SmN4dEs2K2lubmhCTUE3cGhneEk0RG51R1c0aTJuM1NXT2lEQ1NOUmt0ZS9r?= =?utf-8?B?a1k2b1hkTHBINnVBcU5DZ0t3bUFxaTduei9ya2Q3RUhhUnVTVVJFNTl0MURO?= =?utf-8?B?K3E2Q3g0R1N2S3ZFM2pFMEVBczZYbjNoUnlkSDRZb3BGY0ExOGlzeDc5RW1K?= =?utf-8?B?MlBDZ0NKVHAzMThNNkdTemtqaWtPWERQbEl6d0s4VGN1TS9XTHh6MFhadWlT?= =?utf-8?B?dmhGVFZubHZBSE1iaktrN3BJZEZCVVZudFlYUW9oakJFTUM0SlBURmc2QzYv?= =?utf-8?B?ODBCcmFBeEhtNWJ1Q3BuOStKYzduWXBpSXVXZjh0aHFhODR3YXNzN0lFWG41?= =?utf-8?B?bXpQRm1xWUpWRW1ybWpGZitsa1I1cTk2WTdrSFB3VG8wWjh4ZVdqWnRRYVRX?= =?utf-8?B?dDBNRnJHRnlUY09lc0MxM2laUXZQZVlYQXZIaTIwMnI2SE5SVWNWdllsQnY5?= =?utf-8?B?eFJ0ZE1kVFJETzZtaERyaGJRSzVuODRGVXpmdmZjZWRyU3ZHdHVkbGpIdG9C?= =?utf-8?B?c1lxbmIrWmc4eCsrazZNYUpzTUVSMGNHZDFWTFZSMmxqc3g4eFVkVmJsWmd1?= =?utf-8?B?WFpLV3N6SFRQQ1ZYekcvbU0rYkZhYW9ueThLcWRsaTg5cUpqQ3loa1ZNZHhi?= =?utf-8?B?S0ZWQWFkR0lMcWRoQ25DcS81S3B4OXROcGVYaWtlNGg3RmFpa2N4UXViOE5l?= =?utf-8?B?MTdnczFNZFFpUFRHbTF1WVcwNHNWN1dsa3hMNC94TVY5aExBR3Z1cVFzdDNx?= =?utf-8?B?WU1MS0ZBWXhqSUlESHVTakJzb1Y3ZTl4NHkwK3Q3SFlHTXl5alhFOSsrc2M0?= =?utf-8?B?Z3U2eTYzQVdzeDBSWkRHSEYrSnh4UHlDVHY2Ujh5MmRHaW9aaUZRNWxqNUY3?= =?utf-8?B?bkZRbVBFSks2U3pkUVhLZDRBMy9iZmxjRkM1a3g2cUc2OGFXb1RnaCt1a2RP?= =?utf-8?B?VzF6aklUOHFqR2k1VE9HZWlBMVJ4bm8wNXNvbmd3eU43UHhrelprdkdNMnVU?= =?utf-8?B?b1dUNXplYU1ZeFltbWp2Tk1xdXkydnZxQ1QzcG11Vnh0bG1FaUltOXpzYU8x?= =?utf-8?B?WUZlRTkwNzJsU0xqaFR4SHpuQ200dWFUQktibFZDSnE1Rmw5WnViVXdSNDlh?= =?utf-8?B?eDYydFA2RlhhV0dDQWdiWWNka3UvR3ppK0J0WTVLSDdvUmRFU3NlY3cyZWph?= =?utf-8?Q?7vLaJnzp+Kd8IrjOlMBa2MnMJ?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW5PR11MB5906.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0b3e3419-6878-412f-65b6-08dacb6fba90 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Nov 2022 03:23:15.7867 (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: 5HfoZqYh2dI0cyK4Qx/YOdHgM6906k1+MZbLbXZx1ys1N3oX8dmnl5LGw7pn+DfCFjRbQsds1MTpvFGplsy7OA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR11MB6133 Return-Path: yuwei.chen@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgUmF5LA0KDQpUaGUgbmV3IHRvb2wgdGFrZXMgYSBmZXcgbW9udGggYW5kIG5vdCBhbGwgdGhl IGZ1bmN0aW9ucyBvZiBDIHRvb2wgYXJlIGZpbmlzaGVkIG5vdy4gDQpDdXJyZW50bHksIHRoZSBW ZnIgcGFyc2VyIHBhcnQgb2YgY29kZSBoYXMgYmVlbiBkb25lIHRvIHB5dGhvbiwgd2UgY29uc3Vt ZSB0aGUgVkZSIGZpbGVzIGFuZCBnZW5lcmF0ZSB0aGUganNvbiAod2hpY2ggcmVjb3JkcyB0aGUg dmFyaWFibGUgZGVmYXVsdCB2YWx1ZSByZWxhdGVkIGluZm9ybWF0aW9uKSBhbmQgeWFtbCAod2hp Y2ggbGlzdCB0aGUgcmVhZGFibGUgd2hvbGUgZm9ybXNldCBpbmZvICkgZmlsZXMgdG8gYmUgdGhl IGV4dGVuZGVkIG91dHB1dCBmaWxlcywgd2hpY2ggY2FuIGFsc28gYmUgdXNlZCBmb3IgdGVzdGlu Zy4gVGhlc2UgcGF0Y2hlcyBhcmUgZm9yIFZGUiBwYXJzZXIgYW5kIGpzb24veWFtbCBvdXRwdXRz LiANCk5leHQgU3RlcCwgd2Ugd2lsbCBmaW5pc2ggdGhlIElGUiBiaW5hcnkgZ2VuZXJhdGlvbiBw YXJ0IG9mIGNvZGUsIGFuZCB1c2UgYmluYXJ5IGNvbXBhcmF0aW9uIHRvIGRvIHRoZSBjb21wbGV0 ZWx5IHN5c3RlbSB0ZXN0aW5nICA6ICkNCg0KVGhhbmtzLA0KQ2hyaXN0aW5lDQo+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+DQo+ IFNlbnQ6IFR1ZXNkYXksIE5vdmVtYmVyIDE1LCAyMDIyIDQ6NTQgUE0NCj4gVG86IGRldmVsQGVk azIuZ3JvdXBzLmlvOyBDaGVuLCBDaHJpc3RpbmUgPHl1d2VpLmNoZW5AaW50ZWwuY29tPg0KPiBD YzogWWFuZywgWXV0aW5nMiA8eXV0aW5nMi55YW5nQGludGVsLmNvbT47IEZlbmcsIEJvYiBDDQo+ IDxib2IuYy5mZW5nQGludGVsLmNvbT47IEdhbywgTGltaW5nIDxnYW9saW1pbmdAYnlvc29mdC5j b20uY24+DQo+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BhdGNoIFYyIDEvM10gW2VkazIt c3RhZ2luZ11CYXNlVG9vbHM6IEFkZA0KPiBQeXRob24gVmZyQ29tcGlsZXIgdG9vbA0KPiANCj4g V293ISBDdXJpb3VzIGhvdyBsb25nIGRvZXMgaXQgdGFrZSB0byBkZXZlbG9wIHRoZSBweXRob24g dmVyc2lvbiBvZg0KPiBWZnJDb21waWxlcj8NCj4gQW5kIHdoYXQgdGVzdHMgaGF2ZSBiZWVuIGRv bmUgdG8gZ3VhcmFudGVlIGl0IHByb3ZpZGVzIHRoZSBleGFjdGx5IHNhbWUNCj4gZnVuY3Rpb25h bGl0eSBhcyBvbGQgYyB2ZXJzaW9uPw0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4g T24gQmVoYWxmIE9mIFl1d2VpDQo+ID4gQ2hlbg0KPiA+IFNlbnQ6IFR1ZXNkYXksIE5vdmVtYmVy IDE1LCAyMDIyIDQ6NDYgUE0NCj4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiBDYzog WWFuZywgWXV0aW5nMiA8eXV0aW5nMi55YW5nQGludGVsLmNvbT47IEZlbmcsIEJvYiBDDQo+ID4g PGJvYi5jLmZlbmdAaW50ZWwuY29tPjsgR2FvLCBMaW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNv bS5jbj4NCj4gPiBTdWJqZWN0OiBbZWRrMi1kZXZlbF0gW1BhdGNoIFYyIDEvM10gW2VkazItc3Rh Z2luZ11CYXNlVG9vbHM6IEFkZCBQeXRob24NCj4gPiBWZnJDb21waWxlciB0b29sDQo+ID4NCj4g PiBGcm9tOiBZdXRpbmcgWWFuZyA8eXV0aW5nMi55YW5nQGludGVsLmNvbT4NCj4gPg0KPiA+IFRo aXMgaXMgdGhlIHB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQyBWZnJDb21waWxlciB0b29s Lg0KPiA+IEN1cnJlbnRseSwgdGhpcyBweXRob24gdG9vbCB3aWxsIGdlbmVyYXRlIHlhbWwvanNv biBmaWxlcw0KPiA+IGZvciBiZXR0ZXIgdmFyaWFibGUgcmVsYXRlZCBpbmZvcm1hdGlvbiBwcmVz ZW50YXRpb24uDQo+ID4gSW4gZnV0dXJlLCBpdCB3aWxsIGNvdmVyIHRoZSBzYW1lIHVzYWdlIGFz IHRoZSBDIHRvb2wuDQo+ID4NCj4gPiBDYzogQm9iIEZlbmcgPGJvYi5jLmZlbmdAaW50ZWwuY29t Pg0KPiA+IENjOiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+DQo+ID4gQ2M6 IFl1d2VpIENoZW4gPHl1d2VpLmNoZW5AaW50ZWwuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFl1 dGluZyBZYW5nIDx5dXRpbmcyLnlhbmdAaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICBCYXNlVG9v bHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9Db21tb25DdHlwZXMucHkgICAgIHwgIDEzOTQN Cj4gPg0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrDQo+ID4gKysrKysrDQo+ID4gIEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNv bXBpbGVyL1JFQURNRS5tZCAgICAgICAgICAgfCAgICAyMCArDQo+ID4gIEJhc2VUb29scy9Tb3Vy Y2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmckVycm9yLnB5ICAgICAgICAgfCAgIDE2MiArKysrKysr Kw0KPiA+ICBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJGb3JtUGtnLnB5 ICAgICAgIHwgIDI3MzgNCj4gPg0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4NCj4gKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICsrKysrKysrKw0KPiA+ICBC YXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50YXguZzQgICAgICAgIHwg IDE4ODcNCj4gPg0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrDQo+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiAg QmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4TGV4ZXIucHkgICB8 ICAxNzA5DQo+ID4NCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKw0KPiA+ICsrKysrKysrKysrKysrKysrKysrDQo+ID4gIEJhc2VUb29s cy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRheFBhcnNlci5weSAgfCAyMDQ2MA0K PiA+DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysNCj4gPg0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrDQo+ID4NCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+DQo+ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPg0KPiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4NCj4g KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Kw0KPiA+DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysNCj4gPg0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrDQo+ID4NCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+DQo+ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPg0KPiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4N Cj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKw0KPiA+DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysNCj4gPg0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4NCj4gKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+DQo+ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiArKysrKysN Cj4gPiAgQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4VmlzaXRv ci5weSB8ICA1MTA2DQo+ID4NCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKw0KPiA+DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPg0KPiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4NCj4gKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ ICsNCj4gPiAgQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyVHJlZS5weSAg ICAgICAgICB8ICAgIDg4ICsrKysrDQo+ID4gIEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNv bXBpbGVyL1ZmclV0aWxpdHkucHkgICAgICAgfCAgMTk5MQ0KPiA+DQo+ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiAgQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v VmZyQ29tcGlsZXIvbWFpbi5weSAgICAgICAgICAgICB8ICAgIDI3ICsrDQo+ID4gIDExIGZpbGVz IGNoYW5nZWQsIDM1NTgyIGluc2VydGlvbnMoKykNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9CYXNl VG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9Db21tb25DdHlwZXMucHkNCj4gPiBiL0Jh c2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL0NvbW1vbkN0eXBlcy5weQ0KPiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uNzMxYWUxNTYwOQ0KPiA+ IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21w aWxlci9Db21tb25DdHlwZXMucHkNCj4gPiBAQCAtMCwwICsxLDEzOTQgQEANCj4gPiArZnJvbSBj dHlwZXMgaW1wb3J0ICoNCj4gPg0KPiA+ICtmcm9tIHJlIGltcG9ydCBBLCBYDQo+ID4NCj4gPiAr ZnJvbSB0ZWxuZXRsaWIgaW1wb3J0IFgzUEFEDQo+ID4NCj4gPiArZnJvbSB0a2ludGVyIGltcG9y dCBZVmlldw0KPiA+DQo+ID4gK2ltcG9ydCB1dWlkDQo+ID4NCj4gPiArZnJvbSBWZnJDb21waWxl ci5WZnJFcnJvciBpbXBvcnQgKg0KPiA+DQo+ID4gK2Zyb20gc3RydWN0IGltcG9ydCAqDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArRUZJX1NUUklOR19JRF9JTlZBTElEID0gMHgwDQo+ID4NCj4gPiAr RUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NUQU5EQVJEID0gMHgwMDAwDQo+ID4NCj4gPiArRUZJX0hJ SV9ERUZBVUxUX0NMQVNTX01BTlVGQUNUVVJJTkcgPSAweDAwMDENCj4gPg0KPiA+ICtFRklfSUZS X01BWF9MRU5HVEggPSAweEZGDQo+ID4NCj4gPiArRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQgPSAw DQo+ID4NCj4gPiArRUZJX1ZBUlNUT1JFX0lEX1NUQVJUID0gMHgyMA0KPiA+DQo+ID4gK0VGSV9W QVJPRkZTRVRfSU5WQUxJRCA9IDB4RkZGRg0KPiA+DQo+ID4gK0VGSV9JTUFHRV9JRF9JTlZBTElE ID0gMHhGRkZGDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArRUZJX05PTl9ERVZJQ0VfQ0xBU1MgPSAw eDAwDQo+ID4NCj4gPiArRUZJX0RJU0tfREVWSUNFX0NMQVNTID0gMHgwMQ0KPiA+DQo+ID4gK0VG SV9WSURFT19ERVZJQ0VfQ0xBU1MgPSAweDAyDQo+ID4NCj4gPiArRUZJX05FVFdPUktfREVWSUNF X0NMQVNTID0gMHgwNA0KPiA+DQo+ID4gK0VGSV9JTlBVVF9ERVZJQ0VfQ0xBU1MgPSAweDA4DQo+ ID4NCj4gPiArRUZJX09OX0JPQVJEX0RFVklDRV9DTEFTUyA9IDB4MTANCj4gPg0KPiA+ICtFRklf T1RIRVJfREVWSUNFX0NMQVNTID0gMHgyMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK0VGSV9TRVRV UF9BUFBMSUNBVElPTl9TVUJDTEFTUyA9IDB4MDANCj4gPg0KPiA+ICtFRklfR0VORVJBTF9BUFBM SUNBVElPTl9TVUJDTEFTUyA9IDB4MDENCj4gPg0KPiA+ICtFRklfRlJPTlRfUEFHRV9TVUJDTEFT UyA9IDB4MDINCj4gPg0KPiA+ICtFRklfU0lOR0xFX1VTRV9TVUJDTEFTUyA9IDB4MDMNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsjIEVGSV9ISUlfUEFDS0FHRV9UWVBFX3guDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArRUZJX0hJSV9QQUNLQUdFX1RZUEVfQUxMID0gMHgwMA0KPiA+DQo+ID4gK0VGSV9I SUlfUEFDS0FHRV9UWVBFX0dVSUQgPSAweDAxDQo+ID4NCj4gPiArRUZJX0hJSV9QQUNLQUdFX0ZP Uk0gPSAweDAyDQo+ID4NCj4gPiArRUZJX0hJSV9QQUNLQUdFX0tFWUJPQVJEX0xBWU9VVCA9IDB4 MDMNCj4gPg0KPiA+ICtFRklfSElJX1BBQ0tBR0VfU1RSSU5HUyA9IDB4MDQNCj4gPg0KPiA+ICtF RklfSElJX1BBQ0tBR0VfRk9OVFMgPSAweDA1DQo+ID4NCj4gPiArRUZJX0hJSV9QQUNLQUdFX0lN QUdFUyA9IDB4MDYNCj4gPg0KPiA+ICtFRklfSElJX1BBQ0tBR0VfU0lNUExFX0ZPTlRTID0gMHgw Nw0KPiA+DQo+ID4gK0VGSV9ISUlfUEFDS0FHRV9ERVZJQ0VfUEFUSCA9IDB4MDgNCj4gPg0KPiA+ ICtFRklfSElJX1BBQ0tBR0VfRU5EID0gMHhERg0KPiA+DQo+ID4gK0VGSV9ISUlfUEFDS0FHRV9U WVBFX1NZU1RFTV9CRUdJTiA9IDB4RTANCj4gPg0KPiA+ICtFRklfSElJX1BBQ0tBR0VfVFlQRV9T WVNURU1fRU5EID0gMHhGRg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK0VGSV9JRlJfRVhURU5EX09Q X0xBQkVMID0gMHgwDQo+ID4NCj4gPiArRUZJX0lGUl9FWFRFTkRfT1BfQkFOTkVSID0gMHgxDQo+ ID4NCj4gPiArRUZJX0lGUl9FWFRFTkRfT1BfVElNRU9VVCA9IDB4Mg0KPiA+DQo+ID4gK0VGSV9J RlJfRVhURU5EX09QX0NMQVNTID0gMHgzDQo+ID4NCj4gPiArRUZJX0lGUl9FWFRFTkRfT1BfU1VC Q0xBU1MgPSAweDQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtNQVhfSUZSX0VYUFJFU1NJT05fREVQ VEggPSAweDkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtJTlZBTElEX0FSUkFZX0lOREVYID0gMHhG RkZGRkZGRg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK0VGSV9JRlJfVFlQRV9OVU1fU0laRV84ID0g MHgwMA0KPiA+DQo+ID4gK0VGSV9JRlJfVFlQRV9OVU1fU0laRV8xNiA9IDB4MDENCj4gPg0KPiA+ ICtFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzIgPSAweDAyDQo+ID4NCj4gPiArRUZJX0lGUl9UWVBF X05VTV9TSVpFXzY0ID0gMHgwMw0KPiA+DQo+ID4gK0VGSV9JRlJfVFlQRV9CT09MRUFOID0gMHgw NA0KPiA+DQo+ID4gK0VGSV9JRlJfVFlQRV9USU1FID0gMHgwNQ0KPiA+DQo+ID4gK0VGSV9JRlJf VFlQRV9EQVRFID0gMHgwNg0KPiA+DQo+ID4gK0VGSV9JRlJfVFlQRV9TVFJJTkcgPSAweDA3DQo+ ID4NCj4gPiArRUZJX0lGUl9UWVBFX09USEVSID0gMHgwOA0KPiA+DQo+ID4gK0VGSV9JRlJfVFlQ RV9VTkRFRklORUQgPSAweDA5DQo+ID4NCj4gPiArRUZJX0lGUl9UWVBFX0FDVElPTiA9IDB4MEEN Cj4gPg0KPiA+ICtFRklfSUZSX1RZUEVfQlVGRkVSID0gMHgwQg0KPiA+DQo+ID4gK0VGSV9JRlJf VFlQRV9SRUYgPSAweDBDDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArRUZJX0lG Ul9GTEFHU19IT1JJWk9OVEFMID0gMHgwMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK0VGSV9JRlJf RkxBR19SRUFEX09OTFkgPSAweDAxDQo+ID4NCj4gPiArRUZJX0lGUl9GTEFHX0NBTExCQUNLID0g MHgwNA0KPiA+DQo+ID4gK0VGSV9JRlJfRkxBR19SRVNFVF9SRVFVSVJFRCA9IDB4MTANCj4gPg0K PiA+ICtFRklfSUZSX0ZMQUdfUkVTVF9TVFlMRSA9IDB4MjANCj4gPg0KPiA+ICtFRklfSUZSX0ZM QUdfUkVDT05ORUNUX1JFUVVJUkVEID0gMHg0MA0KPiA+DQo+ID4gK0VGSV9JRlJfRkxBR19PUFRJ T05TX09OTFkgPSAweDgwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArRUZJX0lGUl9TVFJJTkdfTVVM VElfTElORSA9IDB4MDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtFREtJSV9JRlJfRElTUExBWV9C SVQgPSAweEMwDQo+ID4NCj4gPiArRURLSUlfSUZSX0RJU1BMQVlfSU5UX0RFQ19CSVQgPSAweDAw DQo+ID4NCj4gPiArRURLSUlfSUZSX0RJU1BMQVlfVUlOVF9ERUNfQklUID0gMHg0MA0KPiA+DQo+ ID4gK0VES0lJX0lGUl9ESVNQTEFZX1VJTlRfSEVYX0JJVCA9IDB4ODANCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICtFREtJSV9JRlJfTlVNRVJJQ19TSVpFX0JJVCA9IDB4M0YNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICtFRklfSUZSX01BWF9ERUZBVUxUX1RZUEUgPSAweDEwDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0dVSUQoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsg ICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAg ICAgICgnRGF0YTEnLCBjX3VpbnQzMiksDQo+ID4NCj4gPiArICAgICAgICAoJ0RhdGEyJywgY191 aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdEYXRhMycsIGNfdWludDE2KSwNCj4gPg0KPiA+ ICsgICAgICAgICgnRGF0YTQnLCBjX3VieXRlICogOCksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGZyb21fbGlzdChzZWxmLCBsaXN0Zm9ybWF0OiBsaXN0 KSAtPiBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5EYXRhMSA9IGxpc3Rmb3JtYXRbMF0N Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRGF0YTIgPSBsaXN0Zm9ybWF0WzFdDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLkRhdGEzID0gbGlzdGZvcm1hdFsyXQ0KPiA+DQo+ID4gKyAgICAgICAgZm9y IGkgaW4gcmFuZ2UoOCk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5EYXRhNFtpXSA9IGxp c3Rmb3JtYXRbaSArIDNdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfX2NtcF9fKHNl bGYsIG90aGVyZ3VpZCkgLT4gYm9vbDoNCj4gPg0KPiA+ICsgICAgICAgIGlmIG5vdCBpc2luc3Rh bmNlKG90aGVyZ3VpZCwgRUZJX0dVSUQpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiAn SW5wdXQgaXMgbm90IHRoZSBHVUlEIGluc3RhbmNlIScNCj4gPg0KPiA+ICsgICAgICAgIHJ0ID0g RmFsc2UNCj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYuRGF0YTEgPT0gb3RoZXJndWlkLkRhdGEx IGFuZCBzZWxmLkRhdGEyID09IG90aGVyZ3VpZC5EYXRhMg0KPiBhbmQNCj4gPiBzZWxmLkRhdGEz ID09IG90aGVyZ3VpZC5EYXRhMzoNCj4gPg0KPiA+ICsgICAgICAgICAgICBydCA9IFRydWUNCj4g Pg0KPiA+ICsgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg4KToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcnQgPSBydCAmIChzZWxmLkRhdGE0W2ldID09IG90aGVyZ3VpZC5EYXRhNFtpXSkN Cj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBydA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK0d1aWRBcnJheSA9IGNfdWJ5dGUgKiA4DQo+ID4NCj4gPiArRUZJX0hJSV9QTEFURk9S TV9TRVRVUF9GT1JNU0VUX0dVSUQgPSBFRklfR1VJRCgNCj4gPg0KPiA+ICsgICAgMHg5MzAzOTk3 MSwgMHg4NTQ1LCAweDRiMDQsDQo+ID4NCj4gPiArICAgIEd1aWRBcnJheSgweGI0LCAweDVlLCAw eDMyLCAweGViLCAweDgzLCAweDI2LCAweDQsIDB4ZSkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr RUZJX0lGUl9USUFOT19HVUlEID0gRUZJX0dVSUQoDQo+ID4NCj4gPiArICAgIDB4ZjBiMTczNSwg MHg4N2EwLCAweDQxOTMsDQo+ID4NCj4gPiArICAgIEd1aWRBcnJheSgweGIyLCAweDY2LCAweDUz LCAweDhjLCAweDM4LCAweGFmLCAweDQ4LCAweGNlKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtF REtJSV9JRlJfQklUX1ZBUlNUT1JFX0dVSUQgPSAoMHg4MkRERDY4QiwgMHg5MTYzLCAweDQxODcs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd1aWRBcnJheSgweDlC LCAweDI3LCAweDIwLCAweEE4LCAweEZELCAweDYwLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhBNywgMHgxRCkpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArRUZJX0lGUl9GUkFNRVdPUktfR1VJRCA9ICgweDMxY2E1ZDFhLCAweGQ1MTEsIDB4NDkz MSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEd1aWRBcnJheSgweGI3LCAw eDgyLCAweGFlLCAweDZiLCAweDJiLCAweDE3LCAweDhjLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2Ns YXNzIEVGSV9JRlJfT1BfSEVBREVSKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9 IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoJ09wQ29k ZScsIGNfdWJ5dGUpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdMZW5ndGgnLCBjX3VieXRlLCA3KSwg ICMNCj4gPg0KPiA+ICsgICAgICAgICgnU2NvcGUnLCBjX3VieXRlLCAxKSwgICMNCj4gPg0KPiA+ ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJf Rk9STV9TRVQoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4g KyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9P UF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdHdWlkJywgRUZJX0dVSUQpLA0KPiA+DQo+ ID4gKyAgICAgICAgKCdGb3JtU2V0VGl0bGUnLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAg ICAoJ0hlbHAnLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAgICAoJ0ZsYWdzJywgY191Ynl0 ZSksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtj bGFzcyBFRklfSUZSX0dVSURfQ0xBU1MoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tf ID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVh ZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdHdWlkJywgRUZJ X0dVSUQpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdFeHRlbmRPcENvZGUnLCBjX3VieXRlKSwNCj4g Pg0KPiA+ICsgICAgICAgICgnQ2xhc3MnLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgIF0NCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX0dVSURfU1VCQ0xB U1MoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBf ZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFE RVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdHdWlkJywgRUZJX0dVSUQpLA0KPiA+DQo+ID4gKyAg ICAgICAgKCdFeHRlbmRPcENvZGUnLCBjX3VieXRlKSwNCj4gPg0KPiA+ICsgICAgICAgICgnU3Vi Q2xhc3MnLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX0RFRkFVTFRTVE9SRShTdHJ1Y3R1cmUpOg0KPiA+ DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAg ICAgICAoJ0RlZmF1bHROYW1lJywgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdEZWZh dWx0SWQnLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX1ZBUlNUT1JFKFN0cnVjdHVyZSk6DQo+ID4NCj4g PiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiAr ICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAg ICgnR3VpZCcsIEVGSV9HVUlEKSwNCj4gPg0KPiA+ICsgICAgICAgICgnVmFyU3RvcmVJZCcsIGNf dWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICgnU2l6ZScsIGNfdWludDE2KSwNCj4gPg0KPiA+ ICsgICAgICAgICgnTmFtZScsIGNfd2NoYXJfcCksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX1ZBUlNUT1JFX0VGSShTdHJ1 Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNf ID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ ID4NCj4gPiArICAgICAgICAoJ0d1aWQnLCBFRklfR1VJRCksDQo+ID4NCj4gPiArICAgICAgICAo J1ZhclN0b3JlSWQnLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAgICAoJ0F0dHJpYnV0ZXMn LCBjX3VpbnQzMiksDQo+ID4NCj4gPiArICAgICAgICAoJ1NpemUnLCBjX3VpbnQxNiksDQo+ID4N Cj4gPiArICAgICAgICAoJ05hbWUnLCBjX3djaGFyX3ApLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9HVUlEKFN0cnVjdHVy ZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBb DQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0K PiA+ICsgICAgICAgICgnR3VpZCcsIEVGSV9HVUlEKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9ISUlfUEFDS0FHRV9IRUFERVIo U3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmll bGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnTGVuZ3RoJywgY191aW50MzIsIDI0KSwNCj4g Pg0KPiA+ICsgICAgICAgICgnVHlwZScsIGNfdWludDMyLCA4KSwNCj4gPg0KPiA+ICsgICAgXQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9ISUlfU1RSSU5HX1BB Q0tBR0VfSERSKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9ISUlf UEFDS0FHRV9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdIZHJTaXplJywgY191aW50MzIp LA0KPiA+DQo+ID4gKyAgICAgICAgKCdTdHJpbmdJbmZvT2Zmc2V0JywgY191aW50MzIpLA0KPiA+ DQo+ID4gKyAgICAgICAgKCdMYW5ndWFnZVdpbmRvdycsIGNfdXNob3J0ICogMTYpLA0KPiA+DQo+ ID4gKyAgICAgICAgKCdMYW5ndWFnZU5hbWUnLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAg ICAoJ0xhbmd1YWdlJywgY19jaGFyICogMiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX1ZBUlNUT1JFX05BTUVfVkFMVUUo U3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmll bGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIp LA0KPiA+DQo+ID4gKyAgICAgICAgKCdWYXJTdG9yZUlkJywgY191aW50MTYpLA0KPiA+DQo+ID4g KyAgICAgICAgKCdHdWlkJywgRUZJX0dVSUQpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9GT1JNKFN0cnVjdHVyZSk6DQo+ ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4N Cj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsg ICAgICAgICgnRm9ybUlkJywgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdGb3JtVGl0 bGUnLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX0dVSURfQkFOTkVSKFN0cnVjdHVyZSk6DQo+ID4NCj4g PiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiAr ICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAg ICgnR3VpZCcsIEVGSV9HVUlEKSwNCj4gPg0KPiA+ICsgICAgICAgICgnRXh0ZW5kT3BDb2RlJywg Y191Ynl0ZSksDQo+ID4NCj4gPiArICAgICAgICAoJ1RpdGxlJywgY191aW50MTYpLA0KPiA+DQo+ ID4gKyAgICAgICAgKCdMaW5lTnVtYmVyJywgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAg KCdBbGlnbm1lbnQnLCBjX3VieXRlKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfR1VJRF9USU1FT1VUKFN0cnVjdHVyZSk6 DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ ICsgICAgICAgICgnR3VpZCcsIEVGSV9HVUlEKSwNCj4gPg0KPiA+ICsgICAgICAgICgnRXh0ZW5k T3BDb2RlJywgY191Ynl0ZSksDQo+ID4NCj4gPiArICAgICAgICAoJ1RpbWVPdXQnLCBjX3VpbnQx NiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtj bGFzcyBFRklfSUZSX0dVSURfTEFCRUwoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tf ID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVh ZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdHdWlkJywgRUZJ X0dVSUQpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdFeHRlbmRPcENvZGUnLCBjX3VieXRlKSwNCj4g Pg0KPiA+ICsgICAgICAgICgnTnVtYmVyJywgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICBdDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9SVUxFKFN0cnVj dHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18g PSBbDQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4g Pg0KPiA+ICsgICAgICAgICgnUnVsZUlkJywgY191Ynl0ZSksDQo+ID4NCj4gPiArICAgIF0NCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX1NUQVRFTUVOVF9I RUFERVIoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAg ICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnUHJvbXB0JywgY191aW50MTYpLA0K PiA+DQo+ID4gKyAgICAgICAgKCdIZWxwJywgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICBdDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9TVUJUSVRMRShT dHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVs ZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiks DQo+ID4NCj4gPiArICAgICAgICAoJ1N0YXRlbWVudCcsIEVGSV9JRlJfU1RBVEVNRU5UX0hFQURF UiksDQo+ID4NCj4gPiArICAgICAgICAoJ0ZsYWdzJywgY191Ynl0ZSksDQo+ID4NCj4gPiArICAg IF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX1RFWFQo U3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmll bGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIp LA0KPiA+DQo+ID4gKyAgICAgICAgKCdTdGF0ZW1lbnQnLCBFRklfSUZSX1NUQVRFTUVOVF9IRUFE RVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdUZXh0VHdvJywgY191aW50MTYpLA0KPiA+DQo+ID4g KyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9J TUFHRShTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAg IF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hF QURFUiksDQo+ID4NCj4gPiArICAgICAgICAoJ0lkJywgY191aW50MTYpLA0KPiA+DQo+ID4gKyAg ICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgVmFyU3RvcmVJbmZv Tm9kZShVbmlvbik6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2Zp ZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoJ1Zhck5hbWUnLCBjX3VpbnQxNiksDQo+ID4N Cj4gPiArICAgICAgICAoJ1Zhck9mZnNldCcsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgXQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfUVVFU1RJT05f SEVBREVSKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsg ICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfU1RB VEVNRU5UX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoJ1F1ZXN0aW9uSWQnLCBjX3VpbnQx NiksDQo+ID4NCj4gPiArICAgICAgICAoJ1ZhclN0b3JlSWQnLCBjX3VpbnQxNiksDQo+ID4NCj4g PiArICAgICAgICAoJ1ZhclN0b3JlSW5mbycsIFZhclN0b3JlSW5mb05vZGUpLA0KPiA+DQo+ID4g KyAgICAgICAgKCdGbGFncycsIGNfdWJ5dGUpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgdThOb2RlKFN0cnVjdHVyZSk6DQo+ID4NCj4g PiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiAr ICAgICAgICAoJ01pblZhbHVlJywgY191Ynl0ZSksDQo+ID4NCj4gPiArICAgICAgICAoJ01heFZh bHVlJywgY191Ynl0ZSksDQo+ID4NCj4gPiArICAgICAgICAoJ1N0ZXAnLCBjX3VieXRlKSwNCj4g Pg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIHUx Nk5vZGUoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAg ICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnTWluVmFsdWUnLCBjX3VpbnQxNiks DQo+ID4NCj4gPiArICAgICAgICAoJ01heFZhbHVlJywgY191aW50MTYpLA0KPiA+DQo+ID4gKyAg ICAgICAgKCdTdGVwJywgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgdTMyTm9kZShTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4g KyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAg ICAgICAgKCdNaW5WYWx1ZScsIGNfdWludDMyKSwNCj4gPg0KPiA+ICsgICAgICAgICgnTWF4VmFs dWUnLCBjX3VpbnQzMiksDQo+ID4NCj4gPiArICAgICAgICAoJ1N0ZXAnLCBjX3VpbnQzMiksDQo+ ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyB1 NjROb2RlKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsg ICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoJ01pblZhbHVlJywgY191aW50NjQp LA0KPiA+DQo+ID4gKyAgICAgICAgKCdNYXhWYWx1ZScsIGNfdWludDY0KSwNCj4gPg0KPiA+ICsg ICAgICAgICgnU3RlcCcsIGNfdWludDY0KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIE1JTk1BWFNURVBfREFUQShVbmlvbik6DQo+ID4N Cj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4g PiArICAgICAgICAoJ3U4JywgdThOb2RlKSwNCj4gPg0KPiA+ICsgICAgICAgICgndTE2JywgdTE2 Tm9kZSksDQo+ID4NCj4gPiArICAgICAgICAoJ3UzMicsIHUzMk5vZGUpLA0KPiA+DQo+ID4gKyAg ICAgICAgKCd1NjQnLCB1NjROb2RlKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gK0VGSV9JRlJfTlVNRVJJQ19TSVpFID0gMHgwMw0KPiA+DQo+ID4g K0VGSV9JRlJfTlVNRVJJQ19TSVpFXzEgPSAweDAwDQo+ID4NCj4gPiArRUZJX0lGUl9OVU1FUklD X1NJWkVfMiA9IDB4MDENCj4gPg0KPiA+ICtFRklfSUZSX05VTUVSSUNfU0laRV80ID0gMHgwMg0K PiA+DQo+ID4gK0VGSV9JRlJfTlVNRVJJQ19TSVpFXzggPSAweDAzDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArRUZJX0lGUl9ESVNQTEFZID0gMHgzMA0KPiA+DQo+ID4gK0VGSV9JRlJfRElTUExBWV9J TlRfREVDID0gMHgwMA0KPiA+DQo+ID4gK0VGSV9JRlJfRElTUExBWV9VSU5UX0RFQyA9IDB4MTAN Cj4gPg0KPiA+ICtFRklfSUZSX0RJU1BMQVlfVUlOVF9IRVggPSAweDIwDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9PTkVfT0YoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAg X3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAg ICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdRdWVz dGlvbicsIEVGSV9JRlJfUVVFU1RJT05fSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgnRmxh Z3MnLCBjX3VieXRlKSwNCj4gPg0KPiA+ICsgICAgICAgICgnZGF0YScsIE1JTk1BWFNURVBfREFU QSksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtF RklfSUZSX0NIRUNLQk9YX0RFRkFVTFQgPSAweDAxDQo+ID4NCj4gPiArRUZJX0lGUl9DSEVDS0JP WF9ERUZBVUxUX01GRyA9IDB4MDINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtj bGFzcyBFRklfSUZSX0NIRUNLQk9YKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9 IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRl cicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgnUXVlc3Rpb24nLCBF RklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoJ0ZsYWdzJywgY191 Ynl0ZSksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICtjbGFzcyBFRklfSUZSX05VTUVSSUMoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tf ID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVh ZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdRdWVzdGlvbics IEVGSV9JRlJfUVVFU1RJT05fSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgnRmxhZ3MnLCBj X3VieXRlKSwNCj4gPg0KPiA+ICsgICAgICAgICgnRGF0YScsIE1JTk1BWFNURVBfREFUQSksDQo+ ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBF RklfSUZSX1BBU1NXT1JEKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4g Pg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVG SV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgnUXVlc3Rpb24nLCBFRklfSUZS X1FVRVNUSU9OX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoJ01pblNpemUnLCBjX3VpbnQx NiksDQo+ID4NCj4gPiArICAgICAgICAoJ01heFNpemUnLCBjX3VpbnQxNiksDQo+ID4NCj4gPiAr ICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSElJX1RJ TUUoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBf ZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSG91cicsIGNfdWJ5dGUpLA0KPiA+DQo+ ID4gKyAgICAgICAgKCdNaW51dGUnLCBjX3VieXRlKSwNCj4gPg0KPiA+ICsgICAgICAgICgnU2Vj b25kJywgY191Ynl0ZSksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICtjbGFzcyBFRklfSElJX0RBVEUoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAg X3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAg ICgnWWVhcicsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICgnTW9udGgnLCBjX3VieXRl KSwNCj4gPg0KPiA+ICsgICAgICAgICgnRGF5JywgY191Ynl0ZSksDQo+ID4NCj4gPiArICAgIF0N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSElJX1JFRihTdHJ1 Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNf ID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdRdWVzdGlvbklkJywgY191aW50MTYpLA0KPiA+DQo+ ID4gKyAgICAgICAgKCdGb3JtSWQnLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAgICAoJ0Zv cm1TZXRHdWlkJywgRUZJX0dVSUQpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdEZXZpY2VQYXRoJywg Y191aW50MTYpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArY2xhc3MgRUZJX0lGUl9UWVBFX1ZBTFVFKFVuaW9uKToNCj4gPg0KPiA+ICsgICAgX3Bh Y2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgn dTgnLCBjX3VieXRlKSwNCj4gPg0KPiA+ICsgICAgICAgICgndTE2JywgY191aW50MTYpLA0KPiA+ DQo+ID4gKyAgICAgICAgKCd1MzInLCBjX3VpbnQzMiksDQo+ID4NCj4gPiArICAgICAgICAoJ3U2 NCcsIGNfdWludDY0KSwNCj4gPg0KPiA+ICsgICAgICAgICgnYicsIGNfYm9vbCksDQo+ID4NCj4g PiArICAgICAgICAoJ3RpbWUnLCBFRklfSElJX1RJTUUpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdk YXRlJywgRUZJX0hJSV9EQVRFKSwNCj4gPg0KPiA+ICsgICAgICAgICgnc3RyaW5nJywgY191aW50 MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdyZWYnLCBFRklfSElJX1JFRiksDQo+ID4NCj4gPiAr ICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX09O RV9PRl9PUFRJT04oU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lG Ul9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdPcHRpb24nLCBjX3VpbnQxNiksDQo+ ID4NCj4gPiArICAgICAgICAoJ0ZsYWdzJywgY191Ynl0ZSksDQo+ID4NCj4gPiArICAgICAgICAo J1R5cGUnLCBjX3VieXRlKSwNCj4gPg0KPiA+ICsgICAgICAgICgnVmFsdWUnLCBFRklfSUZSX1RZ UEVfVkFMVUUpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZGVmIFJl ZmluZV9FRklfSUZSX09ORV9PRl9PUFRJT04oTnVtcyk6DQo+ID4NCj4gPiArICAgIGNsYXNzIEVG SV9JRlJfT05FX09GX09QVElPTihTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICAgICAgX3BhY2tf ID0gMQ0KPiA+DQo+ID4gKyAgICAgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAg ICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAgICAg KCdPcHRpb24nLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAgICAgICAgKCdGbGFncycsIGNf dWJ5dGUpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICgnVHlwZScsIGNfdWJ5dGUpLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICgnVmFsdWUnLCBFRklfSUZSX1RZUEVfVkFMVUUgKiBOdW1zKSwNCj4g Pg0KPiA+ICsgICAgICAgIF0NCj4gPg0KPiA+ICsgICAgcmV0dXJuIEVGSV9JRlJfT05FX09GX09Q VElPTg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK0VGSV9JRlJfT1BUSU9OX0RF RkFVTFQgPSAweDEwDQo+ID4NCj4gPiArRUZJX0lGUl9PUFRJT05fREVGQVVMVF9NRkcgPSAweDIw DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9TVVBQUkVT U19JRihTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAg IF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hF QURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICtjbGFzcyBFRklfSUZSX0xPQ0tFRChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18g PSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFk ZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX0FDVElPTihTdHJ1Y3R1cmUpOg0KPiA+ DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAg ICAgICAoJ1F1ZXN0aW9uJywgRUZJX0lGUl9RVUVTVElPTl9IRUFERVIpLA0KPiA+DQo+ID4gKyAg ICAgICAgKCdRdWVzdGlvbkNvbmZpZycsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfUkVGKFN0cnVjdHVy ZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBb DQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0K PiA+ICsgICAgICAgICgnUXVlc3Rpb24nLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQo+ID4N Cj4gPiArICAgICAgICAoJ0Zvcm1JZCcsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfUkVGMihTdHJ1Y3R1 cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0g Ww0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4N Cj4gPiArICAgICAgICAoJ1F1ZXN0aW9uJywgRUZJX0lGUl9RVUVTVElPTl9IRUFERVIpLA0KPiA+ DQo+ID4gKyAgICAgICAgKCdGb3JtSWQnLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAgICAo J1F1ZXN0aW9uSWQnLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX1JFRjMoU3RydWN0dXJlKToNCj4gPg0K PiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAg ICAgKCdRdWVzdGlvbicsIEVGSV9JRlJfUVVFU1RJT05fSEVBREVSKSwNCj4gPg0KPiA+ICsgICAg ICAgICgnRm9ybUlkJywgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdRdWVzdGlvbklk JywgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdGb3JtU2V0SWQnLCBFRklfR1VJRCks DQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFz cyBFRklfSUZSX1JFRjQoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+ DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJ X0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdRdWVzdGlvbicsIEVGSV9JRlJf UVVFU1RJT05fSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgnRm9ybUlkJywgY191aW50MTYp LA0KPiA+DQo+ID4gKyAgICAgICAgKCdRdWVzdGlvbklkJywgY191aW50MTYpLA0KPiA+DQo+ID4g KyAgICAgICAgKCdGb3JtU2V0SWQnLCBFRklfR1VJRCksDQo+ID4NCj4gPiArICAgICAgICAoJ0Rl dmljZVBhdGgnLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX1JFRjUoU3RydWN0dXJlKToNCj4gPg0KPiA+ ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsg ICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAg KCdRdWVzdGlvbicsIEVGSV9JRlJfUVVFU1RJT05fSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfUkVTRVRfQlVU VE9OKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAg X2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVB REVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgnU3RhdGVtZW50JywgRUZJX0lGUl9TVEFURU1FTlRf SEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgnRGVmYXVsdElkJywgY191aW50MTYpLA0KPiA+ DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJ X0lGUl9OT19TVUJNSVRfSUYoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0K PiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywg RUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdFcnJvcicsIGNfdWludDE2 KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2Ns YXNzIEVGSV9JRlJfSU5DT05TSVNURU5UX0lGKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9w YWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAo J0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgnRXJyb3In LCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICtjbGFzcyBFRklfSUZSX0VRX0lEX1ZBTChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAg ICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAg ICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoJ1F1 ZXN0aW9uSWQnLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAgICAoJ1ZhbHVlJywgY191aW50 MTYpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr Y2xhc3MgRUZJX0lGUl9FUV9JRF9JRChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18g PSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFk ZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoJ1F1ZXN0aW9uSWQx JywgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdRdWVzdGlvbklkMicsIGNfdWludDE2 KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJf RVFfSURfVkFMX0xJU1QoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+ DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJ X0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdRdWVzdGlvbklkJywgY191aW50 MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdMaXN0TGVuZ3RoJywgY191aW50MTYpLA0KPiA+DQo+ ID4gKyAgICAgICAgKCdWYWx1ZUxpc3QnLCBjX3VpbnQxNiksICAjDQo+ID4NCj4gPiArICAgIF0N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtkZWYgUmVmaW5lX0VGSV9JRlJfRVFf SURfVkFMX0xJU1QoTnVtcyk6DQo+ID4NCj4gPiArICAgIGNsYXNzIEVGSV9JRlJfRVFfSURfVkFM X0xJU1QoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ ICsgICAgICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgICAgICgnSGVhZGVyJywg RUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICgnUXVlc3Rpb25JZCcs IGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAoJ0xpc3RMZW5ndGgnLCBjX3VpbnQx NiksDQo+ID4NCj4gPiArICAgICAgICAgICAgKCdWYWx1ZUxpc3QnLCBjX3VpbnQxNiAqIE51bXMp LCAgIw0KPiA+DQo+ID4gKyAgICAgICAgXQ0KPiA+DQo+ID4gKyAgICByZXR1cm4gRUZJX0lGUl9F UV9JRF9WQUxfTElTVA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVG SV9JRlJfQU5EKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJf T1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK2NsYXNzIEVGSV9JRlJfT1IoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tf ID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVh ZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9OT1QoU3RydWN0dXJlKToNCj4gPg0K PiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBd DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9HUkFZX09V VF9JRihTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAg IF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hF QURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICtjbGFzcyBFRklfSUZSX0RBVEUoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0g MQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVy JywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdRdWVzdGlvbicsIEVG SV9JRlJfUVVFU1RJT05fSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgnRmxhZ3MnLCBjX3Vi eXRlKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g K0VGSV9RRl9EQVRFX1lFQVJfU1VQUFJFU1MgPSAweDAxDQo+ID4NCj4gPiArRUZJX1FGX0RBVEVf TU9OVEhfU1VQUFJFU1MgPSAweDAyDQo+ID4NCj4gPiArRUZJX1FGX0RBVEVfREFZX1NVUFBSRVNT ID0gMHgwNA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK0VGSV9RRl9EQVRFX1NUT1JBR0UgPSAweDMw DQo+ID4NCj4gPiArUUZfREFURV9TVE9SQUdFX05PUk1BTCA9IDB4MDANCj4gPg0KPiA+ICtRRl9E QVRFX1NUT1JBR0VfVElNRSA9IDB4MTANCj4gPg0KPiA+ICtRRl9EQVRFX1NUT1JBR0VfV0FLRVVQ ID0gMHgyMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJf VElNRShTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAg IF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hF QURFUiksDQo+ID4NCj4gPiArICAgICAgICAoJ1F1ZXN0aW9uJywgRUZJX0lGUl9RVUVTVElPTl9I RUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdGbGFncycsIGNfdWJ5dGUpLA0KPiA+DQo+ID4g KyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArUUZfVElNRV9IT1VSX1NV UFBSRVNTID0gMHgwMQ0KPiA+DQo+ID4gK1FGX1RJTUVfTUlOVVRFX1NVUFBSRVNTID0gMHgwMg0K PiA+DQo+ID4gK1FGX1RJTUVfU0VDT05EX1NVUFBSRVNTID0gMHgwNA0KPiA+DQo+ID4gK1FGX1RJ TUVfU1RPUkFHRSA9IDB4MzANCj4gPg0KPiA+ICtRRl9USU1FX1NUT1JBR0VfTk9STUFMID0gMHgw MA0KPiA+DQo+ID4gK1FGX1RJTUVfU1RPUkFHRV9USU1FID0gMHgxMA0KPiA+DQo+ID4gK1FGX1RJ TUVfU1RPUkFHRV9XQUtFVVAgPSAweDIwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArY2xhc3MgRUZJX0lGUl9TVFJJTkcoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tf ID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVh ZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdRdWVzdGlvbics IEVGSV9JRlJfUVVFU1RJT05fSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgnTWluU2l6ZScs IGNfdWJ5dGUpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdNYXhTaXplJywgY191Ynl0ZSksDQo+ID4N Cj4gPiArICAgICAgICAoJ0ZsYWdzJywgY191Ynl0ZSksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX1JFRlJFU0goU3RydWN0 dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9 IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+ DQo+ID4gKyAgICAgICAgKCdSZWZyZXNoSW50ZXJ2YWwnLCBjX3VieXRlKSwNCj4gPg0KPiA+ICsg ICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfRElT QUJMRV9JRihTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiAr ICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09Q X0hFQURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICtjbGFzcyBFRklfSUZSX1RPX0xPV0VSKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9w YWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAo J0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfVE9fVVBQRVIoU3RydWN0dXJl KToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsN Cj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lG Ul9NQVAoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAg ICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9I RUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArY2xhc3MgRUZJX0lGUl9PUkRFUkVEX0xJU1QoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAg X3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAg ICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdRdWVz dGlvbicsIEVGSV9JRlJfUVVFU1RJT05fSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgnTWF4 Q29udGFpbmVycycsIGNfdWJ5dGUpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdGbGFncycsIGNfdWJ5 dGUpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr RUZJX0lGUl9VTklRVUVfU0VUID0gMHgwMQ0KPiA+DQo+ID4gK0VGSV9JRlJfTk9fRU1QVFlfU0VU ID0gMHgwMg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJf VkFSU1RPUkVfREVWSUNFKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4g Pg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVG SV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgnRGV2aWNlUGF0aCcsIGNfdWlu dDE2KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g K2NsYXNzIEVGSV9JRlJfVkVSU0lPTihTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18g PSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFk ZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX0VORChTdHJ1Y3R1cmUpOg0KPiA+DQo+ ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4g KyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgIF0N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX01BVENIKFN0 cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxk c18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwN Cj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNz IEVGSV9JRlJfR0VUKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0K PiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9J RlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgnVmFyU3RvcmVJZCcsIGNfdWludDE2 KSwNCj4gPg0KPiA+ICsgICAgICAgICgnVmFyU3RvcmVJbmZvJywgVmFyU3RvcmVJbmZvTm9kZSks ICAjIyMjIyMjIyMjDQo+ID4NCj4gPiArICAgICAgICAoJ1ZhclN0b3JlVHlwZScsIGNfdWJ5dGUp LA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xh c3MgRUZJX0lGUl9TRVQoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+ DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJ X0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdWYXJTdG9yZUlkJywgY191aW50 MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdWYXJTdG9yZUluZm8nLCBWYXJTdG9yZUluZm9Ob2Rl KSwgICMjIyMjIyMjIyMNCj4gPg0KPiA+ICsgICAgICAgICgnVmFyU3RvcmVUeXBlJywgY191Ynl0 ZSksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtj bGFzcyBFRklfSUZSX1JFQUQoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0K PiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywg RUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9XUklURShTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4g KyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAg ICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX0VRVUFMKFN0cnVj dHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18g PSBbDQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4g Pg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVG SV9JRlJfTk9UX0VRVUFMKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4g Pg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVG SV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfR1JFQVRFUl9USEFOKFN0cnVjdHVyZSk6DQo+ID4N Cj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4g PiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAg XQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfR1JFQVRF Ul9FUVVBTChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiAr ICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09Q X0hFQURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICtjbGFzcyBFRklfSUZSX0xFU1NfRVFVQUwoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAg X3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAg ICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9MRVNTX1RIQU4oU3RydWN0 dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9 IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+ DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJ X0lGUl9CSVRXSVNFX0FORChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBF RklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX0JJVFdJU0VfT1IoU3RydWN0dXJlKToNCj4gPg0K PiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBd DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9CSVRXSVNF X05PVChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAg IF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hF QURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICtjbGFzcyBFRklfSUZSX1NISUZUX0xFRlQoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3Bh Y2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgn SGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9TSElGVF9SSUdIVChTdHJ1Y3R1 cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0g Ww0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4N Cj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklf SUZSX0FERChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiAr ICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09Q X0hFQURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICtjbGFzcyBFRklfSUZSX1NVQlRSQUNUKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9w YWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAo J0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfTVVMVElQTFkoU3RydWN0dXJl KToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsN Cj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lG Ul9ESVZJREUoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4g KyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9P UF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArY2xhc3MgRUZJX0lGUl9NT0RVTE8oU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3Bh Y2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgn SGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9SVUxFX1JFRihTdHJ1Y3R1cmUp Og0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0K PiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4g PiArICAgICAgICAoJ1J1bGVJZCcsIGNfdWJ5dGUpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9RVUVTVElPTl9SRUYxKFN0 cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxk c18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwN Cj4gPg0KPiA+ICsgICAgICAgICgnUXVlc3Rpb25JZCcsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsg ICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfUVVF U1RJT05fUkVGMihTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4g PiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZS X09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICtjbGFzcyBFRklfSUZSX1FVRVNUSU9OX1JFRjMoU3RydWN0dXJlKToNCj4gPg0KPiA+ ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsg ICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9RVUVTVElPTl9S RUYzXzIoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAg ICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9I RUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdEZXZpY2VQYXRoJywgY191aW50MTYpLA0KPiA+ DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJ X0lGUl9RVUVTVElPTl9SRUYzXzMoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0g MQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVy JywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdEZXZpY2VQYXRoJywg Y191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdHdWlkJywgRUZJX0dVSUQpLA0KPiA+DQo+ ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lG Ul9VSU5UOChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiAr ICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09Q X0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoJ1ZhbHVlJywgY191Ynl0ZSksDQo+ID4NCj4g PiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZS X1VJTlQxNihTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiAr ICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09Q X0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoJ1ZhbHVlJywgY191aW50MTYpLA0KPiA+DQo+ ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lG Ul9VSU5UMzIoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4g KyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9P UF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdWYWx1ZScsIGNfdWludDMyKSwNCj4gPg0K PiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9J RlJfVUlOVDY0KFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJf T1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgnVmFsdWUnLCBjX3VpbnQ2NCksDQo+ID4N Cj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklf SUZSX1RSVUUoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4g KyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9P UF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArY2xhc3MgRUZJX0lGUl9GQUxTRShTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFj a18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdI ZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX1RPX1VJTlQoU3RydWN0dXJlKToN Cj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4g Pg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4g KyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9U T19TVFJJTkcoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4g KyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9P UF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdGb3JtYXQnLCBjX3VieXRlKSwNCj4gPg0K PiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9J RlJfVE9fQk9PTEVBTihTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4N Cj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklf SUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX01JRChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBf cGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAg KCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX0ZJTkQoU3RydWN0dXJlKToN Cj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4g Pg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4g KyAgICAgICAgKCdGb3JtYXQnLCBjX3VieXRlKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfVE9LRU4oU3RydWN0dXJlKToN Cj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4g Pg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4g KyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9T VFJJTkdfUkVGMShTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4g PiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZS X09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoJ1N0cmluZ0lkJywgY191aW50MTYpLA0K PiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3Mg RUZJX0lGUl9TVFJJTkdfUkVGMihTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAx DQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXIn LCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX0NPTkRJVElPTkFMKFN0cnVjdHVyZSk6DQo+ ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4N Cj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsg ICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfWkVS TyhTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9m aWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURF UiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtj bGFzcyBFRklfSUZSX09ORShTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBF RklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX09ORVMoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsg ICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAg ICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9VTkRFRklORUQoU3Ry dWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRz XyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0K PiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3Mg RUZJX0lGUl9MRU5HVEgoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+ DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJ X0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9EVVAoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAg X3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAg ICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9USElTKFN0cnVjdHVyZSk6 DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK0VGSV9JRlJfRkxBR1Nf RklSU1RfTUFUQ0hJTkcgPSAweDAwDQo+ID4NCj4gPiArRUZJX0lGUl9GTEFHU19GSVJTVF9OT05f TUFUQ0hJTkcgPSAweDAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9TUEFO KFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2Zp ZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVS KSwNCj4gPg0KPiA+ICsgICAgICAgICgnRmxhZ3MnLCBjX3VieXRlKSwNCj4gPg0KPiA+ICsgICAg XQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfVkFMVUUo U3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmll bGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIp LA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xh c3MgRUZJX0lGUl9ERUZBVUxUKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDEN Cj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcics IEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgnRGVmYXVsdElkJywgY191 aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdUeXBlJywgY191Ynl0ZSksDQo+ID4NCj4gPiAr ICAgICAgICAoJ1ZhbHVlJywgRUZJX0lGUl9UWVBFX1ZBTFVFKSwNCj4gPg0KPiA+ICsgICAgXQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gK2RlZiBSZWZpbmVfRUZJX0lGUl9ERUZBVUxUKE51bXMpOg0K PiA+DQo+ID4gKyAgICBjbGFzcyBFRklfSUZSX0RFRkFVTFQoU3RydWN0dXJlKToNCj4gPg0KPiA+ ICsgICAgICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgICAgIF9maWVsZHNfID0gWw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICgnRGVmYXVsdElkJywgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICgnVHlwZScsIGNfdWJ5dGUpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICgnVmFsdWUn LCBFRklfSUZSX1RZUEVfVkFMVUUgKiBOdW1zKSwNCj4gPg0KPiA+ICsgICAgICAgIF0NCj4gPg0K PiA+ICsgICAgcmV0dXJuIEVGSV9JRlJfREVGQVVMVA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfREVGQVVMVF8yKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiAr ICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAg ICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgn RGVmYXVsdElkJywgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdUeXBlJywgY191Ynl0 ZSksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZS X0ZPUk1fTUFQKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJf T1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgnRm9ybUlkJywgY191aW50MTYpLA0KPiA+ DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9GT1JNX01B UF9NRVRIT0QoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4g KyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnTWV0aG9kVGl0bGUnLCBjX3Vp bnQxNiksDQo+ID4NCj4gPiArICAgICAgICAoJ01ldGhvZElkZW50aWZpZXInLCBFRklfR1VJRCks DQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX0NB VEVOQVRFKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsg ICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1Bf SEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gK2NsYXNzIEVGSV9JRlJfU0VDVVJJVFkoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3Bh Y2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgn SGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdQZXJtaXNz aW9ucycsIEVGSV9HVUlEKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfTU9EQUxfVEFHKFN0cnVjdHVyZSk6DQo+ID4NCj4g PiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiAr ICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfUkVGUkVTSF9J RChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9m aWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURF UiksDQo+ID4NCj4gPiArICAgICAgICAoJ1JlZnJlc2hFdmVudEdyb3VwSWQnLCBFRklfR1VJRCks DQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFz cyBFRklfSUZSX1dBUk5JTkdfSUYoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0g MQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnSGVhZGVy JywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdXYXJuaW5nJywgY191 aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdUaW1lT3V0JywgY191Ynl0ZSksDQo+ID4NCj4g PiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZS X01BVENIMihTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiAr ICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09Q X0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoJ1N5bnRheFR5cGUnLCBFRklfR1VJRCksDQo+ ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtFRklfSUZS X0ZPUk1fT1AgPSAweDAxDQo+ID4NCj4gPiArRUZJX0lGUl9TVUJUSVRMRV9PUCA9IDB4MDINCj4g Pg0KPiA+ICtFRklfSUZSX1RFWFRfT1AgPSAweDAzDQo+ID4NCj4gPiArRUZJX0lGUl9JTUFHRV9P UCA9IDB4MDQNCj4gPg0KPiA+ICtFRklfSUZSX09ORV9PRl9PUCA9IDB4MDUNCj4gPg0KPiA+ICtF RklfSUZSX0NIRUNLQk9YX09QID0gMHgwNg0KPiA+DQo+ID4gK0VGSV9JRlJfTlVNRVJJQ19PUCA9 IDB4MDcNCj4gPg0KPiA+ICtFRklfSUZSX1BBU1NXT1JEX09QID0gMHgwOA0KPiA+DQo+ID4gK0VG SV9JRlJfT05FX09GX09QVElPTl9PUCA9IDB4MDkNCj4gPg0KPiA+ICtFRklfSUZSX1NVUFBSRVNT X0lGX09QID0gMHgwQQ0KPiA+DQo+ID4gK0VGSV9JRlJfTE9DS0VEX09QID0gMHgwQg0KPiA+DQo+ ID4gK0VGSV9JRlJfQUNUSU9OX09QID0gMHgwQw0KPiA+DQo+ID4gK0VGSV9JRlJfUkVTRVRfQlVU VE9OX09QID0gMHgwRA0KPiA+DQo+ID4gK0VGSV9JRlJfRk9STV9TRVRfT1AgPSAweDBFDQo+ID4N Cj4gPiArRUZJX0lGUl9SRUZfT1AgPSAweDBGDQo+ID4NCj4gPiArRUZJX0lGUl9OT19TVUJNSVRf SUZfT1AgPSAweDEwDQo+ID4NCj4gPiArRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUZfT1AgPSAweDEx DQo+ID4NCj4gPiArRUZJX0lGUl9FUV9JRF9WQUxfT1AgPSAweDEyDQo+ID4NCj4gPiArRUZJX0lG Ul9FUV9JRF9JRF9PUCA9IDB4MTMNCj4gPg0KPiA+ICtFRklfSUZSX0VRX0lEX1ZBTF9MSVNUX09Q ID0gMHgxNA0KPiA+DQo+ID4gK0VGSV9JRlJfQU5EX09QID0gMHgxNQ0KPiA+DQo+ID4gK0VGSV9J RlJfT1JfT1AgPSAweDE2DQo+ID4NCj4gPiArRUZJX0lGUl9OT1RfT1AgPSAweDE3DQo+ID4NCj4g PiArRUZJX0lGUl9SVUxFX09QID0gMHgxOA0KPiA+DQo+ID4gK0VGSV9JRlJfR1JBWV9PVVRfSUZf T1AgPSAweDE5DQo+ID4NCj4gPiArRUZJX0lGUl9EQVRFX09QID0gMHgxQQ0KPiA+DQo+ID4gK0VG SV9JRlJfVElNRV9PUCA9IDB4MUINCj4gPg0KPiA+ICtFRklfSUZSX1NUUklOR19PUCA9IDB4MUMN Cj4gPg0KPiA+ICtFRklfSUZSX1JFRlJFU0hfT1AgPSAweDFEDQo+ID4NCj4gPiArRUZJX0lGUl9E SVNBQkxFX0lGX09QID0gMHgxRQ0KPiA+DQo+ID4gK0VGSV9JRlJfVE9fTE9XRVJfT1AgPSAweDIw DQo+ID4NCj4gPiArRUZJX0lGUl9UT19VUFBFUl9PUCA9IDB4MjENCj4gPg0KPiA+ICtFRklfSUZS X01BUF9PUCA9IDB4MjINCj4gPg0KPiA+ICtFRklfSUZSX09SREVSRURfTElTVF9PUCA9IDB4MjMN Cj4gPg0KPiA+ICtFRklfSUZSX1ZBUlNUT1JFX09QID0gMHgyNA0KPiA+DQo+ID4gK0VGSV9JRlJf VkFSU1RPUkVfTkFNRV9WQUxVRV9PUCA9IDB4MjUNCj4gPg0KPiA+ICtFRklfSUZSX1ZBUlNUT1JF X0VGSV9PUCA9IDB4MjYNCj4gPg0KPiA+ICtFRklfSUZSX1ZBUlNUT1JFX0RFVklDRV9PUCA9IDB4 MjcNCj4gPg0KPiA+ICtFRklfSUZSX1ZFUlNJT05fT1AgPSAweDI4DQo+ID4NCj4gPiArRUZJX0lG Ul9FTkRfT1AgPSAweDI5DQo+ID4NCj4gPiArRUZJX0lGUl9NQVRDSF9PUCA9IDB4MkENCj4gPg0K PiA+ICtFRklfSUZSX0dFVF9PUCA9IDB4MkINCj4gPg0KPiA+ICtFRklfSUZSX1NFVF9PUCA9IDB4 MkMNCj4gPg0KPiA+ICtFRklfSUZSX1JFQURfT1AgPSAweDJEDQo+ID4NCj4gPiArRUZJX0lGUl9X UklURV9PUCA9IDB4MkUNCj4gPg0KPiA+ICtFRklfSUZSX0VRVUFMX09QID0gMHgyRg0KPiA+DQo+ ID4gK0VGSV9JRlJfTk9UX0VRVUFMX09QID0gMHgzMA0KPiA+DQo+ID4gK0VGSV9JRlJfR1JFQVRF Ul9USEFOX09QID0gMHgzMQ0KPiA+DQo+ID4gK0VGSV9JRlJfR1JFQVRFUl9FUVVBTF9PUCA9IDB4 MzINCj4gPg0KPiA+ICtFRklfSUZSX0xFU1NfVEhBTl9PUCA9IDB4MzMNCj4gPg0KPiA+ICtFRklf SUZSX0xFU1NfRVFVQUxfT1AgPSAweDM0DQo+ID4NCj4gPiArRUZJX0lGUl9CSVRXSVNFX0FORF9P UCA9IDB4MzUNCj4gPg0KPiA+ICtFRklfSUZSX0JJVFdJU0VfT1JfT1AgPSAweDM2DQo+ID4NCj4g PiArRUZJX0lGUl9CSVRXSVNFX05PVF9PUCA9IDB4MzcNCj4gPg0KPiA+ICtFRklfSUZSX1NISUZU X0xFRlRfT1AgPSAweDM4DQo+ID4NCj4gPiArRUZJX0lGUl9TSElGVF9SSUdIVF9PUCA9IDB4MzkN Cj4gPg0KPiA+ICtFRklfSUZSX0FERF9PUCA9IDB4M0ENCj4gPg0KPiA+ICtFRklfSUZSX1NVQlRS QUNUX09QID0gMHgzQg0KPiA+DQo+ID4gK0VGSV9JRlJfTVVMVElQTFlfT1AgPSAweDNDDQo+ID4N Cj4gPiArRUZJX0lGUl9ESVZJREVfT1AgPSAweDNEDQo+ID4NCj4gPiArRUZJX0lGUl9NT0RVTE9f T1AgPSAweDNFDQo+ID4NCj4gPiArRUZJX0lGUl9SVUxFX1JFRl9PUCA9IDB4M0YNCj4gPg0KPiA+ ICtFRklfSUZSX1FVRVNUSU9OX1JFRjFfT1AgPSAweDQwDQo+ID4NCj4gPiArRUZJX0lGUl9RVUVT VElPTl9SRUYyX09QID0gMHg0MQ0KPiA+DQo+ID4gK0VGSV9JRlJfVUlOVDhfT1AgPSAweDQyDQo+ ID4NCj4gPiArRUZJX0lGUl9VSU5UMTZfT1AgPSAweDQzDQo+ID4NCj4gPiArRUZJX0lGUl9VSU5U MzJfT1AgPSAweDQ0DQo+ID4NCj4gPiArRUZJX0lGUl9VSU5UNjRfT1AgPSAweDQ1DQo+ID4NCj4g PiArRUZJX0lGUl9UUlVFX09QID0gMHg0Ng0KPiA+DQo+ID4gK0VGSV9JRlJfRkFMU0VfT1AgPSAw eDQ3DQo+ID4NCj4gPiArRUZJX0lGUl9UT19VSU5UX09QID0gMHg0OA0KPiA+DQo+ID4gK0VGSV9J RlJfVE9fU1RSSU5HX09QID0gMHg0OQ0KPiA+DQo+ID4gK0VGSV9JRlJfVE9fQk9PTEVBTl9PUCA9 IDB4NEENCj4gPg0KPiA+ICtFRklfSUZSX01JRF9PUCA9IDB4NEINCj4gPg0KPiA+ICtFRklfSUZS X0ZJTkRfT1AgPSAweDRDDQo+ID4NCj4gPiArRUZJX0lGUl9UT0tFTl9PUCA9IDB4NEQNCj4gPg0K PiA+ICtFRklfSUZSX1NUUklOR19SRUYxX09QID0gMHg0RQ0KPiA+DQo+ID4gK0VGSV9JRlJfU1RS SU5HX1JFRjJfT1AgPSAweDRGDQo+ID4NCj4gPiArRUZJX0lGUl9DT05ESVRJT05BTF9PUCA9IDB4 NTANCj4gPg0KPiA+ICtFRklfSUZSX1FVRVNUSU9OX1JFRjNfT1AgPSAweDUxDQo+ID4NCj4gPiAr RUZJX0lGUl9aRVJPX09QID0gMHg1Mg0KPiA+DQo+ID4gK0VGSV9JRlJfT05FX09QID0gMHg1Mw0K PiA+DQo+ID4gK0VGSV9JRlJfT05FU19PUCA9IDB4NTQNCj4gPg0KPiA+ICtFRklfSUZSX1VOREVG SU5FRF9PUCA9IDB4NTUNCj4gPg0KPiA+ICtFRklfSUZSX0xFTkdUSF9PUCA9IDB4NTYNCj4gPg0K PiA+ICtFRklfSUZSX0RVUF9PUCA9IDB4NTcNCj4gPg0KPiA+ICtFRklfSUZSX1RISVNfT1AgPSAw eDU4DQo+ID4NCj4gPiArRUZJX0lGUl9TUEFOX09QID0gMHg1OQ0KPiA+DQo+ID4gK0VGSV9JRlJf VkFMVUVfT1AgPSAweDVBDQo+ID4NCj4gPiArRUZJX0lGUl9ERUZBVUxUX09QID0gMHg1Qg0KPiA+ DQo+ID4gK0VGSV9JRlJfREVGQVVMVFNUT1JFX09QID0gMHg1Qw0KPiA+DQo+ID4gK0VGSV9JRlJf Rk9STV9NQVBfT1AgPSAweDVEDQo+ID4NCj4gPiArRUZJX0lGUl9DQVRFTkFURV9PUCA9IDB4NUUN Cj4gPg0KPiA+ICtFRklfSUZSX0dVSURfT1AgPSAweDVGDQo+ID4NCj4gPiArRUZJX0lGUl9TRUNV UklUWV9PUCA9IDB4NjANCj4gPg0KPiA+ICtFRklfSUZSX01PREFMX1RBR19PUCA9IDB4NjENCj4g Pg0KPiA+ICtFRklfSUZSX1JFRlJFU0hfSURfT1AgPSAweDYyDQo+ID4NCj4gPiArRUZJX0lGUl9X QVJOSU5HX0lGX09QID0gMHg2Mw0KPiA+DQo+ID4gK0VGSV9JRlJfTUFUQ0gyX09QID0gMHg2NA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gK0NvbmRpdGlvbk9wcyA9IFtFRklfSUZSX05PX1NVQk1JVF9J Rl9PUCwgRUZJX0lGUl9ESVNBQkxFX0lGX09QLA0KPiA+IEVGSV9JRlJfU1VQUFJFU1NfSUZfT1As IEVGSV9JRlJfR1JBWV9PVVRfSUZfT1AsDQo+ID4gRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUZfT1Bd DQo+ID4NCj4gPiArQmFzaWNEYXRhVHlwZXMgPSBbJ1VJTlQ4JywgJ1VJTlQxNicsICdVSU5UMzIn LCAnVUlOVDY0JywgJ0VGSV9ISUlfREFURScsDQo+ID4gJ0VGSV9ISUlfVElNRScsICdFRklfSElJ X1JFRiddDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9HVUlEX09QVElPTktF WShTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9m aWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURF UiksDQo+ID4NCj4gPiArICAgICAgICAoJ0d1aWQnLCBFRklfR1VJRCksDQo+ID4NCj4gPiArICAg ICAgICAoJ0V4dGVuZE9wQ29kZScsIGNfdWludDgpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdRdWVz dGlvbklkJywgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdPcHRpb25WYWx1ZScsIEVG SV9JRlJfVFlQRV9WQUxVRSksDQo+ID4NCj4gPiArICAgICAgICAoJ0tleVZhbHVlJywgY191aW50 MTYpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr RUZJX0lGUl9FWFRFTkRfT1BfT1BUSU9OS0VZID0gMHgwDQo+ID4NCj4gPiArRUZJX0lGUl9FWFRF TkRfT1BfVkFSRVFOQU1FID0gMHgxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0NP TVBBUkVfVFlQRShFbnVtKToNCj4gPg0KPiA+ICsgICAgRVFVQUwgPSAwDQo+ID4NCj4gPiArICAg IExFU1NfRVFVQUwgPSAxDQo+ID4NCj4gPiArICAgIExFU1NfVEhBTiA9IDINCj4gPg0KPiA+ICsg ICAgR1JFQVRFUl9USEFOID0gMw0KPiA+DQo+ID4gKyAgICBHUkVBVEVSX0VRVUFMID0gNA0KPiA+ IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KPiA+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMv U291cmNlL1B5dGhvbi9WZnJDb21waWxlci9SRUFETUUubWQNCj4gPiBiL0Jhc2VUb29scy9Tb3Vy Y2UvUHl0aG9uL1ZmckNvbXBpbGVyL1JFQURNRS5tZA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uY2Y2MDA1ODFjOQ0KPiA+IC0tLSAvZGV2L251bGwNCj4g PiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9SRUFETUUubWQNCj4g PiBAQCAtMCwwICsxLDIwIEBADQo+ID4gKyMgUHl0aG9uIFZmckNvbXBpbGVyIFRvb2wNCj4gPg0K PiA+ICsjIyBPdmVydmlldw0KPiA+DQo+ID4gK1RoaXMgcHl0aG9uIFZmckNvbXBpbGVyIHRvb2wg aXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBlZGsyDQo+IFZmckNvbXBpbGVyDQo+ID4gdG9v bCB3aGljaCBsb2NhdGVzIGF0DQo+ID4NCj4gaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9l ZGsyL3RyZWUvbWFzdGVyL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDbw0KPiA+IG1waWxlLg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyMjIyBJbnRyb2R1Y3Rpb24NCj4gPg0KPiA+ICtUaGUgY29yZSBm dW5jdGlvbiBvZiB0aGUgb3JpZ2luYWwgQyBWZnJDb21waWxlciB0b29sIGlzIHRvIGNvbnZlcnQg dGhlIHZmcg0KPiBmaWxlDQo+ID4gaW50byBJRlIgYmluYXJ5IGFycmF5LiBIb3dldmVyLCB0aGUg dmZyIGZvcm1hdCBmaWxlIHN5bnRheCBpcyByZWxhdGl2ZWx5DQo+ID4gdW5jb21tb24gYW5kIGhh cyBwb29yIHJlYWRhYmlsaXR5IGZvciB1c2Vycy4gV2hhdCdzIG1vcmUsIHRoZSBDIHRvb2wNCj4g ZG9lcw0KPiA+IG5vdCBjb2xsZWN0IGFuZCBzdG9yZSBleHRyYSBpbmZvcm1hdGlvbiBleGNlcHQg Zm9yIGJpbmFyeSBnZW5lcmF0aW9uLiBXaGVuDQo+ID4gYW55IG1vZGlmaWNhdGlvbiBpcyBuZWVk ZWQsIGRldmVsb3BlcnMgaGF2ZSB0byByZWFkIGFuZCBkZWFsIHdpdGggdGhlIElGUg0KPiA+IGJp bmFyeSwgd2hpY2ggaXMgcXVpdGUgaW5lZmZpY2llbnQuIFRvIHNvbHZlIHRoaXMgaXNzdWUsIHRo aXMgcHl0aG9uDQo+IFZmckNvbXBpbGVyDQo+ID4gdG9vbCBwcm9wb3NlcyB0byBnZW5lcmF0ZSB0 aGUgeWFtbCBmb3JtYXQgZmlsZSBvbiB0aGUgYmFzaXMgb2YgdGhlIHZmcg0KPiBmb3JtYXQNCj4g PiBmaWxlLiBXaXRoIHRoZSB5YW1sIGZpbGUsICB0aGUgbGF5b3V0IGFuZCBoaWVyYXJjaHkgb2Yg YWxsIE9wY29kZXMgaW4gdGhlIHZmcg0KPiBmaWxlDQo+ID4gd2lsbCBiZSBzYXZlZC4gVGhlbiBt b2RpZmljYXRpb24gd2lsbCBiZSBtdWNoIGVhaXNlci4gSW4gYWRkaXRpb24sIGFuIGV4dHJhDQo+ ID4ganNvbiBmaWxlIHdpbGwgYmUgZ2VuZXJhdGVkIGZvciBiZXR0ZXIgdmFyaWFibGUgcmVsYXRl ZCBpbmZvcm1hdGlvbg0KPiA+IHByZXNlbnRhdGlvbi4gU28gdGhlIGxvbmctdGVybSBhaW0gb2Yg dGhpcyB0b29sIGlzIHRvIGNvdmVyIHRoZSBzYW1lIHVzYWdlDQo+IGFzDQo+ID4gdGhlIGVkazIg QyBWZnJDb21waWxlciBhbmQgZXh0ZW5kIHRoZSB5YW1sL2pzb24gb3V0cHV0IGZvciBiZXR0ZXIN Cj4gPiByZWFkYWJpbGl0eSBhbmQgdmFyaWFiaWxpdHkuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr IyMjIE1haW4gdXBkYXRlIGluIHRoaXMgY29tbWl0bWVudA0KPiA+DQo+ID4gKy0gVXBkYXRlIHRo ZSB2ZnIgcGFyc2VyIGdlbmVyYXRvciBmcm9tIEFOVExSIHRvIEFOVExSIHY0LCB3aGljaCBpcyBt b3JlDQo+ID4gcmVhZGFibGUgYW5kIGlzIGVhaXNlciB0byBhZGQgb24gbmV3IGZ1bmN0aW9ucy4N Cj4gPg0KPiA+ICstIEdlbmVyYXRlIGEgeWFtbCBmaWxlIGZvciBlYWNoIHZmciBmaWxlLiBUaGUg eWFtbCBmaWxlIGRpc3BsYXlzIGFsbCB0aGUNCj4gY29udGVudHMNCj4gPiBpbiB0aGUgVmZyIGZp bGUgYnkgZGlmZmVyZW50IE9wY29kZSB0eXBlcyBpbiBzZXF1ZW5jZS4NCj4gPg0KPiA+ICstIEdl bmVyYXRlIGEganNvbiBmaWxlIGZvciBlYWNoIHZmciBmaWxlLiBUaGUganNvbiBmaWxlIGNvbnRh aW5zIGFsbCB0aGUgZGVmYXVsdA0KPiA+IHZhbHVlcyBmb3IgZGlmZmVyZW50IE9wY29kZSB0eXBl cyBpbiB2ZnIgZmlsZXMuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArIyMjIEtub3duIGlzc3Vlcw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKy0gVGhlIHB5dGhvbiBWZnJDb21waWxlciB0b29sIGFpbXMg dG8gY292ZXIgdGhlIHNhbWUgdXNhZ2UgYXMgdGhlIGVkazIgQw0KPiA+IFZmckNvbXBpbGVyLiBC dXQgY3VycmVudGx5LCB0aGUgcHl0aG9uIFZmckNvbXBpbGVyIHRvb2wgZG9lcyBub3Qgc3VwcG9y dA0KPiBJRlINCj4gPiBiaW5hcnkgZ2VuZXJhdGlvbiBmZWF0dXJlLCB0aGlzIGZlYXR1cmUgd2ls bCBiZSBhZGRlZCBpbiBmdXR1cmUgdXBkYXRlLg0KPiA+DQo+ID4gKy0gVGhlIHB5dGhvbiBWZnJD b21waWxlciB0b29sIHdpbGwgZXh0ZW5kIG5ldyBmdW5jdGlvbnMsIHdoaWNoIGlzIGFibGUgdG8N Cj4gPiBjb21waWxlIGJvdGggdGhlIHZmciBhbmQgeWFtbCBmaWxlcy4gVGhpcyBmZWF0dXJlIHdp bGwgYmUgYWRkZWQgaW4gZnV0dXJlDQo+ID4gdXBkYXRlLg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyMjIyBVc2Ugd2l0aCBCdWlsZCBTeXN0ZW0NCj4gPg0KPiA+ICstIFRvIHVzZSB0aGUgVmZyQ29t cGlsZXIgUHl0aG9uIFRvb2wgd2l0aCBCdWlsZCBTeXN0ZW0sICBwbGVhc2UgYWRkIHRoZQ0KPiA+ ICoqKictLXZmci15YW1sLWVuYWJsZScqKiogIG9wdGlvbiBpbiB0aGUgYnVpbGQgY29tbWFuZC4N Cj4gPg0KPiA+ICstIEZvciBFeGFtcGxlOiAqKipidWlsZCAtcCBPdm1mUGtnXE92bWZQa2dJYTMy WDY0LmRzYyAtYSBJQTMyIC1hIFg2NCAtag0KPiA+IGJ1aWxkLmxvZyAtLXZmci15YW1sLWVuYWJs ZSoqKg0KPiA+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KPiA+IGRpZmYgLS1naXQgYS9C YXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJFcnJvci5weQ0KPiA+IGIvQmFz ZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyRXJyb3IucHkNCj4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjUzYjk2MGI0ZTENCj4gPiAtLS0g L2Rldi9udWxsDQo+ID4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIv VmZyRXJyb3IucHkNCj4gPiBAQCAtMCwwICsxLDE2MiBAQA0KPiA+ICtpbXBvcnQgaW1wDQo+ID4N Cj4gPiAraW1wb3J0IHN5cw0KPiA+DQo+ID4gK2ltcG9ydCBvcw0KPiA+DQo+ID4gK2Zyb20gZW51 bSBpbXBvcnQgRW51bQ0KPiA+DQo+ID4gK2Zyb20gQ29tbW9uLkJ1aWxkVG9vbEVycm9yIGltcG9y dCAqDQo+ID4NCj4gPiAraW1wb3J0IENvbW1vbi5FZGtMb2dnZXIgYXMgRWRrTG9nZ2VyDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgVmZyUmV0dXJuQ29kZShFbnVtKToN Cj4gPg0KPiA+ICsgICAgVkZSX1JFVFVSTl9TVUNDRVNTID0gMA0KPiA+DQo+ID4gKyAgICBWRlJf UkVUVVJOX0VSUk9SX1NLSVBFRCA9IDENCj4gPg0KPiA+ICsgICAgVkZSX1JFVFVSTl9GQVRBTF9F UlJPUiA9IDINCj4gPg0KPiA+ICsgICAgVkZSX1JFVFVSTl9NSVNNQVRDSEVEID0gMw0KPiA+DQo+ ID4gKyAgICBWRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSID0gNA0KPiA+DQo+ID4gKyAgICBW RlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTID0gNQ0KPiA+DQo+ID4gKyAgICBWRlJfUkVUVVJO X1VOU1VQUE9SVEVEID0gNg0KPiA+DQo+ID4gKyAgICBWRlJfUkVUVVJOX1JFREVGSU5FRCA9IDcN Cj4gPg0KPiA+ICsgICAgVkZSX1JFVFVSTl9GT1JNSURfUkVERUZJTkVEID0gOA0KPiA+DQo+ID4g KyAgICBWRlJfUkVUVVJOX1FVRVNUSU9OSURfUkVERUZJTkVEID0gOQ0KPiA+DQo+ID4gKyAgICBW RlJfUkVUVVJOX1ZBUlNUT1JFSURfUkVERUZJTkVEID0gMTANCj4gPg0KPiA+ICsgICAgVkZSX1JF VFVSTl9VTkRFRklORUQgPSAxMQ0KPiA+DQo+ID4gKyAgICBWRlJfUkVUVVJOX1ZBUl9OT1RERUZJ TkVEX0JZX1FVRVNUSU9OID0gMTINCj4gPg0KPiA+ICsgICAgVkZSX1JFVFVSTl9WQVJTVE9SRV9E QVRBVFlQRV9SRURFRklORURfRVJST1IgPSAxMw0KPiA+DQo+ID4gKyAgICBWRlJfUkVUVVJOX0dF VF9FRklWQVJTVE9SRV9FUlJPUiA9IDE0DQo+ID4NCj4gPiArICAgIFZGUl9SRVRVUk5fRUZJVkFS U1RPUkVfVVNFX0VSUk9SID0gMTUNCj4gPg0KPiA+ICsgICAgVkZSX1JFVFVSTl9FRklWQVJTVE9S RV9TSVpFX0VSUk9SID0gMTYNCj4gPg0KPiA+ICsgICAgVkZSX1JFVFVSTl9HRVRfTlZWQVJTVE9S RV9FUlJPUiA9IDE3DQo+ID4NCj4gPiArICAgIFZGUl9SRVRVUk5fUVZBUl9SRVVTRSA9IDE4DQo+ ID4NCj4gPiArICAgIFZGUl9SRVRVUk5fRkxBR1NfVU5TVVBQT1JURUQgPSAxOQ0KPiA+DQo+ID4g KyAgICBWRlJfUkVUVVJOX0VSUk9SX0FSUkFSWV9OVU0gPSAyMA0KPiA+DQo+ID4gKyAgICBWRlJf UkVUVVJOX0RBVEFfU1RSSU5HX0VSUk9SID0gMjENCj4gPg0KPiA+ICsgICAgVkZSX1JFVFVSTl9E RUZBVUxUX1ZBTFVFX1JFREVGSU5FRCA9IDIyDQo+ID4NCj4gPiArICAgIFZGUl9SRVRVUk5fQ09O U1RBTlRfT05MWSA9IDIzDQo+ID4NCj4gPiArICAgIFZGUl9SRVRVUk5fVkFSU1RPUkVfTkFNRV9S RURFRklORURfRVJST1IgPSAyNA0KPiA+DQo+ID4gKyAgICBWRlJfUkVUVVJOX0JJVF9XSURUSF9F UlJPUiA9IDI1DQo+ID4NCj4gPiArICAgIFZGUl9SRVRVUk5fU1RSSU5HX1RPX1VJTlRfT1ZFUkZM T1cgPSAyNg0KPiA+DQo+ID4gKyAgICBWRlJfUkVUVVJOX0NPREVVTkRFRklORUQgPSAyNw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmckVycm9yTWVzc2FnZSA9IHsNCj4gPg0K PiA+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6ICcnLA0KPiA+DQo+ID4g KyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRVJST1JfU0tJUEVEOiAnJywNCj4gPg0KPiA+ ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SOiAnZmF0YWwgZXJyb3Ih IScsDQo+ID4NCj4gPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9NSVNNQVRDSEVEOiAn dW5leHBlY3RlZCB0b2tlbicsDQo+ID4NCj4gPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9JTlZBTElEX1BBUkFNRVRFUjogJ2ludmFsaWQNCj4gcGFyYW1ldGVyJywNCj4gPg0KPiA+ICsg ICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTOiAnc3lzdGVtIG91 dCBvZg0KPiA+IG1lbW9yeScsDQo+ID4NCj4gPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9VTlNVUFBPUlRFRDogJ3Vuc3VwcG9ydGVkJywNCj4gPg0KPiA+ICsgICAgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1JFREVGSU5FRDogJ2FscmVhZHkgZGVmaW5lZCcsDQo+ID4NCj4gPiArICAg IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GT1JNSURfUkVERUZJTkVEOiAnZm9ybSBpZCBhbHJl YWR5DQo+ID4gZGVmaW5lZCcsDQo+ID4NCj4gPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9RVUVTVElPTklEX1JFREVGSU5FRDoNCj4gPg0KPiA+ICsgICAgJ3F1ZXN0aW9uIGlkIGFscmVh ZHkgZGVmaW5lZCcsDQo+ID4NCj4gPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9WQVJT VE9SRUlEX1JFREVGSU5FRDoNCj4gPg0KPiA+ICsgICAgJ3ZhcnN0b3JlIGlkIGFscmVhZHkgZGVm aW5lZCcsDQo+ID4NCj4gPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRFRklORUQ6 ICd1bmRlZmluZWQnLA0KPiA+DQo+ID4gKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVkFS X05PVERFRklORURfQllfUVVFU1RJT046DQo+ID4NCj4gPiArICAgICdzb21lIHZhcmlhYmxlIGhh cyBub3QgZGVmaW5lZCBieSBhIHF1ZXN0aW9uJywNCj4gPg0KPiA+ICsNCj4gVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1ZBUlNUT1JFX0RBVEFUWVBFX1JFREVGSU5FRF9FUlJPUjoNCj4gPg0KPiA+ ICsgICAgJ0RhdGEgU3RydWN0dXJlIGlzIGRlZmluZWQgYnkgbW9yZSB0aGFuIG9uZSB2YXJzdG9y ZXM6IGl0IGNhblwndCBiZQ0KPiA+IHJlZmVycmVkIGFzIHZhcnN0b3JlOiBvbmx5IHZhcnN0b3Jl IG5hbWUgY291bGQgYmUgdXNlZC4nLA0KPiA+DQo+ID4gKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fR0VUX0VGSVZBUlNUT1JFX0VSUk9SOiAnZ2V0IGVmaQ0KPiA+IHZhcnN0b3JlIGVycm9y JywNCj4gPg0KPiA+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VGSVZBUlNUT1JFX1VT RV9FUlJPUjoNCj4gPg0KPiA+ICsgICAgJ2NhbiBub3QgdXNlIHRoZSBlZmkgdmFyc3RvcmUgbGlr ZSB0aGlzJywNCj4gPg0KPiA+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VGSVZBUlNU T1JFX1NJWkVfRVJST1I6DQo+ID4NCj4gPiArICAgICd1bnN1cHBvcnQgZWZpIHZhcnN0b3JlIHNp emUgc2hvdWxkIGJlIDw9IDggYnl0ZXMnLA0KPiA+DQo+ID4gKyAgICBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fR0VUX05WVkFSU1RPUkVfRVJST1I6DQo+ID4NCj4gPiArICAgICdnZXQgbmFtZSB2 YWx1ZSB2YXJzdG9yZSBlcnJvcicsDQo+ID4NCj4gPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9RVkFSX1JFVVNFOg0KPiA+DQo+ID4gKyAgICAndmFyaWFibGUgcmV1c2VkIGJ5IG1vcmUg dGhhbiBvbmUgcXVlc3Rpb24nLA0KPiA+DQo+ID4gKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fRkxBR1NfVU5TVVBQT1JURUQ6ICdmbGFncw0KPiA+IHVuc3VwcG9ydGVkJywNCj4gPg0KPiA+ ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9SX0FSUkFSWV9OVU06DQo+ID4NCj4g PiArICAgICdhcnJheSBudW1iZXIgZXJyb3I6IHRoZSB2YWxpZCB2YWx1ZSBpcyBpbiAoMCB+IE1B WF9JTkRFWC0xIGZvciBVRUZJIHZmcg0KPiA+IGFuZCBpbiAoMSB+IE1BWF9JTkRFWCBmb3IgRnJh bWV3b3JrIFZmcicsDQo+ID4NCj4gPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9EQVRB X1NUUklOR19FUlJPUjoNCj4gPg0KPiA+ICsgICAgJ2RhdGEgZmllbGQgc3RyaW5nIGVycm9yIG9y IG5vdCBzdXBwb3J0JywNCj4gPg0KPiA+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0RF RkFVTFRfVkFMVUVfUkVERUZJTkVEOg0KPiA+DQo+ID4gKyAgICAnZGVmYXVsdCB2YWx1ZSByZS1k ZWZpbmVkIHdpdGggZGlmZmVyZW50IHZhbHVlJywNCj4gPg0KPiA+ICsgICAgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0NPTlNUQU5UX09OTFk6DQo+ID4NCj4gPiArICAgICdvbmx5IGNvbnN0YW50 IGlzIGFsbG93ZWQgaW4gdGhlIGV4cHJlc3Npb24nLA0KPiA+DQo+ID4gKyAgICBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fVkFSU1RPUkVfTkFNRV9SRURFRklORURfRVJST1I6DQo+ID4NCj4gPiAr ICAgICdWYXJzdG9yZSBuYW1lIGlzIGRlZmluZWQgYnkgbW9yZSB0aGFuIG9uZSB2YXJzdG9yZXM6 IGl0IGNhblwndCBiZQ0KPiA+IHJlZmVycmVkIGFzIHZhcnN0b3JlOiBvbmx5IHZhcnN0b3JlIHN0 cnVjdHVyZSBuYW1lIGNvdWxkIGJlIHVzZWQuJywNCj4gPg0KPiA+ICsgICAgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0JJVF9XSURUSF9FUlJPUjoNCj4gPg0KPiA+ICsgICAgJ2JpdCB3aWR0aCBt dXN0IGJlIDw9IHNpemVvZiAodHlwZSAqIDggYW5kIHRoZSBtYXggd2lkdGggY2FuIG5vdCA+IDMy JywNCj4gPg0KPiA+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NUUklOR19UT19VSU5U X09WRVJGTE9XOg0KPiA+DQo+ID4gKyAgICAnU3RyaW5nIHRvIFVJTlQqIE92ZXJmbG93JywNCj4g Pg0KPiA+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0NPREVVTkRFRklORUQ6ICd1bmRl ZmluZWQgRXJyb3IgQ29kZScNCj4gPg0KPiA+ICt9DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArY2xhc3MgRUZJX1ZGUl9XQVJOSU5HX0NPREUoRW51bSk6DQo+ID4NCj4gPiArICAg IFZGUl9XQVJOSU5HX0RFRkFVTFRfVkFMVUVfUkVERUZJTkVEID0gMA0KPiA+DQo+ID4gKyAgICBW RlJfV0FSTklOR19BQ1RJT05fV0lUSF9URVhUX1RXTyA9IDENCj4gPg0KPiA+ICsgICAgVkZSX1dB Uk5JTkdfT0JTT0xFVEVEX0ZSQU1FV09SS19PUENPREUgPSAyDQo+ID4NCj4gPiArICAgIFZGUl9X QVJOSU5HX0NPREVVTkRFRklORUQgPSAzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArdmZyV2FybmluZ01lc3NhZ2UgPSB7DQo+ID4NCj4gPiArDQo+ID4gRUZJX1ZGUl9XQVJOSU5H X0NPREUuVkZSX1dBUk5JTkdfREVGQVVMVF9WQUxVRV9SRURFRklORUQ6DQo+ID4NCj4gPiArICAg ICI6IGRlZmF1bHQgdmFsdWUgcmUtZGVmaW5lZCB3aXRoIGRpZmZlcmVudCB2YWx1ZSIsDQo+ID4N Cj4gPiArICAgIEVGSV9WRlJfV0FSTklOR19DT0RFLlZGUl9XQVJOSU5HX0FDVElPTl9XSVRIX1RF WFRfVFdPOg0KPiA+DQo+ID4gKyAgICAiOiBBY3Rpb24gb3Bjb2RlIHNob3VsZCBub3QgaGF2ZSBU ZXh0VHdvIHBhcnQiLA0KPiA+DQo+ID4gKw0KPiA+DQo+IEVGSV9WRlJfV0FSTklOR19DT0RFLlZG Ul9XQVJOSU5HX09CU09MRVRFRF9GUkFNRVdPUktfT1BDDQo+ID4gT0RFOg0KPiA+DQo+ID4gKyAg ICAiOiBOb3QgcmVjb21tZW5kIHRvIHVzZSBvYnNvbGV0ZWQgZnJhbWV3b3JrIG9wY29kZSIsDQo+ ID4NCj4gPiArICAgIEVGSV9WRlJfV0FSTklOR19DT0RFLlZGUl9XQVJOSU5HX0NPREVVTkRFRklO RUQ6ICI6DQo+ID4gdW5kZWZpbmVkIFdhcm5pbmcgQ29kZSINCj4gPg0KPiA+ICt9DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ1ZmckVycm9ySGFuZGxlKCk6DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuX19JbnB1dEZpbGVOYW1lID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5f X3ZmckVycm9yTWVzc2FnZSA9IHZmckVycm9yTWVzc2FnZQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fX3Zmcldhcm5pbmdNZXNzYWdlID0gdmZyV2FybmluZ01lc3NhZ2UNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuX19XYXJuaW5nQXNFcnJvciA9IEZhbHNlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBTZXRXYXJuaW5nQXNFcnJvcihzZWxmLCBXYXJuaW5nQXNFcnJvcik6DQo+ID4NCj4g PiArICAgICAgICBzZWxmLl9fV2FybmluZ0FzRXJyb3IgPSBXYXJuaW5nQXNFcnJvcg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0SW5wdXRGaWxlKHNlbGYsIElucHV0RmlsZSk6DQo+ ID4NCj4gPiArICAgICAgICBzZWxmLl9fSW5wdXRGaWxlTmFtZSA9IElucHV0RmlsZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgSGFuZGxlV2FybmluZyhzZWxmLCBXYXJuaW5nQ29kZSwg TGluZU51bSwgVG9rZW5WYWx1ZT1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYuX192 ZnJXYXJuaW5nTWVzc2FnZSA9PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiAx DQo+ID4NCj4gPiArICAgICAgICBXYXJuaW5nTXNnID0gJycNCj4gPg0KPiA+ICsgICAgICAgIGZv ciBrZXkgaW4gc2VsZi5fX3Zmcldhcm5pbmdNZXNzYWdlLmtleXMoKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBXYXJuaW5nQ29kZSA9PSBzZWxmLl9fdmZyV2FybmluZ01lc3NhZ2Vba2V5XToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgV2FybmluZ01zZyA9IHNlbGYuX192ZnJXYXJuaW5n TWVzc2FnZVtrZXldDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGJyZWFrDQo+ID4NCj4gPiAr ICAgICAgICBpZiBXYXJuaW5nTXNnICE9ICcnOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNl bGYuX19XYXJuaW5nQXNFcnJvcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgRWRrTG9nZ2Vy LmVycm9yKCdWZnJDb21waWxlcicsIFdhcm5pbmdDb2RlLCBXYXJuaW5nTXNnLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0lucHV0RmlsZU5hbWUsIExp bmVOdW0sDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2Fybmlu ZyB0cmVhdGVkIGFzIGVycm9yIikNCj4gPg0KPiA+ICsgICAgICAgICAgICBFZGtMb2dnZXIud2Fy bignVmZyQ29tcGlsZXInLCBXYXJuaW5nTXNnLCBzZWxmLl9fSW5wdXRGaWxlTmFtZSwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lTnVtLCBUb2tlblZhbHVlKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgUHJpbnRNc2coc2VsZiwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgIExpbmVOdW0sDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICBNc2dUeXBl PSdFcnJvcicsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICBFcnJvck1zZz1Ob25lLA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgVG9rZW5WYWx1ZT1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgIGlmIE1zZ1R5cGUgPT0gJ1dhcm5pbmcnOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEVka0xv Z2dlci52ZXJib3NlKEVycm9yTXNnKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBFZGtMb2dnZXIuZXJyb3IoJ1ZmckNvbXBpbGVyJywgMHgzMDAwLCBFcnJv ck1zZywNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0lucHV0 RmlsZU5hbWUsIExpbmVOdW0sIFRva2VuVmFsdWUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBIYW5kbGVFcnJvcihzZWxmLCBFcnJvckNvZGUsIExpbmVOdW09Tm9uZSwgVG9rZW5WYWx1 ZT1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYuX192ZnJFcnJvck1lc3NhZ2UgPT0g Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gMQ0KPiA+DQo+ID4gKyAgICAgICAg RXJyb3JNc2cgPSAnJw0KPiA+DQo+ID4gKyAgICAgICAgZm9yIGtleSBpbiBzZWxmLl9fdmZyRXJy b3JNZXNzYWdlLmtleXMoKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBFcnJvckNvZGUgPT0g c2VsZi5fX3ZmckVycm9yTWVzc2FnZVtrZXldOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBF cnJvck1zZyA9IHNlbGYuX192ZnJFcnJvck1lc3NhZ2Vba2V5XQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBicmVhaw0KPiA+DQo+ID4gKyAgICAgICAgaWYgRXJyb3JNc2cgIT0gJyc6DQo+ID4N Cj4gPiArICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKCdWZnJDb21waWxlcicsIEVycm9yQ29k ZSwgRXJyb3JNc2csDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu X19JbnB1dEZpbGVOYW1lLCBMaW5lTnVtLCBUb2tlblZhbHVlKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiAxDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZ0NWZnJFcnJv ckhhbmRsZSA9IENWZnJFcnJvckhhbmRsZSgpDQo+ID4gXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlDQo+ID4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVy L1ZmckZvcm1Qa2cucHkNCj4gPiBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVy L1ZmckZvcm1Qa2cucHkNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAw MDAwMDAuLmVmYTgxMjlkOTANCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyRm9ybVBrZy5weQ0KPiA+IEBAIC0wLDAgKzEs MjczOCBAQA0KPiA+ICtmcm9tIGFzdCBpbXBvcnQgRm9yDQo+ID4NCj4gPiArZnJvbSByZSBpbXBv cnQgTA0KPiA+DQo+ID4gK2Zyb20gc3JlX3BhcnNlIGltcG9ydCBGTEFHUw0KPiA+DQo+ID4gK2Zy b20gc3RhdCBpbXBvcnQgRklMRV9BVFRSSUJVVEVfU1BBUlNFX0ZJTEUNCj4gPg0KPiA+ICtmcm9t IFZmckNvbXBpbGVyLkNvbW1vbkN0eXBlcyBpbXBvcnQgKg0KPiA+DQo+ID4gK2Zyb20gVmZyQ29t cGlsZXIuVmZyRXJyb3IgaW1wb3J0IFZmclJldHVybkNvZGUNCj4gPg0KPiA+ICtmcm9tIFZmckNv bXBpbGVyLlZmclV0aWxpdHkgaW1wb3J0ICoNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtmcm9tIGN0 eXBlcyBpbXBvcnQgKg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIE9w Y29kZVNpemVzU2NvcGVOb2RlKCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBTaXplLCBTY29wZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNpemUgPSBT aXplDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNjb3BlID0gU2NvcGUNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICtnT3Bjb2RlU2l6ZXNTY29wZVRhYmxlID0gWw0KPiA+DQo+ID4g KyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZSgwLCAwKSwgICMgRUZJX0lGUl9JTlZBTElEIC0gMHgw MA0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9J RlJfRk9STSksIDEpLCAgIw0KPiA+IEVGSV9JRlJfRk9STV9PUA0KPiA+DQo+ID4gKyAgICBPcGNv ZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfU1VCVElUTEUpLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAxKSwgICMgRUZJX0lGUl9TVUJUSVRMRV9PUA0K PiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJf VEVYVCksIDApLCAgIw0KPiA+IEVGSV9JRlJfVEVYVF9PUA0KPiA+DQo+ID4gKyAgICBPcGNvZGVT aXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfSU1BR0UpLCAwKSwgICMNCj4gPiBF RklfSUZSX0lNQUdFX09QDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBl cy5zaXplb2YoRUZJX0lGUl9PTkVfT0YpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAxKSwgICMgRUZJX0lGUl9PTkVfT0ZfT1AgLSAweDA1DQo+ID4NCj4gPiArICAgIE9wY29k ZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9DSEVDS0JPWCksDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX0NIRUNLQk9YX09QDQo+ ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9O VU1FUklDKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMSksICAjIEVGSV9J RlJfTlVNRVJJQ19PUA0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMu c2l6ZW9mKEVGSV9JRlJfUEFTU1dPUkQpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAxKSwgICMgRUZJX0lGUl9QQVNTV09SRF9PUA0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXpl c1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfT05FX09GX09QVElPTiksDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX09ORV9PRl9PUFRJT05f T1ANCj4gPg0KPiA+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklf SUZSX1NVUFBSRVNTX0lGKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMSks ICAjIEVGSV9JRlJfU1VQUFJFU1NfSUYgLSAweDBBDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVz U2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9MT0NLRUQpLA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9MT0NLRURfT1ANCj4gPg0KPiA+ICsg ICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX0FDVElPTiksDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX0FDVElPTl9P UA0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9J RlJfUkVTRVRfQlVUVE9OKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMSks ICAjIEVGSV9JRlJfUkVTRVRfQlVUVE9OX09QDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2Nv cGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9GT1JNX1NFVCksDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX0ZPUk1fU0VUX09QIC0weEUNCj4gPg0K PiA+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1JFRiks IDApLCAgIw0KPiA+IEVGSV9JRlJfUkVGX09QDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2Nv cGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9OT19TVUJNSVRfSUYpLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAxKSwgICMgRUZJX0lGUl9OT19TVUJNSVRfSUZfT1AgLTB4 MTANCj4gPg0KPiA+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklf SUZSX0lOQ09OU0lTVEVOVF9JRiksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg IDEpLCAgIyBFRklfSUZSX0lOQ09OU0lTVEVOVF9JRl9PUA0KPiA+DQo+ID4gKyAgICBPcGNvZGVT aXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfRVFfSURfVkFMKSwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfRVFfSURfVkFMX09QDQo+ ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9F UV9JRF9JRCksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklf SUZSX0VRX0lEX0lEX09QDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBl cy5zaXplb2YoRUZJX0lGUl9FUV9JRF9WQUxfTElTVCksDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX0VRX0lEX0xJU1RfT1AgLSAweDE0DQo+ID4NCj4g PiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9BTkQpLCAw KSwgICMNCj4gPiBFRklfSUZSX0FORF9PUA0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3Bl Tm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfT1IpLCAwKSwgICMNCj4gPiBFRklfSUZSX09SX09Q DQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lG Ul9OT1QpLCAwKSwgICMNCj4gPiBFRklfSUZSX05PVF9PUA0KPiA+DQo+ID4gKyAgICBPcGNvZGVT aXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfUlVMRSksIDEpLCAgIw0KPiA+IEVG SV9JRlJfUlVMRV9PUA0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMu c2l6ZW9mKEVGSV9JRlJfR1JBWV9PVVRfSUYpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAxKSwgICMgRUZJX0lGUl9HUkFZT1VUX0lGX09QIC0gMHgxOQ0KPiA+DQo+ID4gKyAg ICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfREFURSksIDEpLCAg Iw0KPiA+IEVGSV9JRlJfREFURV9PUA0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9k ZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVElNRSksIDEpLCAgIw0KPiA+IEVGSV9JRlJfVElNRV9P UA0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9J RlJfU1RSSU5HKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMSksICAjIEVG SV9JRlJfU1RSSU5HX09QDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBl cy5zaXplb2YoRUZJX0lGUl9SRUZSRVNIKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgMCksICAjIEVGSV9JRlJfUkVGUkVTSF9PUA0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXpl c1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfRElTQUJMRV9JRiksDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX0RJU0FCTEVfSUZfT1AgLSAw eDFFDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKDAsIDApLCAgIyAweDFGDQo+ ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9U T19MT1dFUiksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklf SUZSX1RPX0xPV0VSX09QIC0gMHgyMA0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9k ZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVE9fVVBQRVIpLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9UT19VUFBFUl9PUCAtIDB4MjENCj4gPg0KPiA+ ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX01BUCksIDEp LCAgIw0KPiBFRklfSUZSX01BUA0KPiA+IC0gMHgyMg0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXpl c1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfT1JERVJFRF9MSVNUKSwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgMSksICAjIEVGSV9JRlJfT1JERVJFRF9MSVNUX09Q IC0gMHgyMw0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9m KEVGSV9JRlJfVkFSU1RPUkUpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAw KSwgICMgRUZJX0lGUl9WQVJTVE9SRV9PUA0KPiA+DQo+ID4gKw0KPiA+IE9wY29kZVNpemVzU2Nv cGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9WQVJTVE9SRV9OQU1FX1ZBTFVFKSwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfVkFSU1RPUkVfTkFN RV9WQUxVRV9PUA0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6 ZW9mKEVGSV9JRlJfVkFSU1RPUkVfRUZJKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgMCksICAjIEVGSV9JRlJfVkFSU1RPUkVfRUZJX09QDQo+ID4NCj4gPiArICAgIE9wY29k ZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9WQVJTVE9SRV9ERVZJQ0UpLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAxKSwgICMgRUZJX0lGUl9WQVJTVE9S RV9ERVZJQ0VfT1ANCj4gPg0KPiA+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNp emVvZihFRklfSUZSX1ZFUlNJT04pLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAwKSwgICMgRUZJX0lGUl9WRVJTSU9OX09QIC0gMHgyOA0KPiA+DQo+ID4gKyAgICBPcGNvZGVT aXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfRU5EKSwgMCksICAjDQo+ID4gRUZJ X0lGUl9FTkRfT1ANCj4gPg0KPiA+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNp emVvZihFRklfSUZSX01BVENIKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg MCksICAjIEVGSV9JRlJfTUFUQ0hfT1AgLSAweDJBDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVz U2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9HRVQpLCAwKSwgICMgRUZJX0lGUl9HRVQN Cj4gLQ0KPiA+IDB4MkINCj4gPg0KPiA+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVz LnNpemVvZihFRklfSUZSX1NFVCksIDApLCAgIyBFRklfSUZSX1NFVA0KPiAtDQo+ID4gMHgyQw0K PiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJf UkVBRCksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZS X1JFQUQgLSAweDJEDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5z aXplb2YoRUZJX0lGUl9XUklURSksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg IDApLCAgIyBFRklfSUZSX1dSSVRFIC0gMHgyRQ0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Nj b3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfRVFVQUwpLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9FUVVBTF9PUCAtIDB4MkYNCj4gPg0KPiA+ ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX05PVF9FUVVB TCksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX05P VF9FUVVBTF9PUA0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6 ZW9mKEVGSV9JRlJfR1JFQVRFUl9USEFOKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgMCksICAjIEVGSV9JRlJfR1JFQVRFUl9USEFOX09QDQo+ID4NCj4gPiArICAgIE9wY29k ZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9HUkVBVEVSX0VRVUFMKSwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfR1JFQVRFUl9F UVVBTF9PUA0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9m KEVGSV9JRlJfTEVTU19USEFOKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg MCksICAjIEVGSV9JRlJfTEVTU19USEFOX09QDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2Nv cGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9MRVNTX0VRVUFMKSwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfTEVTU19FUVVBTF9PUCAtIDB4MzQN Cj4gPg0KPiA+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZS X0JJVFdJU0VfQU5EKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAj IEVGSV9JRlJfQklUV0lTRV9BTkRfT1ANCj4gPg0KPiA+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5v ZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX0JJVFdJU0VfT1IpLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9CSVRXSVNFX09SX09QDQo+ID4NCj4gPiAr ICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9CSVRXSVNFX05P VCksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX0JJ VFdJU0VfTk9UX09QDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5z aXplb2YoRUZJX0lGUl9TSElGVF9MRUZUKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgMCksICAjIEVGSV9JRlJfU0hJRlRfTEVGVF9PUA0KPiA+DQo+ID4gKyAgICBPcGNvZGVT aXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfU0hJRlRfUklHSFQpLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9TSElGVF9SSUdIVF9P UA0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9J RlJfQUREKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9J RlJfQUREX09QIC0gMHgzQQ0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlw ZXMuc2l6ZW9mKEVGSV9JRlJfU1VCVFJBQ1QpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAwKSwgICMgRUZJX0lGUl9TVUJUUkFDVF9PUA0KPiA+DQo+ID4gKyAgICBPcGNvZGVT aXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfTVVMVElQTFkpLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9NVUxUSVBMWV9PUA0KPiA+ DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfRElW SURFKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJf RElWSURFX09QDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXpl b2YoRUZJX0lGUl9NT0RVTE8pLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAw KSwgICMgRUZJX0lGUl9NT0RVTE9fT1AgLSAweDNFDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVz U2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9SVUxFX1JFRiksDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX1JVTEVfUkVGX09QDQo+ID4NCj4g PiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9RVUVTVElP Tl9SRUYxKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9J RlJfUVVFU1RJT05fUkVGMV9PUA0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShj dHlwZXMuc2l6ZW9mKEVGSV9JRlJfUVVFU1RJT05fUkVGMiksDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX1FVRVNUSU9OX1JFRjJfT1AgLSAweDQxDQo+ ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9V SU5UOCksIDApLCAgIw0KPiA+IEVGSV9JRlJfVUlOVDgNCj4gPg0KPiA+ICsgICAgT3Bjb2RlU2l6 ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1VJTlQxNiksIDApLCAgIw0KPiA+IEVG SV9JRlJfVUlOVDE2DQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5z aXplb2YoRUZJX0lGUl9VSU5UMzIpLCAwKSwgICMNCj4gPiBFRklfSUZSX1VJTlQzMg0KPiA+DQo+ ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVUlOVDY0 KSwgMCksICAjDQo+ID4gRUZJX0lGUl9VVE5UNjQNCj4gPg0KPiA+ICsgICAgT3Bjb2RlU2l6ZXNT Y29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1RSVUUpLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9UUlVFX09QIC0gMHg0Ng0KPiA+DQo+ID4g KyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfRkFMU0UpLCAw KSwgICMNCj4gPiBFRklfSUZSX0ZBTFNFX09QDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2Nv cGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9UT19VSU5UKSwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfVE9fVUlOVF9PUA0KPiA+DQo+ID4gKyAg ICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVE9fU1RSSU5HKSwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfVE9fU1RS SU5HX09QDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2Yo RUZJX0lGUl9UT19CT09MRUFOKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg MCksICAjIEVGSV9JRlJfVE9fQk9PTEVBTl9PUA0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Nj b3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfTUlEKSwgMCksICAjDQo+ID4gRUZJX0lGUl9N SURfT1ANCj4gPg0KPiA+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihF RklfSUZSX0ZJTkQpLCAwKSwgICMNCj4gPiBFRklfSUZSX0ZJTkRfT1ANCj4gPg0KPiA+ICsgICAg T3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1RPS0VOKSwgMCksICAj DQo+ID4gRUZJX0lGUl9UT0tFTl9PUA0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9k ZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfU1RSSU5HX1JFRjEpLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9TVFJJTkdfUkVGMV9PUCAtIDB4NEUNCj4g Pg0KPiA+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1NU UklOR19SRUYyKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVG SV9JRlJfU1RSSU5HX1JFRjJfT1ANCj4gPg0KPiA+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUo Y3R5cGVzLnNpemVvZihFRklfSUZSX0NPTkRJVElPTkFMKSwNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfQ09ORElUSU9OQUxfT1ANCj4gPg0KPiA+ICsg ICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1FVRVNUSU9OX1JF RjMpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9R VUVTVElPTl9SRUYzX09QDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBl cy5zaXplb2YoRUZJX0lGUl9aRVJPKSwgMCksICAjDQo+ID4gRUZJX0lGUl9aRVJPX09QDQo+ID4N Cj4gPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9PTkUp LCAwKSwgICMNCj4gPiBFRklfSUZSX09ORV9PUA0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Nj b3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfT05FUyksIDApLCAgIw0KPiA+IEVGSV9JRlJf T05FU19PUA0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9m KEVGSV9JRlJfVU5ERUZJTkVEKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg MCksICAjIEVGSV9JRlJfVU5ERUZJTkVEX09QDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2Nv cGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9MRU5HVEgpLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9MRU5HVEhfT1ANCj4gPg0KPiA+ICsgICAg T3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX0RVUCksDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX0RVUF9PUCAtIDB4NTcN Cj4gPg0KPiA+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZS X1RISVMpLCAwKSwgICMNCj4gPiBFRklfSUZSX1RISVNfT1ANCj4gPg0KPiA+ICsgICAgT3Bjb2Rl U2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1NQQU4pLCAwKSwgICMNCj4gPiBF RklfSUZSX1NQQU5fT1ANCj4gPg0KPiA+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVz LnNpemVvZihFRklfSUZSX1ZBTFVFKSwgMSksICAjDQo+ID4gRUZJX0lGUl9WQUxVRV9PUA0KPiA+ DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfREVG QVVMVCksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZS X0RFRkFVTFRfT1ANCj4gPg0KPiA+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNp emVvZihFRklfSUZSX0RFRkFVTFRTVE9SRSksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgIDApLCAgIyBFRklfSUZSX0RFRkFVTFRTVE9SRV9PUCAtIDB4NUMNCj4gPg0KPiA+ICsg ICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX0ZPUk1fTUFQKSwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMSksICAjIEVGSV9JRlJfRk9STV9N QVBfT1AgLSAweDVEDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5z aXplb2YoRUZJX0lGUl9DQVRFTkFURSksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgIDApLCAgIyBFRklfSUZSX0NBVEVOQVRFX09QDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVz U2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9HVUlEKSwgMCksICAjDQo+ID4gRUZJX0lG Ul9HVUlEX09QDQo+ID4NCj4gPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXpl b2YoRUZJX0lGUl9TRUNVUklUWSksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg IDApLCAgIyBFRklfSUZSX1NFQ1VSSVRZX09QIC0gMHg2MA0KPiA+DQo+ID4gKyAgICBPcGNvZGVT aXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfTU9EQUxfVEFHKSwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfTU9EQUxfVEFHX09QIC0g MHg2MQ0KPiA+DQo+ID4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVG SV9JRlJfUkVGUkVTSF9JRCksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIDAp LCAgIyBFRklfSUZSX1JFRlJFU0hfSURfT1AgLSAweDYyDQo+ID4NCj4gPiArICAgIE9wY29kZVNp emVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9XQVJOSU5HX0lGKSwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgMSksICAjIEVGSV9JRlJfV0FSTklOR19JRl9PUCAt IDB4NjMNCj4gPg0KPiA+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihF RklfSUZSX01BVENIMiksIDApDQo+ID4NCj4gPiArXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK2NsYXNzIFNCdWZmZXJOb2RlKCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBfX2luaXRfXyhzZWxmLCBCdWZmZXI9JycsIE5leHQ9Tm9uZSk6DQo+ID4NCj4gPiArICAg ICAgICBzZWxmLkJ1ZmZlciA9IEJ1ZmZlcg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5OZXh0ID0g TmV4dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENGb3JtUGtnKCk6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBCdWZmZXJTaXpl PTQwOTYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgTm9kZSA9IFNCdWZmZXJOb2Rl KCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19CdWZmZXJOb2RlUXVldWVIZWFkID0gTm9kZQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0J1ZmZlck5vZGVRdWV1ZVRhaWwgPSBOb2RlDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLl9fQ3VyckJ1ZmZlck5vZGUgPSBOb2RlDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLl9fUmVhZEJ1ZmZlck5vZGUgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBzZWxm Ll9fUmVhZEJ1ZmZlck9mZnNldCA9IDANCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19Qa2dMZW5n dGggPSAwDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fUGVuZGluZ0Fzc2lnbkxpc3QgPSBOb25l DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fQnVmZmVyU2l6ZSA9IEJ1ZmZlclNpemUNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldFBrZ0xlbmd0aChzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgIHJldHVybiBzZWxmLl9fUGtnTGVuZ3RoDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBfX2NyZWF0ZU5ld05vZGUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBOb2RlID0gU0J1 ZmZlck5vZGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIE5vZGUNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIF9fR2V0Tm9kZUJlZm9yZShzZWxmLCBDdXJyZW50Tm9kZSk6DQo+ID4N Cj4gPiArICAgICAgICBGaXJzdE5vZGUgPSBzZWxmLl9fQnVmZmVyTm9kZVF1ZXVlSGVhZA0KPiA+ DQo+ID4gKyAgICAgICAgTGFzdE5vZGUgPSBzZWxmLl9fQnVmZmVyTm9kZVF1ZXVlSGVhZA0KPiA+ DQo+ID4gKyAgICAgICAgd2hpbGUgRmlyc3ROb2RlICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgRmlyc3ROb2RlID09IEN1cnJlbnROb2RlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBicmVhaw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIExhc3ROb2RlID0g Rmlyc3ROb2RlDQo+ID4NCj4gPiArICAgICAgICAgICAgRmlyc3ROb2RlID0gRmlyc3ROb2RlLk5l eHQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIEZpcnN0Tm9kZSA9PSBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIExhc3ROb2RlID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgcmV0dXJuIExhc3ROb2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBfX0luc2VydE5vZGVCZWZvcmUoc2VsZiwgQ3VycmVudE5vZGUsIE5ld05vZGUpOg0KPiA+DQo+ ID4gKyAgICAgICAgTGFzdE5vZGUgPSBzZWxmLl9fR2V0Tm9kZUJlZm9yZShDdXJyZW50Tm9kZSkN Cj4gPg0KPiA+ICsgICAgICAgIGlmIExhc3ROb2RlID09IE5vbmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9NSVNNQVRDSEVEDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBOZXdOb2RlLk5leHQgPSBMYXN0Tm9kZS5OZXh0DQo+ID4N Cj4gPiArICAgICAgICBMYXN0Tm9kZS5OZXh0ID0gTmV3Tm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgSWZyQmluQnVmZmVyR2V0KHNlbGYsIExlbik6DQo+ID4NCj4gPiArICAgICAg ICBpZiBMZW4gPT0gMCBvciBMZW4gPiBzZWxmLl9fQnVmZmVyU2l6ZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgbGVuKHNlbGYuX19DdXJy QnVmZmVyTm9kZS5CdWZmZXIpICsgTGVuID4gc2VsZi5fX0J1ZmZlclNpemU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgTm9kZSA9IHNlbGYuX19jcmVhdGVOZXdOb2RlKCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBOb2RlID09IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2VsZi5fX0J1ZmZl ck5vZGVRdWV1ZVRhaWwgPT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5f X0J1ZmZlck5vZGVRdWV1ZUhlYWQgPSBzZWxmLl9fQnVmZmVyTm9kZVF1ZXVlVGFpbCA9DQo+ID4g Tm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuX19CdWZmZXJOb2RlUXVldWVUYWlsLk5leHQgPSBOb2RlDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIG1CdWZmZXJOb2RlUXVldWVUYWlsID0gTm9kZQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuX19DdXJyQnVmZmVyTm9kZSA9IE5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuX19Qa2dMZW5ndGggKz0gTGVuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gc2VsZi5fX0N1cnJCdWZmZXJOb2RlLkJ1ZmZlcg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2dDRm9ybVBrZyA9IENGb3JtUGtnKCkN Cj4gPg0KPiA+ICtnQ3JlYXRlT3AgPSBUcnVlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZ0lmck9i alByaW50RGVidWdUYWJsZSA9IFsNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfSU5WQUxJRCIsDQo+ ID4NCj4gPiArICAgICJFRklfSUZSX0ZPUk0iLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9TVUJU SVRMRSIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX1RFWFQiLA0KPiA+DQo+ID4gKyAgICAiRUZJ X0lGUl9JTUFHRSIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX09ORV9PRiIsDQo+ID4NCj4gPiAr ICAgICJFRklfSUZSX0NIRUNLQk9YIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfTlVNRVJJQyIs DQo+ID4NCj4gPiArICAgICJFRklfSUZSX1BBU1NXT1JEIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9J RlJfT05FX09GX09QVElPTiIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX1NVUFBSRVNTX0lGIiwN Cj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfTE9DS0VEIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJf QUNUSU9OIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfUkVTRVRfQlVUVE9OIiwNCj4gPg0KPiA+ ICsgICAgIkVGSV9JRlJfRk9STV9TRVQiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9SRUYiLA0K PiA+DQo+ID4gKyAgICAiRUZJX0lGUl9OT19TVUJNSVRfSUYiLA0KPiA+DQo+ID4gKyAgICAiRUZJ X0lGUl9JTkNPTlNJU1RFTlRfSUYiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9FUV9JRF9WQUwi LA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9FUV9JRF9JRCIsDQo+ID4NCj4gPiArICAgICJFRklf SUZSX0VRX0lEX0xJU1QiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9BTkQiLA0KPiA+DQo+ID4g KyAgICAiRUZJX0lGUl9PUiIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX05PVCIsDQo+ID4NCj4g PiArICAgICJFRklfSUZSX1JVTEUiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9HUkFZX09VVF9J RiIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX0RBVEUiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lG Ul9USU1FIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfU1RSSU5HIiwNCj4gPg0KPiA+ICsgICAg IkVGSV9JRlJfUkVGUkVTSCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX0RJU0FCTEVfSUYiLA0K PiA+DQo+ID4gKyAgICAiRUZJX0lGUl9JTlZBTElEIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJf VE9fTE9XRVIiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9UT19VUFBFUiIsDQo+ID4NCj4gPiAr ICAgICJFRklfSUZSX01BUCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX09SREVSRURfTElTVCIs DQo+ID4NCj4gPiArICAgICJFRklfSUZSX1ZBUlNUT1JFIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9J RlJfVkFSU1RPUkVfTkFNRV9WQUxVRSIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX1ZBUlNUT1JF X0VGSSIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX1ZBUlNUT1JFX0RFVklDRSIsDQo+ID4NCj4g PiArICAgICJFRklfSUZSX1ZFUlNJT04iLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9FTkQiLA0K PiA+DQo+ID4gKyAgICAiRUZJX0lGUl9NQVRDSCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX0dF VCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX1NFVCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZS X1JFQUQiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9XUklURSIsDQo+ID4NCj4gPiArICAgICJF RklfSUZSX0VRVUFMIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfTk9UX0VRVUFMIiwNCj4gPg0K PiA+ICsgICAgIkVGSV9JRlJfR1JFQVRFUl9USEFOIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJf R1JFQVRFUl9FUVVBTCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX0xFU1NfVEhBTiIsDQo+ID4N Cj4gPiArICAgICJFRklfSUZSX0xFU1NfRVFVQUwiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9C SVRXSVNFX0FORCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX0JJVFdJU0VfT1IiLA0KPiA+DQo+ ID4gKyAgICAiRUZJX0lGUl9CSVRXSVNFX05PVCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX1NI SUZUX0xFRlQiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9TSElGVF9SSUdIVCIsDQo+ID4NCj4g PiArICAgICJFRklfSUZSX0FERCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX1NVQlRSQUNUIiwN Cj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfTVVMVElQTFkiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lG Ul9ESVZJREUiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9NT0RVTE8iLA0KPiA+DQo+ID4gKyAg ICAiRUZJX0lGUl9SVUxFX1JFRiIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX1FVRVNUSU9OX1JF RjEiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9RVUVTVElPTl9SRUYyIiwNCj4gPg0KPiA+ICsg ICAgIkVGSV9JRlJfVUlOVDgiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9VSU5UMTYiLA0KPiA+ DQo+ID4gKyAgICAiRUZJX0lGUl9VSU5UMzIiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9VSU5U NjQiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9UUlVFIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9J RlJfRkFMU0UiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9UT19VSU5UIiwNCj4gPg0KPiA+ICsg ICAgIkVGSV9JRlJfVE9fU1RSSU5HIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfVE9fQk9PTEVB TiIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX01JRCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZS X0ZJTkQiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9UT0tFTiIsDQo+ID4NCj4gPiArICAgICJF RklfSUZSX1NUUklOR19SRUYxIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfU1RSSU5HX1JFRjIi LA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9DT05ESVRJT05BTCIsDQo+ID4NCj4gPiArICAgICJF RklfSUZSX1FVRVNUSU9OX1JFRjMiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9aRVJPIiwNCj4g Pg0KPiA+ICsgICAgIkVGSV9JRlJfT05FIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfT05FUyIs DQo+ID4NCj4gPiArICAgICJFRklfSUZSX1VOREVGSU5FRCIsDQo+ID4NCj4gPiArICAgICJFRklf SUZSX0xFTkdUSCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX0RVUCIsDQo+ID4NCj4gPiArICAg ICJFRklfSUZSX1RISVMiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9TUEFOIiwNCj4gPg0KPiA+ ICsgICAgIkVGSV9JRlJfVkFMVUUiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9ERUZBVUxUIiwN Cj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfREVGQVVMVFNUT1JFIiwNCj4gPg0KPiA+ICsgICAgIkVG SV9JRlJfRk9STV9NQVAiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9DQVRFTkFURSIsDQo+ID4N Cj4gPiArICAgICJFRklfSUZSX0dVSUQiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9TRUNVUklU WSIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX01PREFMX1RBRyIsDQo+ID4NCj4gPiArICAgICJF RklfSUZSX1JFRlJFU0hfSUQiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9XQVJOSU5HX0lGIiwN Cj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfTUFUQ0gyIiwNCj4gPg0KPiA+ICtdDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmck9iaigpOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgT2JqPU5vbmUsIE9wQ29kZT1Ob25lLCBPYmpC aW5MZW49MCwNCj4gPiBEZWxheUVtaXQ9RmFsc2UsIExpbmVObz0wKToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuX19EZWxheUVtaXQgPSBEZWxheUVtaXQNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuX19Qa2dPZmZzZXQgPSBnQ0Zvcm1Qa2cuR2V0UGtnTGVuZ3RoKCkNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuX19PYmpCaW5MZW4gPSBnT3Bjb2RlU2l6ZXNTY29wZVRhYmxlWw0K PiA+DQo+ID4gKyAgICAgICAgICAgIE9wQ29kZV0uU2l6ZSBpZiBPYmpCaW5MZW4gPT0gMCBlbHNl IE9iakJpbkxlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX09iakJpbkJ1 ZiA9IE9iag0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0xpbmVObyA9IExpbmVObw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgIyBwcmludCAoIj09PT09PUNyZWF0ZSBJRlIgWyVzXVxu IiwgZ0lmck9ialByaW50RGVidWdUYWJsZVtPcENvZGVdKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIHNlbGYuX19PYmpCaW5CdWYNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldE9i akJpbihzZWxmLCBPYmpCaW5MZW4pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fX09iakJpbkxlbiA9IE9iakJpbkxlbg0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5fX0Rl bGF5RW1pdCA9PSBGYWxzZSBhbmQgZ0NyZWF0ZU9wID09IFRydWU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fX09iakJpbkJ1ZiA9IGdDRm9ybVBrZy5JZnJCaW5CdWZmZXJHZXQoc2VsZi5f X09iakJpbkxlbikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldExpbmVObyhzZWxm LCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0xpbmVObyA9IExpbmVObw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0T2JqQmluQWRkcihzZWxmLCBBZGRyKToNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuX19PYmpCaW5CdWYgPSBBZGRyDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gc2VsZi5fX09iakJpbkJ1Zg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYg R2V0T2JqQmluT2Zmc2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19Q a2dPZmZzZXQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldE9iakJpbkxlbihzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLl9fT2JqQmluTGVuDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBFeHBlbmRPYmpCaW4oc2VsZiwgU2l6ZSk6DQo+ID4NCj4gPiAr ICAgICAgICBpZiAoc2VsZi5fX0RlbGF5RW1pdCkgPT0gVHJ1ZSBhbmQgKA0KPiA+DQo+ID4gKyAg ICAgICAgICAgIChzZWxmLl9fT2JqQmluTGVuICsgU2l6ZSkgPiBzZWxmLl9fT2JqQmluTGVuKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fT2JqQmluTGVuID0gc2VsZi5fX09iakJpbkxl biArIFNpemUNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVHJ1ZQ0KPiA+DQo+ID4gKyAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gRmFsc2UNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNocmlua09iakJpbihzZWxmLCBTaXplKToNCj4gPg0KPiA+ ICsgICAgICAgIGlmIChzZWxmLl9fRGVsYXlFbWl0KSA9PSBUcnVlIGFuZCAoc2VsZi5fX09iakJp bkxlbiA+IFNpemUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19PYmpCaW5MZW4gPSBz ZWxmLl9fT2JqQmluTGVuIC0gU2l6ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0 T2JqQmluKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19PYmpCaW5CdWYN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEVNSVRfUEVORElOR19PQkooc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICBpZiBzZWxmLl9fRGVsYXlFbWl0ID09IEZhbHNlIG9yIGdDcmVhdGVP cCA9PSBGYWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuX19Qa2dPZmZzZXQgPSBnQ0Zvcm1Qa2cuR2V0UGtnTGVuZ3Ro KCkNCj4gPg0KPiA+ICsgICAgICAgICMgdXBkYXRlIGRhdGEgYnVmZmVyIHRvIHBhY2thZ2UgZGF0 YQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX09iakJpbkJ1ZiA9IGdDRm9ybVBrZy5JZnJCaW5C dWZmZXJHZXQoc2VsZi5fX09iakJpbkxlbikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuX19EZWxheUVtaXQgPSBGYWxzZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gK2dTY29wZUNvdW50ID0gMA0KPiA+DQo+ID4gK2dJc09yZGVyZWRMaXN0ID0gRmFsc2UNCj4g Pg0KPiA+ICtnSXNTdHJpbmdPcCA9IEZhbHNlDQo+ID4NCj4gPiArZ0N1cnJlbnRRdWVzdGlvbiA9 IE5vbmUNCj4gPg0KPiA+ICtnQ3VycmVudE1pbk1heERhdGEgPSBOb25lDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArZGVmIFNldEN1cnJlbnRRdWVzdGlvbihRdWVzdGlvbik6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGdDdXJyZW50UXVlc3Rpb24gPSBRdWVzdGlvbg0KPiA+ DQo+ID4gKyAgICByZXR1cm4gZ0N1cnJlbnRRdWVzdGlvbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK2NsYXNzIENJZnJPcEhlYWRlcigpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBkZWYgX19pbml0X18oc2VsZiwgT3BIZWFkZXI6IEVGSV9JRlJfT1BfSEVBREVSLCBPcENv ZGU9Tm9uZSwNCj4gPiBMZW5ndGg9MCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fT3BIZWFk ZXIgPSBPcEhlYWRlcg0KPiA+DQo+ID4gKyAgICAgICAgaWYgT3BDb2RlICE9IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fX09wSGVhZGVyLk9wQ29kZSA9IE9wQ29kZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19PcEhlYWRlci5MZW5ndGggPSBnT3Bj b2RlU2l6ZXNTY29wZVRhYmxlWw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBPcENvZGVdLlNp emUgaWYgTGVuZ3RoID09IDAgZWxzZSBMZW5ndGgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9fT3BIZWFkZXIuU2NvcGUgPSAxIGlmICgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZ09w Y29kZVNpemVzU2NvcGVUYWJsZVtPcENvZGVdLlNjb3BlICsgZ1Njb3BlQ291bnQgPiAwKQ0KPiBl bHNlDQo+ID4gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0TGVuZ3RoKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19PcEhlYWRlci5MZW5ndGgNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFNjb3BlKHNlbGYsIFNjb3BlKToNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuX19PcEhlYWRlci5TY29wZSA9IFNjb3BlDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiBHZXRTY29wZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBz ZWxmLl9fT3BIZWFkZXIuU2NvcGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFVwZGF0 ZUhlYWRlcihzZWxmLCBIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX09wSGVhZGVy ID0gSGVhZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBJbmNMZW5ndGgoc2VsZiwg U2l6ZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fT3BIZWFkZXIuTGVuZ3RoICs9IFNpemUN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIERlY0xlbmd0aChzZWxmLCBTaXplKToNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuX19PcEhlYWRlci5MZW5ndGggLT0gU2l6ZQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0T3BDb2RlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIHNlbGYuX19PcEhlYWRlci5PcENvZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICtjbGFzcyBDSWZyU3RhdGVtZW50SGVhZGVyKCk6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzSGVhZGVyOiBFRklfSUZSX1NUQVRFTUVOVF9IRUFE RVIpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX3NIZWFkZXIgPSBzSGVhZGVyDQo+ID4NCj4g PiArICAgICAgICBzZWxmLl9fc0hlYWRlci5IZWxwID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLl9fc0hlYWRlci5Qcm9tcHQgPSBFRklfU1RSSU5HX0lEX0lO VkFMSUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldFN0YXRlbWVudEhlYWRlcihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLl9fc0hlYWRlcg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0UHJvbXB0KHNlbGYsIFByb21wdCk6DQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLl9fc0hlYWRlci5Qcm9tcHQgPSBQcm9tcHQNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIFNldEhlbHAoc2VsZiwgSGVscCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxm Ll9fc0hlYWRlci5IZWxwID0gSGVscA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g K2NsYXNzIENJZnJNaW5NYXhTdGVwRGF0YSgpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgX19pbml0X18oc2VsZiwgTWluTWF4U3RlcERhdGEsIE51bWVyaWNPcGNvZGU9RmFsc2UpOg0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhID0gTWluTWF4U3RlcERhdGEN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51NjQuTWluVmFsdWUgPSAw DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fTWluTWF4U3RlcERhdGEudTY0Lk1heFZhbHVlID0g MA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnU2NC5TdGVwID0gMA0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1ZhbHVlSXNTZXQgPSBGYWxzZQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5fX0lzTnVtZXJpYyA9IE51bWVyaWNPcGNvZGUNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuX19WYXJUeXBlID0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBTZXRNaW5NYXhTdGVwRGF0YShzZWxmLCBNaW5WYWx1ZSwgTWF4VmFs dWUsIFN0ZXAsIFZhclR5cGUpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1ZhclR5cGUgPSBW YXJUeXBlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLl9fVmFsdWVJc1Nl dCA9PSBGYWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBWYXJUeXBlID09IEVGSV9JRlJf VFlQRV9OVU1fU0laRV82NDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1h eFN0ZXBEYXRhLnU2NC5NaW5WYWx1ZSA9IE1pblZhbHVlDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51NjQuTWF4VmFsdWUgPSBNYXhWYWx1ZQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9fTWluTWF4U3RlcERhdGEudTY0LlN0ZXAgPSBTdGVw DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJ WkVfMzI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51 MzIuTWluVmFsdWUgPSBNaW5WYWx1ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9f TWluTWF4U3RlcERhdGEudTMyLk1heFZhbHVlID0gTWF4VmFsdWUNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUzMi5TdGVwID0gU3RlcA0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIFZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9fTWluTWF4U3RlcERhdGEudTE2Lk1pblZhbHVl ID0gTWluVmFsdWUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBE YXRhLnUxNi5NYXhWYWx1ZSA9IE1heFZhbHVlDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuX19NaW5NYXhTdGVwRGF0YS51MTYuU3RlcCA9IFN0ZXANCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBWYXJUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLl9fTWluTWF4U3RlcERhdGEudTguTWluVmFsdWUgPSBNaW5WYWx1ZQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9fTWluTWF4U3RlcERhdGEudTguTWF4VmFs dWUgPSBNYXhWYWx1ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9fTWluTWF4U3Rl cERhdGEudTguU3RlcCA9IFN0ZXANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fVmFsdWVJ c1NldCA9IFRydWUNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIGlmIE1pblZhbHVlIDwgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnU2NC5NaW5W YWx1ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0 YS51NjQuTWluVmFsdWUgPSBNaW5WYWx1ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBN YXhWYWx1ZSA+IHNlbGYuX19NaW5NYXhTdGVwRGF0YS51NjQuTWF4VmFsdWU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLl9fTWluTWF4U3RlcERhdGEudTY0Lk1heFZhbHVlID0g TWF4VmFsdWUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRh LnU2NC5TdGVwID0gU3RlcA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIFZhclR5cGUgPT0gRUZJ X0lGUl9UWVBFX05VTV9TSVpFXzMyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBNaW5W YWx1ZSA8IHNlbGYuX19NaW5NYXhTdGVwRGF0YS51MzIuTWluVmFsdWU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLl9fTWluTWF4U3RlcERhdGEudTMyLk1pblZhbHVlID0gTWlu VmFsdWUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgTWF4VmFsdWUgPiBzZWxmLl9fTWlu TWF4U3RlcERhdGEudTMyLk1heFZhbHVlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg c2VsZi5fX01pbk1heFN0ZXBEYXRhLnUzMi5NYXhWYWx1ZSA9IE1heFZhbHVlDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51MzIuU3RlcCA9IFN0ZXANCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBWYXJUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8x NjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgTWluVmFsdWUgPCBzZWxmLl9fTWluTWF4 U3RlcERhdGEudTE2Lk1pblZhbHVlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5fX01pbk1heFN0ZXBEYXRhLnUxNi5NaW5WYWx1ZSA9IE1pblZhbHVlDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIGlmIE1heFZhbHVlID4gc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUxNi5NYXhW YWx1ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0 YS51MTYuTWF4VmFsdWUgPSBNYXhWYWx1ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm Ll9fTWluTWF4U3RlcERhdGEudTE2LlN0ZXAgPSBTdGVwDQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfODoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgaWYgTWluVmFsdWUgPCBzZWxmLl9fTWluTWF4U3RlcERhdGEudTguTWluVmFsdWU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9fTWluTWF4U3RlcERhdGEudTgu TWluVmFsdWUgPSBNaW5WYWx1ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBNYXhWYWx1 ZSA+IHNlbGYuX19NaW5NYXhTdGVwRGF0YS51OC5NYXhWYWx1ZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51OC5NYXhWYWx1ZSA9IE1heFZhbHVl DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51OC5TdGVw ID0gU3RlcA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0VmFyVHlwZShzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLl9fVmFyVHlwZQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgSXNOdW1lcmljT3Bjb2RlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIHNlbGYuX19Jc051bWVyaWMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFVw ZGF0ZUNJZnJNaW5NYXhTdGVwRGF0YShzZWxmLCBNaW5NYXhTdGVwRGF0YSk6DQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLl9fTWluTWF4U3RlcERhdGEgPSBNaW5NYXhTdGVwRGF0YQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0TWluRGF0YShzZWxmLCBWYXJUeXBlLCBJc0JpdFZhcik6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBJc0JpdFZhcjoNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUzMi5NaW5WYWx1ZQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBWYXJUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51NjQuTWluVmFsdWUNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBWYXJUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51 MzIuTWluVmFsdWUNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBWYXJUeXBlID09IEVGSV9JRlJf VFlQRV9OVU1fU0laRV8xNjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu X19NaW5NYXhTdGVwRGF0YS51MTYuTWluVmFsdWUNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBW YXJUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5fX01pbk1heFN0ZXBEYXRhLnU4Lk1pblZhbHVlDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgR2V0TWF4RGF0YShzZWxmLCBWYXJUeXBlLCBJc0JpdFZhcik6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBpZiBJc0JpdFZhcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5fX01pbk1heFN0ZXBEYXRhLnUzMi5NYXhWYWx1ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBWYXJUeXBlID09IEVGSV9J RlJfVFlQRV9OVU1fU0laRV82NDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuX19NaW5NYXhTdGVwRGF0YS51NjQuTWF4VmFsdWUNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBWYXJUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51MzIuTWF4VmFsdWUNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBWYXJUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51 MTYuTWF4VmFsdWUNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBWYXJUeXBlID09IEVGSV9JRlJf VFlQRV9OVU1fU0laRV84Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5f X01pbk1heFN0ZXBEYXRhLnU4Lk1heFZhbHVlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0U3RlcERhdGEoc2Vs ZiwgVmFyVHlwZSwgSXNCaXRWYXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYg SXNCaXRWYXI6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19NaW5NYXhTdGVw RGF0YS51MzIuU3RlcA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBWYXJUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51 NjQuU3RlcA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIFZhclR5cGUgPT0gRUZJX0lGUl9UWVBF X05VTV9TSVpFXzMyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fX01p bk1heFN0ZXBEYXRhLnUzMi5TdGVwDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgVmFyVHlwZSA9 PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLl9fTWluTWF4U3RlcERhdGEudTE2LlN0ZXANCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBWYXJUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5fX01pbk1heFN0ZXBEYXRhLnU4LlN0ZXANCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArY2xhc3MgQ0lmckZvcm1TZXQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFNpemUpOg0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5fX0Zvcm1TZXQgPSBFRklfSUZSX0ZPUk1fU0VUKCkNCj4gPg0KPiA+ICsg ICAgICAgIENJZnJPYmouX19pbml0X18oc2VsZiwgc2VsZi5fX0Zvcm1TZXQsIEVGSV9JRlJfRk9S TV9TRVRfT1ApDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwg c2VsZi5fX0Zvcm1TZXQuSGVhZGVyLA0KPiA+IEVGSV9JRlJfRk9STV9TRVRfT1AsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSkNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuX19Gb3JtU2V0LkhlbHAgPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuX19Gb3JtU2V0LkZvcm1TZXRUaXRsZSA9IEVGSV9TVFJJTkdfSURfSU5WQUxJ RA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0Zvcm1TZXQuRmxhZ3MgPSAwDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLl9fRm9ybVNldC5HdWlkID0gRUZJX0dVSUQoMCwgMCwgMCwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdWlkQXJyYXkoMCwgMCwg MCwgMCwgMCwgMCwgMCwgMCkpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fQ2xhc3NHdWlkID0g W10NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldEd1aWQoc2VsZiwgR3VpZCk6DQo+ ID4NCj4gPiArICAgICAgICBzZWxmLl9fRm9ybVNldC5HdWlkID0gR3VpZA0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgR2V0R3VpZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBzZWxmLl9fRm9ybVNldC5HdWlkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRG b3JtU2V0VGl0bGUoc2VsZiwgRm9ybVNldFRpdGxlKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu X19Gb3JtU2V0LkZvcm1TZXRUaXRsZSA9IEZvcm1TZXRUaXRsZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgR2V0Rm9ybVNldFRpdGxlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIHNlbGYuX19Gb3JtU2V0LkZvcm1TZXRUaXRsZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgU2V0SGVscChzZWxmLCBIZWxwKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19Gb3Jt U2V0LkhlbHAgPSBIZWxwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRIZWxwKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19Gb3JtU2V0LkhlbHANCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldENsYXNzR3VpZChzZWxmLCBHdWlkKToNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuX19DbGFzc0d1aWQuYXBwZW5kKEd1aWQpDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLl9fRm9ybVNldC5GbGFncyArPSAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBHZXRDbGFzc0d1aWQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5f X0NsYXNzR3VpZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0RmxhZ3Moc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5fX0Zvcm1TZXQuRmxhZ3MNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gc2VsZi5fX0Zvcm1TZXQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtj bGFzcyBDSWZyT25lT2ZPcHRpb24oQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFNpemUpOg0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5fX09uZU9mT3B0aW9uID0gRUZJX0lGUl9PTkVfT0ZfT1BUSU9OKCkNCj4gPg0KPiA+ ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fT25lT2ZPcHRpb24u SGVhZGVyLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJf T05FX09GX09QVElPTl9PUCwgU2l6ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19PbmVPZk9w dGlvbi5GbGFncyA9IDANCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19PbmVPZk9wdGlvbi5PcHRp b24gPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19PbmVP Zk9wdGlvbi5UeXBlID0gRUZJX0lGUl9UWVBFX09USEVSDQo+ID4NCj4gPiArICAgICAgICBzZWxm Ll9fT25lT2ZPcHRpb24uVmFsdWUgPSBFRklfSUZSX1RZUEVfVkFMVUUoKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgU2V0T3B0aW9uKHNlbGYsIE9wdGlvbik6DQo+ID4NCj4gPiArICAg ICAgICBzZWxmLl9fT25lT2ZPcHRpb24uT3B0aW9uID0gT3B0aW9uDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiBTZXRUeXBlKHNlbGYsIFR5cGUpOg0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fX09uZU9mT3B0aW9uLlR5cGUgPSBUeXBlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBTZXRWYWx1ZShzZWxmLCBWYWx1ZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fT25lT2ZP cHRpb24uVmFsdWUgPSBWYWx1ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0Rmxh Z3Moc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5fX09uZU9mT3B0aW9uLkZs YWdzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRGbGFncyhzZWxmLCBMRmxhZ3Mp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdz ID0gMA0KPiA+DQo+ID4gKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVB UihMRmxhZ3MsDQo+ID4gRUZJX0lGUl9PUFRJT05fREVGQVVMVCkNCj4gPg0KPiA+ICsgICAgICAg IGlmIFJldDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3Mg fD0gRUZJX0lGUl9PUFRJT05fREVGQVVMVA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg TEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3MsDQo+ID4gRUZJX0lGUl9P UFRJT05fREVGQVVMVF9NRkcpDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXQ6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfT1BUSU9OX0RF RkFVTFRfTUZHDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBMRmxhZ3MgPT0gRUZJ X0lGUl9UWVBFX05VTV9TSVpFXzg6DQo+ID4NCj4gPiArICAgICAgICAgICAgTEZsYWdzID0gX0ZM QUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfOCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9UWVBFX05VTV9TSVpF XzgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJf VFlQRV9OVU1fU0laRV8xNjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19D TEVBUihMRmxhZ3MsIEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIExGbGFncyA9PSBFRklfSUZSX1RZ UEVfTlVNX1NJWkVfMzI6DQo+ID4NCj4gPiArICAgICAgICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xF QVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzIpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBF X05VTV9TSVpFXzY0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIExGbGFncyA9IF9GTEFHX0NMRUFS KExGbGFncywgRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX19PbmVPZk9wdGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9C T09MRUFOOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIExGbGFncyA9IF9GTEFHX0NMRUFSKExGbGFn cywgRUZJX0lGUl9UWVBFX0JPT0xFQU4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX09u ZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9CT09MRUFODQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBlbGlmIExGbGFncyA9PSBFRklfSUZSX1RZUEVfVElNRToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19DTEVBUihMRmxhZ3MsIEVGSV9JRlJfVFlQRV9U SU1FKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19PbmVPZk9wdGlvbi5GbGFncyB8PSBF RklfSUZSX1RZUEVfVElNRQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBMRmxh Z3MgPT0gRUZJX0lGUl9UWVBFX0RBVEU6DQo+ID4NCj4gPiArICAgICAgICAgICAgTEZsYWdzID0g X0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfREFURSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9UWVBFX0RBVEUNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9TVFJJ Tkc6DQo+ID4NCj4gPiArICAgICAgICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBF RklfSUZSX1RZUEVfU1RSSU5HKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19PbmVPZk9w dGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfU1RSSU5HDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBlbGlmIExGbGFncyA9PSBFRklfSUZSX1RZUEVfT1RIRVI6DQo+ID4NCj4gPiArICAg ICAgICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfT1RIRVIp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9J RlJfVFlQRV9PVEhFUg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTIGlmIExGbGFncyA9PSAwIGVsc2UNCj4gPiBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkxBR1NfVU5TVVBQT1JURUQNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2Vs Zi5fX09uZU9mT3B0aW9uDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3Mg Q0lmck9uZU9mT3B0aW9uMihDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgU2l6ZSwgTnVtcywgVmFsdWVUeXBlLCBWYWx1 ZUxpc3Q9W10pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uID0gUmVmaW5l X0VGSV9JRlJfT05FX09GX09QVElPTihOdW1zKQ0KPiA+DQo+ID4gKyAgICAgICAgSGVhZGVyID0g RUZJX0lGUl9PUF9IRUFERVIoKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5p dF9fKHNlbGYsIEhlYWRlciwgRUZJX0lGUl9PTkVfT0ZfT1BUSU9OX09QLA0KPiA+IFNpemUpDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uSGVhZGVyID0gSGVhZGVyDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgPSAwDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLl9fT25lT2ZPcHRpb24uT3B0aW9uID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uVHlwZSA9IEVGSV9JRlJfVFlQRV9P VEhFUg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1ZhbHVlVHlwZSA9IFZhbHVlVHlwZQ0KPiA+ DQo+ID4gKyAgICAgICAgaWYgVmFsdWVMaXN0ICE9IFtdOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IEFycmF5VHlwZSA9IEVGSV9JRlJfVFlQRV9WQUxVRSAqIE51bXMNCj4gPg0KPiA+ICsgICAgICAg ICAgICBWYWx1ZUFycmF5ID0gQXJyYXlUeXBlKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBmb3Ig aSBpbiByYW5nZSgwLCBsZW4oVmFsdWVMaXN0KSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IFZhbHVlQXJyYXlbaV0gPSBWYWx1ZUxpc3RbaV0NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9fT25lT2ZPcHRpb24uVmFsdWUgPSBWYWx1ZUFycmF5DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBTZXRPcHRpb24oc2VsZiwgT3B0aW9uKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu X19PbmVPZk9wdGlvbi5PcHRpb24gPSBPcHRpb24NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIFNldFR5cGUoc2VsZiwgVHlwZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fT25lT2ZP cHRpb24uVHlwZSA9IFR5cGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldFZhbHVl VHlwZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLl9fVmFsdWVUeXBlDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRWYWx1ZShzZWxmLCBWYWx1ZUxpc3QpOg0K PiA+DQo+ID4gKyAgICAgICAgQXJyYXlUeXBlID0gRUZJX0lGUl9UWVBFX1ZBTFVFICogKGxlbihW YWx1ZUxpc3QpKQ0KPiA+DQo+ID4gKyAgICAgICAgVmFsdWVBcnJheSA9IEFycmF5VHlwZSgpDQo+ ID4NCj4gPiArICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oVmFsdWVMaXN0KSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgVmFsdWVBcnJheVtpXSA9IFZhbHVlTGlzdFtpXQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLlZhbHVlID0gVmFsdWVBcnJheQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0RmxhZ3Moc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBTZXRGbGFncyhzZWxmLCBMRmxhZ3MpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzID0gMA0KPiA+DQo+ID4gKyAgICAgICAgTEZsYWdz LCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3MsDQo+ID4gRUZJX0lGUl9PUFRJT05f REVGQVVMVCkNCj4gPg0KPiA+ICsgICAgICAgIGlmIFJldDoNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9PUFRJT05fREVGQVVMVA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9D TEVBUihMRmxhZ3MsDQo+ID4gRUZJX0lGUl9PUFRJT05fREVGQVVMVF9NRkcpDQo+ID4NCj4gPiAr ICAgICAgICBpZiBSZXQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9u LkZsYWdzIHw9IEVGSV9JRlJfT1BUSU9OX0RFRkFVTFRfTUZHDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQo+ID4NCj4g PiArICAgICAgICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVf TlVNX1NJWkVfOCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxh Z3MgfD0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCj4gPg0KPiA+ICsg ICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19DTEVBUihMRmxhZ3MsIEVGSV9JRlJfVFlQRV9OVU1f U0laRV8xNikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3Mg fD0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBlbGlmIExGbGFncyA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQo+ID4NCj4gPiArICAg ICAgICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfTlVNX1NJ WkVfMzIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9 IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZWxpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgIExGbGFncyA9IF9GTEFHX0NMRUFSKExGbGFncywgRUZJX0lGUl9UWVBFX05VTV9TSVpF XzY0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19PbmVPZk9wdGlvbi5GbGFncyB8PSBF RklfSUZSX1RZUEVfTlVNX1NJWkVfNjQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVs aWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9CT09MRUFOOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IExGbGFncyA9IF9GTEFHX0NMRUFSKExGbGFncywgRUZJX0lGUl9UWVBFX0JPT0xFQU4pDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQ RV9CT09MRUFODQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIExGbGFncyA9PSBF RklfSUZSX1RZUEVfVElNRToNCj4gPg0KPiA+ICsgICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19D TEVBUihMRmxhZ3MsIEVGSV9JRlJfVFlQRV9USU1FKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuX19PbmVPZk9wdGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfVElNRQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZWxpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX0RBVEU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZ UEVfREFURSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3Mg fD0gRUZJX0lGUl9UWVBFX0RBVEUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYg TEZsYWdzID09IEVGSV9JRlJfVFlQRV9TVFJJTkc6DQo+ID4NCj4gPiArICAgICAgICAgICAgTEZs YWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfU1RSSU5HKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX19PbmVPZk9wdGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfU1RS SU5HDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIExGbGFncyA9PSBFRklfSUZS X1RZUEVfT1RIRVI6DQo+ID4NCj4gPiArICAgICAgICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIo TEZsYWdzLCBFRklfSUZSX1RZUEVfT1RIRVIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5f X09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9PVEhFUg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTIGlm IExGbGFncyA9PSAwIGVsc2UNCj4gPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkxBR1NfVU5T VVBQT1JURUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5fX09uZU9mT3B0aW9uDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmck9wdGlvbktleShDSWZyT2JqLCBDSWZyT3BI ZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgUXVl c3Rpb25JZCwgT3B0aW9uVmFsdWUsIEtleVZhbHVlKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuX19PcHRpb25LZXkgPSBFRklfSUZSX0dVSURfT1BUSU9OS0VZKCkNCj4gPg0K PiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fT3B0aW9uS2V5 LkhlYWRlciwNCj4gPiBFRklfSUZSX0dVSURfT1AsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY3R5cGVzLnNpemVvZihFRklfSUZSX0dVSURfT1BUSU9OS0VZKSkNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuX19PcHRpb25LZXkuRXh0ZW5kT3BDb2RlID0gRUZJX0lGUl9F WFRFTkRfT1BfT1BUSU9OS0VZDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fT3B0aW9uS2V5Lkd1 aWQgPSBFRklfSUZSX0ZSQU1FV09SS19HVUlEDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fT3B0 aW9uS2V5LlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9f T3B0aW9uS2V5Lk9wdGlvblZhbHVlID0gT3B0aW9uVmFsdWUNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuX19PcHRpb25LZXkuS2V5VmFsdWUgPSBLZXlWYWx1ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLl9f T3B0aW9uS2V5DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmckNs YXNzKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBfX2luaXRfXyhzZWxmLCApOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0NsYXNzID0gRUZJ X0lGUl9HVUlEX0NMQVNTKCkgICMgc3RhdGljIGd1aWQNCj4gPg0KPiA+ICsgICAgICAgIENJZnJP cEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fQ2xhc3MuSGVhZGVyLCBFRklfSUZSX0dVSURf T1AsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R5cGVzLnNpemVv ZihFRklfSUZSX0dVSURfQ0xBU1MpKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0NsYXNzLkV4 dGVuZE9wQ29kZSA9IEVGSV9JRlJfRVhURU5EX09QX0NMQVNTDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLl9fQ2xhc3MuR3VpZCA9IEVGSV9JRlJfVElBTk9fR1VJRA0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5fX0NsYXNzLkNsYXNzID0gRUZJX05PTl9ERVZJQ0VfQ0xBU1MNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIFNldENsYXNzKHNlbGYsIENsYXNzKToNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuX19DbGFzcy5DbGFzcyA9IENsYXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19DbGFzcw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJTdWJDbGFzcyhDSWZy T2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0 X18oc2VsZiwgKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19TdWJDbGFzcyA9IEVGSV9JRlJf R1VJRF9TVUJDTEFTUygpICAjIHN0YXRpYyBndWlkDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BI ZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1N1YkNsYXNzLkhlYWRlciwNCj4gRUZJX0lGUl9H VUlEX09QLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eXBlcy5z aXplb2YoRUZJX0lGUl9HVUlEX1NVQkNMQVNTKSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19T dWJDbGFzcy5FeHRlbmRPcENvZGUgPSBFRklfSUZSX0VYVEVORF9PUF9TVUJDTEFTUw0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5fX1N1YkNsYXNzLkd1aWQgPSBFRklfSUZSX1RJQU5PX0dVSUQNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuX19TdWJDbGFzcy5TdWJDbGFzcyA9IEVGSV9TRVRVUF9BUFBM SUNBVElPTl9TVUJDTEFTUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0U3ViQ2xh c3Moc2VsZiwgU3ViQ2xhc3MpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1N1YkNsYXNzLlN1 YkNsYXNzID0gU3ViQ2xhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8o c2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5fX1N1YkNsYXNzDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmckRlZmF1bHRTdG9yZShDSWZyT2Jq LCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18o c2VsZiwgKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19EZWZhdWx0U3RvcmUgPSBFRklfSUZS X0RFRkFVTFRTVE9SRSgpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18o c2VsZiwgc2VsZi5fX0RlZmF1bHRTdG9yZS5IZWFkZXIsDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRUZJX0lGUl9ERUZBVUxUU1RPUkVfT1ApDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLl9fRGVmYXVsdFN0b3JlLkRlZmF1bHROYW1lID0gRUZJX1NUUklOR19JRF9JTlZB TElEDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fRGVmYXVsdFN0b3JlLkRlZmF1bHRJZCA9IEVG SV9WQVJTVE9SRV9JRF9JTlZBTElEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRE ZWZhdWx0TmFtZShzZWxmLCBEZWZhdWx0TmFtZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9f RGVmYXVsdFN0b3JlLkRlZmF1bHROYW1lID0gRGVmYXVsdE5hbWUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIFNldERlZmF1bHRJZChzZWxmLCBEZWZhdWx0SWQpOg0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5fX0RlZmF1bHRTdG9yZS5EZWZhdWx0SWQgPSBEZWZhdWx0SWQNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldERlZmF1bHRTdG9yZShzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgIHJldHVybiBzZWxmLl9fRGVmYXVsdFN0b3JlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBTZXREZWZhdWx0U3RvcmUoc2VsZiwgRGVmYXVsdFN0b3JlOiBFRklfSUZSX0RFRkFV TFRTVE9SRSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fRGVmYXVsdFN0b3JlID0gRGVmYXVs dFN0b3JlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19EZWZhdWx0U3RvcmUNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyVmFyU3RvcmUoQ0lmck9iaiwgQ0lmck9wSGVh ZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsICk6DQo+ ID4NCj4gPiArICAgICAgICBzZWxmLl9fVmFyc3RvcmUgPSBFRklfSUZSX1ZBUlNUT1JFKCkNCj4g Pg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fVmFyc3Rv cmUuSGVhZGVyLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9J RlJfVkFSU1RPUkVfT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fVmFyc3RvcmUuVmFyU3Rv cmVJZCA9IEVGSV9WQVJTVE9SRV9JRF9JTlZBTElEDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9f VmFyc3RvcmUuU2l6ZSA9IDANCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19WYXJzdG9yZS5OYW1l ID0gJycNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldEd1aWQoc2VsZiwgR3VpZCk6 DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fVmFyc3RvcmUuR3VpZCA9IEd1aWQNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFNpemUoc2VsZiwgU2l6ZSk6DQo+ID4NCj4gPiArICAg ICAgICBzZWxmLl9fVmFyc3RvcmUuU2l6ZSA9IFNpemUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIFNldFZhclN0b3JlSWQoc2VsZiwgVmFyU3RvcmVJZCk6DQo+ID4NCj4gPiArICAgICAg ICBzZWxmLl9fVmFyc3RvcmUuVmFyU3RvcmVJZCA9IFZhclN0b3JlSWQNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIFNldE5hbWUoc2VsZiwgTmFtZSk6DQo+ID4NCj4gPiArICAgICAgICBz ZWxmLl9fVmFyc3RvcmUuTmFtZSA9IE5hbWUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5fX1ZhcnN0b3Jl DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmclZhclN0b3JlRWZp KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBf X2luaXRfXyhzZWxmLCApOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1ZhclN0b3JlRWZpID0g RUZJX0lGUl9WQVJTVE9SRV9FRkkoKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9f aW5pdF9fKHNlbGYsIHNlbGYuX19WYXJTdG9yZUVmaS5IZWFkZXIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9WQVJTVE9SRV9FRklfT1ApDQo+ID4NCj4g PiArICAgICAgICBzZWxmLl9fVmFyU3RvcmVFZmkuVmFyU3RvcmVJZCA9IEVGSV9WQVJPRkZTRVRf SU5WQUxJRA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1ZhclN0b3JlRWZpLlNpemUgPSAwDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLl9fVmFyU3RvcmVFZmkuTmFtZSA9ICcnDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBTZXRHdWlkKHNlbGYsIEd1aWQpOg0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5fX1ZhclN0b3JlRWZpLkd1aWQgPSBHdWlkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBTZXRTaXplKHNlbGYsIFNpemUpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1Zh clN0b3JlRWZpLlNpemUgPSBTaXplDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRW YXJTdG9yZUlkKHNlbGYsIFZhclN0b3JlSWQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1Zh clN0b3JlRWZpLlZhclN0b3JlSWQgPSBWYXJTdG9yZUlkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBTZXROYW1lKHNlbGYsIE5hbWUpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1Zh clN0b3JlRWZpLk5hbWUgPSBOYW1lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRB dHRyaWJ1dGVzKHNlbGYsIEF0dHJpYnV0ZXMpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1Zh clN0b3JlRWZpLkF0dHJpYnV0ZXMgPSBBdHRyaWJ1dGVzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19W YXJTdG9yZUVmaQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJW YXJTdG9yZU5hbWVWYWx1ZShDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9f VmFyU3RvcmVOYW1lVmFsdWUgPSBFRklfSUZSX1ZBUlNUT1JFX05BTUVfVkFMVUUoKQ0KPiA+DQo+ ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19WYXJTdG9yZU5h bWVWYWx1ZS5IZWFkZXIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RUZJX0lGUl9WQVJTVE9SRV9OQU1FX1ZBTFVFX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5f X1ZhclN0b3JlTmFtZVZhbHVlLlZhclN0b3JlSWQgPSBFRklfVkFST0ZGU0VUX0lOVkFMSUQNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldEd1aWQoc2VsZiwgR3VpZCk6DQo+ID4NCj4g PiArICAgICAgICBzZWxmLl9fVmFyU3RvcmVOYW1lVmFsdWUuR3VpZCA9IEd1aWQNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFZhclN0b3JlSWQoc2VsZiwgVmFyU3RvcmVJZCk6DQo+ ID4NCj4gPiArICAgICAgICBzZWxmLl9fVmFyU3RvcmVOYW1lVmFsdWUuVmFyU3RvcmVJZCA9IFZh clN0b3JlSWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5fX1ZhclN0b3JlTmFtZVZhbHVlDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArRUZJX0JJVFNfUEVSX1VJTlQzMiA9IDEgPDwgRUZJ X0JJVFNfU0hJRlRfUEVSX1VJTlQzMg0KPiA+DQo+ID4gK0VGSV9GT1JNX0lEX01BWCA9IDB4RkZG Rg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK0VGSV9GUkVFX0ZPUk1fSURfQklUTUFQX1NJWkUgPSBp bnQoKEVGSV9GT1JNX0lEX01BWCArIDEpIC8NCj4gPiBFRklfQklUU19QRVJfVUlOVDMyKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJGb3JtSWQoKToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgRm9ybUlkQml0TWFwID0gW10NCj4gPg0KPiA+ICsgICAgZm9y IGkgaW4gcmFuZ2UoMCwgRUZJX0ZSRUVfRk9STV9JRF9CSVRNQVBfU0laRSk6DQo+ID4NCj4gPiAr ICAgICAgICBGb3JtSWRCaXRNYXAuYXBwZW5kKDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IEBjbGFzc21ldGhvZA0KPiA+DQo+ID4gKyAgICBkZWYgQ2hlY2tGb3JtSWRGcmVlKGNscywgRm9y bUlkKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIEluZGV4ID0gaW50KEZvcm1JZCAv IEVGSV9CSVRTX1BFUl9VSU5UMzIpDQo+ID4NCj4gPiArICAgICAgICBPZmZzZXQgPSBGb3JtSWQg JSBFRklfQklUU19QRVJfVUlOVDMyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gKGNscy5Gb3JtSWRCaXRNYXBbSW5kZXhdICYgKDB4ODAwMDAwMDAgPj4gT2Zmc2V0KSkgPT0g MA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBAY2xhc3NtZXRob2QNCj4gPg0KPiA+ICsgICAg ZGVmIE1hcmtGb3JtSWRVc2VkKGNscywgRm9ybUlkKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIEluZGV4ID0gaW50KEZvcm1JZCAvIEVGSV9CSVRTX1BFUl9VSU5UMzIpDQo+ID4NCj4g PiArICAgICAgICBPZmZzZXQgPSBGb3JtSWQgJSBFRklfQklUU19QRVJfVUlOVDMyDQo+ID4NCj4g PiArICAgICAgICBjbHMuRm9ybUlkQml0TWFwW0luZGV4XSB8PSAoMHg4MDAwMDAwMCA+PiBPZmZz ZXQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmckZvcm0oQ0lm ck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5p dF9fKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0Zvcm0gPSBFRklfSUZSX0ZPUk0o KQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19G b3JtLkhlYWRlciwgRUZJX0lGUl9GT1JNX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0Zv cm0uRm9ybUlkID0gMA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0Zvcm0uRm9ybVRpdGxlID0g RUZJX1NUUklOR19JRF9JTlZBTElEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRG b3JtSWQoc2VsZiwgRm9ybUlkKToNCj4gPg0KPiA+ICsgICAgICAgICMgRm9ybUlkIGNhbid0IGJl IDAuDQo+ID4NCj4gPiArICAgICAgICBpZiBGb3JtSWQgPT0gMDoNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSDQo+ ID4NCj4gPiArICAgICAgICBpZiBDSWZyRm9ybUlkLkNoZWNrRm9ybUlkRnJlZShGb3JtSWQpID09 IEZhbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fRk9STUlEX1JFREVGSU5FRA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0Zvcm0uRm9y bUlkID0gRm9ybUlkDQo+ID4NCj4gPiArICAgICAgICBDSWZyRm9ybUlkLk1hcmtGb3JtSWRVc2Vk KEZvcm1JZCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fU1VDQ0VTUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0Rm9ybVRpdGxlKHNl bGYsIEZvcm1UaXRsZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fRm9ybS5Gb3JtVGl0bGUg PSBGb3JtVGl0bGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5fX0Zvcm0NCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyRm9ybU1hcChDSWZyT2JqLCBDSWZyT3BIZWFkZXIp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+ID4NCj4g PiArICAgICAgICBzZWxmLl9fRm9ybU1hcCA9IEVGSV9JRlJfRk9STV9NQVAoKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5fX01ldGhvZE1hcExpc3QgPSBbXSAgIyBFRklfSUZSX0ZPUk1fTUFQX01F VEhPRCgpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2Vs Zi5fX0Zvcm1NYXAuSGVhZGVyLA0KPiA+IEVGSV9JRlJfRk9STV9NQVBfT1ApDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLl9fRm9ybU1hcC5Gb3JtSWQgPSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBTZXRGb3JtSWQoc2VsZiwgRm9ybUlkKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIEZv cm1JZCA9PSAwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGlmIENJZnJGb3JtSWQuQ2hlY2tGb3JtSWRGcmVlKEZvcm1JZCkgPT0gRmFsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GT1JNSURfUkVE RUZJTkVEDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fRm9ybU1hcC5Gb3JtSWQgPSBGb3JtSWQN Cj4gPg0KPiA+ICsgICAgICAgIENJZnJGb3JtSWQuTWFya0Zvcm1JZFVzZWQoRm9ybUlkKQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRGb3JtTWFwTWV0aG9kKHNlbGYsIE1ldGhv ZFRpdGxlLCBNZXRob2RHdWlkOiBFRklfR1VJRCk6DQo+ID4NCj4gPiArICAgICAgICBNZXRob2RN YXAgPSBFRklfSUZSX0ZPUk1fTUFQX01FVEhPRCgpDQo+ID4NCj4gPiArICAgICAgICBNZXRob2RN YXAuTWV0aG9kVGl0bGUgPSBNZXRob2RUaXRsZQ0KPiA+DQo+ID4gKyAgICAgICAgTWV0aG9kTWFw Lk1ldGhvZElkZW50aWZpZXIgPSBNZXRob2RHdWlkDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9f TWV0aG9kTWFwTGlzdC5hcHBlbmQoTWV0aG9kTWFwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLl9fRm9y bU1hcCwgc2VsZi5fX01ldGhvZE1hcExpc3QNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICtjbGFzcyBDSWZyRW5kKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCApOg0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fX0VuZCA9IEVGSV9JRlJfRU5EKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5f X2luaXRfXyhzZWxmLCBzZWxmLl9fRW5kLkhlYWRlciwgRUZJX0lGUl9FTkRfT1ApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmckJhbm5lcihDSWZyT2JqLCBDSWZy T3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwg KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19CYW5uZXIgPSBFRklfSUZSX0dVSURfQkFOTkVS KCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9f QmFubmVyLkhlYWRlciwNCj4gRUZJX0lGUl9HVUlEX09QLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGN0eXBlcy5zaXplb2YoRUZJX0lGUl9HVUlEX0JBTk5FUikpDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLl9fQmFubmVyLkV4dGVuZE9wQ29kZSA9IEVGSV9JRlJfRVhU RU5EX09QX0JBTk5FUg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0Jhbm5lci5HdWlkID0gRUZJ X0lGUl9USUFOT19HVUlEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRUaXRsZShz ZWxmLCBTdHJpbmdJZCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fQmFubmVyLlRpdGxlID0g U3RyaW5nSWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldExpbmUoc2VsZiwgTGlu ZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fQmFubmVyLkxpbmVOdW1iZXIgPSBMaW5lDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRBbGlnbihzZWxmLCBBbGlnbik6DQo+ID4N Cj4gPiArICAgICAgICBzZWxmLl9fQmFubmVyLkFsaWdubWVudCA9IEFsaWduDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIHNlbGYuX19CYW5uZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFz cyBDSWZyVGltZW91dChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgVGltZW91dD0wKToNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuX19UaW1lb3V0ID0gRUZJX0lGUl9HVUlEX1RJTUVPVVQoKQ0KPiA+DQo+ID4gKyAgICAg ICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19UaW1lb3V0LkhlYWRlciwNCj4g RUZJX0lGUl9HVUlEX09QLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGN0eXBlcy5zaXplb2YoRUZJX0lGUl9HVUlEX1RJTUVPVVQpKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5fX1RpbWVvdXQuRXh0ZW5kT3BDb2RlID0gRUZJX0lGUl9FWFRFTkRfT1BfVElNRU9VVA0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1RpbWVvdXQuR3VpZCA9IEVGSV9JRlJfVElBTk9fR1VJ RA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1RpbWVvdXQuVGltZU91dCA9IFRpbWVvdXQNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFRpbWVvdXQoc2VsZiwgVGltZW91dCk6DQo+ ID4NCj4gPiArICAgICAgICBzZWxmLl9fVGltZW91dC5UaW1lT3V0ID0gVGltZW91dA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBzZWxmLl9fVGltZW91dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g K2NsYXNzIENJZnJMYWJlbChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu X19MYWJlbCA9IEVGSV9JRlJfR1VJRF9MQUJFTCgpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BI ZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0xhYmVsLkhlYWRlciwgRUZJX0lGUl9HVUlEX09Q LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eXBlcy5zaXplb2Yo RUZJX0lGUl9HVUlEX0xBQkVMKSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19MYWJlbC5FeHRl bmRPcENvZGUgPSBFRklfSUZSX0VYVEVORF9PUF9MQUJFTA0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fX0xhYmVsLkd1aWQgPSBFRklfSUZSX1RJQU5PX0dVSUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIFNldE51bWJlcihzZWxmLCBOdW1iZXIpOg0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fX0xhYmVsLk51bWJlciA9IE51bWJlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYg R2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLl9fTGFiZWwNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyUnVsZShDSWZyT2JqLCBD SWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19SdWxlID0gRUZJX0lGUl9SVUxFKCkNCj4g Pg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUnVsZS5I ZWFkZXIsIEVGSV9JRlJfUlVMRV9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19SdWxlLlJ1 bGVJZCA9IEVGSV9SVUxFX0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IFNldFJ1bGVJZChzZWxmLCBSdWxlSWQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1J1bGUu UnVsZUlkID0gUnVsZUlkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19SdWxlDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArZGVmIF9GTEFHX1RFU1RfQU5EX0NMRUFSKEZsYWdzLCBNYXNr KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgUmV0ID0gRmxhZ3MgJiBNYXNrDQo+ID4NCj4g PiArICAgIEZsYWdzICY9ICh+TWFzaykNCj4gPg0KPiA+ICsgICAgcmV0dXJuIEZsYWdzLCBSZXQN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtkZWYgX0ZMQUdfQ0xFQVIoRmxhZ3Ms IE1hc2spOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBGbGFncyAmPSAofk1hc2spDQo+ID4N Cj4gPiArICAgIHJldHVybiBGbGFncw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g K2NsYXNzIENJZnJTdWJ0aXRsZShDSWZyT2JqLCBDSWZyT3BIZWFkZXIsIENJZnJTdGF0ZW1lbnRI ZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgKToN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19TdWJ0aXRsZSA9IEVGSV9JRlJfU1VCVElUTEUoKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYs IHNlbGYuX19TdWJ0aXRsZS5IZWFkZXIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRUZJX0lGUl9TVUJUSVRMRV9PUCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJTdGF0 ZW1lbnRIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1N1YnRpdGxlLlN0YXRlbWVudCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19TdWJ0aXRsZS5GbGFncyA9IDANCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldEZsYWdzKHNlbGYsIEZsYWdzKToNCj4gPg0K PiA+ICsgICAgICAgIEZsYWdzLCBSZXN1bHQgPSBfRkxBR19URVNUX0FORF9DTEVBUihGbGFncywN Cj4gPiBFRklfSUZSX0ZMQUdTX0hPUklaT05UQUwpDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXN1 bHQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX1N1YnRpdGxlLkZsYWdzIHw9IEVGSV9J RlJfRkxBR1NfSE9SSVpPTlRBTA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTIGlmIEZsYWdzID09IDAgZWxzZQ0KPiA+ IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GTEFHU19VTlNVUFBPUlRFRA0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBzZWxmLl9fU3VidGl0bGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFz cyBDSWZySW1hZ2UoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsICk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fSW1h Z2UgPSBFRklfSUZSX0lNQUdFKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2lu aXRfXyhzZWxmLCBzZWxmLl9fSW1hZ2UuSGVhZGVyLA0KPiBFRklfSUZSX0lNQUdFX09QKQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5fX0ltYWdlLklkID0gRUZJX0lNQUdFX0lEX0lOVkFMSUQNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldEltYWdlSWQoc2VsZiwgSW1hZ2VJZCk6DQo+ ID4NCj4gPiArICAgICAgICBzZWxmLl9fSW1hZ2UuSWQgPSBJbWFnZUlkDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IHNlbGYuX19JbWFnZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJ ZnJMb2NrZWQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIF9faW5pdF9fKHNlbGYsICk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fTG9jayA9 IEVGSV9JRlJfTE9DS0VEKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRf XyhzZWxmLCBzZWxmLl9fTG9jay5IZWFkZXIsIEVGSV9JRlJfTE9DS0VEX09QKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJNb2RhbChDSWZyT2JqLCBDSWZyT3BI ZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgKToN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19Nb2RhbCA9IEVGSV9JRlJfTU9EQUxfVEFHKCkNCj4g Pg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fTW9kYWwu SGVhZGVyLA0KPiA+IEVGSV9JRlJfTU9EQUxfVEFHX09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK0VGSV9JRlJfUVVFU1RJT05fRkxBR19ERUZBVUxUID0gMA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJRdWVzdGlvbkhlYWRlcihDSWZyU3Rh dGVtZW50SGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNl bGYsIHFIZWFkZXIsIEZsYWdzPUVGSV9JRlJfUVVFU1RJT05fRkxBR19ERUZBVUxUKToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19xSGVhZGVyID0gcUhlYWRlcg0KPiA+DQo+ ID4gKyAgICAgICAgQ0lmclN0YXRlbWVudEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fcUhl YWRlci5IZWFkZXIpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fcUhlYWRlci5RdWVzdGlvbklk ID0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19xSGVh ZGVyLlZhclN0b3JlSWQgPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRA0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5fX3FIZWFkZXIuVmFyU3RvcmVJbmZvLlZhck5hbWUgPSBFRklfU1RSSU5HX0lEX0lO VkFMSUQNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19xSGVhZGVyLlZhclN0b3JlSW5mby5WYXJP ZmZzZXQgPSBFRklfVkFST0ZGU0VUX0lOVkFMSUQNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19x SGVhZGVyLkZsYWdzID0gRmxhZ3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldFF1 ZXN0aW9uSWQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5fX3FIZWFkZXIu UXVlc3Rpb25JZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0UXVlc3Rpb25JZChz ZWxmLCBRdWVzdGlvbklkKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19x SGVhZGVyLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBHZXRWYXJTdG9yZUlkKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYu X19xSGVhZGVyLlZhclN0b3JlSWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFZh clN0b3JlSW5mbyhzZWxmLCBCYXNlSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLl9fcUhlYWRlci5WYXJTdG9yZUlkID0gQmFzZUluZm8uVmFyU3RvcmVJZA0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5fX3FIZWFkZXIuVmFyU3RvcmVJbmZvLlZhck5hbWUgPSBCYXNlSW5m by5JbmZvLlZhck5hbWUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19xSGVhZGVyLlZhclN0b3Jl SW5mby5WYXJPZmZzZXQgPSBCYXNlSW5mby5JbmZvLlZhck9mZnNldA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgR2V0VmFyU3RvcmVJbmZvKHNlbGYsIEluZm8pOiAgIyBCdWcNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIEluZm8uVmFyU3RvcmVJZCA9IHNlbGYuX19xSGVhZGVy LlZhclN0b3JlSWQNCj4gPg0KPiA+ICsgICAgICAgIEluZm8uVmFyU3RvcmVJbmZvID0gc2VsZi5f X3FIZWFkZXIuVmFyU3RvcmVJbmZvDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gSW5mbw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0RmxhZ3Moc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICByZXR1cm4gc2VsZi5fX3FIZWFkZXIuRmxhZ3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIFNldEZsYWdzKHNlbGYsIEZsYWdzKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihGbGFncywNCj4gPiBFRklfSUZS X0ZMQUdfUkVBRF9PTkxZKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0Og0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX19xSGVhZGVyLkZsYWdzIHw9IEVGSV9JRlJfRkxBR19SRUFEX09OTFkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIEZsYWdzID0gX0ZMQUdfQ0xFQVIoRmxhZ3Ms IDB4MDIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBGbGFncywgUmV0ID0gX0ZMQUdf VEVTVF9BTkRfQ0xFQVIoRmxhZ3MsIEVGSV9JRlJfRkxBR19DQUxMQkFDSykNCj4gPg0KPiA+ICsg ICAgICAgIGlmIFJldDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fcUhlYWRlci5GbGFn cyB8PSBFRklfSUZSX0ZMQUdfQ0FMTEJBQ0sNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg ICMgaWdub3JlIE5WQWNjZXNzRmxhZw0KPiA+DQo+ID4gKyAgICAgICAgRmxhZ3MgPSBfRkxBR19D TEVBUihGbGFncywgMHgwOCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIEZsYWdzLCBS ZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihGbGFncywNCj4gPiBFRklfSUZSX0ZMQUdfUkVTRVRf UkVRVUlSRUQpDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXQ6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fX3FIZWFkZXIuRmxhZ3MgfD0gRUZJX0lGUl9GTEFHX1JFU0VUX1JFUVVJUkVEDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRf Q0xFQVIoRmxhZ3MsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRUZJX0lGUl9GTEFHX1JFQ09OTkVDVF9SRVFVSVJFRCkNCj4gPg0KPiA+ICsgICAg ICAgIGlmIFJldDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fcUhlYWRlci5GbGFncyB8 PSBFRklfSUZSX0ZMQUdfUkVDT05ORUNUX1JFUVVJUkVEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICAjIFNldCBMYXRlQ2hlY2sgRmxhZyB0byBjb21wYXRpYmxlIGZvciBmcmFtZXdvcmsg ZmxhZw0KPiA+DQo+ID4gKyAgICAgICAgIyBidXQgaXQgdXNlcyAweDIwIGFzIGl0cyBmbGFnLCBp ZiBpbiB0aGUgZnV0dXJlIFVFRkkgbWF5IHRha2UgdGhpcyBmbGFnDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoRmxhZ3MsIDB4 MjApDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fX3FIZWFkZXIuRmxhZ3MgfD0gMHgyMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg RmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKEZsYWdzLA0KPiA+IEVGSV9JRlJfRkxB R19PUFRJT05TX09OTFkpDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXQ6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fX3FIZWFkZXIuRmxhZ3MgfD0gRUZJX0lGUl9GTEFHX09QVElPTlNfT05M WQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9TVUNDRVNTIGlmIEZsYWdzID09IDAgZWxzZQ0KPiA+IFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9GTEFHU19VTlNVUFBPUlRFRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYg VXBkYXRlQ0lmclF1ZXN0aW9uSGVhZGVyKHNlbGYsIHFIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5fX3FIZWFkZXIgPSBxSGVhZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArY2xhc3MgQ0lmclJlZihDSWZyT2JqLCBDSWZyT3BIZWFkZXIsIENJZnJRdWVzdGlvbkhl YWRlcik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCApOg0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1JlZiA9IEVGSV9JRlJfUkVGKCkNCj4gPg0KPiA+ICsg ICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUmVmLkhlYWRlciwgRUZJ X0lGUl9SRUZfT1ApDQo+ID4NCj4gPiArICAgICAgICBDSWZyUXVlc3Rpb25IZWFkZXIuX19pbml0 X18oc2VsZiwgc2VsZi5fX1JlZi5RdWVzdGlvbikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19S ZWYuRm9ybUlkID0gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0Rm9ybUlkKHNl bGYsIEZvcm1JZCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fUmVmLkZvcm1JZCA9IEZvcm1J ZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBzZWxmLl9fUmVmDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArY2xhc3MgQ0lmclJlZjIoQ0lmck9iaiwgQ0lmck9wSGVhZGVyLCBDSWZyUXVlc3Rpb25I ZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgKToN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19SZWYyID0gRUZJX0lGUl9SRUYyKCkNCj4gPg0KPiA+ ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUmVmMi5IZWFkZXIs IEVGSV9JRlJfUkVGX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVyLl9f aW5pdF9fKHNlbGYsIHNlbGYuX19SZWYyLlF1ZXN0aW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fX1JlZjIuRm9ybUlkID0gMA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1JlZjIuUXVlc3Rp b25JZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBTZXRGb3JtSWQoc2VsZiwgRm9ybUlkKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19S ZWYyLkZvcm1JZCA9IEZvcm1JZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0UXVl c3Rpb25JZChzZWxmLCBRdWVzdGlvbklkKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuX19SZWYyLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYu X19SZWYyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmclJlZjMo Q0lmck9iaiwgQ0lmck9wSGVhZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgKToNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuX19SZWYzID0gRUZJX0lGUl9SRUYzKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRl ci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUmVmMy5IZWFkZXIsIEVGSV9JRlJfUkVGX09QKQ0KPiA+ DQo+ID4gKyAgICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19S ZWYzLlF1ZXN0aW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1JlZjMuRm9ybUlkID0gMA0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1JlZjMuUXVlc3Rpb25JZCA9IEVGSV9RVUVTVElPTl9J RF9JTlZBTElEDQo+ID4NCj4gPiArICAgICAgICBFRklfSUZSX0RFRkFVTFRfR1VJRCA9IEVGSV9H VUlEKDAsIDAsIDAsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEd1aWRBcnJheSgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSkNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuX19SZWYzLkZvcm1TZXRJZCA9IEVGSV9JRlJfREVGQVVMVF9HVUlEDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRGb3JtSWQoc2VsZiwgRm9ybUlkKToNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuX19SZWYzLkZvcm1JZCA9IEZvcm1JZA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgU2V0UXVlc3Rpb25JZChzZWxmLCBRdWVzdGlvbklkKToNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19SZWYzLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRGb3JtU2V0SWQoc2VsZiwgRm9ybVNldElk KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19SZWYzLkZvcm1TZXRJZCA9IEZvcm1TZXRJZA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgIHJldHVybiBzZWxmLl9fUmVmMw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gK2NsYXNzIENJZnJSZWY0KENJZnJPYmosIENJZnJPcEhlYWRlciwgQ0lmclF1ZXN0aW9uSGVh ZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsICk6DQo+ ID4NCj4gPiArICAgICAgICBzZWxmLl9fUmVmNCA9IEVGSV9JRlJfUkVGNCgpDQo+ID4NCj4gPiAr ICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1JlZjQuSGVhZGVyLCBF RklfSUZSX1JFRl9PUCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJRdWVzdGlvbkhlYWRlci5fX2lu aXRfXyhzZWxmLCBzZWxmLl9fUmVmNC5RdWVzdGlvbikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu X19SZWY0LkZvcm1JZCA9IDANCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19SZWY0LlF1ZXN0aW9u SWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KPiA+DQo+ID4gKyAgICAgICAgRUZJX0lGUl9E RUZBVUxUX0dVSUQgPSBFRklfR1VJRCgwLCAwLCAwLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHdWlkQXJyYXkoMCwgMCwgMCwgMCwgMCwgMCwgMCwg MCkpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fUmVmNC5Gb3JtU2V0SWQgPSBFRklfSUZSX0RF RkFVTFRfR1VJRA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1JlZjQuRGV2aWNlUGF0aCA9IEVG SV9TVFJJTkdfSURfSU5WQUxJRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0Rm9y bUlkKHNlbGYsIEZvcm1JZCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fUmVmNC5Gb3JtSWQg PSBGb3JtSWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFF1ZXN0aW9uSWQoc2Vs ZiwgUXVlc3Rpb25JZCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fUmVm NC5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYg U2V0Rm9ybVNldElkKHNlbGYsIEZvcm1TZXRJZCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9f UmVmNC5Gb3JtU2V0SWQgPSBGb3JtU2V0SWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IFNldERldmljZVBhdGgoc2VsZiwgRGV2aWNlUGF0aCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxm Ll9fUmVmNC5EZXZpY2VQYXRoID0gRGV2aWNlUGF0aA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLl9fUmVm NA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJSZWY1KENJZnJP YmosIENJZnJPcEhlYWRlciwgQ0lmclF1ZXN0aW9uSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsICk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9f UmVmNSA9IEVGSV9JRlJfUkVGNSgpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19p bml0X18oc2VsZiwgc2VsZi5fX1JlZjUuSGVhZGVyLCBFRklfSUZSX1JFRl9PUCkNCj4gPg0KPiA+ ICsgICAgICAgIENJZnJRdWVzdGlvbkhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUmVmNS5R dWVzdGlvbikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5fX1JlZjUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyQWN0aW9uKENJZnJPYmosIENJZnJPcEhlYWRlciwgQ0lm clF1ZXN0aW9uSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9f KHNlbGYsICk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fQWN0aW9uID0gRUZJX0lGUl9BQ1RJ T04oKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYu X19BY3Rpb24uSGVhZGVyLA0KPiBFRklfSUZSX0FDVElPTl9PUCkNCj4gPg0KPiA+ICsgICAgICAg IENJZnJRdWVzdGlvbkhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fQWN0aW9uLlF1ZXN0aW9u KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0FjdGlvbi5RdWVzdGlvbkNvbmZpZyA9IEVGSV9T VFJJTkdfSURfSU5WQUxJRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0UXVlc3Rp b25Db25maWcoc2VsZiwgUXVlc3Rpb25Db25maWcpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5f X0FjdGlvbi5RdWVzdGlvbkNvbmZpZyA9IFF1ZXN0aW9uQ29uZmlnDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNl bGYuX19BY3Rpb24NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZy VGV4dChDSWZyT2JqLCBDSWZyT3BIZWFkZXIsIENJZnJTdGF0ZW1lbnRIZWFkZXIpOg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgKToNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuX19UZXh0ID0gRUZJX0lGUl9URVhUKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJP cEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fVGV4dC5IZWFkZXIsIEVGSV9JRlJfVEVYVF9P UCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJTdGF0ZW1lbnRIZWFkZXIuX19pbml0X18oc2VsZiwg c2VsZi5fX1RleHQuU3RhdGVtZW50KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1RleHQuVGV4 dFR3byA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgU2V0VGV4dFR3byhzZWxmLCBTdHJpbmdJZCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9f VGV4dC5UZXh0VHdvID0gU3RyaW5nSWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdl dEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5fX1RleHQNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyR3VpZChDSWZyT2JqLCBDSWZy T3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwg U2l6ZSwgRGF0YWJ1ZmY9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fR3VpZCA9IEVG SV9JRlJfR1VJRCgpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fRGF0YSA9IERhdGFidWZmDQo+ ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0d1aWQu SGVhZGVyLCBFRklfSUZSX0dVSURfT1AsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY3R5cGVzLnNpemVvZihFRklfSUZSX0dVSUQpICsgU2l6ZSkNCj4gPg0KPiA+ICsg ICAgICAgIEVGSV9JRlJfREVGQVVMVF9HVUlEID0gRUZJX0dVSUQoMCwgMCwgMCwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3VpZEFycmF5KDAsIDAs IDAsIDAsIDAsIDAsIDAsIDApKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0d1aWQuR3VpZCA9 IEVGSV9JRlJfREVGQVVMVF9HVUlEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRH dWlkKHNlbGYsIEd1aWQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0d1aWQuR3VpZCA9IEd1 aWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldERhdGEoc2VsZiwgRGF0YWJ1ZmYp Og0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0RhdGEgPSBEYXRhYnVmZg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBzZWxmLl9fR3VpZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJ ZnJPcmRlcmVkTGlzdChDSWZyT2JqLCBDSWZyT3BIZWFkZXIsIENJZnJRdWVzdGlvbkhlYWRlcik6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuX19PcmRlcmVkTGlzdCA9IEVGSV9JRlJfT1JERVJFRF9MSVNUKCkNCj4g Pg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fT3JkZXJl ZExpc3QuSGVhZGVyLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVG SV9JRlJfT1JERVJFRF9MSVNUX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmclF1ZXN0aW9uSGVh ZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19PcmRlcmVkTGlzdC5RdWVzdGlvbikNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuX19PcmRlcmVkTGlzdC5NYXhDb250YWluZXJzID0gMA0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5fX09yZGVyZWRMaXN0LkZsYWdzID0gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgR2V0UXVlc3Rpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g c2VsZg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0UUhlYWRlckZsYWdzKHNlbGYs IEZsYWdzKToNCj4gPg0KPiA+ICsgICAgICAgIENJZnJRdWVzdGlvbkhlYWRlci5TZXRGbGFncyhz ZWxmLCBGbGFncykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldE1heENvbnRhaW5l cnMoc2VsZiwgTWF4Q29udGFpbmVycyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fT3JkZXJl ZExpc3QuTWF4Q29udGFpbmVycyA9IE1heENvbnRhaW5lcnMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIFNldEZsYWdzKHNlbGYsIEhGbGFncywgTEZsYWdzKToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIFJldHVybkNvZGUgPSBDSWZyUXVlc3Rpb25IZWFkZXIuU2V0RmxhZ3Mo c2VsZiwgSEZsYWdzKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g UmV0dXJuQ29kZQ0KPiA+DQo+ID4gKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FO RF9DTEVBUihMRmxhZ3MsIEVGSV9JRlJfVU5JUVVFX1NFVCkNCj4gPg0KPiA+ICsgICAgICAgIGlm IFJldDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fT3JkZXJlZExpc3QuRmxhZ3MgfD0g RUZJX0lGUl9VTklRVUVfU0VUDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBMRmxhZ3Ms IFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4gRUZJX0lGUl9OT19FTVBUWV9T RVQpDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fX09yZGVyZWRMaXN0LkZsYWdzIHw9IEVGSV9JRlJfTk9fRU1QVFlfU0VUDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NF U1MgaWYgTEZsYWdzID09IDAgZWxzZQ0KPiA+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GTEFH U19VTlNVUFBPUlRFRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLl9fT3JkZXJlZExpc3QNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyU3RyaW5nKENJZnJPYmosIENJZnJP cEhlYWRlciwgQ0lmclF1ZXN0aW9uSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIF9faW5pdF9fKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1N0ciA9IEVGSV9J RlJfU1RSSU5HKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxm LCBzZWxmLl9fU3RyLkhlYWRlciwgRUZJX0lGUl9TVFJJTkdfT1ApDQo+ID4NCj4gPiArICAgICAg ICBDSWZyUXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1N0ci5RdWVzdGlvbikN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19TdHIuRmxhZ3MgPSAwDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLl9fU3RyLk1pblNpemUgPSAwDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fU3RyLk1h eFNpemUgPSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRRdWVzdGlvbihzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBTZXRRSGVhZGVyRmxhZ3Moc2VsZiwgRmxhZ3MpOg0KPiA+DQo+ID4gKyAgICAgICAg Q0lmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNlbGYsIEZsYWdzKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgU2V0RmxhZ3Moc2VsZiwgSEZsYWdzLCBMRmxhZ3MpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgUmV0dXJuQ29kZSA9IENJZnJRdWVzdGlvbkhlYWRlci5TZXRG bGFncyhzZWxmLCBIRmxhZ3MpDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBSZXR1cm5Db2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBMRmxhZ3MsIFJl dCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4gPiBFRklfSUZSX1NUUklOR19NVUxU SV9MSU5FKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX19TdHIuRmxhZ3MgfD0gRUZJX0lGUl9TVFJJTkdfTVVMVElfTElORQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUND RVNTIGlmIExGbGFncyA9PSAwIGVsc2UNCj4gPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkxB R1NfVU5TVVBQT1JURUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldE1pblNpemUo c2VsZiwgTWluU2l6ZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fU3RyLk1pblNpemUgPSBN aW5TaXplDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRNYXhTaXplKHNlbGYsIE1h eFNpemUpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1N0ci5NYXhTaXplID0gTWF4U2l6ZQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgIHJldHVybiBzZWxmLl9fU3RyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArY2xhc3MgQ0lmclBhc3N3b3JkKENJZnJPYmosIENJZnJPcEhlYWRlciwgQ0lmclF1ZXN0aW9u SGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1Bhc3N3b3JkID0gRUZJX0lGUl9QQVNTV09SRCgpDQo+ ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1Bhc3N3 b3JkLkhlYWRlciwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklf SUZSX1BBU1NXT1JEX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVyLl9f aW5pdF9fKHNlbGYsIHNlbGYuX19QYXNzd29yZC5RdWVzdGlvbikNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuX19QYXNzd29yZC5NaW5TaXplID0gMA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1Bh c3N3b3JkLk1heFNpemUgPSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRRdWVz dGlvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBTZXRRSGVhZGVyRmxhZ3Moc2VsZiwgRmxhZ3MpOg0KPiA+DQo+ID4g KyAgICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNlbGYsIEZsYWdzKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0TWluU2l6ZShzZWxmLCBNaW5TaXplKToNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuX19QYXNzd29yZC5NaW5TaXplID0gTWluU2l6ZQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0TWF4U2l6ZShzZWxmLCBNYXhTaXplKToNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuX19QYXNzd29yZC5NYXhTaXplID0gTWF4U2l6ZQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBzZWxmLl9fUGFzc3dvcmQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFz cyBDSWZyRGVmYXVsdChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIFNp emUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICBEZWZhdWx0SWQ9RUZJX0hJSV9ERUZBVUxU X0NMQVNTX1NUQU5EQVJELA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgVHlwZT1FRklfSUZS X1RZUEVfT1RIRVIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICBWYWx1ZT1FRklfSUZSX1RZ UEVfVkFMVUUoKSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fRGVmYXVsdCA9IEVGSV9JRlJf REVGQVVMVCgpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwg c2VsZi5fX0RlZmF1bHQuSGVhZGVyLA0KPiA+IEVGSV9JRlJfREVGQVVMVF9PUCwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5fX0RlZmF1bHQuVHlwZSA9IFR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19EZWZh dWx0LkRlZmF1bHRJZCA9IERlZmF1bHRJZA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0RlZmF1 bHQuVmFsdWUgPSBWYWx1ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0RGVmYXVs dElkKHNlbGYsIERlZmF1bHRJZCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fRGVmYXVsdC5E ZWZhdWx0SWQgPSBEZWZhdWx0SWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFR5 cGUoc2VsZiwgVHlwZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fRGVmYXVsdC5UeXBlID0g VHlwZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0VmFsdWUoc2VsZiwgVmFsdWUp Og0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0RlZmF1bHQuVmFsdWUgPSBWYWx1ZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBzZWxmLl9fRGVmYXVsdA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g K2NsYXNzIENJZnJEZWZhdWx0MyhDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgIFNpemUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICBOdW1zLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgVmFsdWVUeXBlLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgRGVm YXVsdElkPUVGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFOREFSRCwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgIFR5cGU9RUZJX0lGUl9UWVBFX09USEVSLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgVmFsdWVMaXN0PVtdKToNCj4gPg0KPiA+ICsgICAgICAgIEhlYWRlciA9IEVGSV9JRlJf T1BfSEVBREVSKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxm LCBIZWFkZXIsIEVGSV9JRlJfREVGQVVMVF9PUCwgU2l6ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuX19EZWZhdWx0ID0gUmVmaW5lX0VGSV9JRlJfREVGQVVMVChOdW1zKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5fX0RlZmF1bHQuSGVhZGVyID0gSGVhZGVyDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLl9fRGVmYXVsdC5UeXBlID0gVHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0RlZmF1 bHQuRGVmYXVsdElkID0gRGVmYXVsdElkDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fVmFsdWVU eXBlID0gVmFsdWVUeXBlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBWYWx1ZUxp c3QgIT0gW106DQo+ID4NCj4gPiArICAgICAgICAgICAgQXJyYXlUeXBlID0gRUZJX0lGUl9UWVBF X1ZBTFVFICogTnVtcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhbHVlQXJyYXkgPSBBcnJheVR5 cGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihWYWx1ZUxp c3QpKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVmFsdWVBcnJheVtpXSA9IFZhbHVlTGlz dFtpXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19EZWZhdWx0LlZhbHVlID0gVmFsdWVB cnJheQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0RGVmYXVsdElkKHNlbGYsIERl ZmF1bHRJZCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fRGVmYXVsdC5EZWZhdWx0SWQgPSBE ZWZhdWx0SWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldFZhbHVlVHlwZShzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLl9fVmFsdWVUeXBlDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBTZXRUeXBlKHNlbGYsIFR5cGUpOg0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5fX0RlZmF1bHQuVHlwZSA9IFR5cGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIFNldFZhbHVlKHNlbGYsIFZhbHVlTGlzdCk6DQo+ID4NCj4gPiArICAgICAgICBBcnJheVR5 cGUgPSBFRklfSUZSX1RZUEVfVkFMVUUgKiAobGVuKFZhbHVlTGlzdCkpDQo+ID4NCj4gPiArICAg ICAgICBWYWx1ZUFycmF5ID0gQXJyYXlUeXBlKCkNCj4gPg0KPiA+ICsgICAgICAgIGZvciBpIGlu IHJhbmdlKDAsIGxlbihWYWx1ZUxpc3QpKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBWYWx1ZUFy cmF5W2ldID0gVmFsdWVMaXN0W2ldDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fRGVmYXVsdC5W YWx1ZSA9IFZhbHVlQXJyYXkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8o c2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5fX0RlZmF1bHQNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyRGVmYXVsdDIoQ0lmck9iaiwgQ0lm ck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICBEZWZhdWx0SWQ9RUZJX0hJSV9ERUZBVUxUX0NM QVNTX1NUQU5EQVJELA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgVHlwZT1FRklfSUZSX1RZ UEVfT1RIRVIpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0RlZmF1bHQgPSBFRklfSUZSX0RF RkFVTFRfMigpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwg c2VsZi5fX0RlZmF1bHQuSGVhZGVyLA0KPiA+IEVGSV9JRlJfREVGQVVMVF9PUCkNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuX19EZWZhdWx0LlR5cGUgPSBUeXBlDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLl9fRGVmYXVsdC5EZWZhdWx0SWQgPSBEZWZhdWx0SWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIFNldERlZmF1bHRJZChzZWxmLCBEZWZhdWx0SWQpOg0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5fX0RlZmF1bHQuRGVmYXVsdElkID0gRGVmYXVsdElkDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiBTZXRUeXBlKHNlbGYsIFR5cGUpOg0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fX0RlZmF1bHQuVHlwZSA9IFR5cGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdl dEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5fX0RlZmF1bHQNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZySW5jb25zaXN0ZW50SWYo Q0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9f aW5pdF9fKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0luY29uc2lzdGVudElmID0g RUZJX0lGUl9JTkNPTlNJU1RFTlRfSUYoKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuX19JbmNvbnNpc3RlbnRJZi5IZWFkZXIsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUZfT1Ap DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fSW5jb25zaXN0ZW50SWYuRXJyb3IgPSBFRklfU1RS SU5HX0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldEVycm9yKHNl bGYsIEVycm9yKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19JbmNvbnNpc3RlbnRJZi5FcnJv ciA9IEVycm9yDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmck5v U3VibWl0SWYoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX05vU3VibWl0 SWYgPSBFRklfSUZSX05PX1NVQk1JVF9JRigpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFk ZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX05vU3VibWl0SWYuSGVhZGVyLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfTk9fU1VCTUlUX0lGX09QKQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5fX05vU3VibWl0SWYuRXJyb3IgPSBFRklfU1RSSU5HX0lEX0lO VkFMSUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldEVycm9yKHNlbGYsIEVycm9y KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19Ob1N1Ym1pdElmLkVycm9yID0gRXJyb3INCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyRGlzYWJsZUlmKENJZnJP YmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRf XyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19EaXNhYmxlSWYgPSBFRklfSUZSX0RJ U0FCTEVfSUYoKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYs IHNlbGYuX19EaXNhYmxlSWYuSGVhZGVyLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEVGSV9JRlJfRElTQUJMRV9JRl9PUCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICtjbGFzcyBDSWZyU3VwcHJlc3NJZihDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLl9fU3VwcHJlc3NJZiA9IEVGSV9JRlJfU1VQUFJFU1NfSUYoKQ0KPiA+DQo+ ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19TdXBwcmVzc0lm LkhlYWRlciwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZS X1NVUFBSRVNTX0lGX09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNz IENJZnJHcmF5T3V0SWYoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0dy YXlPdXRJZiA9IEVGSV9JRlJfR1JBWV9PVVRfSUYoKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9w SGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19HcmF5T3V0SWYuSGVhZGVyLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfR1JBWV9PVVRfSUZfT1ApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmclZhbHVlKENJZnJPYmos IENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19WYWx1ZSA9IEVGSV9JRlJfVkFMVUUoKQ0K PiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19WYWx1 ZS5IZWFkZXIsIEVGSV9JRlJfVkFMVUVfT1ApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArY2xhc3MgQ0lmclJlYWQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fX1JlYWQgPSBFRklfSUZSX1JFQUQoKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuX19SZWFkLkhlYWRlciwgRUZJX0lGUl9SRUFEX09QKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJXcml0ZShDSWZyT2JqLCBD SWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fV3JpdGUgPSBFRklfSUZSX1dSSVRFKCkNCj4g Pg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fV3JpdGUu SGVhZGVyLCBFRklfSUZSX1dSSVRFX09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gK2NsYXNzIENJZnJXYXJuaW5nSWYoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5fX1dhcm5pbmdJZiA9IEVGSV9JRlJfV0FSTklOR19JRigpDQo+ID4NCj4gPiArICAgICAg ICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1dhcm5pbmdJZi5IZWFkZXIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9XQVJOSU5HX0lG X09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1dhcm5pbmdJZi5XYXJuaW5nID0gRUZJX1NU UklOR19JRF9JTlZBTElEDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fV2FybmluZ0lmLlRpbWVP dXQgPSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRXYXJuaW5nKHNlbGYsIFdh cm5pbmcpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1dhcm5pbmdJZi5XYXJuaW5nID0gV2Fy bmluZw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0VGltZU91dChzZWxmLCBUaW1l T3V0KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19XYXJuaW5nSWYuVGltZU91dCA9IFRpbWVP dXQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gc2VsZi5fX1dhcm5pbmdJZg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK2NsYXNzIENJZnJSZWZyZXNoKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuX19SZWZyZXNoID0gRUZJX0lGUl9SRUZSRVNIKCkNCj4gPg0KPiA+ICsgICAg ICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUmVmcmVzaC5IZWFkZXIsDQo+ ID4gRUZJX0lGUl9SRUZSRVNIX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1JlZnJlc2gu UmVmcmVzaEludGVydmFsID0gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0UmVm cmVzaEludGVydmFsKHNlbGYsIFJlZnJlc2hJbnRlcnZhbCk6DQo+ID4NCj4gPiArICAgICAgICBz ZWxmLl9fUmVmcmVzaC5SZWZyZXNoSW50ZXJ2YWwgPSBSZWZyZXNoSW50ZXJ2YWwNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gc2VsZi5fX1JlZnJlc2gNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtj bGFzcyBDSWZyUmVmcmVzaElkKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu X19SZWZyZXNoSWQgPSBFRklfSUZSX1JFRlJFU0hfSUQoKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lm ck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19SZWZyZXNoSWQuSGVhZGVyLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfUkVGUkVTSF9JRF9PUCkN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19SZWZyZXNoSWQuUmVmcmVzaEV2ZW50R3JvdXBJZCA9 IEVGSV9HVUlEKA0KPiA+DQo+ID4gKyAgICAgICAgICAgIDAsIDAsIDAsIEd1aWRBcnJheSgwLCAw LCAwLCAwLCAwLCAwLCAwLCAwKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFJl ZnJlc2hFdmVudEdyb3V0SWQoc2VsZiwgUmVmcmVzaEV2ZW50R3JvdXBJZCk6DQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLl9fUmVmcmVzaElkLlJlZnJlc2hFdmVudEdyb3VwSWQgPSBSZWZyZXNoRXZl bnRHcm91cElkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19SZWZyZXNoSWQNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyVmFyU3RvcmVEZXZpY2UoQ0lmck9iaiwgQ0lm ck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1ZhclN0b3JlRGV2aWNlID0gRUZJX0lGUl9WQVJT VE9SRV9ERVZJQ0UoKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNl bGYsIHNlbGYuX19WYXJTdG9yZURldmljZS5IZWFkZXIsDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRUZJX0lGUl9WQVJTVE9SRV9ERVZJQ0VfT1ApDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLl9fVmFyU3RvcmVEZXZpY2UuRGV2aWNlUGF0aCA9IEVGSV9TVFJJTkdfSURf SU5WQUxJRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0RGV2aWNlUGF0aChzZWxm LCBEZXZpY2VQYXRoKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19WYXJTdG9yZURldmljZS5E ZXZpY2VQYXRoID0gRGV2aWNlUGF0aA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0 SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLl9fVmFyU3RvcmVEZXZp Y2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyRGF0ZShDSWZy T2JqLCBDSWZyT3BIZWFkZXIsIENJZnJRdWVzdGlvbkhlYWRlcik6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19E YXRlID0gRUZJX0lGUl9EQVRFKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2lu aXRfXyhzZWxmLCBzZWxmLl9fRGF0ZS5IZWFkZXIsIEVGSV9JRlJfREFURV9PUCkNCj4gPg0KPiA+ ICsgICAgICAgIENJZnJRdWVzdGlvbkhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fRGF0ZS5R dWVzdGlvbikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19EYXRlLkZsYWdzID0gMA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0RmxhZ3Moc2VsZiwgSEZsYWdzLCBMRmxhZ3MpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgUmV0dXJuQ29kZSA9IENJZnJRdWVzdGlvbkhl YWRlci5TZXRGbGFncyhzZWxmLCBIRmxhZ3MpDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXR1cm5D b2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBSZXR1cm5Db2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBM RmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4gPiBFRklfUUZfREFU RV9ZRUFSX1NVUFBSRVNTKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0Og0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX19EYXRlLkZsYWdzIHw9IEVGSV9RRl9EQVRFX1lFQVJfU1VQUFJFU1MN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9B TkRfQ0xFQVIoTEZsYWdzLA0KPiA+IEVGSV9RRl9EQVRFX01PTlRIX1NVUFBSRVNTKQ0KPiA+DQo+ ID4gKyAgICAgICAgaWYgUmV0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19EYXRlLkZs YWdzIHw9IEVGSV9RRl9EQVRFX01PTlRIX1NVUFBSRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4gPiBF RklfUUZfREFURV9EQVlfU1VQUFJFU1MpDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXQ6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fX0RhdGUuRmxhZ3MgfD0gRUZJX1FGX0RBVEVfREFZX1NV UFBSRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFH X1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4gPiBRRl9EQVRFX1NUT1JBR0VfTk9STUFMKQ0KPiA+ DQo+ID4gKyAgICAgICAgaWYgUmV0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19EYXRl LkZsYWdzIHw9IFFGX0RBVEVfU1RPUkFHRV9OT1JNQUwNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLA0KPiA+IFFG X0RBVEVfU1RPUkFHRV9USU1FKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX19EYXRlLkZsYWdzIHw9IFFGX0RBVEVfU1RPUkFHRV9USU1FDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5E X0NMRUFSKExGbGFncywNCj4gPiBRRl9EQVRFX1NUT1JBR0VfV0FLRVVQKQ0KPiA+DQo+ID4gKyAg ICAgICAgaWYgUmV0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19EYXRlLkZsYWdzIHw9 IFFGX0RBVEVfU1RPUkFHRV9XQUtFVVANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUyBpZiBMRmxhZ3MgPT0gMCBlbHNl DQo+ID4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZMQUdTX1VOU1VQUE9SVEVEDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIHNlbGYuX19EYXRlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xh c3MgQ0lmclRpbWUoQ0lmck9iaiwgQ0lmck9wSGVhZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLl9fVGltZSA9IEVGSV9JRlJfVElNRSgpDQo+ID4NCj4gPiArICAgICAgICBD SWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1RpbWUuSGVhZGVyLCBFRklfSUZSX1RJ TUVfT1ApDQo+ID4NCj4gPiArICAgICAgICBDSWZyUXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2Vs Ziwgc2VsZi5fX1RpbWUuUXVlc3Rpb24pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fVGltZS5G bGFncyA9IDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldEZsYWdzKHNlbGYsIEhG bGFncywgTEZsYWdzKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFJldHVybkNvZGUg PSBDSWZyUXVlc3Rpb25IZWFkZXIuU2V0RmxhZ3Moc2VsZiwgSEZsYWdzKQ0KPiA+DQo+ID4gKyAg ICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gUmV0dXJuQ29kZQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3Ms DQo+ID4gUUZfVElNRV9IT1VSX1NVUFBSRVNTKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0Og0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19UaW1lLkZsYWdzIHw9IFFGX1RJTUVfSE9VUl9T VVBQUkVTUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxB R19URVNUX0FORF9DTEVBUihMRmxhZ3MsDQo+ID4gUUZfVElNRV9NSU5VVEVfU1VQUFJFU1MpDQo+ ID4NCj4gPiArICAgICAgICBpZiBSZXQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX1Rp bWUuRmxhZ3MgfD0gUUZfVElNRV9NSU5VVEVfU1VQUFJFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLA0KPiA+ IFFGX1RJTUVfU0VDT05EX1NVUFBSRVNTKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0Og0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19UaW1lLkZsYWdzIHw9IFFGX1RJTUVfU0VDT05EX1NV UFBSRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFH X1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4gPiBRRl9USU1FX1NUT1JBR0VfTk9STUFMKQ0KPiA+ DQo+ID4gKyAgICAgICAgaWYgUmV0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19UaW1l LkZsYWdzIHw9IFFGX1RJTUVfU1RPUkFHRV9OT1JNQUwNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLA0KPiA+IFFG X1RJTUVfU1RPUkFHRV9USU1FKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX19UaW1lLkZsYWdzIHw9IFFGX1RJTUVfU1RPUkFHRV9USU1FDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5E X0NMRUFSKExGbGFncywNCj4gPiBRRl9USU1FX1NUT1JBR0VfV0FLRVVQKQ0KPiA+DQo+ID4gKyAg ICAgICAgaWYgUmV0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19UaW1lLkZsYWdzIHw9 IFFGX1RJTUVfU1RPUkFHRV9XQUtFVVANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUyBpZiBMRmxhZ3MgPT0gMCBlbHNl DQo+ID4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZMQUdTX1VOU1VQUE9SVEVEDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIHNlbGYuX19UaW1lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xh c3MgQ0lmck51bWVyaWMoQ0lmck9iaiwgQ0lmck9wSGVhZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgQ0lmck1pbk1heFN0ZXBEYXRhKToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5fX051bWVyaWMgPSBFRklfSUZSX05VTUVSSUMoKSAgIyBkYXRhDQo+ID4NCj4gPiAr ICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX051bWVyaWMuSGVhZGVy LA0KPiA+IEVGSV9JRlJfTlVNRVJJQ19PUCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJRdWVzdGlv bkhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fTnVtZXJpYy5RdWVzdGlvbikNCj4gPg0KPiA+ ICsgICAgICAgIENJZnJNaW5NYXhTdGVwRGF0YS5fX2luaXRfXyhzZWxmLCBzZWxmLl9fTnVtZXJp Yy5EYXRhLCBUcnVlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX051bWVyaWMuRmxhZ3MgPSBF RklfSUZSX05VTUVSSUNfU0laRV8xIHwNCj4gPiBFRklfSUZSX0RJU1BMQVlfVUlOVF9ERUMNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldFF1ZXN0aW9uKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIHNlbGYNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldE1p bk1heERhdGEoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0UUhlYWRlckZsYWdzKHNlbGYsIEZsYWdzKToNCj4gPg0K PiA+ICsgICAgICAgIENJZnJRdWVzdGlvbkhlYWRlci5TZXRGbGFncyhzZWxmLCBGbGFncykNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldEZsYWdzKHNlbGYsIEhGbGFncywgTEZsYWdz LCBEaXNwbGF5U2V0dGluZ3NTcGVjaWZpZWQ9RmFsc2UpOg0KPiA+DQo+ID4gKyAgICAgICAgUmV0 dXJuQ29kZSA9IENJZnJRdWVzdGlvbkhlYWRlci5TZXRGbGFncyhzZWxmLCBIRmxhZ3MpDQo+ID4N Cj4gPiArICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9T VUNDRVNTOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBSZXR1cm5Db2RlDQo+ID4NCj4g PiArICAgICAgICBpZiBEaXNwbGF5U2V0dGluZ3NTcGVjaWZpZWQgPT0gRmFsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fX051bWVyaWMuRmxhZ3MgPSBMRmxhZ3MgfCBFRklfSUZSX0RJ U1BMQVlfVUlOVF9ERUMNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fX051bWVyaWMuRmxhZ3MgPSBMRmxhZ3MNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgU2V0RmxhZ3NGb3JCaXRGaWVsZChzZWxmLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBIRmxhZ3MsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExGbGFncywNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg RGlzcGxheVNldHRpbmdzU3BlY2lmaWVkPUZhbHNlKToNCj4gPg0KPiA+ICsgICAgICAgIFJldHVy bkNvZGUgPSBDSWZyUXVlc3Rpb25IZWFkZXIuU2V0RmxhZ3Moc2VsZiwgSEZsYWdzKQ0KPiA+DQo+ ID4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VD Q0VTUzoNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gUmV0dXJuQ29kZQ0KPiA+DQo+ID4g KyAgICAgICAgaWYgRGlzcGxheVNldHRpbmdzU3BlY2lmaWVkID09IEZhbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX19OdW1lcmljLkZsYWdzID0gTEZsYWdzIHwgRURLSUlfSUZSX0RJ U1BMQVlfVUlOVF9ERUNfQklUDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX19OdW1lcmljLkZsYWdzID0gTEZsYWdzDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIEdldE51bWVyaWNGbGFncyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBzZWxmLl9fTnVtZXJpYy5GbGFncw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgU2hyaW5rQmluU2l6ZShzZWxmLCBTaXplKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2hy aW5rQmluU2l6ZShTaXplKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5EZWNMZW5ndGgoU2l6ZSkN Cj4gPg0KPiA+ICsgICAgICAgICMgIF9FTUlUX1BFTkRJTkdfT0JKKCk7DQo+ID4NCj4gPiArICAg ICAgICBOdW1lcmljID0gRUZJX0lGUl9OVU1FUklDKCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu VXBkYXRlSGVhZGVyKE51bWVyaWMuSGVhZGVyKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLl9fTnVtZXJp Yw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJPbmVPZigNCj4g Pg0KPiA+ICsgICAgICAgIENJZnJRdWVzdGlvbkhlYWRlciwNCj4gPg0KPiA+ICsgICAgICAgIENJ ZnJPYmosDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIsDQo+ID4NCj4gPiArKToNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5fX09uZU9mID0gRUZJX0lGUl9PTkVfT0YoKQ0KPiA+DQo+ID4gKyAgICAgICAg Q0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19PbmVPZi5IZWFkZXIsDQo+ID4gRUZJ X0lGUl9PTkVfT0ZfT1ApDQo+ID4NCj4gPiArICAgICAgICBDSWZyUXVlc3Rpb25IZWFkZXIuX19p bml0X18oc2VsZiwgc2VsZi5fX09uZU9mLlF1ZXN0aW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fX09uZU9mLkZsYWdzID0gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0UXVl c3Rpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgR2V0TWluTWF4RGF0YShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBzZWxmDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRRSGVhZGVyRmxh Z3Moc2VsZiwgRmxhZ3MpOg0KPiA+DQo+ID4gKyAgICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVyLlNl dEZsYWdzKHNlbGYsIEZsYWdzKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0Rmxh Z3Moc2VsZiwgSEZsYWdzLCBMRmxhZ3MpOg0KPiA+DQo+ID4gKyAgICAgICAgUmV0dXJuQ29kZSA9 IENJZnJRdWVzdGlvbkhlYWRlci5TZXRGbGFncyhzZWxmLCBIRmxhZ3MpDQo+ID4NCj4gPiArICAg ICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBSZXR1cm5Db2RlDQo+ID4NCj4gPiArICAgICAg ICBpZiBMRmxhZ3MgJiBFRklfSUZSX0RJU1BMQVk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fX09uZU9mLkZsYWdzID0gTEZsYWdzDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuX19PbmVPZi5GbGFncyA9IExGbGFncyB8IEVGSV9JRlJfRElT UExBWV9VSU5UX0RFQw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRGbGFnc0Zv ckJpdEZpZWxkKHNlbGYsIEhGbGFncywgTEZsYWdzKToNCj4gPg0KPiA+ICsgICAgICAgIFJldHVy bkNvZGUgPSBDSWZyUXVlc3Rpb25IZWFkZXIuU2V0RmxhZ3Moc2VsZiwgSEZsYWdzKQ0KPiA+DQo+ ID4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VD Q0VTUzoNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gUmV0dXJuQ29kZQ0KPiA+DQo+ID4g KyAgICAgICAgaWYgTEZsYWdzICYgRURLSUlfSUZSX0RJU1BMQVlfQklUOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX19PbmVPZi5GbGFncyA9IExGbGFncw0KPiA+DQo+ID4gKyAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fT25lT2YuRmxhZ3MgPSBMRmxhZ3Mg fCBFREtJSV9JRlJfRElTUExBWV9VSU5UX0RFQ19CSVQNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLl9f T25lT2YNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyQ2hlY2tC b3goQ0lmck9iaiwgQ0lmck9wSGVhZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBz ZWxmLl9fQ2hlY2tCb3ggPSBFRklfSUZSX0NIRUNLQk9YKCkNCj4gPg0KPiA+ICsgICAgICAgIENJ ZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fQ2hlY2tCb3guSGVhZGVyLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfQ0hFQ0tCT1hfT1ApDQo+ ID4NCj4gPiArICAgICAgICBDSWZyUXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5f X0NoZWNrQm94LlF1ZXN0aW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0NoZWNrQm94LkZs YWdzID0gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0UXVlc3Rpb24oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgU2V0UUhlYWRlckZsYWdzKHNlbGYsIEZsYWdzKToNCj4gPg0KPiA+ICsgICAgICAgIENJ ZnJRdWVzdGlvbkhlYWRlci5TZXRGbGFncyhzZWxmLCBGbGFncykNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIEdldEZsYWdzKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNl bGYuX19DaGVja0JveC5GbGFncw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0Rmxh Z3Moc2VsZiwgSEZsYWdzLCBMRmxhZ3MpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg UmV0dXJuQ29kZSA9IENJZnJRdWVzdGlvbkhlYWRlci5TZXRGbGFncyhzZWxmLCBIRmxhZ3MpDQo+ ID4NCj4gPiArICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9TVUNDRVNTOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBSZXR1cm5Db2RlDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NM RUFSKExGbGFncywNCj4gPiBFRklfSUZSX0NIRUNLQk9YX0RFRkFVTFQpDQo+ID4NCj4gPiArICAg ICAgICBpZiBSZXQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX0NoZWNrQm94LkZsYWdz IHw9IEVGSV9JRlJfQ0hFQ0tCT1hfREVGQVVMVA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3MsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfQ0hFQ0tC T1hfREVGQVVMVF9NRkcpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXQ6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX0NoZWNrQm94LkZsYWdzIHw9IEVGSV9JRlJfQ0hF Q0tCT1hfREVGQVVMVF9NRkcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUyBpZiBMRmxhZ3MgPT0gMCBlbHNlDQo+ID4g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZMQUdTX1VOU1VQUE9SVEVEDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IHNlbGYuX19DaGVja0JveA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNz IENJZnJSZXNldEJ1dHRvbihDSWZyT2JqLCBDSWZyT3BIZWFkZXIsIENJZnJTdGF0ZW1lbnRIZWFk ZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICBzZWxmLl9fUmVzZXRCdXR0b24gPSBFRklfSUZSX1JFU0VUX0JVVFRPTigp DQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1Jl c2V0QnV0dG9uLkhlYWRlciwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBFRklfSUZSX1JFU0VUX0JVVFRPTl9PUCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJTdGF0ZW1l bnRIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1Jlc2V0QnV0dG9uLlN0YXRlbWVudCkNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuX19SZXNldEJ1dHRvbi5EZWZhdWx0SWQgPSBFRklfSElJX0RF RkFVTFRfQ0xBU1NfU1RBTkRBUkQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldERl ZmF1bHRJZChzZWxmLCBEZWZhdWx0SWQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1Jlc2V0 QnV0dG9uLkRlZmF1bHRJZCA9IERlZmF1bHRJZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLl9fUmVzZXRC dXR0b24NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyT3IoQ0lm ck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5p dF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fT3IgPSBFRklfSUZS X09SKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxm Ll9fT3IuSGVhZGVyLCBFRklfSUZSX09SX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRM aW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJ ZnJBbmQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fQW5k ID0gRUZJX0lGUl9BTkQoKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9f KHNlbGYsIHNlbGYuX19BbmQuSGVhZGVyLCBFRklfSUZSX0FORF9PUCkNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICtjbGFzcyBDSWZyQml0V2lzZU9yKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5fX0JpdFdpc2VPciA9IEVGSV9JRlJfQklUV0lTRV9PUigpDQo+ID4NCj4g PiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0JpdFdpc2VPci5I ZWFkZXIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9C SVRXSVNFX09SX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJDYXRlbmF0ZShDSWZy T2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0 X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19DYXRlbmF0ZSA9IEVG SV9JRlJfQ0FURU5BVEUoKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9f KHNlbGYsIHNlbGYuX19DYXRlbmF0ZS5IZWFkZXIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRUZJX0lGUl9DQVRFTkFURV9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtj bGFzcyBDSWZyRGl2aWRlKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5fX0RpdmlkZSA9IEVGSV9JRlJfRElWSURFKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJP cEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fRGl2aWRlLkhlYWRlciwNCj4gRUZJX0lGUl9E SVZJREVfT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmckVxdWFsKENJZnJPYmosIENJ ZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxm LCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0VxdWFsID0gRUZJX0lGUl9FUVVB TCgpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5f X0VxdWFsLkhlYWRlciwgRUZJX0lGUl9FUVVBTF9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu U2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFz cyBDSWZyR3JlYXRlckVxdWFsKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5fX0dyZWF0ZXJFcXVhbCA9IEVGSV9JRlJfR1JFQVRFUl9FUVVBTCgpDQo+ID4NCj4g PiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0dyZWF0ZXJFcXVh bC5IZWFkZXIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lG Ul9HUkVBVEVSX0VRVUFMX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGlu ZU5vKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJHcmVhdGVy VGhhbihDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19HcmVh dGVyVGhhbiA9IEVGSV9JRlJfR1JFQVRFUl9USEFOKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJP cEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fR3JlYXRlclRoYW4uSGVhZGVyLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfR1JFQVRFUl9USEFOX09Q KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJMZXNzRXF1YWwoQ0lmck9iaiwgQ0lmck9w SGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExp bmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fTGVzc0VxdWFsID0gRUZJX0lGUl9MRVNT X0VRVUFMKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBz ZWxmLl9fTGVzc0VxdWFsLkhlYWRlciwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBFRklfSUZSX0xFU1NfRVFVQUxfT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNl dExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3Mg Q0lmckxlc3NUaGFuKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fX0xlc3NUaGFuID0gRUZJX0lGUl9MRVNTX1RIQU4oKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lm ck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19MZXNzVGhhbi5IZWFkZXIsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9MRVNTX1RIQU5fT1ApDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmck1hcChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuX19NYXAgPSBFRklfSUZSX01BUCgpDQo+ID4NCj4gPiArICAg ICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX01hcC5IZWFkZXIsIEVGSV9J RlJfTUFQX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJNYXRjaChDSWZyT2JqLCBD SWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19NYXRjaCA9IEVGSV9JRlJfTUFU Q0goKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYu X19NYXRjaC5IZWFkZXIsDQo+IEVGSV9JRlJfTUFUQ0hfT1ApDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr Y2xhc3MgQ0lmck1hdGNoMihDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vLCBHdWlkKToNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuX19NYXRjaDIgPSBFRklfSUZSX01BVENIMigpDQo+ID4NCj4gPiArICAgICAg ICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX01hdGNoMi5IZWFkZXIsDQo+ID4g RUZJX0lGUl9NQVRDSDJfT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5l Tm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fTWF0Y2gyLlN5bnRheFR5cGUgPSBHdWlkDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmck11bHRpcGx5KENJZnJP YmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRf XyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX011bHRpcGx5ID0gRUZJ X0lGUl9NVUxUSVBMWSgpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18o c2VsZiwgc2VsZi5fX011bHRpcGx5LkhlYWRlciwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBFRklfSUZSX01VTFRJUExZX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2Ns YXNzIENJZnJNb2R1bG8oQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBz ZWxmLl9fTW9kdWxvID0gRUZJX0lGUl9NT0RVTE8oKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9w SGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Nb2R1bG8uSGVhZGVyLA0KPiA+IEVGSV9JRlJf TU9EVUxPX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJOb3RFcXVhbChDSWZyT2Jq LCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18o c2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19Ob3RFcXVhbCA9IEVGSV9J RlJfTk9UX0VRVUFMKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhz ZWxmLCBzZWxmLl9fTm90RXF1YWwuSGVhZGVyLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEVGSV9JRlJfTk9UX0VRVUFMX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2Ns YXNzIENJZnJTaGlmdExlZnQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAg ICBzZWxmLl9fU2hpZnRMZWZ0ID0gRUZJX0lGUl9TSElGVF9MRUZUKCkNCj4gPg0KPiA+ICsgICAg ICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fU2hpZnRMZWZ0LkhlYWRlciwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1NISUZUX0xF RlRfT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmclNoaWZ0UmlnaHQoQ0lmck9iaiwg Q0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNl bGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fU2hpZnRSaWdodCA9IEVGSV9J RlJfU0hJRlRfUklHSFQoKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9f KHNlbGYsIHNlbGYuX19TaGlmdFJpZ2h0LkhlYWRlciwNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBFRklfSUZSX1NISUZUX1JJR0hUX09QKQ0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gK2NsYXNzIENJZnJTdWJ0cmFjdChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuX19TdWJ0cmFjdCA9IEVGSV9JRlJfU1VCVFJBQ1QoKQ0KPiA+DQo+ID4gKyAg ICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19TdWJ0cmFjdC5IZWFkZXIs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9TVUJUUkFD VF9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyQ29uZGl0aW9uYWwoQ0lmck9iaiwg Q0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNl bGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fQ29uZGl0aW9uYWwgPSBFRklf SUZSX0NPTkRJVElPTkFMKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRf XyhzZWxmLCBzZWxmLl9fQ29uZGl0aW9uYWwuSGVhZGVyLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfQ09ORElUSU9OQUxfT1ApDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArY2xhc3MgQ0lmckZpbmQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAg ICAgICBzZWxmLl9fRmluZCA9IEVGSV9JRlJfRklORCgpDQo+ID4NCj4gPiArICAgICAgICBDSWZy T3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0ZpbmQuSGVhZGVyLCBFRklfSUZSX0ZJTkRf T1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBTZXRGb3JtYXQoc2VsZiwgRm9ybWF0KToNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuX19GaW5kLkZvcm1hdCA9IEZvcm1hdA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK2NsYXNzIENJZnJNaWQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4g PiArICAgICAgICBzZWxmLl9fTWlkID0gRUZJX0lGUl9NSUQoKQ0KPiA+DQo+ID4gKyAgICAgICAg Q0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19NaWQuSGVhZGVyLCBFRklfSUZSX01J RF9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyVG9rZW4oQ0lmck9iaiwgQ0lmck9w SGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExp bmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fVG9rZW4gPSBFRklfSUZSX1RPS0VOKCkN Cj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fVG9r ZW4uSGVhZGVyLA0KPiBFRklfSUZSX1RPS0VOX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5T ZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNz IENJZnJTcGFuKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5f X1NwYW4gPSBFRklfSUZSX1NQQU4oKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9f aW5pdF9fKHNlbGYsIHNlbGYuX19TcGFuLkhlYWRlciwgRUZJX0lGUl9TUEFOX09QKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fX1NwYW4uRmxhZ3MgPSBFRklfSUZSX0ZMQUdTX0ZJUlNUX01BVENISU5HDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBTZXRGbGFncyhzZWxmLCBMRmxhZ3MpOg0KPiA+DQo+ID4gKyAg ICAgICAgaWYgTEZsYWdzID09IEVGSV9JRlJfRkxBR1NfRklSU1RfTUFUQ0hJTkc6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fX1NwYW4uRmxhZ3MgfD0gRUZJX0lGUl9GTEFHU19GSVJTVF9N QVRDSElORw0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBM RmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBMRmxhZ3MsIEVGSV9JRlJfRkxBR1NfRklSU1RfTk9OX01BVENISU5HKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIFJldDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fX1Nw YW4uRmxhZ3MgfD0gRUZJX0lGUl9GTEFHU19GSVJTVF9OT05fTUFUQ0hJTkcNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VT UyBpZiBMRmxhZ3MgPT0gMCBlbHNlDQo+ID4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZMQUdT X1VOU1VQUE9SVEVEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lm ckJpdFdpc2VBbmQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxm Ll9fQml0V2lzZUFuZCA9IEVGSV9JRlJfQklUV0lTRV9BTkQoKQ0KPiA+DQo+ID4gKyAgICAgICAg Q0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19CaXRXaXNlQW5kLkhlYWRlciwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX0JJVFdJU0VfQU5E X09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJCaXRXaXNlT3IoQ0lmck9iaiwgQ0lm ck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYs IExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fQml0V2lzZU9yID0gRUZJX0lGUl9C SVRXSVNFX09SKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxm LCBzZWxmLl9fQml0V2lzZU9yLkhlYWRlciwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFRklfSUZSX0JJVFdJU0VfT1JfT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxm LlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xh c3MgQ0lmckFkZChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu X19BZGQgPSBFRklfSUZSX0FERCgpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19p bml0X18oc2VsZiwgc2VsZi5fX0FkZC5IZWFkZXIsIEVGSV9JRlJfQUREX09QKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK2NsYXNzIENJZnJUb1N0cmluZyhDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuX19Ub1N0cmluZyA9IEVGSV9JRlJfVE9fU1RSSU5HKCkNCj4gPg0K PiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fVG9TdHJpbmcu SGVhZGVyLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJf VE9fU1RSSU5HX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0Rm9ybWF0KHNlbGYsIEZvcm1hdCk6DQo+ ID4NCj4gPiArICAgICAgICBzZWxmLl9fVG9TdHJpbmcuRm9ybWF0ID0gRm9ybWF0DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmclRvVXBwZXIoQ0lmck9iaiwgQ0lm ck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYs IExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fVG9VcHBwZXIgPSBFRklfSUZSX1RP X1VQUEVSKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBz ZWxmLl9fVG9VcHBwZXIuSGVhZGVyLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVGSV9JRlJfVE9fVVBQRVJfT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExp bmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lm clRvVWludChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19U b1VpbnQgPSBFRklfSUZSX1RPX1VJTlQoKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuX19Ub1VpbnQuSGVhZGVyLA0KPiA+IEVGSV9JRlJfVE9fVUlO VF9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyVG9Mb3dlcihDSWZyT2JqLCBDSWZy T3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwg TGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19Ub0xvd2VyID0gRUZJX0lGUl9UT19M T1dFUigpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2Vs Zi5fX1RvTG93ZXIuSGVhZGVyLA0KPiA+IEVGSV9JRlJfVE9fTE9XRVJfT1ApDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArY2xhc3MgQ0lmclRvQm9vbGVhbihDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuX19Cb29sZWFuID0gRUZJX0lGUl9UT19CT09MRUFOKCkNCj4gPg0K PiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fQm9vbGVhbi5I ZWFkZXIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9U T19CT09MRUFOX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJOb3QoQ0lmck9iaiwg Q0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNl bGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fTm90ID0gRUZJX0lGUl9OT1Qo KQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19O b3QuSGVhZGVyLCBFRklfSUZSX05PVF9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGlu ZU5vKExpbmVObykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZy RHVwKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0R1cCA9 IEVGSV9JRlJfRFVQKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhz ZWxmLCBzZWxmLl9fRHVwLkhlYWRlciwgRUZJX0lGUl9EVVBfT1ApDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBH ZXRIZWFkZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5fX0R1cC5IZWFk ZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyRXFJZElkKENJ ZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0VxSWRJZCA9IEVG SV9JRlJfRVFfSURfSUQoKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9f KHNlbGYsIHNlbGYuX19FcUlkSWQuSGVhZGVyLA0KPiA+IEVGSV9JRlJfRVFfSURfSURfT1ApDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLl9fRXFJZElkLlF1ZXN0aW9uSWQxID0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuX19FcUlkSWQuUXVlc3Rpb25JZDIgPSBFRklfUVVFU1RJT05f SURfSU5WQUxJRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19FcUlkSWQuSGVhZGVyDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRRdWVzdGlvbklkMShzZWxmLCBRdWVzdGlvbklkLCBW YXJJZFN0ciwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIFF1ZXN0aW9uSWQgIT0gRUZJ X1FVRVNUSU9OX0lEX0lOVkFMSUQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX0VxSWRJ ZC5RdWVzdGlvbklkMSA9IFF1ZXN0aW9uSWQNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0 UXVlc3Rpb25JZDIoc2VsZiwgUXVlc3Rpb25JZCwgVmFySWRTdHIsIExpbmVObyk6DQo+ID4NCj4g PiArICAgICAgICBpZiBRdWVzdGlvbklkICE9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19FcUlkSWQuUXVlc3Rpb25JZDIgPSBRdWVzdGlvbklk DQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBhc3MNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyRXFJZFZhbChDSWZyT2Jq LCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18o c2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19FcUlkVmFsID0gRUZJX0lG Ul9FUV9JRF9WQUwoKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNl bGYsIHNlbGYuX19FcUlkVmFsLkhlYWRlciwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFRklfSUZSX0VRX0lEX1ZBTF9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu U2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19FcUlkVmFsLlF1ZXN0 aW9uSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgU2V0UXVlc3Rpb25JZChzZWxmLCBRdWVzdGlvbklkLCBWYXJJZFN0ciwgTGluZU5vKToN Cj4gPg0KPiA+ICsgICAgICAgIGlmIFF1ZXN0aW9uSWQgIT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFM SUQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX0VxSWRWYWwuUXVlc3Rpb25JZCA9IFF1 ZXN0aW9uSWQNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg cGFzcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0VmFsdWUoc2VsZiwgVmFsdWUp Og0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0VxSWRWYWwuVmFsdWUgPSBWYWx1ZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgcmV0dXJuIHNlbGYuX19FcUlkVmFsLkhlYWRlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK2NsYXNzIENJZnJFcUlkTGlzdChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vLCBOdW1zLCBW YWx1ZUxpc3Q9W10pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0VxSWRWTGlzdCA9IFJlZmlu ZV9FRklfSUZSX0VRX0lEX1ZBTF9MSVNUKE51bXMpDQo+ID4NCj4gPiArICAgICAgICBIZWFkZXIg PSBFRklfSUZSX09QX0hFQURFUigpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19p bml0X18oc2VsZiwgSGVhZGVyLCBFRklfSUZSX0VRX0lEX1ZBTF9PUCkNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19FcUlk Vkxpc3QuSGVhZGVyID0gSGVhZGVyDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fRXFJZFZMaXN0 LlF1ZXN0aW9uSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5fX0VxSWRWTGlzdC5MaXN0TGVuZ3RoID0gMA0KPiA+DQo+ID4gKyAgICAgICAgaWYgVmFs dWVMaXN0ICE9IFtdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEFycmF5VHlwZSA9IGNfdWludDE2 ICogTnVtcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhbHVlQXJyYXkgPSBBcnJheVR5cGUoKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihWYWx1ZUxpc3QpKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVmFsdWVBcnJheVtpXSA9IFZhbHVlTGlzdFtpXQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19FcUlkVkxpc3QuVmFsdWVMaXN0ID0gVmFsdWVB cnJheQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0UXVlc3Rpb25JZChzZWxmLCBR dWVzdGlvbklkLCBWYXJJZFN0ciwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIFF1ZXN0 aW9uSWQgIT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQ6DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fX0VxSWRWTGlzdC5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiA+DQo+ID4gKyAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBTZXRMaXN0TGVuZ3RoKHNlbGYsIExpc3RMZW5ndGgpOg0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5fX0VxSWRWTGlzdC5MaXN0TGVuZ3RoID0gTGlzdExlbmd0aA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0VmFsdWVMaXN0KHNlbGYsIFZhbHVlTGlzdCk6DQo+ID4N Cj4gPiArICAgICAgICBpZiBWYWx1ZUxpc3QgIT0gW106DQo+ID4NCj4gPiArICAgICAgICAgICAg QXJyYXlUeXBlID0gY191aW50MTYgKiBsZW4oVmFsdWVMaXN0KQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIFZhbHVlQXJyYXkgPSBBcnJheVR5cGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGZvciBp IGluIHJhbmdlKDAsIGxlbihWYWx1ZUxpc3QpKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg VmFsdWVBcnJheVtpXSA9IFZhbHVlTGlzdFtpXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X19FcUlkVkxpc3QuVmFsdWVMaXN0ID0gVmFsdWVBcnJheQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYu X19FcUlkVkxpc3QuSGVhZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xh c3MgQ0lmclVpbnQ4KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fX1VpbnQ4ID0gRUZJX0lGUl9VSU5UOCgpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFk ZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1VpbnQ4LkhlYWRlciwgRUZJX0lGUl9VSU5UOF9PUCkN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIFNldFZhbHVlKHNlbGYsIFZhbHVlKToNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuX19VaW50OC5WYWx1ZSA9IFZhbHVlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBHZXRIZWFkZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5fX1VpbnQ4 LkhlYWRlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJVaW50 MTYoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fVWludDE2 ID0gRUZJX0lGUl9VSU5UMTYoKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5p dF9fKHNlbGYsIHNlbGYuX19VaW50MTYuSGVhZGVyLA0KPiBFRklfSUZSX1VJTlQxNl9PUCkNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIFNldFZhbHVlKHNlbGYsIFZhbHVlKToNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuX19VaW50MTYuVmFsdWUgPSBWYWx1ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYg R2V0SGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19VaW50MTYu SGVhZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmclVpbnQz MihDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYg X19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19VaW50MzIg PSBFRklfSUZSX1VJTlQzMigpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0 X18oc2VsZiwgc2VsZi5fX1VpbnQzMi5IZWFkZXIsDQo+IEVGSV9JRlJfVUlOVDMyX09QKQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgU2V0VmFsdWUoc2VsZiwgVmFsdWUpOg0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fX1VpbnQzMi5WYWx1ZSA9IFZhbHVlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBH ZXRIZWFkZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5fX1VpbnQzMi5I ZWFkZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyVWludDY0 KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBf X2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1VpbnQ2NCA9 IEVGSV9JRlJfVUlOVDY0KCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRf XyhzZWxmLCBzZWxmLl9fVWludDY0LkhlYWRlciwNCj4gRUZJX0lGUl9VSU5UNjRfT1ApDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBTZXRWYWx1ZShzZWxmLCBWYWx1ZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxm Ll9fVWludDY0LlZhbHVlID0gVmFsdWUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdl dEhlYWRlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLl9fVWludDY0Lkhl YWRlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJRdWVzdGlv blJlZjEoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fUXVl c3Rpb25SZWYxID0gRUZJX0lGUl9RVUVTVElPTl9SRUYxKCkNCj4gPg0KPiA+ICsgICAgICAgIENJ ZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUXVlc3Rpb25SZWYxLkhlYWRlciwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1FVRVNUSU9OX1JF RjFfT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4g PiArICAgICAgICBzZWxmLl9fUXVlc3Rpb25SZWYxLlF1ZXN0aW9uSWQgPSBFRklfUVVFU1RJT05f SURfSU5WQUxJRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19RdWVzdGlvblJlZjEuSGVhZGVyDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRRdWVzdGlvbklkKHNlbGYsIFF1ZXN0aW9u SWQsIFZhcklkU3RyLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgaWYgUXVlc3Rpb25JZCAh PSBFRklfUVVFU1RJT05fSURfSU5WQUxJRDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9f UXVlc3Rpb25SZWYxLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+ID4NCj4gPiArICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICtjbGFzcyBDSWZyUXVlc3Rpb25SZWYyKENJZnJPYmosIENJZnJPcEhlYWRlcik6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1F1ZXN0aW9uUmVmMiA9IEVGSV9JRlJfUVVFU1RJT05f UkVGMigpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2Vs Zi5fX1F1ZXN0aW9uUmVmMi5IZWFkZXIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRUZJX0lGUl9RVUVTVElPTl9SRUYyX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SGVh ZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19RdWVzdGlvblJlZjIu SGVhZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmclF1ZXN0 aW9uUmVmMyhDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19R dWVzdGlvblJlZjMgPSBFRklfSUZSX1FVRVNUSU9OX1JFRjMoKQ0KPiA+DQo+ID4gKyAgICAgICAg Q0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19RdWVzdGlvblJlZjMuSGVhZGVyLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfUVVFU1RJT05f UkVGM19PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBzZWxmLl9fUXVlc3Rpb25SZWYzLkhlYWRlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJRdWVzdGlvblJlZjNfMihDSWZyT2JqLCBDSWZyT3BI ZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGlu ZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19RdWVzdGlvblJlZjNfMiA9IEVGSV9JRlJf UVVFU1RJT05fUkVGM18yKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRf XyhzZWxmLCBzZWxmLl9fUXVlc3Rpb25SZWYzXzIuSGVhZGVyLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfUVVFU1RJT05fUkVGM19PUCkNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu X19RdWVzdGlvblJlZjNfMi5EZXZpY2VQYXRoID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXREZXZpY2VQYXRoKHNlbGYsIERldmljZVBhdGgp Og0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1F1ZXN0aW9uUmVmM18yLkRldmljZVBhdGggPSBE ZXZpY2VQYXRoDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5fX1F1ZXN0aW9uUmVmM18yLkhlYWRlcg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJRdWVzdGlvblJlZjNf MyhDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYg X19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19RdWVzdGlv blJlZjNfMyA9IEVGSV9JRlJfUVVFU1RJT05fUkVGM18zKCkNCj4gPg0KPiA+ICsgICAgICAgIENJ ZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUXVlc3Rpb25SZWYzXzMuSGVhZGVyLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfUVVFU1RJT05f UkVGM19PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuX19RdWVzdGlvblJlZjNfMy5EZXZpY2VQYXRoID0gRUZJX1NUUklO R19JRF9JTlZBTElEDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fUXVlc3Rpb25SZWYzXzMuR3Vp ZCA9IEVGSV9HVUlEKA0KPiA+DQo+ID4gKyAgICAgICAgICAgIDAsIDAsIDAsIEd1aWRBcnJheSgw LCAwLCAwLCAwLCAwLCAwLCAwLCAwKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNl dERldmljZVBhdGgoc2VsZiwgRGV2aWNlUGF0aCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9f UXVlc3Rpb25SZWYzXzMuRGV2aWNlUGF0aCA9IERldmljZVBhdGgNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIFNldEd1aWQoc2VsZiwgR3VpZCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxm Ll9fUXVlc3Rpb25SZWYzXzMuR3VpZCA9IEd1aWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIEdldEhlYWRlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLl9fUXVl c3Rpb25SZWYzXzMuSGVhZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xh c3MgQ0lmclJ1bGVSZWYoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBz ZWxmLl9fUnVsZVJlZiA9IEVGSV9JRlJfUlVMRV9SRUYoKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lm ck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19SdWxlUmVmLkhlYWRlciwNCj4gPiBFRklf SUZSX1JVTEVfUkVGX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5v KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1J1bGVSZWYuUnVsZUlkID0gRUZJX1JVTEVfSURf SU5WQUxJRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0UnVsZUlkKHNlbGYsIFJ1 bGVJZCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fUnVsZVJlZi5SdWxlSWQgPSBSdWxlSWQN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBzZWxmLl9fUnVsZVJlZi5IZWFkZXINCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyU3RyaW5nUmVmMShDSWZyT2JqLCBDSWZyT3BIZWFk ZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5v KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19TdHJpbmdSZWYxID0gRUZJX0lGUl9TVFJJTkdf UkVGMSgpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2Vs Zi5fX1N0cmluZ1JlZjEuSGVhZGVyLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVGSV9JRlJfU1RSSU5HX1JFRjFfT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNl dExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fU3RyaW5nUmVmMS5TdHJp bmdJZCA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgU2V0U3RyaW5nSWQoc2VsZiwgU3RyaW5nSWQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5f X1N0cmluZ1JlZjEuU3RyaW5nSWQgPSBTdHJpbmdJZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19T dHJpbmdSZWYxLkhlYWRlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNz IENJZnJTdHJpbmdSZWYyKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5fX1N0cmluZ1JlZjIgPSBFRklfSUZSX1NUUklOR19SRUYyKCkNCj4gPg0KPiA+ICsgICAg ICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fU3RyaW5nUmVmMi5IZWFkZXIs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9TVFJJTkdf UkVGMl9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBzZWxmLl9fU3RyaW5nUmVmMi5IZWFkZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyVGhpcyhDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuX19UaGlzID0gRUZJX0lGUl9USElTKCkNCj4gPg0KPiA+ICsgICAg ICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fVGhpcy5IZWFkZXIsIEVGSV9J RlJfVEhJU19PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgIHJldHVybiBzZWxmLl9fVGhpcy5IZWFkZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICtjbGFzcyBDSWZyU2VjdXJpdHkoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4N Cj4gPiArICAgICAgICBzZWxmLl9fU2VjdXJpdHkgPSBFRklfSUZSX1NFQ1VSSVRZKCkNCj4gPg0K PiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fU2VjdXJpdHku SGVhZGVyLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJf U0VDVVJJVFlfT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLl9fU2VjdXJpdHkuUGVybWlzc2lvbnMgPSBFRklfR1VJRCgN Cj4gPg0KPiA+ICsgICAgICAgICAgICAwLCAwLCAwLCBHdWlkQXJyYXkoMCwgMCwgMCwgMCwgMCwg MCwgMCwgMCkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRQZXJtaXNzaW9ucyhz ZWxmLCBQZXJtaXNzaW9ucyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fU2VjdXJpdHkuUGVy bWlzc2lvbnMgPSBQZXJtaXNzaW9ucw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0 SGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19TZWN1cml0eS5I ZWFkZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyR2V0KENJ ZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0dldCA9IEVGSV9J RlJfR0VUKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBz ZWxmLl9fR2V0LkhlYWRlciwgRUZJX0lGUl9HRVRfT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxm LlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRWYXJJ bmZvKHNlbGYsIEJhc2VJbmZvOiBFRklfVkFSU1RPUkVfSU5GTyk6DQo+ID4NCj4gPiArICAgICAg ICBzZWxmLl9fR2V0LlZhclN0b3JlSWQgPSBCYXNlSW5mby5WYXJTdG9yZUlkDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLl9fR2V0LlZhclN0b3JlSW5mby5WYXJOYW1lID0gQmFzZUluZm8uSW5mby5W YXJOYW1lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fR2V0LlZhclN0b3JlSW5mby5WYXJPZmZz ZXQgPSBCYXNlSW5mby5JbmZvLlZhck9mZnNldA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0dl dC5WYXJTdG9yZVR5cGUgPSBCYXNlSW5mby5WYXJUeXBlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5f X0dldC5IZWFkZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZy U2V0KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1NldCA9 IEVGSV9JRlJfU0VUKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhz ZWxmLCBzZWxmLl9fU2V0LkhlYWRlciwgRUZJX0lGUl9TRVRfT1ApDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBT ZXRWYXJJbmZvKHNlbGYsIEJhc2VJbmZvOiBFRklfVkFSU1RPUkVfSU5GTyk6DQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLl9fU2V0LlZhclN0b3JlSWQgPSBCYXNlSW5mby5WYXJTdG9yZUlkDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLl9fU2V0LlZhclN0b3JlSW5mby5WYXJOYW1lID0gQmFzZUluZm8u SW5mby5WYXJOYW1lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fU2V0LlZhclN0b3JlSW5mby5W YXJPZmZzZXQgPSBCYXNlSW5mby5JbmZvLlZhck9mZnNldA0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fX1NldC5WYXJTdG9yZVR5cGUgPSBCYXNlSW5mby5WYXJUeXBlDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g c2VsZi5fX1NldC5IZWFkZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFz cyBDSWZyVHJ1ZShDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu X19UcnVlID0gRUZJX0lGUl9UUlVFKCkNCj4gPg0KPiA+ICsgICAgICAgIENJZnJPcEhlYWRlci5f X2luaXRfXyhzZWxmLCBzZWxmLl9fVHJ1ZS5IZWFkZXIsIEVGSV9JRlJfVFJVRV9PUCkNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxm Ll9fVHJ1ZS5IZWFkZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBD SWZyRmFsc2UoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9f RmFsc2UgPSBFRklfSUZSX1RSVUUoKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9f aW5pdF9fKHNlbGYsIHNlbGYuX19GYWxzZS5IZWFkZXIsIEVGSV9JRlJfRkFMU0VfT1ApDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2Vs Zi5fX0ZhbHNlLkhlYWRlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNz IENJZnJPbmUoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9f T25lID0gRUZJX0lGUl9PTkUoKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5p dF9fKHNlbGYsIHNlbGYuX19PbmUuSGVhZGVyLCBFRklfSUZSX09ORV9PUCkNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIEdldEhlYWRlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLl9fT25l LkhlYWRlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIENJZnJPbmVz KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBf X2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX09uZXMgPSBF RklfSUZSX09ORSgpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2Vs Ziwgc2VsZi5fX09uZXMuSGVhZGVyLCBFRklfSUZSX09ORVNfT1ApDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBH ZXRIZWFkZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5fX09uZXMuSGVh ZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmclplcm8oQ0lm ck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5p dF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fWmVybyA9IEVGSV9J RlJfWkVSTygpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwg c2VsZi5fX1plcm8uSGVhZGVyLCBFRklfSUZSX1pFUk9fT1ApDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRI ZWFkZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5fX1plcm8uSGVhZGVy DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmclVuZGVmaW5lZChD SWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19p bml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19VbmRlZmluZWQg PSBFRklfSUZSX1pFUk8oKQ0KPiA+DQo+ID4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9f KHNlbGYsIHNlbGYuX19VbmRlZmluZWQuSGVhZGVyLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEVGSV9JRlJfVU5ERUZJTkVEX09QKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0 SGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19VbmRlZmluZWQu SGVhZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ0lmclZlcnNp b24oQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fVmVyc2lv biA9IEVGSV9JRlJfVkVSU0lPTigpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19p bml0X18oc2VsZiwgc2VsZi5fX1ZlcnNpb24uSGVhZGVyLA0KPiA+IEVGSV9JRlJfVkVSU0lPTl9P UCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBzZWxmLl9fVmVyc2lvbi5IZWFkZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICtjbGFzcyBDSWZyTGVuZ3RoKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5fX0xlbmd0aCA9IEVGSV9JRlJfTEVOR1RIKCkNCj4gPg0KPiA+ICsgICAgICAg IENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fTGVuZ3RoLkhlYWRlciwNCj4gPiBF RklfSUZSX0xFTkdUSF9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVO bykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDSWZyQml0V2lzZU5v dChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYg X19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19CaXRXaXNl Tm90ID0gRUZJX0lGUl9CSVRXSVNFX05PVCgpDQo+ID4NCj4gPiArICAgICAgICBDSWZyT3BIZWFk ZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0JpdFdpc2VOb3QuSGVhZGVyLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfQklUV0lTRV9OT1RfT1ApDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArY2xhc3MgRXhwcmVzc2lvbkluZm8oKToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5Sb290 TGV2ZWwgPSAwDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkV4cE9wQ291bnQgPSAwDQo+ID4gXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlDQo+ID4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3Vy Y2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRheC5nNA0KPiA+IGIvQmFzZVRvb2xzL1NvdXJj ZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4Lmc0DQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi44OWM5ZTY3YjU5DQo+ID4gLS0tIC9kZXYvbnVsbA0K PiA+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRheC5n NA0KPiA+IEBAIC0wLDAgKzEsMTg4NyBAQA0KPiA+ICtncmFtbWFyIFZmclN5bnRheDsNCj4gPg0K PiA+ICtvcHRpb25zIHsNCj4gPg0KPiA+ICsgICAgbGFuZ3VhZ2U9UHl0aG9uOw0KPiA+DQo+ID4g K30NCj4gPg0KPiA+ICtAaGVhZGVyew0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2Zyb20gVmZyQ29t cGlsZXIuQ29tbW9uQ3R5cGVzIGltcG9ydCAqDQo+ID4NCj4gPiArZnJvbSBWZnJDb21waWxlci5W ZnJGb3JtUGtnIGltcG9ydCAqDQo+ID4NCj4gPiArZnJvbSBWZnJDb21waWxlci5WZnJVdGlsaXR5 IGltcG9ydCAqDQo+ID4NCj4gPiArZnJvbSBWZnJDb21waWxlci5WZnJUcmVlIGltcG9ydCAqDQo+ ID4NCj4gPiArfQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclByb2dyYW0NCj4gPg0KPiA+ICsg ICAgOiAgICh2ZnJQcmFnbWFQYWNrRGVmaW5pdGlvbiB8IHZmckRhdGFTdHJ1Y3REZWZpbml0aW9u IHwNCj4gPiB2ZnJEYXRhVW5pb25EZWZpbml0aW9uKSogdmZyRm9ybVNldERlZmluaXRpb24NCj4g Pg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ByYWdtYVBhY2tTaG93RGVmDQo+ ID4NCj4gPiArICAgIDogICAnc2hvdycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK3ByYWdtYVBhY2tTdGFja0RlZg0KPiA+DQo+ID4gKyAgICA6ICAgKCdwdXNoJyB8ICdw b3AnKSAgKCcsJyBTdHJpbmdJZGVudGlmaWVyKT8gKCcsJyBOdW1iZXIpPw0KPiA+DQo+ID4gKyAg ICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArcHJhZ21hUGFja051bWJlcg0KPiA+DQo+ID4gKyAg ICA6ICAgTnVtYmVyPw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZy UHJhZ21hUGFja0RlZmluaXRpb24NCj4gPg0KPiA+ICsgICAgOiAgICcjcHJhZ21hJyAncGFjaycg JygnDQo+ID4NCj4gPiArICAgICAgICAoICAgcHJhZ21hUGFja1Nob3dEZWYNCj4gPg0KPiA+ICsg ICAgICAgIHwgICBwcmFnbWFQYWNrU3RhY2tEZWYNCj4gPg0KPiA+ICsgICAgICAgIHwgICBwcmFn bWFQYWNrTnVtYmVyDQo+ID4NCj4gPiArICAgICAgICApPw0KPiA+DQo+ID4gKyAgICAnKScNCj4g Pg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmckRhdGFTdHJ1Y3REZWZpbml0 aW9uDQo+ID4NCj4gPiArICAgIDogICAoVHlwZURlZik/IFN0cnVjdCBOb25OdkRhdGFNYXA/IE4x PVN0cmluZ0lkZW50aWZpZXI/ICd7Jw0KPiA+IHZmckRhdGFTdHJ1Y3RGaWVsZHNbRmFsc2VdICd9 JyAgTjI9U3RyaW5nSWRlbnRpZmllcj8gJzsnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICt2ZnJEYXRhVW5pb25EZWZpbml0aW9uDQo+ID4NCj4gPiArICAgIDogICAoVHlw ZURlZik/IFVuaW9uIE5vbk52RGF0YU1hcD8gTjE9U3RyaW5nSWRlbnRpZmllcj8gJ3snDQo+ID4g dmZyRGF0YVN0cnVjdEZpZWxkc1tUcnVlXSd9JyBOMj1TdHJpbmdJZGVudGlmaWVyPyAnOycNCj4g Pg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmckRhdGFTdHJ1Y3RGaWVsZHNb RmllbGRJblVuaW9uXQ0KPiA+DQo+ID4gKyAgICA6DQo+ID4NCj4gPiArICAgICggICBkYXRhU3Ry dWN0RmllbGQ2NFtGaWVsZEluVW5pb25dDQo+ID4NCj4gPiArICAgIHwgICBkYXRhU3RydWN0Rmll bGQzMltGaWVsZEluVW5pb25dDQo+ID4NCj4gPiArICAgIHwgICBkYXRhU3RydWN0RmllbGQxNltG aWVsZEluVW5pb25dDQo+ID4NCj4gPiArICAgIHwgICBkYXRhU3RydWN0RmllbGQ4W0ZpZWxkSW5V bmlvbl0NCj4gPg0KPiA+ICsgICAgfCAgIGRhdGFTdHJ1Y3RGaWVsZEJvb2xbRmllbGRJblVuaW9u XQ0KPiA+DQo+ID4gKyAgICB8ICAgZGF0YVN0cnVjdEZpZWxkU3RyaW5nW0ZpZWxkSW5Vbmlvbl0N Cj4gPg0KPiA+ICsgICAgfCAgIGRhdGFTdHJ1Y3RGaWVsZERhdGVbRmllbGRJblVuaW9uXQ0KPiA+ DQo+ID4gKyAgICB8ICAgZGF0YVN0cnVjdEZpZWxkVGltZVtGaWVsZEluVW5pb25dDQo+ID4NCj4g PiArICAgIHwgICBkYXRhU3RydWN0RmllbGRSZWZbRmllbGRJblVuaW9uXQ0KPiA+DQo+ID4gKyAg ICB8ICAgZGF0YVN0cnVjdEZpZWxkVXNlcltGaWVsZEluVW5pb25dDQo+ID4NCj4gPiArICAgIHwg ICBkYXRhU3RydWN0Qml0RmllbGQ2NFtGaWVsZEluVW5pb25dDQo+ID4NCj4gPiArICAgIHwgICBk YXRhU3RydWN0Qml0RmllbGQzMltGaWVsZEluVW5pb25dDQo+ID4NCj4gPiArICAgIHwgICBkYXRh U3RydWN0Qml0RmllbGQxNltGaWVsZEluVW5pb25dDQo+ID4NCj4gPiArICAgIHwgICBkYXRhU3Ry dWN0Qml0RmllbGQ4W0ZpZWxkSW5Vbmlvbl0NCj4gPg0KPiA+ICsgICAgKSoNCj4gPg0KPiA+ICsg ICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2RhdGFTdHJ1Y3RGaWVsZDY0W0ZpZWxkSW5Vbmlv bl0NCj4gPg0KPiA+ICsgICAgOiAgICdVSU5UNjQnIE49U3RyaW5nSWRlbnRpZmllciAoJ1snIE51 bWJlciAnXScpPyAnOycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2Rh dGFTdHJ1Y3RGaWVsZDMyW0ZpZWxkSW5Vbmlvbl0NCj4gPg0KPiA+ICsgICAgOiAgICdVSU5UMzIn IE49U3RyaW5nSWRlbnRpZmllciAoJ1snIE51bWJlciAnXScpPyAnOycNCj4gPg0KPiA+ICsgICAg Ow0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2RhdGFTdHJ1Y3RGaWVsZDE2W0ZpZWxkSW5Vbmlvbl0N Cj4gPg0KPiA+ICsgICAgOiAgICdVSU5UMTYnIE49U3RyaW5nSWRlbnRpZmllciAoJ1snIE51bWJl ciAnXScpPyAnOycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2RhdGFT dHJ1Y3RGaWVsZDhbRmllbGRJblVuaW9uXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ1VJTlQ4JyBOPVN0 cmluZ0lkZW50aWZpZXIgKCdbJyBOdW1iZXIgJ10nKT8gJzsnDQo+ID4NCj4gPiArICAgIDsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICtkYXRhU3RydWN0RmllbGRCb29sW0ZpZWxkSW5Vbmlvbl0NCj4g Pg0KPiA+ICsgICAgOiAgICdCT09MRUFOJyBOPVN0cmluZ0lkZW50aWZpZXIgKCdbJyBOdW1iZXIg J10nKT8gJzsnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtkYXRhU3Ry dWN0RmllbGRTdHJpbmdbRmllbGRJblVuaW9uXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ0VGSV9TVFJJ TkdfSUQnIE49U3RyaW5nSWRlbnRpZmllciAoJ1snIE51bWJlciAnXScpPyAnOycNCj4gPg0KPiA+ ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2RhdGFTdHJ1Y3RGaWVsZERhdGVbRmllbGRJ blVuaW9uXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ0VGSV9ISUlfREFURScgTj1TdHJpbmdJZGVudGlm aWVyICgnWycgTnVtYmVyICddJyk/ICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArZGF0YVN0cnVjdEZpZWxkVGltZVtGaWVsZEluVW5pb25dDQo+ID4NCj4gPiArICAg IDogICAnRUZJX0hJSV9USU1FJyBOPVN0cmluZ0lkZW50aWZpZXIgKCdbJyBOdW1iZXIgJ10nKT8g JzsnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtkYXRhU3RydWN0Rmll bGRSZWZbRmllbGRJblVuaW9uXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ0VGSV9ISUlfUkVGJyBOPVN0 cmluZ0lkZW50aWZpZXIgKCdbJyBOdW1iZXIgJ10nKT8gJzsnDQo+ID4NCj4gPiArICAgIDsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICtkYXRhU3RydWN0RmllbGRVc2VyW0ZpZWxkSW5Vbmlvbl0NCj4g Pg0KPiA+ICsgICAgOiAgIFQ9U3RyaW5nSWRlbnRpZmllciBOPVN0cmluZ0lkZW50aWZpZXIgKCdb JyBOdW1iZXIgJ10nKT8gJzsnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICtkYXRhU3RydWN0Qml0RmllbGQ2NFtGaWVsZEluVW5pb25dDQo+ID4NCj4gPiArICAgIDogICBE PSdVSU5UNjQnICBOPVN0cmluZ0lkZW50aWZpZXI/ICc6JyBOdW1iZXIgJzsnDQo+ID4NCj4gPiAr ICAgIDsNCj4gPg0KPiA+ICtkYXRhU3RydWN0Qml0RmllbGQzMltGaWVsZEluVW5pb25dDQo+ID4N Cj4gPiArICAgIDogICBEPSdVSU5UMzInIE49U3RyaW5nSWRlbnRpZmllcj8gJzonIE51bWJlciAn OycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gK2RhdGFTdHJ1Y3RCaXRGaWVsZDE2W0ZpZWxk SW5Vbmlvbl0NCj4gPg0KPiA+ICsgICAgOiAgIEQ9J1VJTlQxNicgTj1TdHJpbmdJZGVudGlmaWVy PyAnOicgTnVtYmVyICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArZGF0YVN0cnVjdEJp dEZpZWxkOFtGaWVsZEluVW5pb25dDQo+ID4NCj4gPiArICAgIDogICBEPSdVSU5UOCcgTj1TdHJp bmdJZGVudGlmaWVyPyAnOicgTnVtYmVyICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArLy8gMi40IFZGUiBGb3JtU2V0IERlZmluaXRpb24NCj4gPg0KPiA+ICt2ZnJG b3JtU2V0RGVmaW5pdGlvbg0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9J RlJfRk9STV9TRVRfT1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ2Zvcm1zZXQnDQo+ID4NCj4gPiAr ICAgICAgICAnZ3VpZCcgJz0nIGd1aWREZWZpbml0aW9uICcsJw0KPiA+DQo+ID4gKyAgICAgICAg J3RpdGxlJyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScgJywnDQo+ID4NCj4gPiAr ICAgICAgICAnaGVscCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiA+ DQo+ID4gKyAgICAgICAgKCdjbGFzc2d1aWQnICc9JyBjbGFzc2d1aWREZWZpbml0aW9uW2xvY2Fs Y3R4Lk5vZGVdICcsJyk/DQo+ID4NCj4gPiArICAgICAgICAoJ2NsYXNzJyAnPScgY2xhc3NEZWZp bml0aW9uICcsJyk/DQo+ID4NCj4gPiArICAgICAgICAoJ3N1YmNsYXNzJyAnPScgc3ViY2xhc3NE ZWZpbml0aW9uICcsJyk/DQo+ID4NCj4gPiArICAgICAgICB2ZnJGb3JtU2V0TGlzdFtsb2NhbGN0 eC5Ob2RlXQ0KPiA+DQo+ID4gKyAgICAgICAgJ2VuZGZvcm1zZXQnICc7Jw0KPiA+DQo+ID4gKyAg ICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3NndWlkRGVmaW5pdGlvbltOb2RlXQ0KPiA+ DQo+ID4gK2xvY2Fsc1tHdWlkTGlzdD1bXV0NCj4gPg0KPiA+ICsgICAgOiAgIGd1aWREZWZpbml0 aW9uICgnfCcgZ3VpZERlZmluaXRpb24pPyAoJ3wnIGd1aWREZWZpbml0aW9uKT8oJ3wnDQo+ID4g Z3VpZERlZmluaXRpb24pPw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr Y2xhc3NEZWZpbml0aW9uDQo+ID4NCj4gPiArbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lG Ul9HVUlEX09QKV0NCj4gPg0KPiA+ICsgICAgOiAgIHZhbGlkQ2xhc3NOYW1lcyAoJ3wnIHZhbGlk Q2xhc3NOYW1lcykqDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2YWxp ZENsYXNzTmFtZXMNCj4gPg0KPiA+ICtsb2NhbHNbQ2xhc3NOYW1lPTBdDQo+ID4NCj4gPiArICAg IDogICBDbGFzc05vbkRldmljZQ0KPiA+DQo+ID4gKyAgICB8ICAgQ2xhc3NEaXNrRGV2aWNlDQo+ ID4NCj4gPiArICAgIHwgICBDbGFzc1ZpZGVvRGV2aWNlDQo+ID4NCj4gPiArICAgIHwgICBDbGFz c05ldHdvcmtEZXZpY2UNCj4gPg0KPiA+ICsgICAgfCAgIENsYXNzSW5wdXREZXZpY2UNCj4gPg0K PiA+ICsgICAgfCAgIENsYXNzT25Cb2FyZERldmljZQ0KPiA+DQo+ID4gKyAgICB8ICAgQ2xhc3NP dGhlckRldmljZQ0KPiA+DQo+ID4gKyAgICB8ICAgTnVtYmVyDQo+ID4NCj4gPiArICAgIDsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICtzdWJjbGFzc0RlZmluaXRpb24NCj4gPg0KPiA+ICtsb2NhbHNb Tm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX0dVSURfT1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAgU3Vi Y2xhc3NTZXR1cEFwcGxpY2F0aW9uDQo+ID4NCj4gPiArICAgIHwgICBTdWJjbGFzc0dlbmVyYWxB cHBsaWNhdGlvbg0KPiA+DQo+ID4gKyAgICB8ICAgU3ViY2xhc3NGcm9udFBhZ2UNCj4gPg0KPiA+ ICsgICAgfCAgIFN1YmNsYXNzU2luZ2xlVXNlDQo+ID4NCj4gPiArICAgIHwgICBOdW1iZXINCj4g Pg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmckZvcm1T ZXRMaXN0W05vZGVdDQo+ID4NCj4gPiArICAgIDogKHZmckZvcm1TZXQpKg0KPiA+DQo+ID4gKyAg ICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArLy8yLjUgVkZSIEZvcm1TZXQgTGlzdCBEZWZpbml0 aW9uDQo+ID4NCj4gPiArdmZyRm9ybVNldA0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPU5vbmVdDQo+ ID4NCj4gPiArICAgIDoNCj4gPg0KPiA+ICsgICAgKCAgIHZmckZvcm1EZWZpbml0aW9uDQo+ID4N Cj4gPiArICAgIHwgICB2ZnJGb3JtTWFwRGVmaW5pdGlvbg0KPiA+DQo+ID4gKyAgICB8ICAgdmZy U3RhdGVtZW50SW1hZ2UNCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVudFZhclN0b3JlTGlu ZWFyDQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaQ0KPiA+DQo+ID4g KyAgICB8ICAgdmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWUNCj4gPg0KPiA+ICsgICAgfCAg IHZmclN0YXRlbWVudERlZmF1bHRTdG9yZQ0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVtZW50 RGlzYWJsZUlmRm9ybVNldA0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVtZW50U3VwcHJlc3NJ ZkZvcm1TZXQNCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVudEV4dGVuc2lvbg0KPiA+DQo+ ID4gKyAgICApDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsvLzIuNiBWRlIgRGVmYXVsdCBTdG9yZXMgRGVmaW5pdGlvbg0KPiA+DQo+ID4gK3ZmclN0 YXRlbWVudERlZmF1bHRTdG9yZQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVG SV9JRlJfREVGQVVMVFNUT1JFX09QKV0NCj4gPg0KPiA+ICsgICAgOiAgICdkZWZhdWx0c3RvcmUn IE49U3RyaW5nSWRlbnRpZmllciAnLCcNCj4gPg0KPiA+ICsgICAgICAgICdwcm9tcHQnICc9JyAn U1RSSU5HX1RPS0VOJyAnKCcgUz1OdW1iZXIgJyknDQo+ID4NCj4gPiArICAgICAgICAoJywnICdh dHRyaWJ1dGUnICc9JyBBPU51bWJlcik/ICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArLy8yLjcgVkZSIFZhcmlhYmxlIFN0b3JlIERlZmluaXRpb24NCj4gPg0KPiA+ ICt2ZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhcg0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPVZmclRy ZWVOb2RlKEVGSV9JRlJfVkFSU1RPUkVfT1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ3ZhcnN0b3Jl Jw0KPiA+DQo+ID4gKyAgICAgICAgKCAgIFROPVN0cmluZ0lkZW50aWZpZXIgJywnDQo+ID4NCj4g PiArICAgICAgICB8ICAgJ1VJTlQ4JyAnLCcNCj4gPg0KPiA+ICsgICAgICAgIHwgICAnVUlOVDE2 JyAnLCcNCj4gPg0KPiA+ICsgICAgICAgIHwgICAnVUlOVDMyJyAnLCcNCj4gPg0KPiA+ICsgICAg ICAgIHwgICAnVUlOVDY0JyAnLCcNCj4gPg0KPiA+ICsgICAgICAgIHwgICAnRUZJX0hJSV9EQVRF JyAnLCcNCj4gPg0KPiA+ICsgICAgICAgIHwgICAnRUZJX0hJSV9USU1FJyAnLCcNCj4gPg0KPiA+ ICsgICAgICAgIHwgICAnRUZJX0hJSV9SRUYnICcsJw0KPiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+ DQo+ID4gKyAgICAgICAgKCd2YXJpZCcgJz0nIElEPU51bWJlciAnLCcpPw0KPiA+DQo+ID4gKyAg ICAgICAgJ25hbWUnICc9JyBTTj1TdHJpbmdJZGVudGlmaWVyICcsJw0KPiA+DQo+ID4gKyAgICAg ICAgJ2d1aWQnICc9JyBndWlkRGVmaW5pdGlvbiAnOycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudFZhclN0b3JlRWZpDQo+ID4NCj4gPiArbG9jYWxz W05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9WQVJTVE9SRV9FRklfT1ApXQ0KPiA+DQo+ID4gKyAg ICA6ICAgJ2VmaXZhcnN0b3JlJw0KPiA+DQo+ID4gKyAgICAgICAgKCAgIFROPVN0cmluZ0lkZW50 aWZpZXIgJywnDQo+ID4NCj4gPiArICAgICAgICB8ICAgJ1VJTlQ4JyAnLCcNCj4gPg0KPiA+ICsg ICAgICAgIHwgICAnVUlOVDE2JyAnLCcNCj4gPg0KPiA+ICsgICAgICAgIHwgICAnVUlOVDMyJyAn LCcNCj4gPg0KPiA+ICsgICAgICAgIHwgICAnVUlOVDY0JyAnLCcNCj4gPg0KPiA+ICsgICAgICAg IHwgICAnRUZJX0hJSV9EQVRFJyAnLCcNCj4gPg0KPiA+ICsgICAgICAgIHwgICAnRUZJX0hJSV9U SU1FJyAnLCcNCj4gPg0KPiA+ICsgICAgICAgIHwgICAnRUZJX0hJSV9SRUYnICcsJw0KPiA+DQo+ ID4gKyAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgKCd2YXJpZCcgJz0nIElEPU51bWJlciAn LCcpPw0KPiA+DQo+ID4gKyAgICAgICAgJ2F0dHJpYnV0ZScgJz0nIHZmclZhclN0b3JlRWZpQXR0 ciAoJ3wnIHZmclZhclN0b3JlRWZpQXR0cikqICcsJw0KPiA+DQo+ID4gKyAgICAgICAgKCAgICdu YW1lJyAnPScgU049U3RyaW5nSWRlbnRpZmllciAnLCcNCj4gPg0KPiA+ICsgICAgICAgIHwgICAn bmFtZScgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBWTj1OdW1iZXIgJyknICcsJyAgJ3ZhcnNpemUn ICc9Jw0KPiA+IE49TnVtYmVyICcsJw0KPiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ID4gKyAg ICAgICAgJ2d1aWQnICc9JyBndWlkRGVmaW5pdGlvbiAnOycNCj4gPg0KPiA+ICsgICAgOw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclZhclN0b3JlRWZpQXR0cg0KPiA+DQo+ID4gK2xvY2Fsc1tB dHRyPTBdDQo+ID4NCj4gPiArICAgIDogICBOdW1iZXI7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr dmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWUNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1WZnJU cmVlTm9kZShFRklfSUZSX1ZBUlNUT1JFX05BTUVfVkFMVUVfT1ApXQ0KPiA+DQo+ID4gKyAgICA6 ICAgJ25hbWV2YWx1ZXZhcnN0b3JlJyBTTj1TdHJpbmdJZGVudGlmaWVyICcsJw0KPiA+DQo+ID4g KyAgICAgICAgKCd2YXJpZCcgJz0nIElEPU51bWJlciAnLCcpPw0KPiA+DQo+ID4gKyAgICAgICAg KCduYW1lJyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScgJywnKSsNCj4gPg0KPiA+ ICsgICAgICAgICdndWlkJyAnPScgZ3VpZERlZmluaXRpb24gJzsnDQo+ID4NCj4gPiArICAgIDsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0DQo+ID4N Cj4gPiArbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9ESVNBQkxFX0lGX09QKV0NCj4g Pg0KPiA+ICsgICAgOiAgICdkaXNhYmxlaWYnIHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQo+ ID4NCj4gPiArICAgICAgICB2ZnJGb3JtU2V0TGlzdFtsb2NhbGN0eC5Ob2RlXQ0KPiA+DQo+ID4g KyAgICAgICAgJ2VuZGlmJyAnOycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gK3ZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0DQo+ID4NCj4gPiArbG9jYWxzW05vZGU9 VmZyVHJlZU5vZGUoRUZJX0lGUl9TVVBQUkVTU19JRl9PUCldDQo+ID4NCj4gPiArICAgIDogICAn c3VwcHJlc3NpZicgdmZyU3RhdGVtZW50RXhwcmVzc2lvbiAnOycNCj4gPg0KPiA+ICsgICAgICAg IHZmckZvcm1TZXRMaXN0W2xvY2FsY3R4Lk5vZGVdDQo+ID4NCj4gPiArICAgICAgICAnZW5kaWYn ICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZ3VpZFN1YkRlZmlu aXRpb25bR3VpZF0NCj4gPg0KPiA+ICsgICAgOiAgIE51bWJlciAnLCcgTnVtYmVyICcsJyBOdW1i ZXIgJywnIE51bWJlciAnLCcNCj4gPg0KPiA+ICsgICAgICAgIE51bWJlciAnLCcgTnVtYmVyICcs JyBOdW1iZXIgJywnIE51bWJlcg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArZ3VpZERlZmluaXRpb24NCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZSgpLCBH dWlkPUVGSV9HVUlEKCldDQo+ID4NCj4gPiArICAgIDogICAneycNCj4gPg0KPiA+ICsgICAgICAg IE51bWJlciAnLCcgTnVtYmVyICcsJyBOdW1iZXIgJywnDQo+ID4NCj4gPiArICAgICAgICAoICAg J3snIGd1aWRTdWJEZWZpbml0aW9uW2xvY2FsY3R4Lkd1aWRdICd9Jw0KPiA+DQo+ID4gKyAgICAg ICAgfCAgIGd1aWRTdWJEZWZpbml0aW9uW2xvY2FsY3R4Lkd1aWRdDQo+ID4NCj4gPiArICAgICAg ICApDQo+ID4NCj4gPiArICAgICAgICAnfScNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK2dldFN0cmluZ0lkDQo+ID4NCj4gPiArbG9jYWxzW1N0cmluZ0lkPScnXQ0KPiA+ DQo+ID4gKyAgICA6ICAgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScNCj4gPg0KPiA+ICsg ICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclF1ZXN0aW9uSGVhZGVyW09wT2JqLCBRVHlw ZV0NCj4gPg0KPiA+ICsgICAgOiAgIHZmclF1ZXN0aW9uQmFzZUluZm9bT3BPYmosIFFUeXBlXQ0K PiA+DQo+ID4gKyAgICAgICAgdmZyU3RhdGVtZW50SGVhZGVyW09wT2JqXQ0KPiA+DQo+ID4gKyAg ICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyUXVlc3Rpb25CYXNlSW5mb1tPcE9iaiwgUVR5 cGVdDQo+ID4NCj4gPiArbG9jYWxzW0Jhc2VJbmZvPUVGSV9WQVJTVE9SRV9JTkZPKCksIFFJZD1F RklfUVVFU1RJT05fSURfSU5WQUxJRCwNCj4gPiBDaGVja0ZsYWc9VHJ1ZV0NCj4gPg0KPiA+ICsg ICAgOiAgICgnbmFtZScgJz0nIFFOPVN0cmluZ0lkZW50aWZpZXIgJywnKT8NCj4gPg0KPiA+ICsg ICAgICAgICgndmFyaWQnICc9JyB2ZnJTdG9yYWdlVmFySWRbbG9jYWxjdHguQmFzZUluZm8sIGxv Y2FsY3R4LkNoZWNrRmxhZ10gJywnKT8NCj4gPg0KPiA+ICsgICAgICAgICgncXVlc3Rpb25pZCcg Jz0nIElEPU51bWJlciAnLCcpPw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArdmZyU3RhdGVtZW50SGVhZGVyW09wT2JqXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ3Byb21wdCcg Jz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiA+DQo+ID4gKyAgICAgICAg J2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJw0KPiA+DQo+ID4gKyAgICA7 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkDQo+ID4NCj4g PiArbG9jYWxzW1FIRmxhZz0wXQ0KPiA+DQo+ID4gKyAgICA6ICAgUmVhZE9ubHlGbGFnDQo+ID4N Cj4gPiArICAgIHwgICBJbnRlcmFjdGl2ZUZsYWcNCj4gPg0KPiA+ICsgICAgfCAgIFJlc2V0UmVx dWlyZWRGbGFnDQo+ID4NCj4gPiArICAgIHwgICBSZXN0U3R5bGVGbGFnDQo+ID4NCj4gPiArICAg IHwgICBSZWNvbm5lY3RSZXF1aXJlZEZsYWcNCj4gPg0KPiA+ICsgICAgfCAgIE89T3B0aW9uT25s eUZsYWcNCj4gPg0KPiA+ICsgICAgfCAgIE49TlZBY2Nlc3NGbGFnDQo+ID4NCj4gPiArICAgIHwg ICBMPUxhdGVDaGVja0ZsYWcNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKy8vMi4xMC41DQo+ ID4NCj4gPiArdmZyU3RvcmFnZVZhcklkW0Jhc2VJbmZvLCBDaGVja0ZsYWddDQo+ID4NCj4gPiAr bG9jYWxzW1ZhcklkU3RyPScnXQ0KPiA+DQo+ID4gKyAgICA6ICAgKFNOMT1TdHJpbmdJZGVudGlm aWVyICdbJyBJPU51bWJlciAnXScpICAgICMgdmZyU3RvcmFnZVZhcklkUnVsZTENCj4gPg0KPiA+ ICsgICAgfCAgIChTTjI9U3RyaW5nSWRlbnRpZmllciAoJy4nIGFycmF5TmFtZSkqICkgIyB2ZnJT dG9yYWdlVmFySWRSdWxlMg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr dmZyQ29uc3RhbnRWYWx1ZUZpZWxkDQo+ID4NCj4gPiArbG9jYWxzW1ZhbHVlPUVGSV9JRlJfVFlQ RV9WQUxVRSgpLCBWYWx1ZUxpc3Q9W10sIExpc3RUeXBlPUZhbHNlXQ0KPiA+DQo+ID4gKyAgICA6 ICAgKCctJyk/IE51bWJlcg0KPiA+DQo+ID4gKyAgICB8ICAgJ1RSVUUnDQo+ID4NCj4gPiArICAg IHwgICAnRkFMU0UnDQo+ID4NCj4gPiArICAgIHwgICAnT05FJw0KPiA+DQo+ID4gKyAgICB8ICAg J09ORVMnDQo+ID4NCj4gPiArICAgIHwgICAnWkVSTycNCj4gPg0KPiA+ICsgICAgfCAgIE51bWJl ciAnOicgTnVtYmVyICc6JyBOdW1iZXINCj4gPg0KPiA+ICsgICAgfCAgIE51bWJlciAnLycgTnVt YmVyICcvJyBOdW1iZXINCj4gPg0KPiA+ICsgICAgfCAgIE51bWJlciAnOycgTnVtYmVyICc7JyBn dWlkRGVmaW5pdGlvbiAnOycgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScNCj4gPg0KPiA+ ICsgICAgfCAgICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknDQo+ID4NCj4gPiArICAgIHwg ICAneycgTnVtYmVyICgnLCcgTnVtYmVyKSogJ30nDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICt2ZnJJbWFnZVRhZw0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPVZmclRyZWVO b2RlKEVGSV9JRlJfSU1BR0VfT1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ2ltYWdlJyAnPScgJ0lN QUdFX1RPS0VOJyAnKCcgTnVtYmVyICcpJw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArdmZyTG9ja2VkVGFnDQo+ID4NCj4gPiArbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUo RUZJX0lGUl9MT0NLRURfT1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ2xvY2tlZCcNCj4gPg0KPiA+ ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudFN0YXRUYWcNCj4gPg0K PiA+ICtsb2NhbHNbTm9kZV0NCj4gPg0KPiA+ICsgICAgOiAgIHZmckltYWdlVGFnIHwgdmZyTG9j a2VkVGFnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1l bnRTdGF0VGFnTGlzdFtOb2RlXQ0KPiA+DQo+ID4gKyAgICA6ICAgdmZyU3RhdGVtZW50U3RhdFRh ZyAoJywnIHZmclN0YXRlbWVudFN0YXRUYWcpKg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArdmZyRm9ybURlZmluaXRpb24NCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1WZnJU cmVlTm9kZShFRklfSUZSX0ZPUk1fT1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ2Zvcm0nICdmb3Jt aWQnICc9JyBOdW1iZXIgJywnDQo+ID4NCj4gPiArICAgICAgICAndGl0bGUnICc9JyAnU1RSSU5H X1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnOycNCj4gPg0KPiA+ICsgICAgICAgICh2ZnJGb3JtKSoN Cj4gPg0KPiA+ICsgICAgICAgICdlbmRmb3JtJyAnOycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK3ZmckZvcm0NCj4gPg0KPiA+ICtsb2NhbHNbTm9kZV0NCj4gPg0KPiA+ ICsgICAgOg0KPiA+DQo+ID4gKyAgICAoICAgdmZyU3RhdGVtZW50SW1hZ2UNCj4gPg0KPiA+ICsg ICAgfCAgIHZmclN0YXRlbWVudExvY2tlZA0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVtZW50 UnVsZXMNCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVudERlZmF1bHQNCj4gPg0KPiA+ICsg ICAgfCAgIHZmclN0YXRlbWVudFN0YXQNCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVudFF1 ZXN0aW9ucw0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVtZW50Q29uZGl0aW9uYWwNCj4gPg0K PiA+ICsgICAgfCAgIHZmclN0YXRlbWVudExhYmVsDQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0 ZW1lbnRCYW5uZXINCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVudEludmFsaWQNCj4gPg0K PiA+ICsgICAgfCAgIHZmclN0YXRlbWVudEV4dGVuc2lvbg0KPiA+DQo+ID4gKyAgICB8ICAgdmZy U3RhdGVtZW50TW9kYWwNCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVudFJlZnJlc2hFdmVu dCAnOycNCj4gPg0KPiA+ICsgICAgKQ0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArdmZyRm9ybU1hcERlZmluaXRpb24NCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1WZnJUcmVl Tm9kZShFRklfSUZSX0ZPUk1fTUFQX09QKV0NCj4gPg0KPiA+ICsgICAgOiAgICdmb3JtbWFwJyAn Zm9ybWlkJyAnPScgUzE9TnVtYmVyICcsJw0KPiA+DQo+ID4gKyAgICAgICAgKCAgICdtYXB0aXRs ZScgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICc7Jw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICdtYXBndWlkJyAnPScgZ3VpZERlZmluaXRpb24gJzsnDQo+ID4NCj4gPiArICAgICAg ICApKg0KPiA+DQo+ID4gKyAgICAgICAgKHZmckZvcm0pKg0KPiA+DQo+ID4gKyAgICAgICAgJ2Vu ZGZvcm0nICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyU3Rh dGVtZW50SW1hZ2UNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZV0NCj4gPg0KPiA+ICsgICAgOiAgIHZm ckltYWdlVGFnICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZy U3RhdGVtZW50TG9ja2VkDQo+ID4NCj4gPiArbG9jYWxzW05vZGVdDQo+ID4NCj4gPiArICAgIDog ICB2ZnJMb2NrZWRUYWcgJzsnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICt2ZnJTdGF0ZW1lbnRSdWxlcw0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVG SV9JRlJfUlVMRV9PUCldDQo+ID4NCj4gPiArICAgIDogICAncnVsZScgU3RyaW5nSWRlbnRpZmll ciAnLCcNCj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb24NCj4gPg0KPiA+ ICsgICAgICAgICdlbmRydWxlJyAnOycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK3ZmclN0YXRlbWVudFN0YXQNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZV0NCj4gPg0KPiA+ ICsgICAgOiAgIHZmclN0YXRlbWVudFN1YlRpdGxlDQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0 ZW1lbnRTdGF0aWNUZXh0DQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRDcm9zc1JlZmVy ZW5jZQ0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50 U3ViVGl0bGUNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX1NVQlRJ VExFX09QKSwgT3BPYmo9Q0lmclN1YnRpdGxlKCldDQo+ID4NCj4gPiArICAgIDogICAnc3VidGl0 bGUnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAndGV4dCcgJz0nICdTVFJJTkdfVE9L RU4nICcoJyBOdW1iZXIgJyknDQo+ID4NCj4gPiArICAgICAgICAoJywnICdmbGFncycgJz0nIHZm clN1YnRpdGxlRmxhZ3MpPw0KPiA+DQo+ID4gKyAgICAgICAgKCAgICgnLCcgdmZyU3RhdGVtZW50 U3RhdFRhZ0xpc3RbbG9jYWxjdHguTm9kZV0pPyAnOycNCj4gPg0KPiA+ICsgICAgICAgIHwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAoJywnIHZmclN0YXRlbWVudFN0YXRUYWdMaXN0W2xvY2FsY3R4 Lk5vZGVdKT8NCj4gPg0KPiA+ICsgICAgICAgICAgICAoJywnICh2ZnJTdGF0ZW1lbnRTdWJUaXRs ZUNvbXBvbmVudCkqICk/DQo+ID4NCj4gPiArICAgICAgICAgICAgJ2VuZHN1YnRpdGxlJyAnOycN Cj4gPg0KPiA+ICsgICAgICAgICkNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gK3ZmclN0YXRlbWVudFN1YlRpdGxlQ29tcG9uZW50DQo+ID4NCj4gPiArbG9jYWxzW05vZGVd DQo+ID4NCj4gPiArICAgIDogIHZmclN0YXRlbWVudFN0YXQgfCB2ZnJTdGF0ZW1lbnRRdWVzdGlv bnMNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN1YnRpdGxlRmxh Z3MNCj4gPg0KPiA+ICtsb2NhbHNbU3ViRmxhZ3M9MF0NCj4gPg0KPiA+ICsgICAgOiAgIHN1YnRp dGxlRmxhZ3NGaWVsZCAoJ3wnIHN1YnRpdGxlRmxhZ3NGaWVsZCkqDQo+ID4NCj4gPiArICAgIDsN Cj4gPg0KPiA+ICtzdWJ0aXRsZUZsYWdzRmllbGQNCj4gPg0KPiA+ICtsb2NhbHNbRmxhZz0wXQ0K PiA+DQo+ID4gKyAgICA6ICAgTnVtYmVyIHwgJ0hPUklaT05UQUwnDQo+ID4NCj4gPiArICAgIDsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRTdGF0aWNUZXh0DQo+ID4NCj4gPiAr bG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9URVhUX09QKV0NCj4gPg0KPiA+ICsgICAg OiAgICd0ZXh0Jw0KPiA+DQo+ID4gKyAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAn KCcgUzE9TnVtYmVyICcpJyAnLCcNCj4gPg0KPiA+ICsgICAgICAgICd0ZXh0JyAnPScgJ1NUUklO R19UT0tFTicgJygnIFMyPU51bWJlciAnKScNCj4gPg0KPiA+ICsgICAgICAgICgnLCcgJ3RleHQn ICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgUzM9TnVtYmVyICcpJyk/DQo+ID4NCj4gPiArICAgICAg ICAoJywnIEY9J2ZsYWdzJyAnPScgc3RhdGljVGV4dEZsYWdzRmllbGQgKCd8JyBzdGF0aWNUZXh0 RmxhZ3NGaWVsZCkqICcsJyAna2V5JyAnPScNCj4gPiBTND1OdW1iZXIpPw0KPiA+DQo+ID4gKyAg ICAgICAgKCcsJyB2ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdFtsb2NhbGN0eC5Ob2RlXSk/ICc7Jw0K PiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArc3RhdGljVGV4dEZsYWdzRmll bGQNCj4gPg0KPiA+ICtsb2NhbHNbRmxhZz0wXQ0KPiA+DQo+ID4gKyAgICA6ICAgTj1OdW1iZXIg fCBxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK3ZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlDQo+ID4NCj4gPiArbG9jYWxzW05v ZGVdDQo+ID4NCj4gPiArICAgIDogICB2ZnJTdGF0ZW1lbnRHb3RvIHwgdmZyU3RhdGVtZW50UmVz ZXRCdXR0b24NCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRl bWVudEdvdG8NCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX1JFRl9P UCksIE9wT2JqPU5vbmUsIE9IT2JqPU5vbmUsDQo+ID4gUVR5cGU9RUZJX1FVRVNJT05fVFlQRS5R VUVTVElPTl9SRUZdDQo+ID4NCj4gPiArICAgIDogICAnZ290bycNCj4gPg0KPiA+ICsgICAgICAg ICggICAoICAgRGV2aWNlUGF0aCAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScgJywn DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEZvcm1TZXRHdWlkICc9JyBndWlkRGVmaW5pdGlv biAnLCcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgRm9ybUlkICc9JyBOdW1iZXIgJywnDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIFF1ZXN0aW9uICc9JyBOdW1iZXIgJywnDQo+ID4NCj4g PiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAoICAgRm9ybVNldEd1aWQgJz0nIGd1aWREZWZpbml0aW9uICcsJw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBGb3JtSWQgJz0nIE51bWJlciAnLCcNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgUXVlc3Rpb24gJz0nIE51bWJlciAnLCcNCj4gPg0KPiA+ICsgICAgICAgICAgICAp DQo+ID4NCj4gPiArICAgICAgICAgICAgfA0KPiA+DQo+ID4gKyAgICAgICAgICAgICggICBGb3Jt SWQgJz0nIE51bWJlciAnLCcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgUXVlc3Rpb24gJz0n IChRTj1TdHJpbmdJZGVudGlmaWVyICcsJyB8IE51bWJlciAnLCcpDQo+ID4NCj4gPiArICAgICAg ICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHwNCj4gPg0KPiA+ICsgICAgICAgICAgICAo ICAgTnVtYmVyICcsJyApDQo+ID4NCj4gPiArICAgICAgICApPw0KPiA+DQo+ID4gKyAgICAgICAg dmZyUXVlc3Rpb25IZWFkZXJbbG9jYWxjdHguT3BPYmosIGxvY2FsY3R4LlFUeXBlXQ0KPiA+DQo+ ID4gKyAgICAgICAgKCcsJyAnZmxhZ3MnICc9JyB2ZnJHb3RvRmxhZ3NbbG9jYWxjdHguT3BPYmpd KT8NCj4gPg0KPiA+ICsgICAgICAgICgnLCcgJ2tleScgJz0nIE51bWJlcik/DQo+ID4NCj4gPiAr ICAgICAgICAoJywnIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2Rl XSk/ICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyR290b0Zs YWdzW09ial0NCj4gPg0KPiA+ICtsb2NhbHNbR290b0ZsYWdzPTBdDQo+ID4NCj4gPiArICAgIDog ICBnb3RvRmxhZ3NGaWVsZCgnfCcgZ290b0ZsYWdzRmllbGQpKg0KPiA+DQo+ID4gKyAgICA7DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArZ290b0ZsYWdzRmllbGQNCj4gPg0KPiA+ICtsb2NhbHNbRmxh Zz0wXQ0KPiA+DQo+ID4gKyAgICA6ICBOPU51bWJlciB8IHF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVs ZA0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50UmVz ZXRCdXR0b24NCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX1JFU0VU X0JVVFRPTl9PUCksDQo+ID4gT3BPYmo9Q0lmclJlc2V0QnV0dG9uKCldDQo+ID4NCj4gPiArICAg IDogICdyZXNldGJ1dHRvbicNCj4gPg0KPiA+ICsgICAgICAgJ2RlZmF1bHRzdG9yZScgJz0nIE49 U3RyaW5nSWRlbnRpZmllciAnLCcNCj4gPg0KPiA+ICsgICAgICAgdmZyU3RhdGVtZW50SGVhZGVy W2xvY2FsY3R4Lk9wT2JqXSAnLCcNCj4gPg0KPiA+ICsgICAgICAgKHZmclN0YXRlbWVudFN0YXRU YWdMaXN0W2xvY2FsY3R4Lk5vZGVdICcsJyk/DQo+ID4NCj4gPiArICAgICAgICdlbmRyZXNldGJ1 dHRvbicgJzsnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0 ZW1lbnRRdWVzdGlvbnMNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZV0NCj4gPg0KPiA+ICsgICAgOiAg IHZmclN0YXRlbWVudEJvb2xlYW5UeXBlDQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRE YXRlDQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1lbnROdW1lcmljVHlwZQ0KPiA+DQo+ID4g KyAgICB8ICAgdmZyU3RhdGVtZW50U3RyaW5nVHlwZQ0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3Rh dGVtZW50T3JkZXJlZExpc3QNCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVudFRpbWUNCj4g Pg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudFF1ZXN0aW9u VGFnDQo+ID4NCj4gPiArbG9jYWxzW05vZGVdDQo+ID4NCj4gPiArICAgIDogICB2ZnJTdGF0ZW1l bnRTdGF0VGFnICcsJw0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50 SWYNCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVudE5vU3VibWl0SWYNCj4gPg0KPiA+ICsg ICAgfCAgIHZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0DQo+ID4NCj4gPiArICAgIHwgICB2ZnJT dGF0ZW1lbnRSZWZyZXNoDQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRWYXJzdG9yZURl dmljZQ0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVtZW50RXh0ZW5zaW9uDQo+ID4NCj4gPiAr ICAgIHwgICB2ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQNCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0 YXRlbWVudFdhcm5pbmdJZg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr dmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1WZnJUcmVl Tm9kZShFRklfSUZSX0lOQ09OU0lTVEVOVF9JRl9PUCldDQo+ID4NCj4gPiArICAgIDogICAnaW5j b25zaXN0ZW50aWYnDQo+ID4NCj4gPiArICAgICAgICAncHJvbXB0JyAnPScgJ1NUUklOR19UT0tF TicgJygnIE51bWJlciAnKScgJywnDQo+ID4NCj4gPiArICAgICAgICAoJ2ZsYWdzJyAnPScgZmxh Z3NGaWVsZCAoJ3wnIGZsYWdzRmllbGQpKiAnLCcpPw0KPiA+DQo+ID4gKyAgICAgICAgdmZyU3Rh dGVtZW50RXhwcmVzc2lvbg0KPiA+DQo+ID4gKyAgICAgICAgJ2VuZGlmJyAoJzsnKT8NCj4gPg0K PiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudE5vU3VibWl0SWYN Cj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX05PX1NVQk1JVF9JRl9P UCldDQo+ID4NCj4gPiArICAgIDogICAnbm9zdWJtaXRpZicNCj4gPg0KPiA+ICsgICAgICAgICdw cm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gPg0KPiA+ICsg ICAgICAgICgnZmxhZ3MnICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NGaWVsZCkqICcsJyk/DQo+ ID4NCj4gPiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uDQo+ID4NCj4gPiArICAgICAg ICAnZW5kaWYnICgnOycpPw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr dmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3QNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1WZnJUcmVl Tm9kZShFRklfSUZSX0RJU0FCTEVfSUZfT1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ2Rpc2FibGVp ZicgdmZyU3RhdGVtZW50RXhwcmVzc2lvbiAnOycNCj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRl bWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXQ0KPiA+DQo+ID4gKyAgICAgICAg J2VuZGlmJyAoJzsnKT8NCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3Zm clN0YXRlbWVudFJlZnJlc2gNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklf SUZSX1JFRlJFU0hfT1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ3JlZnJlc2gnICdpbnRlcnZhbCcg Jz0nIE51bWJlcg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyU3Rh dGVtZW50VmFyc3RvcmVEZXZpY2UNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShF RklfSUZSX1ZBUlNUT1JFX0RFVklDRV9PUCldDQo+ID4NCj4gPiArICAgIDogICAndmFyc3RvcmVk ZXZpY2UnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gPg0KPiA+ICsg ICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudFJlZnJlc2hFdmVudA0KPiA+ DQo+ID4gK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfUkVGUkVTSF9JRF9PUCldDQo+ ID4NCj4gPiArICAgIDogICAncmVmcmVzaGd1aWQnICc9JyBndWlkRGVmaW5pdGlvbiAnLCcNCj4g Pg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudFdhcm5pbmdJ Zg0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfV0FSTklOR19JRl9P UCldDQo+ID4NCj4gPiArICAgIDogICAnd2FybmluZ2lmJw0KPiA+DQo+ID4gKyAgICAgICAgJ3By b21wdCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiA+DQo+ID4gKyAg ICAgICAgKCd0aW1lb3V0JyAnPScgTnVtYmVyICcsJyk/DQo+ID4NCj4gPiArICAgICAgICB2ZnJT dGF0ZW1lbnRFeHByZXNzaW9uDQo+ID4NCj4gPiArICAgICAgICAnZW5kaWYnICgnOycpPw0KPiA+ DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50UXVlc3Rpb25U YWdMaXN0W05vZGVdDQo+ID4NCj4gPiArICAgIDogICAodmZyU3RhdGVtZW50UXVlc3Rpb25UYWcp Kg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50UXVl c3Rpb25PcHRpb25UYWcNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZV0NCj4gPg0KPiA+ICsgICAgOiAg IHZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVzdA0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVt ZW50R3JheU91dElmUXVlc3QNCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVudFZhbHVlDQo+ ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1lbnREZWZhdWx0DQo+ID4NCj4gPiArICAgIHwgICB2 ZnJTdGF0ZW1lbnRPcHRpb25zDQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRSZWFkDQo+ ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRXcml0ZQ0KPiA+DQo+ID4gKyAgICA7DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArZmxhZ3NGaWVsZA0KPiA+DQo+ID4gKyAgICA6ICAgTnVtYmVyDQo+ ID4NCj4gPiArICAgIHwgICBJbnRlcmFjdGl2ZUZsYWcNCj4gPg0KPiA+ICsgICAgfCAgIE1hbnVm YWN0dXJpbmdGbGFnDQo+ID4NCj4gPiArICAgIHwgICBEZWZhdWx0RmxhZw0KPiA+DQo+ID4gKyAg ICB8ICAgUmVzZXRSZXF1aXJlZEZsYWcNCj4gPg0KPiA+ICsgICAgfCAgIFJlY29ubmVjdFJlcXVp cmVkRmxhZw0KPiA+DQo+ID4gKyAgICB8ICAgTj1OVkFjY2Vzc0ZsYWcNCj4gPg0KPiA+ICsgICAg fCAgIEw9TGF0ZUNoZWNrRmxhZw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArdmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0DQo+ID4NCj4gPiArbG9jYWxzW05vZGU9VmZy VHJlZU5vZGUoRUZJX0lGUl9TVVBQUkVTU19JRl9PUCldDQo+ID4NCj4gPiArICAgIDogICAnc3Vw cHJlc3NpZicgdmZyU3RhdGVtZW50RXhwcmVzc2lvbiAnOycNCj4gPg0KPiA+ICsgICAgICAgICgn ZmxhZ3MnICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NGaWVsZCApKiAnLCcpPw0KPiA+DQo+ID4g KyAgICAgICAgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0W2xvY2FsY3R4Lk5vZGVdDQo+ ID4NCj4gPiArICAgICAgICAnZW5kaWYnICgnOycpPw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QNCj4gPg0KPiA+ICtsb2Nh bHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX1NVUFBSRVNTX0lGX09QKV0NCj4gPg0KPiA+ICsg ICAgOiAgICdncmF5b3V0aWYnIHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQo+ID4NCj4gPiAr ICAgICAgICAoJ2ZsYWdzJyAnPScgZmxhZ3NGaWVsZCAoJ3wnIGZsYWdzRmllbGQgKSogJywnKT8N Cj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0 eC5Ob2RlXQ0KPiA+DQo+ID4gKyAgICAgICAgJ2VuZGlmJyAoJzsnKT8NCj4gPg0KPiA+ICsgICAg Ow0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudERlZmF1bHQN Cj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX0RFRkFVTFRfT1ApXQ0K PiA+DQo+ID4gKyAgICA6ICAgRD0nZGVmYXVsdCcNCj4gPg0KPiA+ICsgICAgICAgICggICAoICAg dmZyU3RhdGVtZW50VmFsdWUgJywnDQo+ID4NCj4gPiArICAgICAgICAgICAgfCAgICc9JyB2ZnJD b25zdGFudFZhbHVlRmllbGQgJywnDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICggICAnZGVmYXVsdHN0b3JlJyAnPScgU049U3RyaW5nSWRlbnRpZmllciAn LCcNCj4gPg0KPiA+ICsgICAgICAgICAgICApPw0KPiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50VmFsdWUNCj4gPg0K PiA+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX1ZBTFVFX09QKV0NCj4gPg0KPiA+ ICsgICAgOiAgICd2YWx1ZScgJz0nIHZmclN0YXRlbWVudEV4cHJlc3Npb24NCj4gPg0KPiA+ICsg ICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudE9wdGlvbnMNCj4gPg0KPiA+ ICtsb2NhbHNbTm9kZV0NCj4gPg0KPiA+ICsgICAgOiAgIHZmclN0YXRlbWVudE9uZU9mT3B0aW9u DQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRPbmVP Zk9wdGlvbg0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfT05FX09G X09QVElPTl9PUCldDQo+ID4NCj4gPiArICAgIDogICAnb3B0aW9uJw0KPiA+DQo+ID4gKyAgICAg ICAgJ3RleHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gPg0KPiA+ ICsgICAgICAgICd2YWx1ZScgJz0nIHZmckNvbnN0YW50VmFsdWVGaWVsZCAnLCcNCj4gPg0KPiA+ ICsgICAgICAgIEY9J2ZsYWdzJyAnPScgdmZyT25lT2ZPcHRpb25GbGFncyAoJywnICdrZXknICc9 JyBLTj1OdW1iZXIpID8gKCcsJw0KPiA+IHZmckltYWdlVGFnKSogJzsnDQo+ID4NCj4gPiArICAg IDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJPbmVPZk9wdGlvbkZsYWdzDQo+ID4NCj4gPiAr bG9jYWxzW0hGbGFncz0wLCBMRmxhZ3M9MF0NCj4gPg0KPiA+ICsgICAgOiAgIG9uZW9mb3B0aW9u RmxhZ3NGaWVsZCAoJ3wnIG9uZW9mb3B0aW9uRmxhZ3NGaWVsZCkqOw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK29uZW9mb3B0aW9uRmxhZ3NGaWVsZA0KPiA+DQo+ID4gKwlsb2NhbHNbSEZsYWc9MCwg TEZsYWc9MF0NCj4gPg0KPiA+ICsgICAgOiAgIE51bWJlcg0KPiA+DQo+ID4gKyAgICB8ICAgT3B0 aW9uRGVmYXVsdA0KPiA+DQo+ID4gKyAgICB8ICAgT3B0aW9uRGVmYXVsdE1mZw0KPiA+DQo+ID4g KyAgICB8ICAgSW50ZXJhY3RpdmVGbGFnDQo+ID4NCj4gPiArICAgIHwgICBSZXNldFJlcXVpcmVk RmxhZw0KPiA+DQo+ID4gKyAgICB8ICAgUmVzdFN0eWxlRmxhZw0KPiA+DQo+ID4gKyAgICB8ICAg UmVjb25uZWN0UmVxdWlyZWRGbGFnDQo+ID4NCj4gPiArICAgIHwgICBNYW51ZmFjdHVyaW5nRmxh Zw0KPiA+DQo+ID4gKyAgICB8ICAgRGVmYXVsdEZsYWcNCj4gPg0KPiA+ICsgICAgfCAgIEE9TlZB Y2Nlc3NGbGFnDQo+ID4NCj4gPiArICAgIHwgICBMPUxhdGVDaGVja0ZsYWcNCj4gPg0KPiA+ICsg ICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudFJlYWQNCj4gPg0KPiA+ICts b2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX1JFQURfT1ApXQ0KPiA+DQo+ID4gKyAgICA6 ICAgJ3JlYWQnIHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQo+ID4NCj4gPiArICAgIDsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRXcml0ZQ0KPiA+DQo+ID4gK2xvY2Fsc1tO b2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfV1JJVEVfT1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ3dy aXRlJyB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0W05vZGVdDQo+ID4N Cj4gPiArICAgIDogICAodmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb24pKg0KPiA+DQo+ID4gKyAg ICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyU3Rh dGVtZW50UXVlc3Rpb25PcHRpb24NCj4gPg0KPiA+ICtsb2NhbHNbTm9kZV0NCj4gPg0KPiA+ICsg ICAgOiAgIHZmclN0YXRlbWVudFF1ZXN0aW9uVGFnIHwgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRp b25UYWcNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVu dEJvb2xlYW5UeXBlDQo+ID4NCj4gPiArbG9jYWxzW05vZGVdDQo+ID4NCj4gPiArICAgIDogICB2 ZnJTdGF0ZW1lbnRDaGVja0JveCB8IHZmclN0YXRlbWVudEFjdGlvbg0KPiA+DQo+ID4gKyAgICA7 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50Q2hlY2tCb3gNCj4gPg0KPiA+ICts b2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX0NIRUNLQk9YX09QKSwNCj4gPiBPcE9iaj1D SWZyQ2hlY2tCb3goKSwgUVR5cGU9RUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUxdDQo+ ID4NCj4gPiArICAgIDogICBMPSdjaGVja2JveCcNCj4gPg0KPiA+ICsgICAgICAgIHZmclF1ZXN0 aW9uQmFzZUluZm9bbG9jYWxjdHguT3BPYmosIGxvY2FsY3R4LlFUeXBlXQ0KPiA+DQo+ID4gKyAg ICAgICAgdmZyU3RhdGVtZW50SGVhZGVyW2xvY2FsY3R4Lk9wT2JqXSAnLCcNCj4gPg0KPiA+ICsg ICAgICAgIChGPSdmbGFncycgJz0nIHZmckNoZWNrQm94RmxhZ3MgJywnKT8NCj4gPg0KPiA+ICsg ICAgICAgICgna2V5JyAnPScgTnVtYmVyICcsJyk/DQo+ID4NCj4gPiArICAgICAgICB2ZnJTdGF0 ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RbbG9jYWxjdHguTm9kZV0NCj4gPg0KPiA+ICsgICAgICAg ICdlbmRjaGVja2JveCcgJzsnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICt2ZnJDaGVja0JveEZsYWdzDQo+ID4NCj4gPiArbG9jYWxzW0xGbGFncz0wLCBIRmxhZ3M9MF0N Cj4gPg0KPiA+ICsgICAgOiAgIGNoZWNrYm94RmxhZ3NGaWVsZCAoJ3wnIGNoZWNrYm94RmxhZ3NG aWVsZCkqDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjaGVja2JveEZs YWdzRmllbGQNCj4gPg0KPiA+ICtsb2NhbHNbTEZsYWc9MCwgSEZsYWc9MF0NCj4gPg0KPiA+ICsg ICAgOiAgIE51bWJlcg0KPiA+DQo+ID4gKyAgICB8ICAgRD0nREVGQVVMVCcNCj4gPg0KPiA+ICsg ICAgfCAgIE09J01BTlVGQUNUVVJJTkcnDQo+ID4NCj4gPiArICAgIHwgICAnQ0hFQ0tCT1hfREVG QVVMVCcNCj4gPg0KPiA+ICsgICAgfCAgICdDSEVDS0JPWF9ERUZBVUxUX01GRycNCj4gPg0KPiA+ ICsgICAgfCAgIHF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZA0KPiA+DQo+ID4gKyAgICA7DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50QWN0aW9uDQo+ID4NCj4gPiArbG9jYWxzW05v ZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9BQ1RJT05fT1ApLE9wT2JqPUNJZnJBY3Rpb24oKSwNCj4g PiBRVHlwZT1FRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTF0NCj4gPg0KPiA+ICsgICAg OiAgICdhY3Rpb24nDQo+ID4NCj4gPiArICAgICAgICB2ZnJRdWVzdGlvbkhlYWRlcltsb2NhbGN0 eC5PcE9iaiwgbG9jYWxjdHguUVR5cGVdICcsJw0KPiA+DQo+ID4gKyAgICAgICAgKCdmbGFncycg Jz0nIHZmckFjdGlvbkZsYWdzICcsJyk/DQo+ID4NCj4gPiArICAgICAgICAnY29uZmlnJyAnPScg J1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScgJywnDQo+ID4NCj4gPiArICAgICAgICB2ZnJT dGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3RbbG9jYWxjdHguTm9kZV0NCj4gPg0KPiA+ICsgICAgICAg ICdlbmRhY3Rpb24nICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr dmZyQWN0aW9uRmxhZ3MNCj4gPg0KPiA+ICtsb2NhbHNbSEZsYWdzPTBdDQo+ID4NCj4gPiArICAg IDogICBhY3Rpb25GbGFnc0ZpZWxkICgnfCcgYWN0aW9uRmxhZ3NGaWVsZCkqDQo+ID4NCj4gPiAr ICAgIDsNCj4gPg0KPiA+ICthY3Rpb25GbGFnc0ZpZWxkDQo+ID4NCj4gPiArbG9jYWxzW0hGbGFn PTBdDQo+ID4NCj4gPiArICAgIDogICBOPU51bWJlciB8IHF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVs ZA0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50TnVt ZXJpY1R5cGUNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZV0NCj4gPg0KPiA+ICsgICAgOiAgIHZmclN0 YXRlbWVudE51bWVyaWMgfCB2ZnJTdGF0ZW1lbnRPbmVPZg0KPiA+DQo+ID4gKyAgICA7DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50TnVtZXJpYw0KPiA+DQo+ID4gK2xvY2Fsc1tO b2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfTlVNRVJJQ19PUCksIE9wT2JqPUNJZnJOdW1lcmljKCks DQo+ID4gUVR5cGU9RUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUxdDQo+ID4NCj4gPiAr ICAgIDogICAnbnVtZXJpYycNCj4gPg0KPiA+ICsgICAgICAgIHZmclF1ZXN0aW9uQmFzZUluZm9b bG9jYWxjdHguT3BPYmosIGxvY2FsY3R4LlFUeXBlXQ0KPiA+DQo+ID4gKyAgICAgICAgdmZyU3Rh dGVtZW50SGVhZGVyW2xvY2FsY3R4Lk9wT2JqXSAnLCcNCj4gPg0KPiA+ICsgICAgICAgIChGPSdm bGFncycgJz0nIHZmck51bWVyaWNGbGFncyAnLCcpPw0KPiA+DQo+ID4gKyAgICAgICAgKCdrZXkn ICc9JyBOdW1iZXIgJywnKT8NCj4gPg0KPiA+ICsgICAgICAgIHZmclNldE1pbk1heFN0ZXBbbG9j YWxjdHguT3BPYmpdDQo+ID4NCj4gPiArICAgICAgICB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlv bkxpc3RbbG9jYWxjdHguTm9kZV0NCj4gPg0KPiA+ICsgICAgICAgICdlbmRudW1lcmljJyAnOycN Cj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclNldE1pbk1heFN0ZXBb T3BPYmpdIC8vIENJZnJNaW5NYXhTdGVwRGF0YQ0KPiA+DQo+ID4gKyAgICA6ICAgJ21pbmltdW0n ICc9JyAoTjE9Jy0nKT8gST1OdW1iZXIgJywnDQo+ID4NCj4gPiArICAgICAgICAnbWF4aW11bScg Jz0nIChOMj0nLScpPyBBPU51bWJlciAnLCcNCj4gPg0KPiA+ICsgICAgICAgICgnc3RlcCcgJz0n IFM9TnVtYmVyICcsJyk/DQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2 ZnJOdW1lcmljRmxhZ3MNCj4gPg0KPiA+ICtsb2NhbHNbSEZsYWdzPTAsIExGbGFncz0wLElzRGlz cGxheVNwZWNpZmllZD1GYWxzZV0NCj4gPg0KPiA+ICsgICAgOiAgIG51bWVyaWNGbGFnc0ZpZWxk ICgnfCcgbnVtZXJpY0ZsYWdzRmllbGQpKg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArbnVtZXJpY0ZsYWdzRmllbGQNCj4gPg0KPiA+ICtsb2NhbHNbSEZsYWc9MCxJc1Nl dFR5cGU9RmFsc2UsSXNEaXNwbGF5U3BlY2lmaWVkPUZhbHNlXQ0KPiA+DQo+ID4gKyAgICA6ICAg Tj1OdW1iZXINCj4gPg0KPiA+ICsgICAgfCAgICdOVU1FUklDX1NJWkVfMScNCj4gPg0KPiA+ICsg ICAgfCAgICdOVU1FUklDX1NJWkVfMicNCj4gPg0KPiA+ICsgICAgfCAgICdOVU1FUklDX1NJWkVf NCcNCj4gPg0KPiA+ICsgICAgfCAgICdOVU1FUklDX1NJWkVfOCcNCj4gPg0KPiA+ICsgICAgfCAg ICdESVNQTEFZX0lOVF9ERUMnDQo+ID4NCj4gPiArICAgIHwgICAnRElTUExBWV9VSU5UX0RFQycN Cj4gPg0KPiA+ICsgICAgfCAgICdESVNQTEFZX1VJTlRfSEVYJw0KPiA+DQo+ID4gKyAgICB8ICAg cXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICt2ZnJTdGF0ZW1lbnRPbmVPZg0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPVZmclRyZWVO b2RlKEVGSV9JRlJfT05FX09GX09QKSwgT3BPYmo9Q0lmck9uZU9mKCksDQo+ID4gUVR5cGU9RUZJ X1FVRVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUxdDQo+ID4NCj4gPiArICAgIDogICAnb25lb2Yn DQo+ID4NCj4gPiArICAgICAgICB2ZnJRdWVzdGlvbkJhc2VJbmZvW2xvY2FsY3R4Lk9wT2JqLCBs b2NhbGN0eC5RVHlwZV0NCj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRlbWVudEhlYWRlcltsb2Nh bGN0eC5PcE9ial0gJywnDQo+ID4NCj4gPiArICAgICAgICAoRj0nZmxhZ3MnICc9JyB2ZnJPbmVv ZkZsYWdzRmllbGQgJywnKT8NCj4gPg0KPiA+ICsgICAgICAgICh2ZnJTZXRNaW5NYXhTdGVwW2xv Y2FsY3R4Lk9wT2JqXSk/DQo+ID4NCj4gPiArICAgICAgICB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9w dGlvbkxpc3RbbG9jYWxjdHguTm9kZV0NCj4gPg0KPiA+ICsgICAgICAgICdlbmRvbmVvZicgJzsn DQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJPbmVvZkZsYWdzRmll bGQNCj4gPg0KPiA+ICtsb2NhbHNbSEZsYWdzPTAsIExGbGFncz0wXQ0KPiA+DQo+ID4gKyAgICA6 ICAgbnVtZXJpY0ZsYWdzRmllbGQgKCd8JyBudW1lcmljRmxhZ3NGaWVsZCkqDQo+ID4NCj4gPiAr ICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRTdHJpbmdUeXBlDQo+ID4N Cj4gPiArbG9jYWxzW05vZGVdDQo+ID4NCj4gPiArICAgIDogICB2ZnJTdGF0ZW1lbnRTdHJpbmcg fCB2ZnJTdGF0ZW1lbnRQYXNzd29yZA0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArdmZyU3RhdGVtZW50U3RyaW5nDQo+ID4NCj4gPiArbG9jYWxzW05vZGU9VmZyVHJlZU5v ZGUoRUZJX0lGUl9TVFJJTkdfT1ApLCBPcE9iaj1DSWZyU3RyaW5nKCksDQo+ID4gUVR5cGU9RUZJ X1FVRVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUxdDQo+ID4NCj4gPiArICAgIDogICAnc3RyaW5n Jw0KPiA+DQo+ID4gKyAgICAgICAgdmZyUXVlc3Rpb25IZWFkZXJbbG9jYWxjdHguT3BPYmosIGxv Y2FsY3R4LlFUeXBlXSAnLCcNCj4gPg0KPiA+ICsgICAgICAgIChGPSdmbGFncycgJz0nIHZmclN0 cmluZ0ZsYWdzRmllbGQgJywnKT8NCj4gPg0KPiA+ICsgICAgICAgICgna2V5JyAnPScgTnVtYmVy ICcsJyk/DQo+ID4NCj4gPiArICAgICAgICBNaW49J21pbnNpemUnICc9JyBOdW1iZXIgJywnDQo+ ID4NCj4gPiArICAgICAgICBNYXg9J21heHNpemUnICc9JyBOdW1iZXIgJywnDQo+ID4NCj4gPiAr ICAgICAgICB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RbbG9jYWxjdHguTm9kZV0NCj4g Pg0KPiA+ICsgICAgICAgICdlbmRzdHJpbmcnICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArdmZyU3RyaW5nRmxhZ3NGaWVsZA0KPiA+DQo+ID4gK2xvY2Fsc1tIRmxh Z3M9MCwgTEZsYWdzPTBdDQo+ID4NCj4gPiArICAgIDogICBzdHJpbmdGbGFnc0ZpZWxkICgnfCcg c3RyaW5nRmxhZ3NGaWVsZCkqDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICtzdHJpbmdGbGFnc0ZpZWxkDQo+ID4NCj4gPiArbG9jYWxzW0hGbGFnPTAsIExGbGFnPTBdDQo+ ID4NCj4gPiArICAgIDogICBOPU51bWJlcg0KPiA+DQo+ID4gKyAgICB8ICAgJ01VTFRJX0xJTkUn DQo+ID4NCj4gPiArICAgIHwgICBxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQNCj4gPg0KPiA+ICsg ICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudFBhc3N3b3JkDQo+ID4NCj4g PiArbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9QQVNTV09SRF9PUCksDQo+ID4gT3BP Ymo9Q0lmclBhc3N3b3JkKCksIFFUeXBlPUVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFM XQ0KPiA+DQo+ID4gKyAgICA6ICAgJ3Bhc3N3b3JkJw0KPiA+DQo+ID4gKyAgICAgICAgdmZyUXVl c3Rpb25IZWFkZXJbbG9jYWxjdHguT3BPYmosIGxvY2FsY3R4LlFUeXBlXScsJw0KPiA+DQo+ID4g KyAgICAgICAgKEY9J2ZsYWdzJyAnPScgdmZyUGFzc3dvcmRGbGFnc0ZpZWxkICcsJyk/DQo+ID4N Cj4gPiArICAgICAgICAoJ2tleScgJz0nIE51bWJlciAnLCcpPw0KPiA+DQo+ID4gKyAgICAgICAg TWluPSdtaW5zaXplJyAnPScgTnVtYmVyICcsJw0KPiA+DQo+ID4gKyAgICAgICAgTWF4PSdtYXhz aXplJyAnPScgTnVtYmVyICcsJw0KPiA+DQo+ID4gKyAgICAgICAgKCdlbmNvZGluZycgJz0nIE51 bWJlciAnLCcpPw0KPiA+DQo+ID4gKyAgICAgICAgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25M aXN0W2xvY2FsY3R4Lk5vZGVdDQo+ID4NCj4gPiArICAgICAgICAnZW5kcGFzc3dvcmQnICc7Jw0K PiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyUGFzc3dvcmRGbGFnc0Zp ZWxkDQo+ID4NCj4gPiArbG9jYWxzW0hGbGFncz0wXQ0KPiA+DQo+ID4gKyAgICA6ICAgcGFzc3dv cmRGbGFnc0ZpZWxkKCd8JyBwYXNzd29yZEZsYWdzRmllbGQpKg0KPiA+DQo+ID4gKyAgICA7DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArcGFzc3dvcmRGbGFnc0ZpZWxkDQo+ID4NCj4gPiArbG9jYWxz W0hGbGFnPTBdDQo+ID4NCj4gPiArICAgIDogICBOdW1iZXINCj4gPg0KPiA+ICsgICAgfCAgIHF1 ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZA0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArdmZyU3RhdGVtZW50T3JkZXJlZExpc3QNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1WZnJU cmVlTm9kZShFRklfSUZSX09SREVSRURfTElTVF9PUCksDQo+ID4gT3BPYmo9Q0lmck9yZGVyZWRM aXN0KCksDQo+IFFUeXBlPUVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMXQ0KPiA+DQo+ ID4gKyAgICA6ICAgJ29yZGVyZWRsaXN0Jw0KPiA+DQo+ID4gKyAgICAgICAgdmZyUXVlc3Rpb25I ZWFkZXJbbG9jYWxjdHguT3BPYmosIGxvY2FsY3R4LlFUeXBlXSAnLCcNCj4gPg0KPiA+ICsgICAg ICAgIChNPSdtYXhjb250YWluZXJzJyAnPScgTnVtYmVyICcsJyk/DQo+ID4NCj4gPiArICAgICAg ICAoRj0nZmxhZ3MnICc9JyB2ZnJPcmRlcmVkTGlzdEZsYWdzICcsJyk/DQo+ID4NCj4gPiArICAg ICAgICB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RbbG9jYWxjdHguTm9kZV0NCj4gPg0K PiA+ICsgICAgICAgICdlbmRsaXN0JyAnOycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK3Zmck9yZGVyZWRMaXN0RmxhZ3MNCj4gPg0KPiA+ICtsb2NhbHNbSEZsYWdzPTAs IExGbGFncz0wXQ0KPiA+DQo+ID4gKyAgICA6ICAgb3JkZXJlZGxpc3RGbGFnc0ZpZWxkICgnfCcg b3JkZXJlZGxpc3RGbGFnc0ZpZWxkKSoNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK29yZGVyZWRsaXN0RmxhZ3NGaWVsZA0KPiA+DQo+ID4gK2xvY2Fsc1tIRmxhZz0wLCBM RmxhZz0wXQ0KPiA+DQo+ID4gKyAgICA6ICAgTnVtYmVyDQo+ID4NCj4gPiArICAgIHwgICAnVU5J UVVFJw0KPiA+DQo+ID4gKyAgICB8ICAgJ05PRU1QVFknDQo+ID4NCj4gPiArICAgIHwgICBxdWVz dGlvbmhlYWRlckZsYWdzRmllbGQNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gK3ZmclN0YXRlbWVudERhdGUNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShF RklfSUZSX0RBVEVfT1ApLCBPcE9iaj1DSWZyRGF0ZSgpLA0KPiA+IFFUeXBlPUVGSV9RVUVTSU9O X1RZUEUuUVVFU1RJT05fREFURSwgVmFsPUVGSV9JRlJfVFlQRV9WQUxVRSgpXQ0KPiA+DQo+ID4g KyAgICA6ICAgJ2RhdGUnDQo+ID4NCj4gPiArICAgICAgICAoICAgKCAgIHZmclF1ZXN0aW9uSGVh ZGVyW2xvY2FsY3R4Lk9wT2JqLCBsb2NhbGN0eC5RVHlwZV0gJywnDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIChGMT0nZmxhZ3MnICc9JyB2ZnJEYXRlRmxhZ3MgJywnKT8NCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0W2xvY2FsY3R4Lk5v ZGVdDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAoICAgJ3llYXInICd2YXJpZCcgJz0nIFN0cmluZ0lkZW50aWZp ZXIgJy4nIFN0cmluZ0lkZW50aWZpZXIgJywnDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICdw cm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAn LCcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbWluTWF4RGF0ZVN0ZXBEZWZhdWx0W2xvY2Fs Y3R4LlZhbC5kYXRlLCAwXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAnbW9udGgnICd2YXJp ZCcgJz0nIFN0cmluZ0lkZW50aWZpZXIgJy4nIFN0cmluZ0lkZW50aWZpZXIgJywnDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICdwcm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVy ICcpJyAnLCcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RP S0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbWluTWF4 RGF0ZVN0ZXBEZWZhdWx0W2xvY2FsY3R4LlZhbC5kYXRlLCAxXQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAnZGF5JyAndmFyaWQnICc9JyBTdHJpbmdJZGVudGlmaWVyICcuJyBTdHJpbmdJZGVu dGlmaWVyICcsJw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAncHJvbXB0JyAnPScgJ1NUUklO R19UT0tFTicgJygnIE51bWJlciAnKScgJywnDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICdo ZWxwJyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScgJywnDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIG1pbk1heERhdGVTdGVwRGVmYXVsdFtsb2NhbGN0eC5WYWwuZGF0ZSwgMl0N Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKEYyPSdmbGFncycgJz0nIHZmckRhdGVGbGFncyAn LCcpPw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAodmZyU3RhdGVtZW50SW5jb25zaXN0ZW50 SWYpKg0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICkNCj4gPg0K PiA+ICsgICAgICAgICdlbmRkYXRlJyAnOycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK21pbk1heERhdGVTdGVwRGVmYXVsdFtEYXRlLCBLZXlWYWx1ZV0NCj4gPg0KPiA+ ICsgICAgOiAgICdtaW5pbXVtJyAnPScgTnVtYmVyICcsJw0KPiA+DQo+ID4gKyAgICAgICAgJ21h eGltdW0nICc9JyBOdW1iZXIgJywnDQo+ID4NCj4gPiArICAgICAgICAoJ3N0ZXAnICc9JyBOdW1i ZXIgJywnKT8NCj4gPg0KPiA+ICsgICAgICAgICgnZGVmYXVsdCcgJz0nIE49TnVtYmVyICcsJyk/ DQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJEYXRlRmxhZ3MNCj4g Pg0KPiA+ICtsb2NhbHNbTEZsYWdzPTBdDQo+ID4NCj4gPiArICAgIDogICBkYXRlRmxhZ3NGaWVs ZCAoJ3wnIGRhdGVGbGFnc0ZpZWxkKSoNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gK2RhdGVG bGFnc0ZpZWxkDQo+ID4NCj4gPiArbG9jYWxzW0xGbGFnPTBdDQo+ID4NCj4gPiArICAgIDogICBO dW1iZXINCj4gPg0KPiA+ICsgICAgfCAgICdZRUFSX1NVUFBSRVNTJw0KPiA+DQo+ID4gKyAgICB8 ICAgJ01PTlRIX1NVUFBSRVNTJw0KPiA+DQo+ID4gKyAgICB8ICAgJ0RBWV9TVVBQUkVTUycNCj4g Pg0KPiA+ICsgICAgfCAgICdTVE9SQUdFX05PUk1BTCcNCj4gPg0KPiA+ICsgICAgfCAgICdTVE9S QUdFX1RJTUUnDQo+ID4NCj4gPiArICAgIHwgICAnU1RPUkFHRV9XQUtFVVAnDQo+ID4NCj4gPiAr ICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRUaW1lDQo+ID4NCj4gPiAr bG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9USU1FX09QKSwgT3BPYmo9Q0lmclRpbWUo KSwNCj4gPiBRVHlwZT1FRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX1RJTUUsICBWYWw9RUZJX0lG Ul9UWVBFX1ZBTFVFKCldDQo+ID4NCj4gPiArICAgIDogICAndGltZScNCj4gPg0KPiA+ICsgICAg ICAgICggICAoICAgdmZyUXVlc3Rpb25IZWFkZXJbbG9jYWxjdHguT3BPYmosIGxvY2FsY3R4LlFU eXBlXSAnLCcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKEYxPSdmbGFncycgJz0nIHZmclRp bWVGbGFncyAnLCcpPw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICB2ZnJTdGF0ZW1lbnRRdWVz dGlvbk9wdGlvbkxpc3RbbG9jYWxjdHguTm9kZV0NCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ ID4NCj4gPiArICAgICAgICAgICAgfA0KPiA+DQo+ID4gKyAgICAgICAgICAgICgNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgJ2hvdXInICd2YXJpZCcgJz0nIFN0cmluZ0lkZW50aWZpZXIgJy4n IFN0cmluZ0lkZW50aWZpZXIgJywnDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICdwcm9tcHQn ICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgbWluTWF4VGltZVN0ZXBEZWZhdWx0W2xvY2FsY3R4LlZh bC50aW1lLCAwXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAnbWludXRlJyAndmFyaWQnICc9 JyBTdHJpbmdJZGVudGlmaWVyICcuJyBTdHJpbmdJZGVudGlmaWVyICcsJw0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAncHJvbXB0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScg JywnDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICdoZWxwJyAnPScgJ1NUUklOR19UT0tFTicg JygnIE51bWJlciAnKScgJywnDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIG1pbk1heFRpbWVT dGVwRGVmYXVsdFtsb2NhbGN0eC5WYWwudGltZSwgMV0NCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgJ3NlY29uZCcgJ3ZhcmlkJyAnPScgU3RyaW5nSWRlbnRpZmllciAnLicgU3RyaW5nSWRlbnRp ZmllciAnLCcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgJ3Byb21wdCcgJz0nICdTVFJJTkdf VE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAnaGVs cCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBtaW5NYXhUaW1lU3RlcERlZmF1bHRbbG9jYWxjdHguVmFsLnRpbWUsIDJdDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIChGMj0nZmxhZ3MnICc9JyB2ZnJUaW1lRmxhZ3MgJywn KT8NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKHZmclN0YXRlbWVudEluY29uc2lzdGVudElm KSoNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICApDQo+ID4NCj4g PiArICAgICAgICAnZW5kdGltZScgJzsnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICttaW5NYXhUaW1lU3RlcERlZmF1bHRbVGltZSwgS2V5VmFsdWVdDQo+ID4NCj4gPiAr ICAgIDogICAnbWluaW11bScgJz0nIE51bWJlciAnLCcNCj4gPg0KPiA+ICsgICAgICAgICdtYXhp bXVtJyAnPScgTnVtYmVyICcsJw0KPiA+DQo+ID4gKyAgICAgICAgKCdzdGVwJyAnPScgTnVtYmVy ICcsJyk/DQo+ID4NCj4gPiArICAgICAgICAoJ2RlZmF1bHQnICc9JyBOPU51bWJlciAnLCcpPw0K PiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyVGltZUZsYWdzDQo+ID4N Cj4gPiArbG9jYWxzW0xGbGFncz0wXQ0KPiA+DQo+ID4gKyAgICA6ICAgdGltZUZsYWdzRmllbGQg KCd8JyB0aW1lRmxhZ3NGaWVsZCkqDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICt0aW1lRmxhZ3NGaWVsZA0KPiA+DQo+ID4gK2xvY2Fsc1tMRmxhZz0wXQ0KPiA+DQo+ID4g KyAgICA6ICAgTnVtYmVyDQo+ID4NCj4gPiArICAgIHwgICAnSE9VUl9TVVBQUkVTUycNCj4gPg0K PiA+ICsgICAgfCAgICdNSU5VVEVfU1VQUFJFU1MnDQo+ID4NCj4gPiArICAgIHwgICAnU0VDT05E X1NVUFBSRVNTJw0KPiA+DQo+ID4gKyAgICB8ICAgJ1NUT1JBR0VfTk9STUFMJw0KPiA+DQo+ID4g KyAgICB8ICAgJ1NUT1JBR0VfVElNRScNCj4gPg0KPiA+ICsgICAgfCAgICdTVE9SQUdFX1dBS0VV UCcNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudENv bmRpdGlvbmFsDQo+ID4NCj4gPiArbG9jYWxzW05vZGVdDQo+ID4NCj4gPiArICAgIDogICB2ZnJT dGF0ZW1lbnREaXNhYmxlSWZTdGF0DQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRTdXBw cmVzc0lmU3RhdCAvL2VuaGFuY2UgdG8gYmUgY29tcGF0aWJsZSBmb3INCj4gPiBmcmFtZXdvcmsg ZW5kaWYNCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXQNCj4gPg0K PiA+ICsgICAgfCAgIHZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdCAgIC8vdG8gYmUgY29t cGF0aWJsZSBmb3IgZnJhbWV3b3JrDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsvLyBuZXcgc2VlbXMgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIG9sZCwgd2h5IG5ldz8NCj4g Pg0KPiA+ICt2ZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ldw0KPiA+DQo+ID4gK2xvY2Fsc1tOb2Rl XQ0KPiA+DQo+ID4gKyAgICA6ICAgdmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdA0KPiA+DQo+ID4g KyAgICAgICAgdmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXcNCj4gPg0KPiA+ICsgICAgICAg IHZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXcNCj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRl bWVudEluY29uc2lzdGVudElmU3RhdCAgIC8vdG8gYmUgY29tcGF0aWJsZSBmb3IgZnJhbWV3b3Jr DQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRTdXBw cmVzc0lmU3RhdA0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlXQ0KPiA+DQo+ID4gKyAgICA6ICAgdmZy U3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXcNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK3ZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXQNCj4gPg0KPiA+ICtsb2NhbHNbTm9k ZV0NCj4gPg0KPiA+ICsgICAgOiAgIHZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXcNCj4gPg0K PiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudFN0YXRMaXN0DQo+ ID4NCj4gPiArbG9jYWxzW05vZGVdDQo+ID4NCj4gPiArICAgIDogICB2ZnJTdGF0ZW1lbnRTdGF0 DQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRRdWVzdGlvbnMNCj4gPg0KPiA+ICsgICAg fCAgIHZmclN0YXRlbWVudENvbmRpdGlvbmFsDQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1l bnRMYWJlbA0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVtZW50RXh0ZW5zaW9uDQo+ID4NCj4g PiArICAgIHwgICB2ZnJTdGF0ZW1lbnRJbnZhbGlkDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRTdGF0TGlzdE9sZA0KPiA+DQo+ID4gKyAgICA6ICAg dmZyU3RhdGVtZW50U3RhdA0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVtZW50UXVlc3Rpb25z DQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRMYWJlbA0KPiA+DQo+ID4gKyAgLy8gSnVz dCBmb3IgZnJhbWV3b3JrIHZmciBjb21wYXRpYmlsaXR5DQo+ID4NCj4gPiArICAgIHwgICB2ZnJT dGF0ZW1lbnRJbnZhbGlkDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2 ZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0DQo+ID4NCj4gPiArbG9jYWxzW05vZGU9VmZyVHJlZU5v ZGUoRUZJX0lGUl9ESVNBQkxFX0lGX09QKV0NCj4gPg0KPiA+ICsgICAgOiAgICdkaXNhYmxlaWYn IHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQo+ID4NCj4gPiArICAgICAgICAodmZyU3RhdGVt ZW50U3RhdExpc3QpKg0KPiA+DQo+ID4gKyAgICAgICAgJ2VuZGlmJyAnOycNCj4gPg0KPiA+ICsg ICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKy8vIENvbXBhdGlibGUgZm9y IGZyYW1ld29yayB2ZnIgZmlsZQ0KPiA+DQo+ID4gKy8vDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50 Z3JheW91dElmU3VwcHJlc3NJZg0KPiA+DQo+ID4gKyAgICA6ICAgJ3N1cHByZXNzaWYnDQo+ID4N Cj4gPiArICAgICAgICAoJ2ZsYWdzJyAnPScgZmxhZ3NGaWVsZCAoJ3wnIGZsYWdzRmllbGQpKiAn LCcpPw0KPiA+DQo+ID4gKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvbiAnOycNCj4gPg0K PiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudHN1cHByZXNzSWZH cmF5T3V0SWYNCj4gPg0KPiA+ICsgICAgOiAgICdncmF5b3V0aWYnDQo+ID4NCj4gPiArICAgICAg ICAoJ2ZsYWdzJyAnPScgZmxhZ3NGaWVsZCAoJ3wnIGZsYWdzRmllbGQpKiAnLCcpPw0KPiA+DQo+ ID4gKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvbiAnOycNCj4gPg0KPiA+ICsgICAgOw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3DQo+ID4N Cj4gPiArbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9TVVBQUkVTU19JRl9PUCldDQo+ ID4NCj4gPiArICAgIDogICAnc3VwcHJlc3NpZicNCj4gPg0KPiA+ICsgICAgICAgICgnZmxhZ3Mn ICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NGaWVsZCkqICcsJyk/DQo+ID4NCj4gPiArICAgICAg ICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uICc7Jw0KPiA+DQo+ID4gKyAgICAgICAgKHZmclN0YXRl bWVudFN0YXRMaXN0KSoNCj4gPg0KPiA+ICsgICAgICAgICdlbmRpZicgJzsnDQo+ID4NCj4gPiAr ICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3 DQo+ID4NCj4gPiArbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9HUkFZX09VVF9JRl9P UCldDQo+ID4NCj4gPiArICAgIDogICAnZ3JheW91dGlmJw0KPiA+DQo+ID4gKyAgICAgICAgKCdm bGFncycgJz0nIGZsYWdzRmllbGQgKCd8JyBmbGFnc0ZpZWxkKSogJywnKT8NCj4gPg0KPiA+ICsg ICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQo+ID4NCj4gPiArICAgICAgICAodmZy U3RhdGVtZW50U3RhdExpc3QpKg0KPiA+DQo+ID4gKyAgICAgICAgJ2VuZGlmJyAnOycNCj4gPg0K PiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudEluY29uc2lzdGVu dElmU3RhdA0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfSU5DT05T SVNURU5UX0lGX09QKV0NCj4gPg0KPiA+ICsgICAgOiAgICdpbmNvbnNpc3RlbnRpZicNCj4gPg0K PiA+ICsgICAgICAgICdwcm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAn LCcNCj4gPg0KPiA+ICsgICAgICAgICgnZmxhZ3MnICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NG aWVsZCkqICcsJyk/DQo+ID4NCj4gPiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uDQo+ ID4NCj4gPiArICAgICAgICAnZW5kaWYnICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArdmZyU3RhdGVtZW50SW52YWxpZCAvLyBmb3IgY29tcGF0aWJpbGl0eQ0KPiA+ DQo+ID4gKyAgICA6ICAgdmZyU3RhdGVtZW50SW52YWxpZEhpZGRlbg0KPiA+DQo+ID4gKyAgICB8 ICAgdmZyU3RhdGVtZW50SW52YWxpZEludmVudG9yeQ0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3Rh dGVtZW50SW52YWxpZFNhdmVSZXN0b3JlRGVmYXVsdHMNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudEludmFsaWRIaWRkZW4NCj4gPg0KPiA+ICsgICAg OiAgICdoaWRkZW4nDQo+ID4NCj4gPiArICAgICAgICAndmFsdWUnICc9JyBOdW1iZXIgJywnDQo+ ID4NCj4gPiArICAgICAgICAna2V5JyAnPScgTnVtYmVyICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50SW52YWxpZEludmVudG9yeQ0KPiA+DQo+ ID4gKyAgICA6ICAgJ2ludmVudG9yeScNCj4gPg0KPiA+ICsgICAgICAgICdoZWxwJyAnPScgJ1NU UklOR19UT0tFTicgJygnIE51bWJlciAnKScgJywnDQo+ID4NCj4gPiArICAgICAgICAndGV4dCcg Jz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiA+DQo+ID4gKyAgICAgICAg KCd0ZXh0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScpPw0KPiA+DQo+ID4gKyAg ICAgICAgJzsnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0 ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZhdWx0cw0KPiA+DQo+ID4gKyAgICA6ICAgKCAgICdz YXZlJw0KPiA+DQo+ID4gKyAgICAgICAgfCAgICdyZXN0b3JlJw0KPiA+DQo+ID4gKyAgICAgICAg KQ0KPiA+DQo+ID4gKyAgICAgICAgJ2RlZmF1bHRzJyAnLCcNCj4gPg0KPiA+ICsgICAgICAgICdm b3JtaWQnICc9JyBOdW1iZXIgJywnDQo+ID4NCj4gPiArICAgICAgICAncHJvbXB0JyAnPScgJ1NU UklOR19UT0tFTicgJygnIE51bWJlciAnKScgJywnDQo+ID4NCj4gPiArICAgICAgICAnaGVscCcg Jz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknDQo+ID4NCj4gPiArICAgICAgICAoJywn ICdmbGFncycgJz0nIGZsYWdzRmllbGQgKCd8JyBmbGFnc0ZpZWxkKSopPw0KPiA+DQo+ID4gKyAg ICAgICAgKCcsJyAna2V5JyAnPScgTnVtYmVyKT8NCj4gPg0KPiA+ICsgICAgICAgICc7Jw0KPiA+ DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArdmZyU3RhdGVtZW50TGFiZWwNCj4gPg0KPiA+ICtsb2Nh bHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX0dVSURfT1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAg J2xhYmVsJyBOdW1iZXIgJzsnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICt2ZnJTdGF0ZW1lbnRCYW5uZXIgLy8gSXMgVGltZU91dCBuZWVkZWQNCj4gPg0KPiA+ICtsb2Nh bHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX0dVSURfT1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAg J2Jhbm5lcicgKCcsJyk/DQo+ID4NCj4gPiArICAgICAgICAndGl0bGUnICc9JyAnU1RSSU5HX1RP S0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gPg0KPiA+ICsgICAgICAgICggICAoICAgJ2xpbmUn IE51bWJlciAnLCcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgJ2FsaWduJyAoJ2xlZnQnIHwg J2NlbnRlcicgfCAncmlnaHQnKSAnOycNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4g PiArICAgICAgICAgICAgfA0KPiA+DQo+ID4gKyAgICAgICAgICAgICggICAndGltZW91dCcgJz0n IE51bWJlciAnOycNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAp DQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRFeHRl bnNpb24NCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX0dVSURfT1Ap LCBEYXRhQnVmZiwgU2l6ZT0wLA0KPiA+IFR5cGVOYW1lPScnLCBUeXBlU2l6ZT0wLCBJc1N0cnVj dD1GYWxzZSwgQXJyYXlOdW09MF0NCj4gPg0KPiA+ICsgICAgOiAgICdndWlkb3AnDQo+ID4NCj4g PiArICAgICAgICAnZ3VpZCcgJz0nIGd1aWREZWZpbml0aW9uDQo+ID4NCj4gPiArICAgICAgICAo ICAgJywnIEQ9J2RhdGF0eXBlJyAnPScNCj4gPg0KPiA+ICsgICAgICAgICAgICAoICAgJ1VJTlQ2 NCcgKCdbJyBOdW1iZXIgJ10nKT8NCj4gPg0KPiA+ICsgICAgICAgICAgICB8ICAgJ1VJTlQzMicg KCdbJyBOdW1iZXIgJ10nKT8NCj4gPg0KPiA+ICsgICAgICAgICAgICB8ICAgJ1VJTlQxNicgKCdb JyBOdW1iZXIgJ10nKT8NCj4gPg0KPiA+ICsgICAgICAgICAgICB8ICAgJ1VJTlQ4JyAoJ1snIE51 bWJlciAnXScpPw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHwgICAnQk9PTEVBTicgKCdbJyBOdW1i ZXIgJ10nKT8NCj4gPg0KPiA+ICsgICAgICAgICAgICB8ICAgJ0VGSV9TVFJJTkdfSUQnICgnWycg TnVtYmVyICddJyk/DQo+ID4NCj4gPiArICAgICAgICAgICAgfCAgICdFRklfSElJX0RBVEUnICgn WycgTnVtYmVyICddJyk/DQo+ID4NCj4gPiArICAgICAgICAgICAgfCAgICdFRklfSElJX1RJTUUn ICgnWycgTnVtYmVyICddJyk/DQo+ID4NCj4gPiArICAgICAgICAgICAgfCAgICdFRklfSElJX1JF RicgKCdbJyBOdW1iZXIgJ10nKT8NCj4gPg0KPiA+ICsgICAgICAgICAgICB8ICAgU3RyaW5nSWRl bnRpZmllciAoJ1snIE51bWJlciAnXScpPw0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0K PiA+ICsgICAgICAgICAgICAodmZyRXh0ZW5zaW9uRGF0YVtsb2NhbGN0eC5EYXRhQnVmZl0pKg0K PiA+DQo+ID4gKyAgICAgICAgKT8NCj4gPg0KPiA+ICsgICAgICAgICgNCj4gPg0KPiA+ICsgICAg ICAgICAgICAnLCcgKHZmclN0YXRlbWVudEV4dGVuc2lvbikqDQo+ID4NCj4gPiArICAgICAgICAg ICAgJ2VuZGd1aWRvcCcNCj4gPg0KPiA+ICsgICAgICAgICk/DQo+ID4NCj4gPiArICAgICAgICAn OycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3Zm ckV4dGVuc2lvbkRhdGFbRGF0YUJ1ZmZdDQo+ID4NCj4gPiArbG9jYWxzW0lzU3RydWN0XQ0KPiA+ DQo+ID4gKyAgICA6ICAgJywnICdkYXRhJyAoJ1snIE51bWJlciAnXScpPw0KPiA+DQo+ID4gKyAg ICAgICAgKCAnLicgYXJyYXlOYW1lKSogICc9JyBOPU51bWJlcg0KPiA+DQo+ID4gKyAgICA7DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50TW9kYWwNCj4gPg0K PiA+ICtsb2NhbHNbTm9kZV0NCj4gPg0KPiA+ICsgICAgOiB2ZnJNb2RhbFRhZyAnOycNCj4gPg0K PiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3Zmck1vZGFsVGFnDQo+ID4NCj4gPiAr bG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9NT0RBTF9UQUdfT1ApXQ0KPiA+DQo+ID4g KyAgICA6ICAgJ21vZGFsJw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr dmZyU3RhdGVtZW50RXhwcmVzc2lvbg0KPiA+DQo+ID4gK2xvY2Fsc1tFeHBJbmZvPUV4cHJlc3Np b25JbmZvKCldDQo+ID4NCj4gPiArICAgIDogICBhbmRUZXJtW2xvY2FsY3R4LkV4cEluZm9dICgn T1InIGFuZFRlcm1bbG9jYWxjdHguRXhwSW5mb10pKg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yg0KPiA+DQo+ID4gK2xvY2Fs c1tFeHBJbmZvPUV4cHJlc3Npb25JbmZvKCldDQo+ID4NCj4gPiArICAgIDogICBhbmRUZXJtW2xv Y2FsY3R4LkV4cEluZm9dICgnT1InIGFuZFRlcm1bbG9jYWxjdHguRXhwSW5mb10pKg0KPiA+DQo+ ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArYW5kVGVybVtFeHBJbmZvXQ0KPiA+DQo+ ID4gK2xvY2Fsc1tDSWZyQW5kTGlzdD1bXV0NCj4gPg0KPiA+ICsgICAgOiAgIGJpdHdpc2VvclRl cm1bRXhwSW5mb10gKCdBTkQnIGJpdHdpc2VvclRlcm1bRXhwSW5mb10pKg0KPiA+DQo+ID4gKyAg ICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArYml0d2lzZW9yVGVybVtFeHBJbmZvXQ0KPiA+DQo+ ID4gK2xvY2Fsc1tDSWZyQml0V2lzZU9yTGlzdD1bXV0NCj4gPg0KPiA+ICsgICAgOiAgIGJpdHdp c2VhbmRUZXJtW0V4cEluZm9dICgnfCcgYml0d2lzZWFuZFRlcm1bRXhwSW5mb10pKg0KPiA+DQo+ ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArYml0d2lzZWFuZFRl cm1bRXhwSW5mb10NCj4gPg0KPiA+ICtsb2NhbHNbQ0lmckJpdFdpc2VBbmRMaXN0PVtdXQ0KPiA+ DQo+ID4gKyAgICA6ICAgZXF1YWxUZXJtW0V4cEluZm9dICgnJicgZXF1YWxUZXJtW0V4cEluZm9d KSoNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2Vx dWFsVGVybVtFeHBJbmZvXQ0KPiA+DQo+ID4gK2xvY2Fsc1tDSWZyRXF1YWxMaXN0PVtdLCBDSWZy Tm90RXF1YWxMaXN0PVtdXQ0KPiA+DQo+ID4gKyAgICA6ICAgY29tcGFyZVRlcm1bbG9jYWxjdHgu RXhwSW5mb10NCj4gPg0KPiA+ICsgICAgICAgIChlcXVhbFRlcm1TdXBwbGVtZW50YXJ5W2xvY2Fs Y3R4LkNJZnJFcXVhbExpc3QsDQo+ID4gbG9jYWxjdHguQ0lmck5vdEVxdWFsTGlzdCwgRXhwSW5m b10pKg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ZXF1YWxUZXJtU3VwcGxlbWVudGFyeVtDSWZyRXF1YWxMaXN0LCBDSWZyTm90RXF1YWxMaXN0LCBF eHBJbmZvXQ0KPiA+DQo+ID4gKyAgICA6ICAgKCc9PScgY29tcGFyZVRlcm1bRXhwSW5mb10pICAj IGVxdWFsVGVybUVxdWFsUnVsZQ0KPiA+DQo+ID4gKyAgICAgICAgfA0KPiA+DQo+ID4gKyAgICAg ICAgKCchPScgY29tcGFyZVRlcm1bRXhwSW5mb10pICMgZXF1YWxUZXJtTm90RXF1YWxSdWxlDQo+ ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjb21wYXJlVGVybVtFeHBJbmZv XQ0KPiA+DQo+ID4gK2xvY2Fsc1tDSWZyTGVzc1RoYW5MaXN0PVtdLCBDSWZyTGVzc0VxdWFsTGlz dD1bXSwgQ0lmckdyZWF0ZXJUaGFuTGlzdD1bXSwNCj4gPiBDSWZyR3JlYXRlckVxdWFsTGlzdD1b XV0NCj4gPg0KPiA+ICsgICAgOiAgIHNoaWZ0VGVybVtFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICAg ICAgKGNvbXBhcmVUZXJtU3VwcGxlbWVudGFyeVtsb2NhbGN0eC5DSWZyTGVzc1RoYW5MaXN0LA0K PiA+IGxvY2FsY3R4LkNJZnJMZXNzRXF1YWxMaXN0LCBsb2NhbGN0eC5DSWZyR3JlYXRlclRoYW5M aXN0LA0KPiA+IGxvY2FsY3R4LkNJZnJHcmVhdGVyRXF1YWxMaXN0LCBFeHBJbmZvXSkqDQo+ID4N Cj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjb21wYXJlVGVybVN1cHBsZW1lbnRh cnlbQ0lmckxlc3NUaGFuTGlzdCwgQ0lmckxlc3NFcXVhbExpc3QsDQo+ID4gQ0lmckdyZWF0ZXJU aGFuTGlzdCwgQ0lmckdyZWF0ZXJFcXVhbExpc3QsIEV4cEluZm9dDQo+ID4NCj4gPiArICAgIDog ICAoJzwnIHNoaWZ0VGVybVtFeHBJbmZvXSkgICAjIGNvbXBhcmVUZXJtTGVzc1J1bGUNCj4gPg0K PiA+ICsgICAgICAgIHwNCj4gPg0KPiA+ICsgICAgICAgICgnPD0nIHNoaWZ0VGVybVtFeHBJbmZv XSkgICMgIGNvbXBhcmVUZXJtTGVzc0VxdWFsUnVsZQ0KPiA+DQo+ID4gKyAgICAgICAgfA0KPiA+ DQo+ID4gKyAgICAgICAgKCc+JyBzaGlmdFRlcm1bRXhwSW5mb10pICAgIyAgY29tcGFyZVRlcm1H cmVhdGVyUnVsZQ0KPiA+DQo+ID4gKyAgICAgICAgfA0KPiA+DQo+ID4gKyAgICAgICAgKCc+PScg c2hpZnRUZXJtW0V4cEluZm9dKSAgIyAgY29tcGFyZVRlcm1HcmVhdGVyRXF1YWxSdWxlDQo+ID4N Cj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtzaGlmdFRlcm1bRXhwSW5mb10NCj4g Pg0KPiA+ICtsb2NhbHNbQ0lmclNoaWZ0TGVmdExpc3Q9W10sIENJZnJTaGlmdFJpZ2h0TGlzdD1b XV0NCj4gPg0KPiA+ICsgICAgOiAgIGFkZE1pbnVzVGVybVtFeHBJbmZvXQ0KPiA+DQo+ID4gKyAg ICAgICAgKHNoaWZ0VGVybVN1cHBsZW1lbnRhcnlbbG9jYWxjdHguQ0lmclNoaWZ0TGVmdExpc3Qs DQo+ID4gbG9jYWxjdHguQ0lmclNoaWZ0UmlnaHRMaXN0LCBFeHBJbmZvXSkqDQo+ID4NCj4gPiAr ICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtzaGlmdFRlcm1TdXBwbGVtZW50YXJ5W0NJZnJT aGlmdExlZnRMaXN0LCBDSWZyU2hpZnRSaWdodExpc3QsIEV4cEluZm9dDQo+ID4NCj4gPiArICAg IDogICAoJzw8JyBhZGRNaW51c1Rlcm1bRXhwSW5mb10pICAjIHNoaWZ0VGVybUxlZnQNCj4gPg0K PiA+ICsgICAgICAgIHwNCj4gPg0KPiA+ICsgICAgICAgICgnPj4nIGFkZE1pbnVzVGVybVtFeHBJ bmZvXSkgIyBzaGlmdFRlcm1SaWdodA0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArYWRkTWludXNUZXJtW0V4cEluZm9dDQo+ID4NCj4gPiArbG9jYWxzW0NJZnJBZGRMaXN0 PVtdLCBDSWZyU3VidHJhY3RMaXN0PVtdXQ0KPiA+DQo+ID4gKyAgICA6ICAgbXVsdGRpdm1vZFRl cm1bRXhwSW5mb10NCj4gPg0KPiA+ICsgICAgICAgIChhZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5 W2xvY2FsY3R4LkNJZnJBZGRMaXN0LA0KPiA+IGxvY2FsY3R4LkNJZnJTdWJ0cmFjdExpc3QsIEV4 cEluZm9dKSoNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2FkZE1pbnVz VGVybVN1cHBsZW1lbnRhcnlbQ0lmckFkZExpc3QsIENJZnJTdWJ0cmFjdExpc3QsIEV4cEluZm9d DQo+ID4NCj4gPiArICAgIDogICAoJysnIG11bHRkaXZtb2RUZXJtW0V4cEluZm9dKSAjIGFkZE1p bnVzVGVybXBBZGQNCj4gPg0KPiA+ICsgICAgICAgIHwNCj4gPg0KPiA+ICsgICAgICAgICgnLScg bXVsdGRpdm1vZFRlcm1bRXhwSW5mb10pICMgYWRkTWludXNUZXJtU3VidHJhY3QNCj4gPg0KPiA+ ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK211bHRkaXZtb2RUZXJtW0V4cEluZm9dDQo+ ID4NCj4gPiArbG9jYWxzW0NJZnJNdWx0aXBseUxpc3Q9W10sIENJZnJEaXZpZGVMaXN0PVtdLCBD SWZyTW9kdWxvTGlzdD1bXV0NCj4gPg0KPiA+ICsgICAgOiAgIGNhc3RUZXJtW0V4cEluZm9dDQo+ ID4NCj4gPiArICAgICAgICAobXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5W2xvY2FsY3R4LkNJ ZnJNdWx0aXBseUxpc3QsDQo+ID4gbG9jYWxjdHguQ0lmckRpdmlkZUxpc3QsIGxvY2FsY3R4LkNJ ZnJNb2R1bG9MaXN0LCBFeHBJbmZvXSkqDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICttdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnlbQ0lmck11bHRpcGx5TGlzdCwgQ0lm ckRpdmlkZUxpc3QsDQo+ID4gQ0lmck1vZHVsb0xpc3QsIEV4cEluZm9dDQo+ID4NCj4gPiArICAg IDogICAoJyonIGNhc3RUZXJtW0V4cEluZm9dKSAjIG11bHRkaXZtb2RUZXJtTXVsDQo+ID4NCj4g PiArICAgICAgICB8DQo+ID4NCj4gPiArICAgICAgICAoJy8nIGNhc3RUZXJtW0V4cEluZm9dKSAj IG11bHRkaXZtb2RUZXJtRGl2DQo+ID4NCj4gPiArICAgICAgICB8DQo+ID4NCj4gPiArICAgICAg ICAoJyUnIGNhc3RUZXJtW0V4cEluZm9dKSAjIG11bHRkaXZtb2RUZXJtTW9kdWxvDQo+ID4NCj4g PiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjYXN0VGVybVtFeHBJbmZvXQ0KPiA+DQo+ ID4gK2xvY2Fsc1tUQk9iaj1Ob25lLCBUVU9iaj1Ob25lXQ0KPiA+DQo+ID4gKyAgICA6ICAgKCAg ICcoJw0KPiA+DQo+ID4gKyAgICAgICAgICAgICggICdCT09MRUFOJw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHwgICdVSU5UNjQnDQo+ID4NCj4gPiArICAgICAgICAgICAgfCAgJ1VJTlQzMicNCj4g Pg0KPiA+ICsgICAgICAgICAgICB8ICAnVUlOVDE2Jw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHwg ICdVSU5UOCcNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAg JyknDQo+ID4NCj4gPiArICAgICAgICApKg0KPiA+DQo+ID4gKyAgICAgICAgYXRvbVRlcm1bRXhw SW5mb10NCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2F0b21UZXJtW0V4 cEluZm9dDQo+ID4NCj4gPiArICAgIDogICB2ZnJFeHByZXNzaW9uQ2F0ZW5hdGVbRXhwSW5mb10N Cj4gPg0KPiA+ICsgICAgfCAgIHZmckV4cHJlc3Npb25NYXRjaFtFeHBJbmZvXQ0KPiA+DQo+ID4g KyAgICB8ICAgdmZyRXhwcmVzc2lvbk1hdGNoMltFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICB8ICAg dmZyRXhwcmVzc2lvblBhcmVuW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIHwgICB2ZnJFeHByZXNz aW9uQnVpbGRJbkZ1bmN0aW9uW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIHwgICB2ZnJFeHByZXNz aW9uQ29uc3RhbnRbRXhwSW5mb10NCj4gPg0KPiA+ICsgICAgfCAgIHZmckV4cHJlc3Npb25VbmFy eU9wW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIHwgICB2ZnJFeHByZXNzaW9uVGVybmFyeU9wW0V4 cEluZm9dDQo+ID4NCj4gPiArICAgIHwgICB2ZnJFeHByZXNzaW9uTWFwW0V4cEluZm9dDQo+ID4N Cj4gPiArICAgIHwgICAoJ05PVCcgYXRvbVRlcm1bRXhwSW5mb10pDQo+ID4NCj4gPiArICAgIHwg ICB2ZnJFeHByZXNzaW9uTWF0Y2gyW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICt2ZnJFeHByZXNzaW9uQ2F0ZW5hdGVbRXhwSW5mb10NCj4gPg0KPiA+ICts b2NhbHNbQ09iaj1Ob25lXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ2NhdGVuYXRlJw0KPiA+DQo+ID4g KyAgICAgICAgJygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJywnIHZmclN0YXRlbWVudEV4 cHJlc3Npb25TdWIgJyknDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2 ZnJFeHByZXNzaW9uTWF0Y2hbRXhwSW5mb10NCj4gPg0KPiA+ICtsb2NhbHNbTU9iaj1Ob25lXQ0K PiA+DQo+ID4gKyAgICA6ICAgJ21hdGNoJw0KPiA+DQo+ID4gKyAgICAgICAgJygnIHZmclN0YXRl bWVudEV4cHJlc3Npb25TdWIgJywnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJyknDQo+ID4N Cj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJFeHByZXNzaW9uTWF0Y2gyW0V4 cEluZm9dDQo+ID4NCj4gPiArbG9jYWxzW00yT2JqPU5vbmVdDQo+ID4NCj4gPiArICAgIDogICAn bWF0Y2gyJw0KPiA+DQo+ID4gKyAgICAgICAgJygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIn LCcNCj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJywnDQo+ID4N Cj4gPiArICAgICAgICBndWlkRGVmaW5pdGlvbiAnKScNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK3ZmckV4cHJlc3Npb25QYXJlbltFeHBJbmZvXQ0KPiA+DQo+ID4gKyAg ICA6ICAgJygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJyknDQo+ID4NCj4gPiArICAgIDsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJFeHByZXNzaW9uQnVpbGRJbkZ1bmN0aW9uW0V4cElu Zm9dDQo+ID4NCj4gPiArICAgIDogICBkdXBFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICsgICAgfCAg IHZhcmVxdmFsRXhwW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIHwgICBpZGVxdmFsRXhwW0V4cElu Zm9dDQo+ID4NCj4gPiArICAgIHwgICBpZGVxaWRFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICsgICAg fCAgIGlkZXF2YWxsaXN0RXhwW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIHwgICBxdWVzdGlvbnJl ZjFFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICsgICAgfCAgIHJ1bGVyZWZFeHBbRXhwSW5mb10NCj4g Pg0KPiA+ICsgICAgfCAgIHN0cmluZ3JlZjFFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICsgICAgfCAg IHB1c2h0aGlzRXhwW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIHwgICBzZWN1cml0eUV4cFtFeHBJ bmZvXQ0KPiA+DQo+ID4gKyAgICB8ICAgZ2V0RXhwW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIDsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtkdXBFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICtsb2NhbHNb RE9iaj1Ob25lXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ2R1cCcNCj4gPg0KPiA+ICsgICAgOw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZhcmVxdmFsRXhwW0V4cEluZm9dDQo+ID4N Cj4gPiArICAgIDogICAndmFyZXF2YWwnDQo+ID4NCj4gPiArICAgICAgICAndmFyJyAnKCcgTnVt YmVyICcpJw0KPiA+DQo+ID4gKyAgICAgICAgKCAgICc9PScgTnVtYmVyDQo+ID4NCj4gPiArCSAg ICB8ICAgJzw9JyBOdW1iZXINCj4gPg0KPiA+ICsJICAgIHwgICAnPCcgTnVtYmVyDQo+ID4NCj4g PiArCSAgICB8ICAgJz49JyBOdW1iZXINCj4gPg0KPiA+ICsJICAgIHwgICAnPicgTnVtYmVyDQo+ ID4NCj4gPiArICAgICAgICApDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICtpZGVxdmFsRXhwW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIDogICBJPSdpZGVxdmFsJyB2ZnJR dWVzdGlvbkRhdGFGaWVsZE5hbWUNCj4gPg0KPiA+ICsgICAgICAgICggICAnPT0nIE51bWJlcg0K PiA+DQo+ID4gKwkgICAgfCAgICc8PScgTnVtYmVyDQo+ID4NCj4gPiArCSAgICB8ICAgJzwnIE51 bWJlcg0KPiA+DQo+ID4gKwkgICAgfCAgICc+PScgTnVtYmVyDQo+ID4NCj4gPiArCSAgICB8ICAg Jz4nIE51bWJlcg0KPiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4g PiArDQo+ID4NCj4gPiAraWRlcWlkRXhwW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIDogICBJPSdp ZGVxaWQnIHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZQ0KPiA+DQo+ID4gKyAgICAgICAgKCAgIEU9 Jz09JyB2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUNCj4gPg0KPiA+ICsJICAgIHwgICBMRT0nPD0n IHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZQ0KPiA+DQo+ID4gKwkgICAgfCAgIEw9JzwnIHZmclF1 ZXN0aW9uRGF0YUZpZWxkTmFtZQ0KPiA+DQo+ID4gKwkgICAgfCAgIEJFPSc+PScgdmZyUXVlc3Rp b25EYXRhRmllbGROYW1lDQo+ID4NCj4gPiArCSAgICB8ICAgQj0nPicgdmZyUXVlc3Rpb25EYXRh RmllbGROYW1lDQo+ID4NCj4gPiArICAgICAgICApDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICtpZGVxdmFsbGlzdEV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICA6ICAg J2lkZXF2YWxsaXN0JyB2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUgJz09JyAoTnVtYmVyKSsNCj4g Pg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclF1ZXN0aW9uRGF0YUZpZWxk TmFtZQ0KPiA+DQo+ID4gK2xvY2Fsc1tRSWQ9RUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQsIE1hc2s9 MCwgVmFySWRTdHI9JycsIExpbmU9Tm9uZV0NCj4gPg0KPiA+ICsgICAgOiAgIChTTjE9U3RyaW5n SWRlbnRpZmllciAnWycgST1OdW1iZXIgJ10nKSAjDQo+ID4gdmZyUXVlc3Rpb25EYXRhRmllbGRO YW1lUnVsZTENCj4gPg0KPiA+ICsgICAgICAgIHwgICAoU04yPVN0cmluZ0lkZW50aWZpZXIgKCcu JyBhcnJheU5hbWUpKikgIw0KPiA+IHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUyDQo+ID4N Cj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICthcnJheU5hbWUNCj4gPg0KPiA+ICts b2NhbHNbU3ViU3RyPScnLCBTdWJTdHJaPScnXQ0KPiA+DQo+ID4gKyAgICA6IFN0cmluZ0lkZW50 aWZpZXIgKCdbJyBOPU51bWJlciAnXScpPw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArcXVlc3Rpb25yZWYxRXhwW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIDogICAncXVl c3Rpb25yZWYnDQo+ID4NCj4gPiArICAgICAgICAnKCcgKCBTdHJpbmdJZGVudGlmaWVyIHwgTnVt YmVyICkgJyknDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtydWxlcmVm RXhwW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIDogICAncnVsZXJlZicgJygnIFN0cmluZ0lkZW50 aWZpZXIgJyknDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtzdHJpbmdy ZWYxRXhwW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIDogICAnc3RyaW5ncmVmJyAnKCcNCj4gPg0K PiA+ICsgICAgICAgICgNCj4gPg0KPiA+ICsgICAgICAgICAgICAnU1RSSU5HX1RPS0VOJyAnKCcg TnVtYmVyICcpJw0KPiA+DQo+ID4gKyAgICAgICAgfCAgIE51bWJlcg0KPiA+DQo+ID4gKyAgICAg ICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAnKScNCj4gPg0KPiA+ ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3B1c2h0aGlzRXhwW0V4cEluZm9dDQo+ID4N Cj4gPiArICAgIDogICAncHVzaHRoaXMnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICtzZWN1cml0eUV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ3NlY3VyaXR5 JyAnKCcgZ3VpZERlZmluaXRpb24gJyknDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICtudW1lcmljVmFyU3RvcmVUeXBlDQo+ID4NCj4gPiArbG9jYWxzW1ZhclR5cGVdDQo+ ID4NCj4gPiArICAgIDogICAnTlVNRVJJQ19TSVpFXzEnDQo+ID4NCj4gPiArICAgIHwgICAnTlVN RVJJQ19TSVpFXzInDQo+ID4NCj4gPiArICAgIHwgICAnTlVNRVJJQ19TSVpFXzQnDQo+ID4NCj4g PiArICAgIHwgICAnTlVNRVJJQ19TSVpFXzgnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICtnZXRFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICtsb2NhbHNbQmFzZUluZm89RUZJ X1ZBUlNUT1JFX0lORk8oKSwgR09iaj1Ob25lXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ2dldCcgJygn IHZmclN0b3JhZ2VWYXJJZFtsb2NhbGN0eC5CYXNlSW5mbywgRmFsc2VdKCd8JyAnZmxhZ3MnICc9 Jw0KPiA+IG51bWVyaWNWYXJTdG9yZVR5cGUpPyAnKScNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK3ZmckV4cHJlc3Npb25Db25zdGFudFtFeHBJbmZvXQ0KPiA+DQo+ID4g KyAgICA6ICAgJ1RSVUUnDQo+ID4NCj4gPiArICAgIHwgICAnRkFMU0UnDQo+ID4NCj4gPiArICAg IHwgICAnT05FJw0KPiA+DQo+ID4gKyAgICB8ICAgJ09ORVMnDQo+ID4NCj4gPiArICAgIHwgICAn WkVSTycNCj4gPg0KPiA+ICsgICAgfCAgICdVTkRFRklORUQnDQo+ID4NCj4gPiArICAgIHwgICAn VkVSU0lPTicNCj4gPg0KPiA+ICsgICAgfCAgIE51bWJlcg0KPiA+DQo+ID4gKyAgICA7DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArdmZyRXhwcmVzc2lvblVuYXJ5T3BbRXhwSW5mb10NCj4gPg0KPiA+ ICsgICAgOiAgIGxlbmd0aEV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICB8ICAgYml0d2lzZW5v dEV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICB8ICAgcXVlc3Rpb24yM3JlZkV4cFtFeHBJbmZv XQ0KPiA+DQo+ID4gKyAgICB8ICAgc3RyaW5ncmVmMkV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gKyAg ICB8ICAgdG9ib29sRXhwW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIHwgICB0b3N0cmluZ0V4cFtF eHBJbmZvXQ0KPiA+DQo+ID4gKyAgICB8ICAgdW5pbnRFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICsg ICAgfCAgIHRvdXBwZXJFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICsgICAgfCAgIHRvbHdlckV4cFtF eHBJbmZvXQ0KPiA+DQo+ID4gKyAgICB8ICAgc2V0RXhwW0V4cEluZm9dDQo+ID4NCj4gPiArICAg IDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtsZW5ndGhFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICts b2NhbHNbTE9iaj1Ob25lXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ2xlbmd0aCcgJygnIHZmclN0YXRl bWVudEV4cHJlc3Npb25TdWIgJyknDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICtiaXR3aXNlbm90RXhwW0V4cEluZm9dDQo+ID4NCj4gPiArbG9jYWxzW0JXTk9iaj1Ob25l XQ0KPiA+DQo+ID4gKyAgICA6ICAgJ34nICcoJyB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViICcp Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArcXVlc3Rpb24yM3JlZkV4 cFtFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ3F1ZXN0aW9ucmVmdmFsJw0KPiA+DQo+ID4g KyAgICAgICAgJygnDQo+ID4NCj4gPiArICAgICAgICAoRGV2aWNlUGF0aCAnPScgJ1NUUklOR19U T0tFTicgJygnIE51bWJlciAnKScgJywnICk/DQo+ID4NCj4gPiArICAgICAgICAoVXVpZCAnPScg Z3VpZERlZmluaXRpb24gJywnICk/DQo+ID4NCj4gPiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uU3ViDQo+ID4NCj4gPiArICAgICAgICAnKScNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK3N0cmluZ3JlZjJFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICtsb2NhbHNb U1IyT2JqPU5vbmVdDQo+ID4NCj4gPiArICAgIDogICAnc3RyaW5ncmVmdmFsJyAnKCcgdmZyU3Rh dGVtZW50RXhwcmVzc2lvblN1YiAnKScNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK3RvYm9vbEV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gK2xvY2Fsc1tUQk9iaj1Ob25lXQ0K PiA+DQo+ID4gKyAgICA6ICAgJ2Jvb2x2YWwnICcoJyB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3Vi ICcpJw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdG9zdHJpbmdFeHBb RXhwSW5mb10NCj4gPg0KPiA+ICtsb2NhbHNbVFNPYmo9Tm9uZV0NCj4gPg0KPiA+ICsgICAgOiAg ICdzdHJpbmd2YWwnICgnZm9ybWF0JyAnPScgTnVtYmVyICcsJyApPw0KPiA+DQo+ID4gKyAgICAg ICAgJygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJyknDQo+ID4NCj4gPiArICAgIDsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICt1bmludEV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gK2xvY2Fsc1tU VU9iaj1Ob25lXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ3VuaW50dmFsJyAnKCcgdmZyU3RhdGVtZW50 RXhwcmVzc2lvblN1YiAnKScNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g K3RvdXBwZXJFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICtsb2NhbHNbVFVPYmo9Tm9uZV0NCj4gPg0K PiA+ICsgICAgOiAgICd0b3VwcGVyJyAnKCcgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YiAnKScN Cj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3RvbHdlckV4cFtFeHBJbmZv XQ0KPiA+DQo+ID4gK2xvY2Fsc1tUTE9iaj1Ob25lXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ3RvbG93 ZXInICcoJyB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViICcpJw0KPiA+DQo+ID4gKyAgICA7DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArc2V0RXhwW0V4cEluZm9dDQo+ID4NCj4gPiArbG9jYWxzW0Jh c2VJbmZvPUVGSV9WQVJTVE9SRV9JTkZPKCksIFRTT2JqPU5vbmVdDQo+ID4NCj4gPiArICAgIDog ICAnc2V0Jw0KPiA+DQo+ID4gKyAgICAgICAgJygnDQo+ID4NCj4gPiArICAgICAgICB2ZnJTdG9y YWdlVmFySWRbbG9jYWxjdHguQmFzZUluZm8sIEZhbHNlXSgnfCcgJ2ZsYWdzJyAnPScNCj4gPiBu dW1lcmljVmFyU3RvcmVUeXBlKT8gJywnDQo+ID4NCj4gPiArICAgICAgICB2ZnJTdGF0ZW1lbnRF eHByZXNzaW9uU3ViDQo+ID4NCj4gPiArICAgICAgICAnKScNCj4gPg0KPiA+ICsgICAgOw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gK3ZmckV4cHJlc3Npb25UZXJuYXJ5T3BbRXhwSW5mb10NCj4gPg0K PiA+ICsgICAgOiAgIGNvbmRpdGlvbmFsRXhwW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIHwgICBm aW5kRXhwW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIHwgICBtaWRFeHBbRXhwSW5mb10NCj4gPg0K PiA+ICsgICAgfCAgIHRva2VuRXhwW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIHwgICBzcGFuRXhw W0V4cEluZm9dDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjb25kaXRp b25hbEV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gK2xvY2Fsc1tDT2JqPU5vbmVdDQo+ID4NCj4gPiAr ICAgIDogICAnY29uZCcNCj4gPg0KPiA+ICsgICAgICAgICcoJw0KPiA+DQo+ID4gKyAgICAgICAg dmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YiAvLw0KPiA+DQo+ID4gKyAgICAgICAgJz8nDQo+ID4N Cj4gPiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViIC8vDQo+ID4NCj4gPiArICAg ICAgICAnOicNCj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgLy8N Cj4gPg0KPiA+ICsgICAgICAgICcpJw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArZmluZEV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gK2xvY2Fsc1tGT2JqPU5vbmVdDQo+ID4N Cj4gPiArICAgIDogICAnZmluZCcNCj4gPg0KPiA+ICsgICAgICAgICcoJw0KPiA+DQo+ID4gKyAg ICAgICAgZmluZEZvcm1hdFtFeHBJbmZvXSAoJ3wnIGZpbmRGb3JtYXRbRXhwSW5mb10pKg0KPiA+ DQo+ID4gKyAgICAgICAgJywnDQo+ID4NCj4gPiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNz aW9uU3ViDQo+ID4NCj4gPiArICAgICAgICAnLCcNCj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRl bWVudEV4cHJlc3Npb25TdWINCj4gPg0KPiA+ICsgICAgICAgICcsJw0KPiA+DQo+ID4gKyAgICAg ICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yg0KPiA+DQo+ID4gKyAgICAgICAgJyknDQo+ID4N Cj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtmaW5kRm9ybWF0W0V4cEluZm9dDQo+ ID4NCj4gPiArbG9jYWxzW0Zvcm1hdD0wXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ1NFTlNJVElWRScg fCAnSU5TRU5TSVRJVkUnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtt aWRFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICtsb2NhbHNbTU9iaj1Ob25lXQ0KPiA+DQo+ID4gKyAg ICA6ICAgJ21pZCcNCj4gPg0KPiA+ICsgICAgICAgICcoJw0KPiA+DQo+ID4gKyAgICAgICAgdmZy U3RhdGVtZW50RXhwcmVzc2lvblN1Yg0KPiA+DQo+ID4gKyAgICAgICAgJywnDQo+ID4NCj4gPiAr ICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViDQo+ID4NCj4gPiArICAgICAgICAnLCcN Cj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWINCj4gPg0KPiA+ICsg ICAgICAgICcpJw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdG9rZW5F eHBbRXhwSW5mb10NCj4gPg0KPiA+ICtsb2NhbHNbVE9iaj1Ob25lXQ0KPiA+DQo+ID4gKyAgICA6 ICAgJ3Rva2VuJw0KPiA+DQo+ID4gKyAgICAgICAgJygnDQo+ID4NCj4gPiArICAgICAgICB2ZnJT dGF0ZW1lbnRFeHByZXNzaW9uU3ViDQo+ID4NCj4gPiArICAgICAgICAnLCcNCj4gPg0KPiA+ICsg ICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWINCj4gPg0KPiA+ICsgICAgICAgICcsJw0K PiA+DQo+ID4gKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yg0KPiA+DQo+ID4gKyAg ICAgICAgJyknDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtzcGFuRXhw W0V4cEluZm9dDQo+ID4NCj4gPiArbG9jYWxzW1NPYmo9Tm9uZV0NCj4gPg0KPiA+ICsgICAgOiAg ICdzcGFuJw0KPiA+DQo+ID4gKyAgICAgICAgJygnDQo+ID4NCj4gPiArICAgICAgICAnZmxhZ3Mn ICc9JyBzcGFuRmxhZ3MgKCd8JyBzcGFuRmxhZ3MpKg0KPiA+DQo+ID4gKyAgICAgICAgJywnDQo+ ID4NCj4gPiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViDQo+ID4NCj4gPiArICAg ICAgICAnLCcNCj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWINCj4g Pg0KPiA+ICsgICAgICAgICcsJw0KPiA+DQo+ID4gKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVz c2lvblN1Yg0KPiA+DQo+ID4gKyAgICAgICAgJyknDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICtzcGFuRmxhZ3MNCj4gPg0KPiA+ICtsb2NhbHNbRmxhZz0wXQ0KPiA+DQo+ ID4gKyAgICA6ICAgTnVtYmVyDQo+ID4NCj4gPiArICAgIHwgICAnTEFTVF9OT05fTUFUQ0gnDQo+ ID4NCj4gPiArICAgIHwgICAnRklSU1RfTk9OX01BVENIJw0KPiA+DQo+ID4gKyAgICA7DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArdmZyRXhwcmVzc2lvbk1hcFtFeHBJbmZvXQ0KPiA+DQo+ID4gK2xv Y2Fsc1tNT2JqPU5vbmVdDQo+ID4NCj4gPiArICAgIDogICAnbWFwJw0KPiA+DQo+ID4gKyAgICAg ICAgJygnDQo+ID4NCj4gPiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViDQo+ID4N Cj4gPiArICAgICAgICAnOicNCj4gPg0KPiA+ICsgICAgICAgICggICB2ZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uDQo+ID4NCj4gPiArICAgICAgICAgICAgJywnDQo+ID4NCj4gPiArICAgICAgICAgICAg dmZyU3RhdGVtZW50RXhwcmVzc2lvbg0KPiA+DQo+ID4gKyAgICAgICAgICAgICc7Jw0KPiA+DQo+ ID4gKyAgICAgICAgKSoNCj4gPg0KPiA+ICsgICAgICAgICcpJw0KPiA+DQo+ID4gKyAgICA7DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArRGVmaW5lIDonI2RlZmluZSc7DQo+ID4N Cj4gPiArSW5jbHVkZSA6ICcjaW5jbHVkZSc7DQo+ID4NCj4gPiArRm9ybVBrZ1R5cGUgOiAnZm9y bXBrZ3R5cGUnOw0KPiA+DQo+ID4gK09wZW5CcmFjZSA6ICd7JzsNCj4gPg0KPiA+ICtDbG9zZUJy YWNlIDogJ30nOw0KPiA+DQo+ID4gK09wZW5QYXJlbiA6ICcoJzsNCj4gPg0KPiA+ICtDbG9zZVBh cmVuIDogJyknOw0KPiA+DQo+ID4gK09wZW5CcmFja2V0IDogJ1snOw0KPiA+DQo+ID4gK0Nsb3Nl QnJhY2tldCA6ICddJzsNCj4gPg0KPiA+ICtEb3QgOiAnLic7DQo+ID4NCj4gPiArTmVnYXRpdmUg OiAnLSc7DQo+ID4NCj4gPiArQ29sb24gOiAnOic7DQo+ID4NCj4gPiArU2xhc2ggOiAnLyc7DQo+ ID4NCj4gPiArU2VtaWNvbG9uIDogJzsnOw0KPiA+DQo+ID4gK0NvbW1hIDogJywnOw0KPiA+DQo+ ID4gK0VxdWFsIDogJz09JzsNCj4gPg0KPiA+ICtOb3RFcXVhbCA6ICchPSc7DQo+ID4NCj4gPiAr TGVzc0VxdWFsOiAnPD0nOw0KPiA+DQo+ID4gK0xlc3M6JzwnOw0KPiA+DQo+ID4gK0dyZWF0ZXJF cXVhbDonPj0nOw0KPiA+DQo+ID4gK0dyZWF0ZXI6Jz4nOw0KPiA+DQo+ID4gK0JpdFdpc2VPcjog J3wnOw0KPiA+DQo+ID4gK0JpdFdpc2VBbmQ6ICcmJzsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtE ZXZpY2VQYXRoIDogJ2RldmljZXBhdGgnOw0KPiA+DQo+ID4gK0Zvcm1TZXQgOiAnZm9ybXNldCc7 DQo+ID4NCj4gPiArRm9ybVNldElkIDogJ2Zvcm1zZXRpZCc7DQo+ID4NCj4gPiArRW5kRm9ybVNl dCA6ICdlbmRmb3Jtc2V0JzsNCj4gPg0KPiA+ICtUaXRsZSA6ICd0aXRsZSc7DQo+ID4NCj4gPiAr Rm9ybUlkIDogJ2Zvcm1pZCc7DQo+ID4NCj4gPiArT25lT2YgOiAnb25lb2YnOw0KPiA+DQo+ID4g K0VuZE9uZU9mIDogJ2VuZG9uZW9mJzsNCj4gPg0KPiA+ICtQcm9tcHQgOiAncHJvbXB0JzsNCj4g Pg0KPiA+ICtPcmRlcmVkTGlzdCA6ICdvcmRlcmVkbGlzdCc7DQo+ID4NCj4gPiArTWF4Q29udGFp bmVycyA6ICdtYXhjb250YWluZXJzJzsNCj4gPg0KPiA+ICtFbmRMaXN0IDogJ2VuZGxpc3QnOw0K PiA+DQo+ID4gK0VuZEZvcm0gOiAnZW5kZm9ybSc7DQo+ID4NCj4gPiArRm9ybSA6ICdmb3JtJzsN Cj4gPg0KPiA+ICtGb3JtTWFwIDogJ2Zvcm1tYXAnOw0KPiA+DQo+ID4gK01hcFRpdGxlIDogJ21h cHRpdGxlJzsNCj4gPg0KPiA+ICtNYXBHdWlkIDogJ21hcGd1aWQnOw0KPiA+DQo+ID4gK1N1YnRp dGxlIDogJ3N1YnRpdGxlJzsNCj4gPg0KPiA+ICtFbmRTdWJ0aXRsZSA6ICdlbmRzdWJ0aXRsZSc7 DQo+ID4NCj4gPiArSGVscCA6ICdoZWxwJzsNCj4gPg0KPiA+ICtUZXh0IDogJ3RleHQnOw0KPiA+ DQo+ID4gK09wdGlvbiA6ICdvcHRpb24nOw0KPiA+DQo+ID4gK0ZMQUdTIDogJ2ZsYWdzJzsNCj4g Pg0KPiA+ICtEYXRlIDogJ2RhdGUnOw0KPiA+DQo+ID4gK0VuZERhdGUgOiAnZW5kZGF0ZSc7DQo+ ID4NCj4gPiArWWVhciA6ICd5ZWFyJzsNCj4gPg0KPiA+ICtNb250aCA6ICdtb250aCc7DQo+ID4N Cj4gPiArRGF5IDogJ2RheSc7DQo+ID4NCj4gPiArVGltZSA6ICd0aW1lJzsNCj4gPg0KPiA+ICtF bmRUaW1lIDogJ2VuZHRpbWUnOw0KPiA+DQo+ID4gK0hvdXIgOiAnaG91cic7DQo+ID4NCj4gPiAr TWludXRlIDogJ21pbnV0ZSc7DQo+ID4NCj4gPiArU2Vjb25kIDogJ3NlY29uZCc7DQo+ID4NCj4g PiArR3JheU91dElmIDogJ2dyYXlvdXRpZic7DQo+ID4NCj4gPiArTGFiZWwgOiAnbGFiZWwnOw0K PiA+DQo+ID4gK1RpbWVvdXQgOiAndGltZW91dCc7DQo+ID4NCj4gPiArSW52ZW50b3J5IDogJ2lu dmVudG9yeSc7DQo+ID4NCj4gPiArTm9uTnZEYXRhTWFwIDogJ19OT05fTlZfREFUQV9NQVAnOw0K PiA+DQo+ID4gK1N0cnVjdCA6ICdzdHJ1Y3QnOw0KPiA+DQo+ID4gK1VuaW9uIDogJ3VuaW9uJzsN Cj4gPg0KPiA+ICtCb29sZWFuIDogJ0JPT0xFQU4nOw0KPiA+DQo+ID4gK1VpbnQ2NCA6ICdVSU5U NjQnOw0KPiA+DQo+ID4gK1VpbnQzMiA6ICdVSU5UMzInOw0KPiA+DQo+ID4gK1VpbnQxNiA6ICdV SU5UMTYnOw0KPiA+DQo+ID4gK1VpbnQ4IDonVUlOVDgnOw0KPiA+DQo+ID4gK0VGSV9TVFJJTkdf SUQgOidFRklfU1RSSU5HX0lEJzsNCj4gPg0KPiA+ICtFRklfSElJX0RBVEUgOiAnRUZJX0hJSV9E QVRFJzsNCj4gPg0KPiA+ICtFRklfSElJX1RJTUUgOiAnRUZJX0hJSV9USU1FJzsNCj4gPg0KPiA+ ICtFRklfSElJX1JFRiA6ICdFRklfSElJX1JFRic7DQo+ID4NCj4gPiArVXVpZCA6ICdndWlkJzsN Cj4gPg0KPiA+ICtDaGVja0JveCA6ICdjaGVja2JveCc7DQo+ID4NCj4gPiArRW5kQ2hlY2tCb3gg OiAnZW5kY2hlY2tib3gnOw0KPiA+DQo+ID4gK051bWVyaWMgOiAnbnVtZXJpYyc7DQo+ID4NCj4g PiArRW5kTnVtZXJpYyA6ICdlbmRudW1lcmljJzsNCj4gPg0KPiA+ICtNaW5pbXVtIDogJ21pbmlt dW0nOw0KPiA+DQo+ID4gK01heGltdW0gOiAnbWF4aW11bSc7DQo+ID4NCj4gPiArU3RlcCA6ICdz dGVwJzsNCj4gPg0KPiA+ICtEZWZhdWx0IDogJ2RlZmF1bHQnOw0KPiA+DQo+ID4gK1Bhc3N3b3Jk IDogJ3Bhc3N3b3JkJzsNCj4gPg0KPiA+ICtFbmRQYXNzd29yZCA6ICdlbmRwYXNzd29yZCc7DQo+ ID4NCj4gPiArU3RyaW5nIDogJ3N0cmluZyc7DQo+ID4NCj4gPiArRW5kU3RyaW5nIDogJ2VuZHN0 cmluZyc7DQo+ID4NCj4gPiArTWluU2l6ZSA6ICdtaW5zaXplJzsNCj4gPg0KPiA+ICtNYXhTaXpl IDogJ21heHNpemUnOw0KPiA+DQo+ID4gK0VuY29kaW5nIDogJ2VuY29kaW5nJzsNCj4gPg0KPiA+ ICtTdXBwcmVzc0lmIDogJ3N1cHByZXNzaWYnOw0KPiA+DQo+ID4gK0Rpc2FibGVJZiA6ICdkaXNh YmxlaWYnOw0KPiA+DQo+ID4gK0hpZGRlbiA6ICdoaWRkZW4nOw0KPiA+DQo+ID4gK0dvdG8gOiAn Z290byc7DQo+ID4NCj4gPiArRm9ybVNldEd1aWQgOiAnZm9ybXNldGd1aWQnOw0KPiA+DQo+ID4g K0luY29uc2lzdGVudElmIDogJ2luY29uc2lzdGVudGlmJzsNCj4gPg0KPiA+ICtXYXJuaW5nSWYg OiAnd2FybmluZ2lmJzsNCj4gPg0KPiA+ICtOb1N1Ym1pdElmIDogJ25vc3VibWl0aWYnOw0KPiA+ DQo+ID4gK0VuZElmIDogJ2VuZGlmJzsNCj4gPg0KPiA+ICtLZXkgOiAna2V5JzsNCj4gPg0KPiA+ ICtEZWZhdWx0RmxhZyA6ICdERUZBVUxUJzsNCj4gPg0KPiA+ICtNYW51ZmFjdHVyaW5nRmxhZyA6 ICdNQU5VRkFDVFVSSU5HJzsNCj4gPg0KPiA+ICtDaGVja0JveERlZmF1bHRGbGFnIDogJ0NIRUNL Qk9YX0RFRkFVTFQnOw0KPiA+DQo+ID4gK0NoZWNrQm94RGVmYXVsdE1mZ0ZsYWcgOiAnQ0hFQ0tC T1hfREVGQVVMVF9NRkcnOw0KPiA+DQo+ID4gK0ludGVyYWN0aXZlRmxhZyA6ICdJTlRFUkFDVElW RSc7DQo+ID4NCj4gPiArTlZBY2Nlc3NGbGFnIDogJ05WX0FDQ0VTUyc7DQo+ID4NCj4gPiArUmVz ZXRSZXF1aXJlZEZsYWcgOiAnUkVTRVRfUkVRVUlSRUQnOw0KPiA+DQo+ID4gK1JlY29ubmVjdFJl cXVpcmVkRmxhZyA6ICdSRUNPTk5FQ1RfUkVRVUlSRUQnOw0KPiA+DQo+ID4gK0xhdGVDaGVja0Zs YWcgOiAnTEFURV9DSEVDSyc7DQo+ID4NCj4gPiArUmVhZE9ubHlGbGFnIDogJ1JFQURfT05MWSc7 DQo+ID4NCj4gPiArT3B0aW9uT25seUZsYWcgOiAnT1BUSU9OU19PTkxZJzsNCj4gPg0KPiA+ICtS ZXN0U3R5bGVGbGFnIDogJ1JFU1RfU1RZTEUnOw0KPiA+DQo+ID4gK0NsYXNzIDogJ2NsYXNzJzsN Cj4gPg0KPiA+ICtTdWJjbGFzcyA6ICdzdWJjbGFzcyc7DQo+ID4NCj4gPiArQ2xhc3NHdWlkIDog J2NsYXNzZ3VpZCc7DQo+ID4NCj4gPiArVHlwZURlZiA6ICd0eXBlZGVmJzsNCj4gPg0KPiA+ICtS ZXN0b3JlIDogJ3Jlc3RvcmUnOw0KPiA+DQo+ID4gK1NhdmUgOiAnc2F2ZSc7DQo+ID4NCj4gPiAr RGVmYXVsdHMgOiAnZGVmYXVsdHMnOw0KPiA+DQo+ID4gK0Jhbm5lciA6ICAnYmFubmVyJzsNCj4g Pg0KPiA+ICtBbGlnbiA6ICdhbGlnbic7DQo+ID4NCj4gPiArTGVmdCA6ICdsZWZ0JzsNCj4gPg0K PiA+ICtSaWdodCA6ICdyaWdodCc7DQo+ID4NCj4gPiArQ2VudGVyIDogJ2NlbnRlcic7DQo+ID4N Cj4gPiArTGluZSA6ICdsaW5lJzsNCj4gPg0KPiA+ICtOYW1lIDogJ25hbWUnOw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK1ZhcklkOiAndmFyaWQnOw0KPiA+DQo+ID4gK1F1ZXN0aW9uOiAncXVlc3Rp b24nOw0KPiA+DQo+ID4gK1F1ZXN0aW9uSWQ6ICdxdWVzdGlvbmlkJzsNCj4gPg0KPiA+ICtJbWFn ZTogJ2ltYWdlJzsNCj4gPg0KPiA+ICtMb2NrZWQ6ICdsb2NrZWQnOw0KPiA+DQo+ID4gK1J1bGU6 ICdydWxlJzsNCj4gPg0KPiA+ICtFbmRSdWxlOiAnZW5kcnVsZSc7DQo+ID4NCj4gPiArVmFsdWU6 ICd2YWx1ZSc7DQo+ID4NCj4gPiArUmVhZDogJ3JlYWQnOw0KPiA+DQo+ID4gK1dyaXRlOiAnd3Jp dGUnOw0KPiA+DQo+ID4gK1Jlc2V0QnV0dG9uOiAncmVzZXRidXR0b24nOw0KPiA+DQo+ID4gK0Vu ZFJlc2V0QnV0dG9uOiAnZW5kcmVzZXRidXR0b24nOw0KPiA+DQo+ID4gK0RlZmF1bHRTdG9yZTog J2RlZmF1bHRzdG9yZSc7DQo+ID4NCj4gPiArQXR0cmlidXRlOiAnYXR0cmlidXRlJzsNCj4gPg0K PiA+ICtWYXJzdG9yZTogJ3ZhcnN0b3JlJzsNCj4gPg0KPiA+ICtFZml2YXJzdG9yZTogJ2VmaXZh cnN0b3JlJzsNCj4gPg0KPiA+ICtWYXJTaXplOiAndmFyc2l6ZSc7DQo+ID4NCj4gPiArTmFtZVZh bHVlVmFyU3RvcmU6ICduYW1ldmFsdWV2YXJzdG9yZSc7DQo+ID4NCj4gPiArQWN0aW9uOiAnYWN0 aW9uJzsNCj4gPg0KPiA+ICtDb25maWc6ICdjb25maWcnOw0KPiA+DQo+ID4gK0VuZEFjdGlvbjog J2VuZGFjdGlvbic7DQo+ID4NCj4gPiArUmVmcmVzaDogJ3JlZnJlc2gnOw0KPiA+DQo+ID4gK0lu dGVydmFsOiAnaW50ZXJ2YWwnOw0KPiA+DQo+ID4gK1ZhcnN0b3JlRGV2aWNlOiAndmFyc3RvcmVk ZXZpY2UnOw0KPiA+DQo+ID4gK0d1aWRPcDogJ2d1aWRvcCc7DQo+ID4NCj4gPiArRW5kR3VpZE9w OiAnZW5kZ3VpZG9wJzsNCj4gPg0KPiA+ICtEYXRhVHlwZTogJ2RhdGF0eXBlJzsNCj4gPg0KPiA+ ICtEYXRhOiAnZGF0YSc7DQo+ID4NCj4gPiArTW9kYWw6ICdtb2RhbCc7DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArLy8NCj4gPg0KPiA+ICsvLyBEZWZpbmUgdGhlIGNsYXNzIGFuZCBzdWJjbGFzcyB0 b2tlbnMNCj4gPg0KPiA+ICsvLw0KPiA+DQo+ID4gKy8vDQo+ID4NCj4gPiArQ2xhc3NOb25EZXZp Y2U6ICdOT05fREVWSUNFJzsNCj4gPg0KPiA+ICtDbGFzc0Rpc2tEZXZpY2U6ICdESVNLX0RFVklD RSc7DQo+ID4NCj4gPiArQ2xhc3NWaWRlb0RldmljZTogJ1ZJREVPX0RFVklDRSc7DQo+ID4NCj4g PiArQ2xhc3NOZXR3b3JrRGV2aWNlOiAnTkVUV09SS19ERVZJQ0UnOw0KPiA+DQo+ID4gK0NsYXNz SW5wdXREZXZpY2U6ICdJTlBVVF9ERVZJQ0UnOw0KPiA+DQo+ID4gK0NsYXNzT25Cb2FyZERldmlj ZTogJ09OQk9BUkRfREVWSUNFJzsNCj4gPg0KPiA+ICtDbGFzc090aGVyRGV2aWNlOiAnT1RIRVJf REVWSUNFJzsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtTdWJjbGFzc1NldHVwQXBwbGljYXRpb246 ICdTRVRVUF9BUFBMSUNBVElPTic7DQo+ID4NCj4gPiArU3ViY2xhc3NHZW5lcmFsQXBwbGljYXRp b246ICdHRU5FUkFMX0FQUExJQ0FUSU9OJzsNCj4gPg0KPiA+ICtTdWJjbGFzc0Zyb250UGFnZTog J0ZST05UX1BBR0UnOw0KPiA+DQo+ID4gK1N1YmNsYXNzU2luZ2xlVXNlOiAnU0lOR0xFX1VTRSc7 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArWWVhclN1cHBwcmVzc0ZsYWc6ICdZRUFSX1NVUFBSRVNT JzsNCj4gPg0KPiA+ICtNb250aFN1cHByZXNzRmxhZzogJ01PTlRIX1NVUFBSRVNTJzsNCj4gPg0K PiA+ICtEYXlTdXBwcmVzc0ZsYWc6ICdEQVlfU1VQUFJFU1MnOw0KPiA+DQo+ID4gK0hvdXJTdXBw cHJlc3NGbGFnOiAnSE9VUl9TVVBQUkVTUyc7DQo+ID4NCj4gPiArTWludXRlU3VwcHJlc3NGbGFn OiAnTUlOVVRFX1NVUFBSRVNTJzsNCj4gPg0KPiA+ICtTZWNvbmRTdXBwcmVzc0ZsYWc6ICdTRUNP TkRfU1VQUFJFU1MnOw0KPiA+DQo+ID4gK1N0b3JhZ2VOb3JtYWxGbGFnOiAnU1RPUkFHRV9OT1JN QUwnOw0KPiA+DQo+ID4gK1N0b3JhZ2VUaW1lRmxhZzogJ1NUT1JBR0VfVElNRSc7DQo+ID4NCj4g PiArU3RvcmFnZVdha2VVcEZsYWc6ICdTVE9SQUdFX1dBS0VVUCc7DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArVW5pUXVlRmxhZzogJ1VOSVFVRSc7DQo+ID4NCj4gPiArTm9FbXB0eUZsYWc6ICdOT0VN UFRZJzsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtDb25kOiAnY29uZCc7DQo+ID4NCj4gPiArRmlu ZDogJ2ZpbmQnOw0KPiA+DQo+ID4gK01pZDogJ21pZCc7DQo+ID4NCj4gPiArVG9rOiAndG9rZW4n Ow0KPiA+DQo+ID4gK1NwYW46ICdzcGFuJzsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsvLyBUaGUg c3ludGF4IG9mIGV4cHJlc3Npb24NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtEdXA6ICdkdXAnOw0K PiA+DQo+ID4gK1ZhckVxVmFsOiAndmFyZXF2YWwnOw0KPiA+DQo+ID4gK1ZhcjogJ3Zhcic7DQo+ ID4NCj4gPiArSWRFcVZhbDogJ2lkZXF2YWwnOw0KPiA+DQo+ID4gK0lkRXFJZDogJ2lkZXFpZCc7 DQo+ID4NCj4gPiArSWRFcVZhbExpc3Q6ICdpZGVxdmFsbGlzdCc7DQo+ID4NCj4gPiArUXVlc3Rp b25SZWY6ICdxdWVzdGlvbnJlZic7DQo+ID4NCj4gPiArUnVsZVJlZjogJ3J1bGVyZWYnOw0KPiA+ DQo+ID4gK1N0cmluZ1JlZjogJ3N0cmluZ3JlZic7DQo+ID4NCj4gPiArUHVzaFRoaXM6ICdwdXNo dGhpcyc7DQo+ID4NCj4gPiArU2VjdXJpdHk6ICdzZWN1cml0eSc7DQo+ID4NCj4gPiArR2V0OiAn Z2V0JzsNCj4gPg0KPiA+ICtUcnVlU3ltYm9sOiAnVFJVRSc7DQo+ID4NCj4gPiArRmFsc2VTeW1i b2w6ICdGQUxTRSc7DQo+ID4NCj4gPiArT25lOiAnT05FJzsNCj4gPg0KPiA+ICtPbmVzOiAnT05F Uyc7DQo+ID4NCj4gPiArWmVybzogJ1pFUk8nOw0KPiA+DQo+ID4gK1VuZGVmaW5lZDogJ1VOREVG SU5FRCc7DQo+ID4NCj4gPiArVmVyc2lvbjogJ1ZFUlNJT04nOw0KPiA+DQo+ID4gK0xlbmd0aDog J2xlbmd0aCc7DQo+ID4NCj4gPiArQU5EOiAnQU5EJzsNCj4gPg0KPiA+ICtPUjogJ09SJzsNCj4g Pg0KPiA+ICtOT1Q6ICdOT1QnOw0KPiA+DQo+ID4gK1NldDogJ3NldCc7DQo+ID4NCj4gPiArQml0 V2lzZU5vdDogJ34nOw0KPiA+DQo+ID4gK0Jvb2xWYWw6ICdib29sdmFsJzsNCj4gPg0KPiA+ICtT dHJpbmdWYWw6ICdzdHJpbmd2YWwnOw0KPiA+DQo+ID4gK1VuSW50VmFsOiAndW5pbnR2YWwnOw0K PiA+DQo+ID4gK1RvVXBwZXI6ICd0b3VwcGVyJzsNCj4gPg0KPiA+ICtUb0xvd2VyOiAndG9sb3dl cic7DQo+ID4NCj4gPiArTWF0Y2g6ICdtYXRjaCc7DQo+ID4NCj4gPiArTWF0Y2gyOiAnbWF0Y2gy JzsNCj4gPg0KPiA+ICtDYXRlbmF0ZTogJ2NhdGVuYXRlJzsNCj4gPg0KPiA+ICtRdWVzdGlvblJl ZlZhbDogJ3F1ZXN0aW9ucmVmdmFsJzsNCj4gPg0KPiA+ICtTdHJpbmdSZWZWYWw6ICdzdHJpbmdy ZWZ2YWwnOw0KPiA+DQo+ID4gK01hcDogJ21hcCc7DQo+ID4NCj4gPiArUmVmcmVzaEd1aWQ6ICdy ZWZyZXNoZ3VpZCc7DQo+ID4NCj4gPiArU3RyaW5nVG9rZW46ICdTVFJJTkdfVE9LRU4nOw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gK09wdGlvbkRlZmF1bHQ6ICdPUFRJT05fREVGQVVMVCc7DQo+ID4N Cj4gPiArT3B0aW9uRGVmYXVsdE1mZzogJ09QVElPTl9ERUZBVUxUX01GRyc7DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArTnVtZXJpY1NpemVPbmU6ICdOVU1FUklDX1NJWkVfMSc7DQo+ID4NCj4gPiAr TnVtZXJpY1NpemVUd286ICdOVU1FUklDX1NJWkVfMic7DQo+ID4NCj4gPiArTnVtZXJpY1NpemVG b3VyOiAnTlVNRVJJQ19TSVpFXzQnOw0KPiA+DQo+ID4gK051bWVyaWNTaXplRWlnaHQ6ICdOVU1F UklDX1NJWkVfOCc7DQo+ID4NCj4gPiArRGlzUGxheUludERlYzogJ0RJU1BMQVlfSU5UX0RFQyc7 DQo+ID4NCj4gPiArRGlzUGxheVVJbnREZWM6ICdESVNQTEFZX1VJTlRfREVDJzsNCj4gPg0KPiA+ ICtEaXNQbGF5VUludEhleDogJ0RJU1BMQVlfVUlOVF9IRVgnOw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gK0luc2Vuc2l0aXZlOiAgJ0lOU0VOU0lUSVZFJzsNCj4gPg0KPiA+ICtTZW5zaXRpdmU6ICdT RU5TSVRJVkUnOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK0xhc3ROb25NYXRjaDogJ0xBU1RfTk9O X01BVENIJzsNCj4gPg0KPiA+ICtGaXJzdE5vbk1hdGNoOiAnRklSU1RfTk9OX01BVENIJzsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtOdW1iZXINCj4gPg0K PiA+ICsgICAgOiAgICgnMHgnWzAtOUEtRmEtZl0rKSB8IFswLTldKw0KPiA+DQo+ID4gKyAgICA7 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArU3RyaW5nSWRlbnRpZmllcg0KPiA+DQo+ID4gKyAgICA6 ICAgW0EtWmEtel9dW0EtWmEtel8wLTldKg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArQ29tcGxleERlZmluZQ0KPiA+DQo+ID4gKyAgICA6ICAgJyMnIFdoaXRlc3BhY2U/ ICdkZWZpbmUnICB+WyNcclxuXSoNCj4gPg0KPiA+ICsgICAgICAgIC0+IHNraXANCj4gPg0KPiA+ ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK0xpbmVEZWZpbml0aW9u DQo+ID4NCj4gPiArICAgIDogICAnIycgV2hpdGVzcGFjZT8gJ2xpbmUnICB+WyNcclxuXSoNCj4g Pg0KPiA+ICsgICAgICAgIC0+IHNraXANCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK0luY2x1ZGVEZWZpbml0aW9uDQo+ID4NCj4gPiArICAgIDogICAnIycgV2hpdGVzcGFj ZT8gJ2luY2x1ZGUnICB+WyNcclxuXSoNCj4gPg0KPiA+ICsgICAgICAgIC0+IHNraXANCj4gPg0K PiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK1doaXRlc3BhY2UNCj4gPg0KPiA+ICsg ICAgOiAgIFsgXHRdKw0KPiA+DQo+ID4gKyAgICAgICAgLT4gc2tpcA0KPiA+DQo+ID4gKyAgICA7 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArTmV3bGluZQ0KPiA+DQo+ID4gKyAgICA6ICAgKCAgICdc cicgJ1xuJz8NCj4gPg0KPiA+ICsgICAgICAgIHwgICAnXG4nDQo+ID4NCj4gPiArICAgICAgICAp DQo+ID4NCj4gPiArICAgICAgICAtPiBza2lwDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICtMaW5lQ29tbWVudA0KPiA+DQo+ID4gKyAgICA6ICAgJy8vJyB+W1xyXG5dKg0K PiA+DQo+ID4gKyAgICAgICAgLT4gc2tpcA0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArLy8gU2tpcCBvdmVyICdleHRlcm4nIGluIGFueSBpbmNsdWRlZCAuSCBmaWxlDQo+ ID4NCj4gPiArRXh0ZXJuDQo+ID4NCj4gPiArICAgIDogJ2V4dGVybicgflsjXHJcbl0qDQo+ID4N Cj4gPiArICAgICAgICAtPiBza2lwDQo+ID4NCj4gPiArICAgIDsNCj4gPiBcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUNCj4gPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v VmZyQ29tcGlsZXIvVmZyU3ludGF4TGV4ZXIucHkNCj4gPiBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0 aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRheExleGVyLnB5DQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi4yYjdhNWMzMmEzDQo+ID4gLS0tIC9kZXYvbnVsbA0K PiA+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRheExl eGVyLnB5DQo+ID4gQEAgLTAsMCArMSwxNzA5IEBADQo+ID4gKyMgR2VuZXJhdGVkIGZyb20gVmZy U3ludGF4Lmc0IGJ5IEFOVExSIDQuNy4yDQo+ID4NCj4gPiArZnJvbSBhbnRscjQgaW1wb3J0ICoN Cj4gPg0KPiA+ICtmcm9tIGlvIGltcG9ydCBTdHJpbmdJTw0KPiA+DQo+ID4gK2Zyb20gdHlwaW5n IGltcG9ydCBUZXh0SU8NCj4gPg0KPiA+ICtpbXBvcnQgc3lzDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZnJvbSBWZnJDb21waWxlci5Db21tb25DdHlwZXMg aW1wb3J0ICoNCj4gPg0KPiA+ICtmcm9tIFZmckNvbXBpbGVyLlZmckZvcm1Qa2cgaW1wb3J0ICoN Cj4gPg0KPiA+ICtmcm9tIFZmckNvbXBpbGVyLlZmclV0aWxpdHkgaW1wb3J0ICoNCj4gPg0KPiA+ ICtmcm9tIFZmckNvbXBpbGVyLlZmclRyZWUgaW1wb3J0ICoNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtkZWYgc2VyaWFsaXplZEFUTigpOg0KPiA+DQo+ID4g KyAgICB3aXRoIFN0cmluZ0lPKCkgYXMgYnVmOg0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXDNcdTYwOGJcdWE3MmFcdTgxMzNcdWI5ZWRcdTQxN2NcdTNiZTdcdTc3ODZcdTU5NjRcMlx1 MDEwDQo+ID4gMiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlx1MGFiN1xiXDFcNFwy XHRcMlw0XDNcdFwzXDRcNFx0XDRcNFw1XHRcNVw0XDZcdFw2XDRcNyIpDQo+ID4NCj4gPiArICAg ICAgICBidWYud3JpdGUoIlx0XDdcNFxiXHRcYlw0XHRcdFx0XDRcblx0XG5cNFwxM1x0XDEzXDRc Zlx0XGZcNFxyXHRcciIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlw0XDE2XHRcMTZc NFwxN1x0XDE3XDRcMjBcdFwyMFw0XDIxXHRcMjFcNFwyMlx0XDIyXDRcMjMiKQ0KPiA+DQo+ID4g KyAgICAgICAgYnVmLndyaXRlKCJcdFwyM1w0XDI0XHRcMjRcNFwyNVx0XDI1XDRcMjZcdFwyNlw0 XDI3XHRcMjdcNFwzMFx0XDMwIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDRcMzFc dFwzMVw0XDMyXHRcMzJcNFwzM1x0XDMzXDRcMzRcdFwzNFw0XDM1XHRcMzVcNFwzNiIpDQo+ID4N Cj4gPiArICAgICAgICBidWYud3JpdGUoIlx0XDM2XDRcMzdcdFwzN1w0IFx0IFw0IVx0IVw0XCJc dFwiXDQjXHQjXDQkXHQkXDQlXHQlIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDQm XHQmXDRcJ1x0XCdcNChcdChcNClcdClcNCpcdCpcNCtcdCtcNCxcdCxcNC1cdC1cNC4iKQ0KPiA+ DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcdC5cNC9cdC9cNFw2MFx0XDYwXDRcNjFcdFw2MVw0 XDYyXHRcNjJcNFw2M1x0XDYzXDRcNjQiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJc dFw2NFw0XDY1XHRcNjVcNFw2Nlx0XDY2XDRcNjdcdFw2N1w0OFx0OFw0OVx0OVw0Olx0OiIpDQo+ ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDQ7XHQ7XDQ8XHQ8XDQ9XHQ9XDQ+XHQ+XDQ/XHQ/XDRA XHRAXDRBXHRBXDRCXHRCXDRDXHQiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJDXDRE XHREXDRFXHRFXDRGXHRGXDRHXHRHXDRIXHRIXDRJXHRJXDRKXHRKXDRLXHRLXDRMXHQiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiTFw0TVx0TVw0Tlx0Tlw0T1x0T1w0UFx0UFw0UVx0UVw0 Ulx0Ulw0U1x0U1w0VFx0VFw0VVx0IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiVVw0 Vlx0Vlw0V1x0V1w0WFx0WFw0WVx0WVw0Wlx0Wlw0W1x0W1w0XFxcdFxcXDRdXHRdXDQiKQ0KPiA+ DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJeXHReXDRfXHRfXDRgXHRgXDRhXHRhXDRiXHRiXDRj XHRjXDRkXHRkXDRlXHRlXDRmXHRmXDQiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJn XHRnXDRoXHRoXDRpXHRpXDRqXHRqXDRrXHRrXDRsXHRsXDRtXHRtXDRuXHRuXDRvXHRvXDQiKQ0K PiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJwXHRwXDRxXHRxXDRyXHRyXDRzXHRzXDR0XHR0 XDR1XHR1XDR2XHR2XDR3XHR3XDR4XHR4XDQiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRl KCJ5XHR5XDR6XHR6XDR7XHR7XDR8XHR8XDR9XHR9XDR+XHR+XDRcMTc3XHRcMTc3XDRcdTAwODAi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHRcdTAwODBcNFx1MDA4MVx0XHUwMDgxXDRc dTAwODJcdFx1MDA4Mlw0XHUwMDgzXHRcdTAwODMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDRcdTAwODRcdFx1MDA4NFw0XHUwMDg1XHRcdTAwODVcNFx1MDA4Nlx0XHUwMDg2XDRcdTAw ODciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHRcdTAwODdcNFx1MDA4OFx0XHUwMDg4 XDRcdTAwODlcdFx1MDA4OVw0XHUwMDhhXHRcdTAwOGEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDRcdTAwOGJcdFx1MDA4Ylw0XHUwMDhjXHRcdTAwOGNcNFx1MDA4ZFx0XHUwMDhkXDRc dTAwOGUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHRcdTAwOGVcNFx1MDA4Zlx0XHUw MDhmXDRcdTAwOTBcdFx1MDA5MFw0XHUwMDkxXHRcdTAwOTEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDRcdTAwOTJcdFx1MDA5Mlw0XHUwMDkzXHRcdTAwOTNcNFx1MDA5NFx0XHUwMDk0 XDRcdTAwOTUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHRcdTAwOTVcNFx1MDA5Nlx0 XHUwMDk2XDRcdTAwOTdcdFx1MDA5N1w0XHUwMDk4XHRcdTAwOTgiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXDRcdTAwOTlcdFx1MDA5OVw0XHUwMDlhXHRcdTAwOWFcNFx1MDA5Ylx0XHUw MDliXDRcdTAwOWMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHRcdTAwOWNcNFx1MDA5 ZFx0XHUwMDlkXDRcdTAwOWVcdFx1MDA5ZVw0XHUwMDlmXHRcdTAwOWYiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDRcdTAwYTBcdFx1MDBhMFw0XHUwMGExXHRcdTAwYTFcNFx1MDBhMlx0 XHUwMGEyXDRcdTAwYTMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHRcdTAwYTNcNFx1 MDBhNFx0XHUwMGE0XDRcdTAwYTVcdFx1MDBhNVw0XHUwMGE2XHRcdTAwYTYiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDRcdTAwYTdcdFx1MDBhN1w0XHUwMGE4XHRcdTAwYThcNFx1MDBh OVx0XHUwMGE5XDRcdTAwYWEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHRcdTAwYWFc NFx1MDBhYlx0XHUwMGFiXDRcdTAwYWNcdFx1MDBhY1w0XHUwMGFkXHRcdTAwYWQiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDRcdTAwYWVcdFx1MDBhZVw0XHUwMGFmXHRcdTAwYWZcNFx1 MDBiMFx0XHUwMGIwXDRcdTAwYjEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHRcdTAw YjFcNFx1MDBiMlx0XHUwMGIyXDRcdTAwYjNcdFx1MDBiM1w0XHUwMGI0XHRcdTAwYjQiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDRcdTAwYjVcdFx1MDBiNVw0XHUwMGI2XHRcdTAw YjZcNFx1MDBiN1x0XHUwMGI3XDRcdTAwYjgiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHRcdTAwYjhcNFx1MDBiOVx0XHUwMGI5XDRcdTAwYmFcdFx1MDBiYVw0XHUwMGJiXHRcdTAw YmIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDRcdTAwYmNcdFx1MDBiY1w0XHUw MGJkXHRcdTAwYmRcNFx1MDBiZVx0XHUwMGJlXDRcdTAwYmYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHRcdTAwYmZcNFx1MDBjMFx0XHUwMGMwXDRcdTAwYzFcdFx1MDBjMVw0XHUwMGMy XHRcdTAwYzIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDRcdTAwYzNcdFx1MDBjM1w0 XHUwMGM0XHRcdTAwYzRcNFx1MDBjNVx0XHUwMGM1XDRcdTAwYzYiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHRcdTAwYzZcNFx1MDBjN1x0XHUwMGM3XDRcdTAwYzhcdFx1MDBjOFw0XHUw MGM5XHRcdTAwYzkiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDRcdTAwY2FcdFx1MDBj YVw0XHUwMGNiXHRcdTAwY2JcNFx1MDBjY1x0XHUwMGNjXDRcdTAwY2QiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXHRcdTAwY2RcNFx1MDBjZVx0XHUwMGNlXDRcdTAwY2ZcdFx1MDBjZlw0 XHUwMGQwXHRcdTAwZDAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDRcdTAwZDFc dFx1MDBkMVw0XHUwMGQyXHRcdTAwZDJcNFx1MDBkM1x0XHUwMGQzXDRcdTAwZDQiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHRcdTAwZDRcNFx1MDBkNVx0XHUwMGQ1XDRcdTAwZDZcdFx1 MDBkNlw0XHUwMGQ3XHRcdTAwZDciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDRc dTAwZDhcdFx1MDBkOFw0XHUwMGQ5XHRcdTAwZDlcNFx1MDBkYVx0XHUwMGRhXDRcdTAwZGIiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHRcdTAwZGJcNFx1MDBkY1x0XHUwMGRjXDRc dTAwZGRcdFx1MDBkZFw0XHUwMGRlXHRcdTAwZGUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDRcdTAwZGZcdFx1MDBkZlw0XHUwMGUwXHRcdTAwZTBcNFx1MDBlMVx0XHUwMGUxXDRcdTAw ZTIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHRcdTAwZTJcNFx1MDBlM1x0XHUwMGUz XDRcdTAwZTRcdFx1MDBlNFw0XHUwMGU1XHRcdTAwZTUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDRcdTAwZTZcdFx1MDBlNlw0XHUwMGU3XHRcdTAwZTdcNFx1MDBlOFx0XHUwMGU4 XDRcdTAwZTkiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHRcdTAwZTlcNFx1MDBlYVx0 XHUwMGVhXDRcdTAwZWJcdFx1MDBlYlw0XHUwMGVjXHRcdTAwZWMiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXDRcdTAwZWRcdFx1MDBlZFw0XHUwMGVlXHRcdTAwZWVcNFx1MDBlZlx0XHUw MGVmXDRcdTAwZjAiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx0XHUwMGYwXDRcdTAwZjFc dFx1MDBmMVw0XHUwMGYyXHRcdTAwZjJcNFx1MDBmM1x0XHUwMGYzIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlw0XHUwMGY0XHRcdTAwZjRcNFx1MDBmNVx0XHUwMGY1XDRcdTAwZjZcdFx1 MDBmNlw0XHUwMGY3IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdFx1MDBmN1w0XHUwMGY4 XHRcdTAwZjhcNFx1MDBmOVx0XHUwMGY5XDRcdTAwZmFcdFx1MDBmYSIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcNFx1MDBmYlx0XHUwMGZiXDRcdTAwZmNcdFx1MDBmY1w0XHUwMGZkXHRc dTAwZmRcNFx1MDBmZSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdFx1MDBmZVw0XHUw MGZmXHRcdTAwZmZcNFx1MDEwMFx0XHUwMTAwXDRcdTAxMDFcdFx1MDEwMSIpDQo+ID4NCj4gPiAr ICAgICAgICBidWYud3JpdGUoIlwzXDJcM1wyXDNcMlwzXDJcM1wyXDNcM1wzXDNcM1wzXDNcM1wz XDNcM1w0XDNcNFwzXDRcMyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlw0XDNcNVwz XDVcM1w1XDNcNVwzXDVcM1w1XDNcNVwzXDVcM1w2XDNcNlwzXDZcM1w2XDNcNiIpDQo+ID4NCj4g PiArDQo+IGJ1Zi53cml0ZSgiXDNcN1wzXDdcM1xiXDNcYlwzXGJcM1xiXDNcYlwzXGJcM1xiXDNc YlwzXGJcM1xiXDNcYlwzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXGJcM1x0XDNc dFwzXHRcM1x0XDNcdFwzXHRcM1x0XDNcdFwzXHRcM1x0XDNcdFwzXG5cM1xuIikNCj4gPg0KPiA+ ICsNCj4gYnVmLndyaXRlKCJcM1xuXDNcblwzXG5cM1xuXDNcblwzXG5cM1xuXDNcblwzXG5cM1wx M1wzXDEzXDNcMTNcMyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlxmXDNcZlwzXGZc M1xyXDNcclwzXDE2XDNcMTZcM1wxN1wzXDE3XDNcMjBcM1wyMFwzXDIwIikNCj4gPg0KPiA+ICsN Cj4gYnVmLndyaXRlKCJcM1wyMFwzXDIwXDNcMjBcM1wyMFwzXDIxXDNcMjFcM1wyMlwzXDIyXDNc MjJcM1wyMlwzXDIyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyMlwzXDIyXDNcMjJc M1wyM1wzXDIzXDNcMjNcM1wyM1wzXDIzXDNcMjNcM1wyM1wzXDIzIikNCj4gPg0KPiA+ICsNCj4g YnVmLndyaXRlKCJcM1wyM1wzXDI0XDNcMjRcM1wyNFwzXDI0XDNcMjRcM1wyNFwzXDI0XDNcMjRc M1wyNFwzXDI0IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyNFwzXDI0XDNcMjVcM1wy NVwzXDI2XDNcMjZcM1wyN1wzXDI3XDNcMzBcM1wzMFwzXDMxIikNCj4gPg0KPiA+ICsNCj4gYnVm LndyaXRlKCJcM1wzMVwzXDMyXDNcMzJcM1wzM1wzXDMzXDNcMzRcM1wzNFwzXDM1XDNcMzVcM1wz NlwzXDM2IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMzdcM1wzN1wzIFwzIFwz IVwzIVwzIVwzXCJcM1wiXDNcIlwzI1wzI1wzI1wzJFwzJFwzIikNCj4gPg0KPiA+ICsgICAgICAg IGJ1Zi53cml0ZSgiJVwzJVwzJVwzJlwzJlwzXCdcM1wnXDMoXDMoXDMpXDMpXDMpXDMpXDMpXDMp XDMpXDMpXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiKVwzKVwzKVwzKlwzKlwzKlwz KlwzKlwzKlwzKlwzKlwzK1wzK1wzK1wzK1wzK1wzK1wzK1wzIikNCj4gPg0KPiA+ICsgICAgICAg IGJ1Zi53cml0ZSgiK1wzK1wzK1wzLFwzLFwzLFwzLFwzLFwzLFwzLFwzLFwzLFwzLFwzLFwzLVwz LVwzLVwzLVwzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiLVwzLVwzLlwzLlwzLlwz LlwzLlwzLlwzLlwzL1wzL1wzL1wzL1wzL1wzL1wzXDYwXDNcNjAiKQ0KPiA+DQo+ID4gKw0KPiBi dWYud3JpdGUoIlwzXDYwXDNcNjBcM1w2MFwzXDYwXDNcNjBcM1w2MFwzXDYwXDNcNjFcM1w2MVwz XDYxXDNcNjEiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDYxXDNcNjFcM1w2MVwzXDYy XDNcNjJcM1w2MlwzXDYyXDNcNjJcM1w2MlwzXDYyXDNcNjIiKQ0KPiA+DQo+ID4gKw0KPiBidWYu d3JpdGUoIlwzXDYyXDNcNjJcM1w2MlwzXDYyXDNcNjNcM1w2M1wzXDYzXDNcNjNcM1w2M1wzXDYz XDNcNjMiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDYzXDNcNjNcM1w2M1wzXDYzXDNc NjNcM1w2M1wzXDYzXDNcNjRcM1w2NFwzXDY0XDNcNjQiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIlwzXDY0XDNcNjRcM1w2NFwzXDY0XDNcNjVcM1w2NVwzXDY1XDNcNjVcM1w2NVwzXDY1XDNc NjUiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDY1XDNcNjZcM1w2NlwzXDY2XDNcNjZc M1w2NlwzXDY3XDNcNjdcM1w2N1wzXDY3XDNcNjciKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndy aXRlKCJcM1w2N1wzXDY3XDNcNjdcMzhcMzhcMzhcMzhcMzhcMzhcMzhcMzhcMzhcMzlcMzlcMzlc MyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIjlcMzlcMzlcMzlcMzlcMzpcMzpcMzpc MzpcMzpcMzpcMzpcMzpcMzpcMztcMztcMztcMztcMyIpDQo+ID4NCj4gPiArICAgICAgICBidWYu d3JpdGUoIjtcMztcMztcMztcMztcMztcMztcMztcMzxcMzxcMzxcMzxcMzxcMz1cMz1cMz1cMz1c Mz1cMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCI+XDM+XDM+XDM+XDM+XDM+XDM+ XDM/XDM/XDM/XDM/XDM/XDM/XDNAXDNAXDNAXDNAXDNAXDMNCj4gPiAiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQlwzQlwzQlwzQlwzQlwz Q1wzQ1wzQ1wzQ1wzQ1wzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIkNcM0RcM0RcM0Rc M0RcM0VcM0VcM0VcM0VcM0VcM0ZcM0ZcM0ZcM0ZcM0ZcM0ZcM0ZcM0ZcMyIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJHXDNHXDNHXDNHXDNHXDNIXDNIXDNIXDNIXDNIXDNIXDNIXDNJXDNJ XDNJXDNJXDNJXDNJXDMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJJXDNKXDNKXDNK XDNKXDNKXDNKXDNKXDNKXDNKXDNKXDNLXDNLXDNLXDNLXDNLXDNLXDNMXDMiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiTFwzTFwzTFwzTFwzTFwzTFwzTFwzTVwzTVwzTVwzTVwzTVwz TVwzTVwzTVwzTVwzTVwzDQo+ID4gTlwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ik5cM05cM05cM05cM05cM05cM05cM05cM05cM05cM05cM05cM05cM05cM05cM05cM09cM08NCj4g PiBcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJPXDNPXDNPXDNPXDNPXDNQXDNQ XDNQXDNQXDNQXDNQXDNRXDNRXDNRXDNRXDNRXDNRXDNRXDMNCj4gPiAiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiUVwzUlwzUlwzUlwzUlwzUlwzUlwzUlwzU1wzU1wzU1wzU1wzU1wzU1wz U1wzVFwzVFwzVFwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlRcM1RcM1RcM1Rc M1VcM1VcM1VcM1VcM1VcM1VcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcMyIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJWXDNWXDNWXDNWXDNWXDNWXDNXXDNXXDNXXDNXXDNXXDNXXDNX XDNXXDNXXDNXXDMNCj4gPiBXXDNXXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiV1wz WFwzWFwzWFwzWFwzWFwzWFwzWFwzWFwzWFwzWFwzWFwzWFwzWFwzWVwzWVwzWVwzWVwzIikNCj4g Pg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiWVwzWVwzWVwzWVwzWVwzWVwzWVwzWVwzWlwzWlwz WlwzWlwzWlwzW1wzW1wzW1wzW1wzW1wzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgi W1wzW1wzW1wzW1wzXFxcM1xcXDNcXFwzXFxcM1xcXDNcXFwzXFxcM1xcXDNcXFwzXFxcM1xcIikN Cj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcXFwzXVwzXVwzXVwzXVwzXVwzXVwzXVwz XVwzXlwzXlwzXlwzXlwzXlwzXlwzXlwzXlwzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXlwzXlwzXlwzX1wzX1wzX1wzX1wzX1wzX1wzX1wzX1wzYFwzYFwzYFwzYFwzYFwzYFwzYFwz IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJgXDNhXDNhXDNhXDNhXDNhXDNiXDNiXDNiXDNi XDNiXDNiXDNiXDNiXDNjXDNjXDNjXDNjXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi Y1wzY1wzY1wzY1wzY1wzZFwzZFwzZFwzZFwzZFwzZFwzZFwzZFwzZFwzZFwzZFwzZFwzZVwzIikN Cj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiZVwzZVwzZVwzZVwzZVwzZVwzZlwzZlwzZlwz ZlwzZlwzZlwzZlwzZlwzZlwzZlwzZ1wzZ1wzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0 ZSgiZ1wzZ1wzZ1wzZ1wzZ1wzZ1wzaFwzaFwzaFwzaFwzaFwzaFwzaFwzaFwzaVwzaVwzaVwzaVwz IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiaVwzaVwzaVwzaVwzaVwzalwzalwzalwz alwzalwzalwzalwzalwzalwzalwzalwza1wza1wzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53 cml0ZSgia1wza1wza1wza1wza1wza1wza1wza1wzbFwzbFwzbFwzbFwzbFwzbFwzbFwzbVwzbVwz bVwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIm1cM21cM25cM25cM25cM25cM25c M25cM25cM25cM25cM25cM25cM25cM29cM29cM29cM29cMyIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJvXDNvXDNvXDNvXDNvXDNvXDNvXDNvXDNvXDNvXDNvXDNwXDNwXDNwXDNwXDNwXDNw XDNwXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgicFwzcFwzcFwzcVwzcVwzcVwzcVwz cVwzcVwzcVwzcVwzcVwzcVwzcVwzclwzclwzclwzclwzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1 Zi53cml0ZSgiclwzclwzc1wzc1wzc1wzc1wzdFwzdFwzdFwzdFwzdFwzdFwzdFwzdFwzdVwzdVwz dVwzdVwzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoInVcM3VcM3VcM3VcM3VcM3VcM3Vc M3VcM3VcM3VcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJ2XDN2XDN2XDN2XDN2XDN2XDN2XDN2XDN2XDN3XDN3XDN3XDN3XDN3XDN3XDN3 XDN3XDN3XDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgid1wzd1wzd1wzd1wzd1wz d1wzd1wzd1wzd1wzd1wzd1wzd1wzeFwzeFwzeFwzeFwzeFwzeFwNCj4gPiAzIikNCj4gPg0KPiA+ ICsNCj4gYnVmLndyaXRlKCJ4XDN4XDN4XDN4XDN4XDN4XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5 XDN5XDN5XDN6XDN6XDMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJ6XDN6XDN6XDN6 XDN6XDN6XDN6XDN6XDN6XDN6XDN6XDN6XDN6XDN7XDN7XDN7XDN7XDN7XDMiKQ0KPiA+DQo+ID4g KyAgICAgICAgYnVmLndyaXRlKCJ7XDN7XDN7XDN7XDN7XDN7XDN7XDN7XDN7XDN7XDN7XDN7XDN7 XDN7XDN8XDN8XDN8XDN8XDMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJ8XDN8XDN8 XDN8XDN8XDN8XDN8XDN9XDN9XDN9XDN9XDN9XDN9XDN9XDN9XDN9XDN9XDN+XDMiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiflwzflwzflwzflwzflwzflwzflwzflwzflwzflwzflwzflwz XDE3N1wzXDE3N1wzXDE3N1wzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcMTc3XDNcMTc3 XDNcMTc3XDNcMTc3XDNcMTc3XDNcMTc3XDNcMTc3XDNcMTc3XDNcdTAwODAiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwODBcM1x1MDA4MFwzXHUwMDgwXDNcdTAwODBcM1x1MDA4 MFwzXHUwMDgxXDNcdTAwODEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwODFc M1x1MDA4MVwzXHUwMDgxXDNcdTAwODFcM1x1MDA4MVwzXHUwMDgxXDNcdTAwODEiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwODJcM1x1MDA4MlwzXHUwMDgyXDNcdTAwODJcM1x1 MDA4MlwzXHUwMDgyXDNcdTAwODIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAw ODJcM1x1MDA4MlwzXHUwMDgyXDNcdTAwODNcM1x1MDA4M1wzXHUwMDgzXDNcdTAwODMiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwODNcM1x1MDA4M1wzXHUwMDgzXDNcdTAwODNc M1x1MDA4NFwzXHUwMDg0XDNcdTAwODQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNc dTAwODRcM1x1MDA4NFwzXHUwMDg0XDNcdTAwODRcM1x1MDA4NFwzXHUwMDg1XDNcdTAwODUiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwODVcM1x1MDA4NVwzXHUwMDg1XDNcdTAw ODZcM1x1MDA4NlwzXHUwMDg2XDNcdTAwODYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XDNcdTAwODZcM1x1MDA4NlwzXHUwMDg2XDNcdTAwODZcM1x1MDA4NlwzXHUwMDg3XDNcdTAwODci KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwODdcM1x1MDA4N1wzXHUwMDg3XDNc dTAwODdcM1x1MDA4N1wzXHUwMDg4XDNcdTAwODgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDNcdTAwODhcM1x1MDA4OFwzXHUwMDg4XDNcdTAwODhcM1x1MDA4OVwzXHUwMDg5XDNcdTAw ODkiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwODlcM1x1MDA4OVwzXHUwMDhh XDNcdTAwOGFcM1x1MDA4YVwzXHUwMDhhXDNcdTAwOGEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDNcdTAwOGFcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhi XDNcdTAwOGIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwOGJcM1x1MDA4Y1wz XHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGQiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXDNcdTAwOGRcM1x1MDA4ZFwzXHUwMDhkXDNcdTAwOGRcM1x1MDA4ZVwz XHUwMDhlXDNcdTAwOGUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwOGVcM1x1 MDA4ZVwzXHUwMDhlXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGYiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4 ZlwzXHUwMDkwXDNcdTAwOTAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwOTBc M1x1MDA5MFwzXHUwMDkwXDNcdTAwOTBcM1x1MDA5MFwzXHUwMDkwXDNcdTAwOTAiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwOTBcM1x1MDA5MFwzXHUwMDkxXDNcdTAwOTFcM1x1 MDA5MVwzXHUwMDkxXDNcdTAwOTEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAw OTFcM1x1MDA5MlwzXHUwMDkyXDNcdTAwOTJcM1x1MDA5MlwzXHUwMDkyXDNcdTAwOTIiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwOTJcM1x1MDA5M1wzXHUwMDkzXDNcdTAwOTNc M1x1MDA5M1wzXHUwMDkzXDNcdTAwOTQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNc dTAwOTRcM1x1MDA5NFwzXHUwMDk0XDNcdTAwOTRcM1x1MDA5NFwzXHUwMDk0XDNcdTAwOTQiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwOTVcM1x1MDA5NVwzXHUwMDk1XDNcdTAw OTVcM1x1MDA5NVwzXHUwMDk1XDNcdTAwOTYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XDNcdTAwOTZcM1x1MDA5NlwzXHUwMDk2XDNcdTAwOTZcM1x1MDA5N1wzXHUwMDk3XDNcdTAwOTci KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwOTdcM1x1MDA5N1wzXHUwMDk3XDNc dTAwOThcM1x1MDA5OFwzXHUwMDk4XDNcdTAwOTgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDNcdTAwOThcM1x1MDA5OFwzXHUwMDk4XDNcdTAwOThcM1x1MDA5OFwzXHUwMDk4XDNcdTAw OTgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwOThcM1x1MDA5OVwzXHUwMDk5 XDNcdTAwOTlcM1x1MDA5OVwzXHUwMDk5XDNcdTAwOTkiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDNcdTAwOTlcM1x1MDA5OVwzXHUwMDk5XDNcdTAwOTlcM1x1MDA5OVwzXHUwMDk5XDNc dTAwOTkiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwOTlcM1x1MDA5OVwzXHUw MDlhXDNcdTAwOWFcM1x1MDA5YVwzXHUwMDlhXDNcdTAwOWEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDNcdTAwOWFcM1x1MDA5YVwzXHUwMDlhXDNcdTAwOWFcM1x1MDA5YVwzXHUwMDlh XDNcdTAwOWEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwOWFcM1x1MDA5 YlwzXHUwMDliXDNcdTAwOWJcM1x1MDA5YlwzXHUwMDliXDNcdTAwOWIiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwOWJcM1x1MDA5YlwzXHUwMDliXDNcdTAwOWJcM1x1MDA5 Y1wzXHUwMDljXDNcdTAwOWMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwOWNc M1x1MDA5Y1wzXHUwMDljXDNcdTAwOWNcM1x1MDA5Y1wzXHUwMDljXDNcdTAwOWQiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwOWRcM1x1MDA5ZFwzXHUwMDlkXDNcdTAwOWRc M1x1MDA5ZFwzXHUwMDlkXDNcdTAwOWQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XDNcdTAwOWRcM1x1MDA5ZFwzXHUwMDlkXDNcdTAwOWRcM1x1MDA5ZVwzXHUwMDllXDNcdTAwOWUi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwOWVcM1x1MDA5ZVwzXHUwMDll XDNcdTAwOWVcM1x1MDA5ZVwzXHUwMDlmXDNcdTAwOWYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDNcdTAwOWZcM1x1MDA5ZlwzXHUwMDlmXDNcdTAwOWZcM1x1MDA5ZlwzXHUwMDlmXDNc dTAwOWYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwOWZcM1x1MDA5ZlwzXHUw MDlmXDNcdTAwOWZcM1x1MDA5ZlwzXHUwMDlmXDNcdTAwOWYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDNcdTAwOWZcM1x1MDA5ZlwzXHUwMGEwXDNcdTAwYTBcM1x1MDBhMFwzXHUwMGEw XDNcdTAwYTAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYTBcM1x1MDBhMFwz XHUwMGExXDNcdTAwYTFcM1x1MDBhMVwzXHUwMGExXDNcdTAwYTEiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXDNcdTAwYTFcM1x1MDBhMVwzXHUwMGEyXDNcdTAwYTJcM1x1MDBhMlwzXHUw MGEyXDNcdTAwYTIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYTJcM1x1MDBh MlwzXHUwMGEyXDNcdTAwYTJcM1x1MDBhMlwzXHUwMGEzXDNcdTAwYTMiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDNcdTAwYTNcM1x1MDBhM1wzXHUwMGEzXDNcdTAwYTNcM1x1MDBhM1wz XHUwMGEzXDNcdTAwYTQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYTRcM1x1 MDBhNFwzXHUwMGE0XDNcdTAwYTRcM1x1MDBhNFwzXHUwMGE0XDNcdTAwYTQiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYTRcM1x1MDBhNVwzXHUwMGE1XDNcdTAwYTVcM1x1MDBh NVwzXHUwMGE1XDNcdTAwYTUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYTVc M1x1MDBhNVwzXHUwMGE1XDNcdTAwYTVcM1x1MDBhNVwzXHUwMGE1XDNcdTAwYTUiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYTVcM1x1MDBhNVwzXHUwMGE2XDNcdTAwYTZcM1x1 MDBhNlwzXHUwMGE2XDNcdTAwYTYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAw YTZcM1x1MDBhNlwzXHUwMGE3XDNcdTAwYTdcM1x1MDBhN1wzXHUwMGE3XDNcdTAwYTciKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYTdcM1x1MDBhN1wzXHUwMGE3XDNcdTAwYTdc M1x1MDBhN1wzXHUwMGE4XDNcdTAwYTgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNc dTAwYThcM1x1MDBhOFwzXHUwMGE4XDNcdTAwYThcM1x1MDBhOFwzXHUwMGE4XDNcdTAwYTgiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYTlcM1x1MDBhOVwzXHUwMGE5XDNcdTAw YTlcM1x1MDBhOVwzXHUwMGFhXDNcdTAwYWEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXDNcdTAwYWFcM1x1MDBhYVwzXHUwMGFhXDNcdTAwYWFcM1x1MDBhYlwzXHUwMGFiXDNcdTAw YWIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYWJcM1x1MDBhYlwzXHUw MGFiXDNcdTAwYWJcM1x1MDBhYlwzXHUwMGFiXDNcdTAwYWIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDNcdTAwYWJcM1x1MDBhY1wzXHUwMGFjXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFj XDNcdTAwYWMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYWNcM1x1MDBhY1wz XHUwMGFjXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFjXDNcdTAwYWQiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYWRcM1x1MDBhZFwzXHUwMGFkXDNcdTAwYWRcM1x1MDBhZFwz XHUwMGFkXDNcdTAwYWQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYWRc M1x1MDBhZFwzXHUwMGFkXDNcdTAwYWRcM1x1MDBhZFwzXHUwMGFlXDNcdTAwYWUiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYWVcM1x1MDBhZVwzXHUwMGFlXDNcdTAwYWVc M1x1MDBhZVwzXHUwMGFlXDNcdTAwYWUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XDNcdTAwYWVcM1x1MDBhZVwzXHUwMGFlXDNcdTAwYWVcM1x1MDBhZVwzXHUwMGFlXDNcdTAwYWYi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYWZcM1x1MDBhZlwzXHUwMGFmXDNc dTAwYWZcM1x1MDBhZlwzXHUwMGFmXDNcdTAwYWYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDNcdTAwYWZcM1x1MDBhZlwzXHUwMGFmXDNcdTAwYWZcM1x1MDBhZlwzXHUwMGIwXDNcdTAw YjAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjBcM1x1MDBiMFwzXHUw MGIwXDNcdTAwYjBcM1x1MDBiMFwzXHUwMGIwXDNcdTAwYjAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXDNcdTAwYjBcM1x1MDBiMFwzXHUwMGIwXDNcdTAwYjBcM1x1MDBiMFwzXHUw MGIwXDNcdTAwYjEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjFcM1x1 MDBiMVwzXHUwMGIxXDNcdTAwYjFcM1x1MDBiMVwzXHUwMGIxXDNcdTAwYjEiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjFcM1x1MDBiMVwzXHUwMGIxXDNcdTAwYjFcM1x1 MDBiMVwzXHUwMGIyXDNcdTAwYjIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNc dTAwYjJcM1x1MDBiMlwzXHUwMGIyXDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIyXDNcdTAwYjIiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIyXDNc dTAwYjJcM1x1MDBiMlwzXHUwMGIyXDNcdTAwYjIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIzXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIzXDNc dTAwYjMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjNcM1x1MDBiM1wz XHUwMGIzXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIzXDNcdTAwYjMiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIzXDNcdTAwYjNcM1x1MDBiM1wz XHUwMGIzXDNcdTAwYjMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjNc M1x1MDBiNFwzXHUwMGI0XDNcdTAwYjRcM1x1MDBiNFwzXHUwMGI0XDNcdTAwYjQiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjRcM1x1MDBiNFwzXHUwMGI0XDNcdTAwYjRc M1x1MDBiNFwzXHUwMGI1XDNcdTAwYjUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XDNcdTAwYjVcM1x1MDBiNVwzXHUwMGI1XDNcdTAwYjVcM1x1MDBiNVwzXHUwMGI1XDNcdTAwYjUi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjVcM1x1MDBiNVwzXHUwMGI2 XDNcdTAwYjZcM1x1MDBiNlwzXHUwMGI2XDNcdTAwYjYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDNcdTAwYjZcM1x1MDBiNlwzXHUwMGI2XDNcdTAwYjZcM1x1MDBiNlwzXHUwMGI2 XDNcdTAwYjYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjZcM1x1MDBi NlwzXHUwMGI3XDNcdTAwYjdcM1x1MDBiN1wzXHUwMGI3XDNcdTAwYjciKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjdcM1x1MDBiN1wzXHUwMGI3XDNcdTAwYjdcM1x1MDBi N1wzXHUwMGI3XDNcdTAwYjciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAw YjdcM1x1MDBiN1wzXHUwMGI3XDNcdTAwYjhcM1x1MDBiOFwzXHUwMGI4XDNcdTAwYjgiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjhcM1x1MDBiOFwzXHUwMGI4XDNcdTAw YjhcM1x1MDBiOFwzXHUwMGI4XDNcdTAwYjgiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXDNcdTAwYjhcM1x1MDBiOFwzXHUwMGI5XDNcdTAwYjlcM1x1MDBiOVwzXHUwMGI5XDNcdTAw YjkiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjlcM1x1MDBiOVwzXHUw MGI5XDNcdTAwYjlcM1x1MDBiOVwzXHUwMGI5XDNcdTAwYjkiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXDNcdTAwYjlcM1x1MDBiOVwzXHUwMGJhXDNcdTAwYmFcM1x1MDBiYVwzXHUw MGJhXDNcdTAwYmEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYmFcM1x1 MDBiYVwzXHUwMGJhXDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmEiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmFcM1x1 MDBiYlwzXHUwMGJiXDNcdTAwYmIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNc dTAwYmJcM1x1MDBiYlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYlwzXHUwMGJiXDNcdTAwYmINCj4g PiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYmJcM1x1MDBiYlwzXHUw MGJiXDNcdTAwYmJcM1x1MDBiYlwzXHUwMGJiXDNcdTAwYmMNCj4gPiAiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJjXDNcdTAwYmNcM1x1MDBiY1wz XHUwMGJjXDNcdTAwYmMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYmNcM1x1 MDBiY1wzXHUwMGJjXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJjXDNcdTAwYmMiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYmRcM1x1MDBiZFwzXHUwMGJkXDNcdTAwYmRcM1x1 MDBiZFwzXHUwMGJkXDNcdTAwYmQNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXDNcdTAwYmRcM1x1MDBiZFwzXHUwMGJkXDNcdTAwYmRcM1x1MDBiZFwzXHUwMGJkXDNcdTAw YmUNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYmVcM1x1MDBi ZVwzXHUwMGJlXDNcdTAwYmVcM1x1MDBiZVwzXHUwMGJlXDNcdTAwYmUNCj4gPiAiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYmVcM1x1MDBiZVwzXHUwMGJlXDNcdTAwYmVc M1x1MDBiZVwzXHUwMGJlXDNcdTAwYmUNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDNcdTAwYmZcM1x1MDBiZlwzXHUwMGJmXDNcdTAwYmZcM1x1MDBiZlwzXHUwMGJmXDNcdTAw YmYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYzBcM1x1MDBjMFwzXHUwMGMw XDNcdTAwYzBcM1x1MDBjMFwzXHUwMGMwXDNcdTAwYzAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDNcdTAwYzBcM1x1MDBjMVwzXHUwMGMxXDNcdTAwYzFcM1x1MDBjMVwzXHUwMGMxXDNc dTAwYzIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYzJcM1x1MDBjMlwzXHUw MGMyXDNcdTAwYzJcM1x1MDBjM1wzXHUwMGMzXDNcdTAwYzMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDNcdTAwYzNcM1x1MDBjNFwzXHUwMGM0XDNcdTAwYzRcM1x1MDBjNFwzXHUwMGM0 XDNcdTAwYzQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYzVcM1x1MDBjNVwz XHUwMGM1XDNcdTAwYzVcM1x1MDBjNVwzXHUwMGM2XDNcdTAwYzYiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXDNcdTAwYzZcM1x1MDBjNlwzXHUwMGM3XDNcdTAwYzdcM1x1MDBjN1wzXHUw MGM3XDNcdTAwYzciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYzdcM1x1MDBj N1wzXHUwMGM3XDNcdTAwYzdcM1x1MDBjOFwzXHUwMGM4XDNcdTAwYzgiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDNcdTAwYzhcM1x1MDBjOVwzXHUwMGM5XDNcdTAwYzlcM1x1MDBjOVwz XHUwMGM5XDNcdTAwYzkiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYzlcM1x1 MDBjOVwzXHUwMGNhXDNcdTAwY2FcM1x1MDBjYVwzXHUwMGNhXDNcdTAwY2EiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwY2FcM1x1MDBjYVwzXHUwMGNiXDNcdTAwY2JcM1x1MDBj YlwzXHUwMGNiXDNcdTAwY2IiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwY2Jc M1x1MDBjYlwzXHUwMGNiXDNcdTAwY2JcM1x1MDBjYlwzXHUwMGNiXDNcdTAwY2IiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwY2NcM1x1MDBjY1wzXHUwMGNjXDNcdTAwY2NcM1x1 MDBjY1wzXHUwMGNjXDNcdTAwY2MiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAw Y2NcM1x1MDBjY1wzXHUwMGNjXDNcdTAwY2NcM1x1MDBjY1wzXHUwMGNkXDNcdTAwY2QiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwY2RcM1x1MDBjZFwzXHUwMGNkXDNcdTAwY2Rc M1x1MDBjZFwzXHUwMGNkXDNcdTAwY2UiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNc dTAwY2VcM1x1MDBjZVwzXHUwMGNlXDNcdTAwY2VcM1x1MDBjZVwzXHUwMGNlXDNcdTAwY2UiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwY2VcM1x1MDBjZVwzXHUwMGNmXDNcdTAw Y2ZcM1x1MDBjZlwzXHUwMGNmXDNcdTAwY2YiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XDNcdTAwY2ZcM1x1MDBjZlwzXHUwMGNmXDNcdTAwY2ZcM1x1MDBkMFwzXHUwMGQwXDNcdTAwZDAi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZDBcM1x1MDBkMFwzXHUwMGQw XDNcdTAwZDBcM1x1MDBkMFwzXHUwMGQwXDNcdTAwZDEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDNcdTAwZDFcM1x1MDBkMVwzXHUwMGQxXDNcdTAwZDJcM1x1MDBkMlwzXHUwMGQy XDNcdTAwZDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZDJcM1x1MDBk M1wzXHUwMGQzXDNcdTAwZDNcM1x1MDBkM1wzXHUwMGQzXDNcdTAwZDMiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZDRcM1x1MDBkNFwzXHUwMGQ0XDNcdTAwZDRcM1x1MDBk NVwzXHUwMGQ1XDNcdTAwZDUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAw ZDVcM1x1MDBkNVwzXHUwMGQ2XDNcdTAwZDZcM1x1MDBkNlwzXHUwMGQ2XDNcdTAwZDYiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZDdcM1x1MDBkN1wzXHUwMGQ3XDNcdTAw ZDdcM1x1MDBkN1wzXHUwMGQ3XDNcdTAwZDciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXDNcdTAwZDdcM1x1MDBkN1wzXHUwMGQ3XDNcdTAwZDhcM1x1MDBkOFwzXHUwMGQ4XDNcdTAw ZDgiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZDhcM1x1MDBkOFwzXHUw MGQ4XDNcdTAwZDhcM1x1MDBkOVwzXHUwMGQ5XDNcdTAwZDkiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXDNcdTAwZDlcM1x1MDBkOVwzXHUwMGQ5XDNcdTAwZDlcM1x1MDBkYVwzXHUw MGRhXDNcdTAwZGEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZGFcM1x1 MDBkYlwzXHUwMGRiXDNcdTAwZGJcM1x1MDBkY1wzXHUwMGRjXDNcdTAwZGMiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZGNcM1x1MDBkZFwzXHUwMGRkXDNcdTAwZGRcM1x1 MDBkZFwzXHUwMGRlXDNcdTAwZGUNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XDNcdTAwZGZcM1x1MDBkZlwzXHUwMGRmXDNcdTAwZGZcM1x1MDBkZlwzXHUwMGRmXDNcdTAwZGYi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZGZcM1x1MDBlMFwzXHUwMGUw XDNcdTAwZTBcM1x1MDBlMFwzXHUwMGUwXDNcdTAwZTAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDNcdTAwZTBcM1x1MDBlMFwzXHUwMGUwXDNcdTAwZTBcM1x1MDBlMVwzXHUwMGUx XDNcdTAwZTEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZTFcM1x1MDBl MVwzXHUwMGUxXDNcdTAwZTFcM1x1MDBlMVwzXHUwMGUxXDNcdTAwZTIiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZTJcM1x1MDBlMlwzXHUwMGUyXDNcdTAwZTJcM1x1MDBl MlwzXHUwMGUyXDNcdTAwZTIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAw ZTNcM1x1MDBlM1wzXHUwMGUzXDNcdTAwZTNcM1x1MDBlM1wzXHUwMGUzXDNcdTAwZTMiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZTNcM1x1MDBlNFwzXHUwMGU0XDNcdTAw ZTRcM1x1MDBlNFwzXHUwMGU0XDNcdTAwZTQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXDNcdTAwZTVcM1x1MDBlNVwzXHUwMGU1XDNcdTAwZTVcM1x1MDBlNVwzXHUwMGU1XDNcdTAw ZTUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZTZcM1x1MDBlNlwzXHUw MGU2XDNcdTAwZTZcM1x1MDBlNlwzXHUwMGU2XDNcdTAwZTYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXDNcdTAwZTZcM1x1MDBlNlwzXHUwMGU3XDNcdTAwZTdcM1x1MDBlN1wzXHUw MGU3XDNcdTAwZTciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZTdcM1x1 MDBlN1wzXHUwMGU3XDNcdTAwZTdcM1x1MDBlN1wzXHUwMGU3XDNcdTAwZTciKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZTdcM1x1MDBlN1wzXHUwMGU3XDNcdTAwZThcM1x1 MDBlOFwzXHUwMGU4XDNcdTAwZTgiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNc dTAwZThcM1x1MDBlOFwzXHUwMGU4XDNcdTAwZThcM1x1MDBlOFwzXHUwMGU4XDNcdTAwZTgiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZThcM1x1MDBlOFwzXHUwMGU5XDNc dTAwZTlcM1x1MDBlOVwzXHUwMGU5XDNcdTAwZWEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXDNcdTAwZWFcM1x1MDBlYVwzXHUwMGVhXDNcdTAwZWFcM1x1MDBlYVwzXHUwMGVhXDNc dTAwZWEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZWFcM1x1MDBlYVwz XHUwMGVhXDNcdTAwZWFcM1x1MDBlYlwzXHUwMGViXDNcdTAwZWIiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZWJcM1x1MDBlYlwzXHUwMGViXDNcdTAwZWJcM1x1MDBlYlwz XHUwMGViXDNcdTAwZWINCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNc dTAwZWJcM1x1MDBlYlwzXHUwMGViXDNcdTAwZWNcM1x1MDBlY1wzXHUwMGVjXDNcdTAwZWMiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwZWNcM1x1MDBlY1wzXHUwMGVjXDNcdTAw ZWNcM1x1MDBlY1wzXHUwMGVjXDNcdTAwZWMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXDNcdTAwZWNcM1x1MDBlY1wzXHUwMGVjXDNcdTAwZWNcM1x1MDBlZFwzXHUwMGVkXDNcdTAw ZWQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZWRcM1x1MDBlZFwzXHUw MGVkXDNcdTAwZWRcM1x1MDBlZFwzXHUwMGVkXDNcdTAwZWQNCj4gPiAiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZWRcM1x1MDBlZFwzXHUwMGVkXDNcdTAwZWRcM1x1MDBl ZFwzXHUwMGVkXDNcdTAwZWQNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XDNcdTAwZWRcM1x1MDBlZFwzXHUwMGVlXDNcdTAwZWVcM1x1MDBlZVwzXHUwMGVlXDNcdTAwZWUN Cj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZWVcM1x1MDBlZVwz XHUwMGVlXDNcdTAwZWVcM1x1MDBlZVwzXHUwMGVlXDNcdTAwZWUNCj4gPiAiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZWVcM1x1MDBlZVwzXHUwMGVlXDNcdTAwZWZcM1x1 MDBlZlwzXHUwMGVmXDNcdTAwZWYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAw ZWZcM1x1MDBlZlwzXHUwMGVmXDNcdTAwZWZcM1x1MDBlZlwzXHUwMGVmXDNcdTAwZWYiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwZWZcM1x1MDBlZlwzXHUwMGVmXDNcdTAwZWZc M1x1MDBmMFwzXHUwMGYwXDNcdTAwZjAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNc dTAwZjBcM1x1MDBmMFwzXHUwMGYwXDNcdTAwZjBcM1x1MDBmMFwzXHUwMGYwXDNcdTAwZjAiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwZjBcM1x1MDBmMFwzXHUwMGYwXDNcdTAw ZjBcM1x1MDBmMFwzXHUwMGYxXDNcdTAwZjEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XDNcdTAwZjFcM1x1MDBmMVwzXHUwMGYxXDNcdTAwZjFcM1x1MDBmMVwzXHUwMGYxXDNcdTAwZjEi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwZjFcM1x1MDBmMVwzXHUwMGYxXDNc dTAwZjFcM1x1MDBmMVwzXHUwMGYxXDNcdTAwZjIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDNcdTAwZjJcM1x1MDBmMlwzXHUwMGYyXDNcdTAwZjJcM1x1MDBmMlwzXHUwMGYyXDNcdTAw ZjIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwZjJcM1x1MDBmMlwzXHUwMGYy XDNcdTAwZjJcM1x1MDBmMlwzXHUwMGYyXDNcdTAwZjIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDNcdTAwZjJcM1x1MDBmM1wzXHUwMGYzXDNcdTAwZjNcM1x1MDBmM1wzXHUwMGYzXDNc dTAwZjMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwZjNcM1x1MDBmM1wzXHUw MGYzXDNcdTAwZjNcM1x1MDBmM1wzXHUwMGYzXDNcdTAwZjMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDNcdTAwZjNcM1x1MDBmM1wzXHUwMGYzXDNcdTAwZjNcM1x1MDBmNFwzXHUwMGY0 XDNcdTAwZjQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwZjRcM1x1MDBmNFwz XHUwMGY0XDNcdTAwZjRcM1x1MDBmNFwzXHUwMGY0XDNcdTAwZjQiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXDNcdTAwZjRcM1x1MDBmNFwzXHUwMGY0XDNcdTAwZjRcM1x1MDBmNFwzXHUw MGY0XDNcdTAwZjQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwZjVcM1x1MDBm NVwzXHUwMGY1XDNcdTAwZjVcM1x1MDBmNVwzXHUwMGY1XDNcdTAwZjUiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDNcdTAwZjVcM1x1MDBmNVwzXHUwMGY1XDNcdTAwZjVcM1x1MDBmNVwz XHUwMGY2XDNcdTAwZjYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwZjZcM1x1 MDBmNlwzXHUwMGY2XDNcdTAwZjZcM1x1MDBmNlwzXHUwMGY2XDNcdTAwZjYiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwZjZcM1x1MDBmN1wzXHUwMGY3XDNcdTAwZjdcM1x1MDBm N1wzXHUwMGY3XDNcdTAwZjciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwZjdc M1x1MDBmN1wzXHUwMGY3XDNcdTAwZjdcM1x1MDBmN1wzXHUwMGY3XDNcdTAwZjciKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwZjdcM1x1MDBmN1wzXHUwMGY4XDNcdTAwZjhcM1x1 MDBmOFwzXHUwMGY4XDNcdTAwZjgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAw ZjhcM1x1MDBmOFwzXHUwMGY4XDNcdTAwZjhcM1x1MDBmOFwzXHUwMGY4XDNcdTAwZjgiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwZjhcM1x1MDBmOFwzXHUwMGY4XDNcdTAwZjhc M1x1MDBmOVwzXHUwMGY5XDNcdTAwZjkiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXHUw MGY5XDZcdTAwZjlcdTBhNDRcblx1MDBmOVxyXHUwMGY5XDE2XHUwMGY5XHUwYTQ1IikNCj4gPg0K PiA+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBmOVw2XHUwMGY5XHUwYTQ5XG5cdTAwZjlcclx1MDBm OVwxNlx1MDBmOVx1MGE0YSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNVx1MDBmOVx1 MGE0ZFxuXHUwMGY5XDNcdTAwZmFcM1x1MDBmYVw3XHUwMGZhXHUwYTUxXG4iKQ0KPiA+DQo+ID4g Kw0KPiBidWYud3JpdGUoIlx1MDBmYVxmXHUwMGZhXDE2XHUwMGZhXHUwYTU0XDEzXHUwMGZhXDNc dTAwZmJcM1x1MDBmYiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNVx1MDBmYlx1MGE1 OFxuXHUwMGZiXDNcdTAwZmJcM1x1MDBmYlwzXHUwMGZiXDNcdTAwZmIiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDNcdTAwZmJcM1x1MDBmYlwzXHUwMGZiXDNcdTAwZmJcN1x1MDBmYlx1 MGE2MlxuXHUwMGZiIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlxmXHUwMGZiXDE2XHUw MGZiXHUwYTY1XDEzXHUwMGZiXDNcdTAwZmJcM1x1MDBmYlwzXHUwMGZjIikNCj4gPg0KPiA+ICsN Cj4gYnVmLndyaXRlKCJcM1x1MDBmY1w1XHUwMGZjXHUwYTZiXG5cdTAwZmNcM1x1MDBmY1wzXHUw MGZjXDNcdTAwZmMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBmY1wzXHUw MGZjXDNcdTAwZmNcN1x1MDBmY1x1MGE3M1xuXHUwMGZjXGZcdTAwZmMiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDE2XHUwMGZjXHUwYTc2XDEzXHUwMGZjXDNcdTAwZmNcM1x1MDBmY1wz XHUwMGZkXDNcdTAwZmQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDVcdTAwZmRcdTBh N2Ncblx1MDBmZFwzXHUwMGZkXDNcdTAwZmRcM1x1MDBmZFwzXHUwMGZkIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlwzXHUwMGZkXDNcdTAwZmRcM1x1MDBmZFwzXHUwMGZkXDNcdTAwZmRc N1x1MDBmZFx1MGE4NyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcblx1MDBmZFxmXHUw MGZkXDE2XHUwMGZkXHUwYThhXDEzXHUwMGZkXDNcdTAwZmRcM1x1MDBmZCIpDQo+ID4NCj4gPiAr DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZmVcNlx1MDBmZVx1MGE4ZlxuXHUwMGZlXHJcdTAwZmVcMTZc dTAwZmVcdTBhOTAiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGZlXDNcdTAwZmVc M1x1MDBmZlwzXHUwMGZmXDVcdTAwZmZcdTBhOTdcblx1MDBmZiIpDQo+ID4NCj4gPiArICAgICAg ICBidWYud3JpdGUoIlwzXHUwMGZmXDVcdTAwZmZcdTBhOWFcblx1MDBmZlwzXHUwMGZmXDNcdTAw ZmZcM1x1MDEwMCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDEwMFwzXHUwMTAw XDNcdTAxMDBcN1x1MDEwMFx1MGFhMlxuXHUwMTAwXGZcdTAxMDAiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXDE2XHUwMTAwXHUwYWE1XDEzXHUwMTAwXDNcdTAxMDBcM1x1MDEwMFwz XHUwMTAxXDNcdTAxMDEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAxMDFcM1x1 MDEwMVwzXHUwMTAxXDNcdTAxMDFcM1x1MDEwMVwzXHUwMTAxXDdcdTAxMDEiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwYWIxXG5cdTAxMDFcZlx1MDEwMVwxNlx1MDEwMVx1MGFiNFwx M1x1MDEwMVwzXHUwMTAxIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAxMDFc MlwyXHUwMTAyXDNcM1w1XDRcN1w1XHRcNlwxM1w3XHJcYlwxN1x0XDIxXG4iKQ0KPiA+DQo+ID4g Kw0KPiBidWYud3JpdGUoIlwyM1wxM1wyNVxmXDI3XHJcMzFcMTZcMzNcMTdcMzVcMjBcMzdcMjEh XDIyI1wyMyVcMjRcJyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwyNSlcMjYrXDI3 LVwzMC9cMzFcNjFcMzJcNjNcMzNcNjVcMzRcNjdcMzU5XDM2O1wzNz0gIikNCj4gPg0KPiA+ICsg ICAgICAgIGJ1Zi53cml0ZSgiPyFBXCJDI0UkRyVJJktcJ00oTylRKlMrVSxXLQ0KPiA+IFkuWy9d XDYwX1w2MWFcNjJjXDYzZVw2NGciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDY1aVw2 NmtcNjdtOG85cTpzO3U8dz15Pns/fUBcMTc3QVx1MDA4MUJcdTAwODNDXHUwMDg1IikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIkRcdTAwODdFXHUwMDg5Rlx1MDA4YkdcdTAwOGRIXHUw MDhmSVx1MDA5MUpcdTAwOTNLXHUwMDk1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo IkxcdTAwOTdNXHUwMDk5Tlx1MDA5Yk9cdTAwOWRQXHUwMDlmUVx1MDBhMVJcdTAwYTNTXHUwMGEN Cj4gPiA1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlRcdTAwYTdVXHUwMGE5Vlx1 MDBhYldcdTAwYWRYXHUwMGFmWVx1MDBiMVpcdTAwYjNbXHUwMGINCj4gPiA1IikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlxcXHUwMGI3XVx1MDBiOV5cdTAwYmJfXHUwMGJkYFx1MDBi ZmFcdTAwYzFiXHUwMGMzY1x1MDBjNSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJkXHUw MGM3ZVx1MDBjOWZcdTAwY2JnXHUwMGNkaFx1MDBjZmlcdTAwZDFqXHUwMGQza1x1MDBkNSIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJsXHUwMGQ3bVx1MDBkOW5cdTAwZGJvXHUwMGRk cFx1MDBkZnFcdTAwZTFyXHUwMGUzc1x1MDBlNQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJ0XHUwMGU3dVx1MDBlOXZcdTAwZWJ3XHUwMGVkeFx1MDBlZnlcdTAwZjF6XHUw MGYze1x1MDBmNSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJ8XHUwMGY3fVx1MDBmOX5c dTAwZmJcMTc3XHUwMGZkXHUwMDgwXHUwMGZmXHUwMDgxXHUwMTAxIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDA4Mlx1MDEwM1x1MDA4M1x1MDEwNVx1MDA4NFx1MDEwN1x1MDA4NVx1 MDEwOVx1MDA4NiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxMGJcdTAwODdcdTAx MGRcdTAwODhcdTAxMGZcdTAwODlcdTAxMTFcdTAwOGFcdTAxMTMiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwMDhiXHUwMTE1XHUwMDhjXHUwMTE3XHUwMDhkXHUwMTE5XHUwMDhlXHUw MTFiXHUwMDhmIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDExZFx1MDA5MFx1MDEx Zlx1MDA5MVx1MDEyMVx1MDA5Mlx1MDEyM1x1MDA5M1x1MDEyNSIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTAwOTRcdTAxMjdcdTAwOTVcdTAxMjlcdTAwOTZcdTAxMmJcdTAwOTdcdTAx MmRcdTAwOTgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMTJmXHUwMDk5XHUwMTMx XHUwMDlhXHUwMTMzXHUwMDliXHUwMTM1XHUwMDljXHUwMTM3IikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlx1MDA5ZFx1MDEzOVx1MDA5ZVx1MDEzYlx1MDA5Zlx1MDEzZFx1MDBhMFx1MDEz Zlx1MDBhMSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxNDFcdTAwYTJcdTAxNDNc dTAwYTNcdTAxNDVcdTAwYTRcdTAxNDdcdTAwYTVcdTAxNDkiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwMGE2XHUwMTRiXHUwMGE3XHUwMTRkXHUwMGE4XHUwMTRmXHUwMGE5XHUwMTUx XHUwMGFhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDE1M1x1MDBhYlx1MDE1NVx1 MDBhY1x1MDE1N1x1MDBhZFx1MDE1OVx1MDBhZVx1MDE1YiIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcdTAwYWZcdTAxNWRcdTAwYjBcdTAxNWZcdTAwYjFcdTAxNjFcdTAwYjJcdTAxNjNc dTAwYjMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMTY1XHUwMGI0XHUwMTY3XHUw MGI1XHUwMTY5XHUwMGI2XHUwMTZiXHUwMGI3XHUwMTZkIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MDBiOFx1MDE2Zlx1MDBiOVx1MDE3MVx1MDBiYVx1MDE3M1x1MDBiYlx1MDE3NVx1 MDBiYyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxNzdcdTAwYmRcdTAxNzlcdTAw YmVcdTAxN2JcdTAwYmZcdTAxN2RcdTAwYzBcdTAxN2YiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXHUwMGMxXHUwMTgxXHUwMGMyXHUwMTgzXHUwMGMzXHUwMTg1XHUwMGM0XHUwMTg3XHUw MGM1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDE4OVx1MDBjNlx1MDE4Ylx1MDBj N1x1MDE4ZFx1MDBjOFx1MDE4Zlx1MDBjOVx1MDE5MSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcdTAwY2FcdTAxOTNcdTAwY2JcdTAxOTVcdTAwY2NcdTAxOTdcdTAwY2RcdTAxOTlcdTAw Y2UiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMTliXHUwMGNmXHUwMTlkXHUwMGQw XHUwMTlmXHUwMGQxXHUwMWExXHUwMGQyXHUwMWEzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MDBkM1x1MDFhNVx1MDBkNFx1MDFhN1x1MDBkNVx1MDFhOVx1MDBkNlx1MDFhYlx1MDBk NyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxYWRcdTAwZDhcdTAxYWZcdTAwZDlc dTAxYjFcdTAwZGFcdTAxYjNcdTAwZGJcdTAxYjUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwMGRjXHUwMWI3XHUwMGRkXHUwMWI5XHUwMGRlXHUwMWJiXHUwMGRmXHUwMWJkXHUw MGUwIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDFiZlx1MDBlMVx1MDFjMVx1MDBl Mlx1MDFjM1x1MDBlM1x1MDFjNVx1MDBlNFx1MDFjNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcdTAwZTVcdTAxYzlcdTAwZTZcdTAxY2JcdTAwZTdcdTAxY2RcdTAwZThcdTAxY2ZcdTAw ZTkiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMWQxXHUwMGVhXHUwMWQzXHUw MGViXHUwMWQ1XHUwMGVjXHUwMWQ3XHUwMGVkXHUwMWQ5IikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MDBlZVx1MDFkYlx1MDBlZlx1MDFkZFx1MDBmMFx1MDFkZlx1MDBmMVx1MDFlMVx1 MDBmMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxZTNcdTAwZjNcdTAxZTVcdTAw ZjRcdTAxZTdcdTAwZjVcdTAxZTlcdTAwZjZcdTAxZWIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXHUwMGY3XHUwMWVkXHUwMGY4XHUwMWVmXHUwMGY5XHUwMWYxXHUwMGZhXHUwMWYzXHUw MGZiIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAxZjVcdTAwZmNcdTAxZjdcdTAwZmRc dTAxZjlcdTAwZmVcdTAxZmJcdTAwZmZcdTAxZmQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXHUwMTAwXHUwMWZmXHUwMTAxXHUwMjAxXHUwMTAyXDNcMlx0XDVcMlw2MjtDSGNoXDNcMlw2 MiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIjtcNVwyQ1xcYWFjfFw2XDJcNjI7Q1xc YWFjfFw1XDJcZlxmXDE3XDE3JSVcNFwyXDEzXDEzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXCJcIlw0XDJcZlxmXDE3XDE3XDJcdTBhYzVcMlwzXDNcMlwyXDJcMlw1XDNcMlwyXDJc Mlw3IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx0XDNcMlwyXDJc MlwxM1wzXDJcMlwyXDJcclwzXDJcMlwyXDJcMTdcM1wyIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDJcMlwyXDIxXDNcMlwyXDJcMlwyM1wzXDJcMlwyXDJcMjVcM1wyXDJcMlwyXDI3 XDNcMlwyIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwzMVwzXDJcMlwyXDJc MzNcM1wyXDJcMlwyXDM1XDNcMlwyXDJcMlwzN1wzXDJcMlwyIikNCj4gPg0KPiA+ICsgICAgICAg IGJ1Zi53cml0ZSgiXDIhXDNcMlwyXDJcMiNcM1wyXDJcMlwyJVwzXDJcMlwyXDJcJ1wzXDJcMlwy XDIpXDNcMlwyIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMitcM1wyXDJcMlwy LVwzXDJcMlwyXDIvXDNcMlwyXDJcMlw2MVwzXDJcMlwyXDJcNjMiKQ0KPiA+DQo+ID4gKyAgICAg ICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXDY1XDNcMlwyXDJcMlw2N1wzXDJcMlwyXDI5XDNcMlwy XDJcMjtcM1wyXDIiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwyPVwzXDJcMlwy XDI/XDNcMlwyXDJcMkFcM1wyXDJcMlwyQ1wzXDJcMlwyXDJFXDNcMiIpDQo+ID4NCj4gPiArDQo+ IGJ1Zi53cml0ZSgiXDJcMlwyR1wzXDJcMlwyXDJJXDNcMlwyXDJcMktcM1wyXDJcMlwyTVwzXDJc MlwyXDJPXDMiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlwyUVwzXDJcMlwyXDJT XDNcMlwyXDJcMlVcM1wyXDJcMlwyV1wzXDJcMlwyXDJZIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDNcMlwyXDJcMltcM1wyXDJcMlwyXVwzXDJcMlwyXDJfXDNcMlwyXDJcMmFcM1wy XDJcMlwyIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiY1wzXDJcMlwyXDJlXDNcMlwy XDJcMmdcM1wyXDJcMlwyaVwzXDJcMlwyXDJrXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiBidWYu d3JpdGUoIlwybVwzXDJcMlwyXDJvXDNcMlwyXDJcMnFcM1wyXDJcMlwyc1wzXDJcMlwyXDJ1XDNc MlwyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcMlwyd1wzXDJcMlwyXDJ5XDNcMlwyXDJc MntcM1wyXDJcMlwyfVwzXDJcMlwyXDJcMTc3XDMiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUo IlwyXDJcMlwyXHUwMDgxXDNcMlwyXDJcMlx1MDA4M1wzXDJcMlwyXDJcdTAwODVcM1wyXDJcMiIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlx1MDA4N1wzXDJcMlwyXDJcdTAwODlcM1wy XDJcMlwyXHUwMDhiXDNcMlwyXDJcMlx1MDA4ZCIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgi XDNcMlwyXDJcMlx1MDA4ZlwzXDJcMlwyXDJcdTAwOTFcM1wyXDJcMlwyXHUwMDkzXDNcMlwyIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcdTAwOTVcM1wyXDJcMlwyXHUwMDk3 XDNcMlwyXDJcMlx1MDA5OVwzXDJcMlwyXDJcdTAwOWIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIlwzXDJcMlwyXDJcdTAwOWRcM1wyXDJcMlwyXHUwMDlmXDNcMlwyXDJcMlx1MDBhMVwzXDJc MiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXHUwMGEzXDNcMlwyXDJcMlx1 MDBhNVwzXDJcMlwyXDJcdTAwYTdcM1wyXDJcMlwyXHUwMGE5IikNCj4gPg0KPiA+ICsNCj4gYnVm LndyaXRlKCJcM1wyXDJcMlwyXHUwMGFiXDNcMlwyXDJcMlx1MDBhZFwzXDJcMlwyXDJcdTAwYWZc M1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDBiMVwzXDJcMlwy XDJcdTAwYjNcM1wyXDJcMlwyXHUwMGI1XDNcMlwyXDJcMlx1MDBiNyIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMGI5XDNcMlwyXDJcMlx1MDBiYlwzXDJcMlwyXDJc dTAwYmRcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDBiZlwzXDJc MlwyXDJcdTAwYzFcM1wyXDJcMlwyXHUwMGMzXDNcMlwyXDJcMlx1MDBjNSIpDQo+ID4NCj4gPiAr DQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDBjN1wzXDJcMlwyXDJcdTAwYzlcM1wyXDJcMlwy XHUwMGNiXDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcdTAwY2Rc M1wyXDJcMlwyXHUwMGNmXDNcMlwyXDJcMlx1MDBkMVwzXDJcMlwyXDJcdTAwZDMiKQ0KPiA+DQo+ ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAwZDVcM1wyXDJcMlwyXHUwMGQ3XDNcMlwy XDJcMlx1MDBkOVwzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXHUw MGRiXDNcMlwyXDJcMlx1MDBkZFwzXDJcMlwyXDJcdTAwZGZcM1wyXDJcMlwyXHUwMGUxIikNCj4g Pg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMGUzXDNcMlwyXDJcMlx1MDBlNVwz XDJcMlwyXDJcdTAwZTdcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJc Mlx1MDBlOVwzXDJcMlwyXDJcdTAwZWJcM1wyXDJcMlwyXHUwMGVkXDNcMlwyXDJcMlx1MDBlZiIp DQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDBmMVwzXDJcMlwyXDJcdTAw ZjNcM1wyXDJcMlwyXHUwMGY1XDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwy XDJcdTAwZjdcM1wyXDJcMlwyXHUwMGY5XDNcMlwyXDJcMlx1MDBmYlwzXDJcMlwyXDJcdTAwZmQi KQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAwZmZcM1wyXDJcMlwyXHUw MTAxXDNcMlwyXDJcMlx1MDEwM1wzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcMlwyXHUwMTA1XDNcMlwyXDJcMlx1MDEwN1wzXDJcMlwyXDJcdTAxMDlcM1wyXDJcMlwyXHUw MTBiIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMTBkXDNcMlwyXDJc Mlx1MDEwZlwzXDJcMlwyXDJcdTAxMTFcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXDJcMlx1MDExM1wzXDJcMlwyXDJcdTAxMTVcM1wyXDJcMlwyXHUwMTE3XDNcMlwyXDJc Mlx1MDExOSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDExYlwzXDJc MlwyXDJcdTAxMWRcM1wyXDJcMlwyXHUwMTFmXDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlwyXDJcdTAxMjFcM1wyXDJcMlwyXHUwMTIzXDNcMlwyXDJcMlx1MDEyNVwzXDJc MlwyXDJcdTAxMjciKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxMjlc M1wyXDJcMlwyXHUwMTJiXDNcMlwyXDJcMlx1MDEyZFwzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcMlwyXHUwMTJmXDNcMlwyXDJcMlx1MDEzMVwzXDJcMlwyXDJcdTAxMzNc M1wyXDJcMlwyXHUwMTM1IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUw MTM3XDNcMlwyXDJcMlx1MDEzOVwzXDJcMlwyXDJcdTAxM2JcM1wyXDIiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDEzZFwzXDJcMlwyXDJcdTAxM2ZcM1wyXDJcMlwyXHUw MTQxXDNcMlwyXDJcMlx1MDE0MyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJc Mlx1MDE0NVwzXDJcMlwyXDJcdTAxNDdcM1wyXDJcMlwyXHUwMTQ5XDNcMlwyIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcdTAxNGJcM1wyXDJcMlwyXHUwMTRkXDNcMlwyXDJc Mlx1MDE0ZlwzXDJcMlwyXDJcdTAxNTEiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJc MlwyXDJcdTAxNTNcM1wyXDJcMlwyXHUwMTU1XDNcMlwyXDJcMlx1MDE1N1wzXDJcMiIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXHUwMTU5XDNcMlwyXDJcMlx1MDE1YlwzXDJc MlwyXDJcdTAxNWRcM1wyXDJcMlwyXHUwMTVmIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJc M1wyXDJcMlwyXHUwMTYxXDNcMlwyXDJcMlx1MDE2M1wzXDJcMlwyXDJcdTAxNjVcM1wyXDIiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDE2N1wzXDJcMlwyXDJcdTAxNjlc M1wyXDJcMlwyXHUwMTZiXDNcMlwyXDJcMlx1MDE2ZCIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0 ZSgiXDNcMlwyXDJcMlx1MDE2ZlwzXDJcMlwyXDJcdTAxNzFcM1wyXDJcMlwyXHUwMTczXDNcMlwy IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcdTAxNzVcM1wyXDJcMlwyXHUw MTc3XDNcMlwyXDJcMlx1MDE3OVwzXDJcMlwyXDJcdTAxN2IiKQ0KPiA+DQo+ID4gKw0KPiBidWYu d3JpdGUoIlwzXDJcMlwyXDJcdTAxN2RcM1wyXDJcMlwyXHUwMTdmXDNcMlwyXDJcMlx1MDE4MVwz XDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXHUwMTgzXDNcMlwyXDJc Mlx1MDE4NVwzXDJcMlwyXDJcdTAxODdcM1wyXDJcMlwyXHUwMTg5IikNCj4gPg0KPiA+ICsNCj4g YnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMThiXDNcMlwyXDJcMlx1MDE4ZFwzXDJcMlwyXDJcdTAx OGZcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDE5MVwzXDJc MlwyXDJcdTAxOTNcM1wyXDJcMlwyXHUwMTk1XDNcMlwyXDJcMlx1MDE5NyIpDQo+ID4NCj4gPiAr DQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDE5OVwzXDJcMlwyXDJcdTAxOWJcM1wyXDJcMlwy XHUwMTlkXDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcdTAxOWZc M1wyXDJcMlwyXHUwMWExXDNcMlwyXDJcMlx1MDFhM1wzXDJcMlwyXDJcdTAxYTUiKQ0KPiA+DQo+ ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxYTdcM1wyXDJcMlwyXHUwMWE5XDNcMlwy XDJcMlx1MDFhYlwzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXHUw MWFkXDNcMlwyXDJcMlx1MDFhZlwzXDJcMlwyXDJcdTAxYjFcM1wyXDJcMlwyXHUwMWIzIikNCj4g Pg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMWI1XDNcMlwyXDJcMlx1MDFiN1wz XDJcMlwyXDJcdTAxYjlcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJc Mlx1MDFiYlwzXDJcMlwyXDJcdTAxYmRcM1wyXDJcMlwyXHUwMWJmXDNcMlwyXDJcMlx1MDFjMSIp DQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDFjM1wzXDJcMlwyXDJcdTAx YzVcM1wyXDJcMlwyXHUwMWM3XDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwy XDJcdTAxYzlcM1wyXDJcMlwyXHUwMWNiXDNcMlwyXDJcMlx1MDFjZFwzXDJcMlwyXDJcdTAxY2Yi KQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxZDFcM1wyXDJcMlwyXHUw MWQzXDNcMlwyXDJcMlx1MDFkNVwzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcMlwyXHUwMWQ3XDNcMlwyXDJcMlx1MDFkOVwzXDJcMlwyXDJcdTAxZGJcM1wyXDJcMlwyXHUw MWRkIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMWRmXDNcMlwyXDJc Mlx1MDFlMVwzXDJcMlwyXDJcdTAxZTNcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXDJcMlx1MDFlNVwzXDJcMlwyXDJcdTAxZTdcM1wyXDJcMlwyXHUwMWU5XDNcMlwyXDJc Mlx1MDFlYiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDFlZFwzXDJc MlwyXDJcdTAxZWZcM1wyXDJcMlwyXHUwMWYxXDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlwyXDJcdTAxZjNcM1wyXDJcMlwyXHUwMWY1XDNcMlwyXDJcMlx1MDFmN1wzXDJcMlwy XDJcdTAxZjkiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxZmJcM1wy XDJcMlwyXHUwMWZkXDNcMlwyXDJcMlx1MDFmZlwzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcMlwyXHUwMjAxXDNcMlwyXDJcM1x1MDIwM1wzXDJcMlwyXDVcdTAyMDhcM1wy XDJcMlw3XHUwMjBkIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdFx1 MDIxMVwzXDJcMlwyXDEzXHUwMjE5XDNcMlwyXDJcclx1MDIxZVwzXDIiKQ0KPiA+DQo+ID4gKw0K PiBidWYud3JpdGUoIlwyXDJcMTdcdTAyMjBcM1wyXDJcMlwyMVx1MDIyY1wzXDJcMlwyXDIzXHUw MjM3XDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcMlwyNVx1MDI0MlwzXDJcMlwy XDI3XHUwMjQ1XDNcMlwyXDJcMzFcdTAyNDhcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcMzNcdTAyNGFcM1wyXDJcMlwzNVx1MDI0Y1wzXDJcMlwyXDM3XHUwMjRlXDNc MlwyXDIhXHUwMjU1IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMiNcdTAyNTdc M1wyXDJcMiVcdTAyNWZcM1wyXDJcMlwnXHUwMjY4XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKyAgICAg ICAgYnVmLndyaXRlKCIpXHUwMjc0XDNcMlwyXDIrXHUwMjc2XDNcMlwyXDItDQo+IFx1MDI3OFwz XDJcMlwyL1x1MDI3YVwzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcNjFcdTAy N2NcM1wyXDJcMlw2M1x1MDI3ZVwzXDJcMlwyXDY1XHUwMjgwXDNcMiIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcMlwyXDY3XHUwMjgyXDNcMlwyXDI5XHUwMjg0XDNcMlwyXDI7XHUw Mjg2XDNcMlwyXDI9XHUwMjg4IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMj9c dTAyOGFcM1wyXDJcMkFcdTAyOGNcM1wyXDJcMkNcdTAyOGZcM1wyXDJcMiIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJFXHUwMjkyXDNcMlwyXDJHXHUwMjk1XDNcMlwyXDJJXHUwMjk3XDNc MlwyXDJLXHUwMjlhXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyTVx1 MDI5Y1wzXDJcMlwyT1x1MDI5ZVwzXDJcMlwyUVx1MDJhMFwzXDJcMlwyU1x1MDJhDQo+ID4gYiIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlVcdTAyYjNcM1wyXDJcMldcdTAy YmRcM1wyXDJcMllcdTAyYzhcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJb XHUwMmNlXDNcMlwyXDJdXHUwMmQ1XDNcMlwyXDJfXHUwMmRiXDNcMlwyXDJhXHUwMmU0XDMiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyY1x1MDJlYlwzXDJcMlwyZVx1MDJm N1wzXDJcMlwyZ1x1MDMwNVwzXDJcMlwyaVx1MDMwZCIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0 ZSgiXDNcMlwyXDJrXHUwMzE1XDNcMlwyXDJtXHUwMzFhXDNcMlwyXDJvXHUwMzIyXDNcMlwyXDIi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgicVx1MDMyYlwzXDJcMlwyc1x1MDMzM1wzXDJc MlwydVx1MDMzY1wzXDJcMlwyd1x1MDM0OFwzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwyXDJcMnlcdTAzNGRcM1wyXDJcMntcdTAzNTJcM1wyXDJcMn1cdTAzNTlcM1wyXDJcMlwxNzci KQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDM1ZlwzXDJcMlwyXHUwMDgxXHUwMzY0XDNc MlwyXDJcdTAwODNcdTAzNmNcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTAwODVcdTAzNzFcM1wyXDJcMlx1MDA4N1x1MDM3N1wzXDJcMlwyXHUwMDg5XHUwMzdiXDMiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMDhiXHUwMzgwXDNcMlwyXDJc dTAwOGRcdTAzODhcM1wyXDJcMlx1MDA4Zlx1MDM4ZCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcM1wyXDJcMlx1MDA5MVx1MDM5NFwzXDJcMlwyXHUwMDkzXHUwMzliXDNcMlwyXDJcdTAw OTUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwM2E1XDNcMlwyXDJcdTAwOTdcdTAz YWJcM1wyXDJcMlx1MDA5OVx1MDNiM1wzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MDA5Ylx1MDNiZFwzXDJcMlwyXHUwMDlkXHUwM2NlXDNcMlwyXDJcdTAwOWZcdTAzZDVc MyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAwYTFcdTAzZGJcM1wy XDJcMlx1MDBhM1x1MDNlM1wzXDJcMlwyXHUwMGE1XHUwM2VhDQo+ID4gIikNCj4gPg0KPiA+ICsN Cj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDBhN1x1MDNmMVwzXDJcMlwyXHUwMGE5XHUwM2Y4XDNc MlwyXDJcdTAwYWIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDNmZVwzXDJcMlwyXHUw MGFkXHUwNDBjXDNcMlwyXDJcdTAwYWZcdTA0MTlcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTAwYjFcdTA0MjZcM1wyXDJcMlx1MDBiM1x1MDQzMlwzXDJcMlwyXHUwMGI1 XHUwNDM3XDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMGI3XHUw NDQwXDNcMlwyXDJcdTAwYjlcdTA0NGNcM1wyXDJcMlx1MDBiYlx1MDQ1NA0KPiA+ICIpDQo+ID4N Cj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwYmRcdTA0NWZcM1wyXDJcMlx1MDBiZlx1 MDQ2N1wzXDJcMlwyXHUwMGMxIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA0NmZcM1wy XDJcMlx1MDBjM1x1MDQ3NFwzXDJcMlwyXHUwMGM1XHUwNDdjXDNcMlwyXDIiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGM3XHUwNDg1XDNcMlwyXDJcdTAwYzlcdTA0OTFcM1wyXDJc Mlx1MDBjYlx1MDQ5OFwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1 MDBjZFx1MDRhMlwzXDJcMlwyXHUwMGNmXHUwNGFhXDNcMlwyXDJcdTAwZDFcdTA0YjIiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwZDNcdTA0YmJcM1wyXDJcMlx1MDBk NVx1MDRjNlwzXDJcMlwyXHUwMGQ3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDRk MFwzXDJcMlwyXHUwMGQ5XHUwNGQ3XDNcMlwyXDJcdTAwZGJcdTA0ZGNcM1wyXDJcMiIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAwZGRcdTA0ZThcM1wyXDJcMlx1MDBkZlx1MDRmN1wz XDJcMlwyXHUwMGUxXHUwNTAxXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJc MlwyXHUwMGUzXHUwNTBjXDNcMlwyXDJcdTAwZTVcdTA1MTJcM1wyXDJcMlx1MDBlN1x1MDUxNg0K PiA+ICIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDBlOVx1MDUxZVwz XDJcMlwyXHUwMGViXHUwNTJjXDNcMlwyXDJcdTAwZWQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXHUwNTNkXDNcMlwyXDJcdTAwZWZcdTA1NTJcM1wyXDJcMlx1MDBmMVx1MDU1ZVwzXDJc MlwyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAwZjNcdTA1NjhcM1wyXDJcMlx1MDBm NVx1MDU3N1wzXDJcMlwyXHUwMGY3XHUwNThhXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXDJcMlwyXHUwMGY5XHUwNTk1XDNcMlwyXDJcdTAwZmJcdTA1OWZcM1wyXDJcMlx1MDBm ZFx1MDVhYyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDBmZlx1MDVi N1wzXDJcMlwyXHUwMTAxXHUwNWJkXDNcMlwyXDJcdTAxMDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwNWM2XDNcMlwyXDJcdTAxMDVcdTA1ZDBcM1wyXDJcMlx1MDEwN1x1MDVkOFwz XDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDEwOVx1MDVlMFwzXDJcMlwy XHUwMTBiXHUwNWU1XDNcMlwyXDJcdTAxMGRcdTA1ZWVcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcMlwyXDJcdTAxMGZcdTA1ZjVcM1wyXDJcMlx1MDExMVx1MDVmYlwzXDJcMlwy XHUwMTEzXHUwNjAwIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMTE1 XHUwNjA2XDNcMlwyXDJcdTAxMTdcdTA2MGRcM1wyXDJcMlx1MDExOSIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTA2MTJcM1wyXDJcMlx1MDExYlx1MDYxN1wzXDJcMlwyXHUwMTFkXHUw NjFkXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMTFmXHUwNjI2XDNc MlwyXDJcdTAxMjFcdTA2MzFcM1wyXDJcMlx1MDEyM1x1MDYzN1wzIikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDEyNVx1MDYzZVwzXDJcMlwyXHUwMTI3XHUwNjQzXDNc MlwyXDJcdTAxMjlcdTA2NGINCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNc MlwyXDJcdTAxMmJcdTA2NTFcM1wyXDJcMlx1MDEyZFx1MDY1NlwzXDJcMlwyXHUwMTJmIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDY1Y1wzXDJcMlwyXHUwMTMxXHUwNjY4XDNcMlwy XDJcdTAxMzNcdTA2NzdcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAx MzVcdTA2ODRcM1wyXDJcMlx1MDEzN1x1MDY4ZVwzXDJcMlwyXHUwMTM5XHUwNjk3XDMiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTNiXHUwNmEzXDNcMlwyXDJcdTAx M2RcdTA2YWJcM1wyXDJcMlx1MDEzZlx1MDZiZA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcM1wyXDJcMlx1MDE0MVx1MDZjNFwzXDJcMlwyXHUwMTQzXHUwNmNiXDNcMlwyXDJc dTAxNDUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNmQ1XDNcMlwyXDJcdTAxNDdc dTA2ZGRcM1wyXDJcMlx1MDE0OVx1MDZlNlwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJcdTAxNGJcdTA2ZjVcM1wyXDJcMlx1MDE0ZFx1MDZmY1wzXDJcMlwyXHUwMTRmXHUwNzA2 XDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTUxXHUwNzBmXDNc MlwyXDJcdTAxNTNcdTA3MTRcM1wyXDJcMlx1MDE1NVx1MDcxYSIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcM1wyXDJcMlx1MDE1N1x1MDcyNVwzXDJcMlwyXHUwMTU5XHUwNzMxXDNcMlwy XDJcdTAxNWIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNzNlXDNcMlwyXDJcdTAx NWRcdTA3NGRcM1wyXDJcMlx1MDE1Zlx1MDc1YVwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlx1MDE2MVx1MDc2OVwzXDJcMlwyXHUwMTYzXHUwNzc2XDNcMlwyXDJcdTAxNjVc dTA3ODhcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAxNjdcdTA3 OWNcM1wyXDJcMlx1MDE2OVx1MDdhN1wzXDJcMlwyXHUwMTZiXHUwN2IyIikNCj4gPg0KPiA+ICsN Cj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDE2ZFx1MDdjMFwzXDJcMlwyXHUwMTZmXHUwN2NmXDNc MlwyXDJcdTAxNzEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwN2RjXDNcMlwyXDJc dTAxNzNcdTA3ZWFcM1wyXDJcMlx1MDE3NVx1MDdmYVwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDE3N1x1MDgwYVwzXDJcMlwyXHUwMTc5XHUwODE5XDNcMlwyXDJcdTAx N2JcdTA4MjZcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAxN2Rc dTA4MzVcM1wyXDJcMlx1MDE3Zlx1MDgzY1wzXDJcMlwyXHUwMTgxXHUwODQ0IikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMTgzXHUwODQ5XDNcMlwyXDJcdTAxODVcdTA4 NGVcM1wyXDJcMlx1MDE4NyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA4NTJcM1wy XDJcMlx1MDE4OVx1MDg1OFwzXDJcMlwyXHUwMThiXHUwODVkXDNcMlwyXDIiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwMThkXHUwODYxXDNcMlwyXDJcdTAxOGZcdTA4NmFcM1wyXDJc Mlx1MDE5MVx1MDg2ZVwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1 MDE5M1x1MDg3NlwzXDJcMlwyXHUwMTk1XHUwODdkXDNcMlwyXDJcdTAxOTdcdTA4ODkiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxOTlcdTA4OTVcM1wyXDJcMlx1MDE5 Ylx1MDg5ZFwzXDJcMlwyXHUwMTlkIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDhh N1wzXDJcMlwyXHUwMTlmXHUwOGIwXDNcMlwyXDJcdTAxYTFcdTA4YjlcM1wyXDJcMiIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxYTNcdTA4YmRcM1wyXDJcMlx1MDFhNVx1MDhjMlwz XDJcMlwyXHUwMWE3XHUwOGM4XDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJc MlwyXHUwMWE5XHUwOGNjXDNcMlwyXDJcdTAxYWJcdTA4ZDFcM1wyXDJcMlx1MDFhZFx1MDhkNg0K PiA+ICIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDFhZlx1MDhlMFwz XDJcMlwyXHUwMWIxXHUwOGU4XDNcMlwyXDJcdTAxYjMiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIlx1MDhlZlwzXDJcMlwyXHUwMWI1XHUwOGYzXDNcMlwyXDJcdTAxYjdcdTA4ZjZcM1wyXDJc MiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxYjlcdTA4ZmFcM1wyXDJcMlx1MDFi Ylx1MDhmZVwzXDJcMlwyXHUwMWJkXHUwOTAwXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXDJcMlwyXHUwMWJmXHUwOTA4XDNcMlwyXDJcdTAxYzFcdTA5MTJcM1wyXDJcMlx1MDFj M1x1MDkxYiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxYzVcdTA5MjNc M1wyXDJcMlx1MDFjN1x1MDkyYlwzXDJcMlwyXHUwMWM5IikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MDkzMVwzXDJcMlwyXHUwMWNiXHUwOTM4XDNcMlwyXDJcdTAxY2RcdTA5NDFcM1wy XDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxY2ZcdTA5NTBcM1wyXDJcMlx1 MDFkMVx1MDk1ZFwzXDJcMlwyXHUwMWQzXHUwOTYxXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDJcMlwyXHUwMWQ1XHUwOTZkXDNcMlwyXDJcdTAxZDdcdTA5N2FcM1wyXDJcMlx1 MDFkOVx1MDk4OQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1 MDFkYlx1MDk5Y1wzXDJcMlwyXHUwMWRkXHUwOWFiXDNcMlwyXDJcdTAxZGYiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwOWJhXDNcMlwyXDJcdTAxZTFcdTA5YzlcM1wyXDJcMlx1MDFl M1x1MDlkOFwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDFlNVx1MDll OFwzXDJcMlwyXHUwMWU3XHUwOWY5XDNcMlwyXDJcdTAxZTlcdTBhMGFcMyIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAxZWJcdTBhMTZcM1wyXDJcMlx1MDFlZFx1MGEy MFwzXDJcMlwyXHUwMWVmXHUwYTJmIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJc Mlx1MDFmMVx1MGE0Y1wzXDJcMlwyXHUwMWYzXHUwYTRlXDNcMlwyXDJcdTAxZjUiKQ0KPiA+DQo+ ID4gKw0KPiBidWYud3JpdGUoIlx1MGE1NVwzXDJcMlwyXHUwMWY3XHUwYTY4XDNcMlwyXDJcdTAx ZjlcdTBhNzlcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxZmJcdTBh OGVcM1wyXDJcMlx1MDFmZFx1MGE5OVwzXDJcMlwyXHUwMWZmXHUwYTlkXDMiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjAxXHUwYWE4XDNcMlwyXDJcdTAyMDNcdTAy MDRcN3VcMlwyXHUwMjA0XHUwMjA1IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcN2pcMlwy XHUwMjA1XHUwMjA2XDdxXDJcMlx1MDIwNlx1MDIwN1w3eVwyXDJcdTAyMDdcNCIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDIwOFx1MDIwOVw3clwyXDJcdTAyMDlc dTAyMGFcN3dcMlwyXHUwMjBhXHUwMjBiDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlw3dVwyXDJcdTAyMGJcdTAyMGNcN2pcMlwyXHUwMjBjXDZcM1wyXDJcMlx1MDIwZFx1MDIw ZSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDdyXDJcMlx1MDIwZVx1MDIwZlw3cVwyXDJc dTAyMGZcdTAyMTBcN3JcMlwyXHUwMjEwXGIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTAyMTFcdTAyMTJcNyVcMlwyXHUwMjEyXHUwMjEzXDdyXDJcMlx1MDIxM1x1 MDIxNA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN3RcMlwyXHUwMjE0XHUw MjE1XDdjXDJcMlx1MDIxNVx1MDIxNlw3aVwyXDJcdTAyMTZcdTAyMTciKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDdvXDJcMlx1MDIxN1x1MDIxOFw3Y1wyXDJcdTAyMThcblwzXDJcMlwy XHUwMjE5XHUwMjFhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3clwyXDJcdTAy MWFcdTAyMWJcN2NcMlwyXHUwMjFiXHUwMjFjXDdlXDJcMlx1MDIxY1x1MDIxZCIpDQo+ID4NCj4g PiArDQo+IGJ1Zi53cml0ZSgiXDdtXDJcMlx1MDIxZFxmXDNcMlwyXDJcdTAyMWVcdTAyMWZcNz9c MlwyXHUwMjFmXDE2XDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUw MjIwXHUwMjIxXDdLXDJcMlx1MDIyMVx1MDIyMlw3T1wyXDJcdTAyMjJcdTAyMjMiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdDXDJcMlx1MDIyM1x1MDIyNFw3SVwyXDJcdTAyMjRc dTAyMjVcN0dcMlwyXHUwMjI1XHUwMjI2IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilw3YVwyXDJcdTAyMjZcdTAyMjdcN1ZcMlwyXHUwMjI3XHUwMjI4XDdRXDJcMlx1MDIyOFx1MDIy OSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN01cMlwyXHUwMjI5XHUwMjJhXDdHXDJc Mlx1MDIyYVx1MDIyYlw3UFwyXDJcdTAyMmJcMjAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXDNcMlwyXDJcdTAyMmNcdTAyMmRcN0pcMlwyXHUwMjJkXHUwMjJlXDdRXDJcMlx1MDIy ZVx1MDIyZg0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN1RcMlwyXHUw MjJmXHUwMjMwXDdLXDJcMlx1MDIzMFx1MDIzMVw3XFxcMlwyXHUwMjMxXHUwMjMyIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3UVwyXDJcdTAyMzJcdTAyMzNcN1BcMlwyXHUwMjMz XHUwMjM0XDdWXDJcMlx1MDIzNFx1MDIzNSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc N0NcMlwyXHUwMjM1XHUwMjM2XDdOXDJcMlx1MDIzNlwyMlwzXDJcMlwyXHUwMjM3XHUwMjM4IikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3T1wyXDJcdTAyMzhcdTAyMzlcN1dcMlwy XHUwMjM5XHUwMjNhXDdOXDJcMlx1MDIzYVx1MDIzDQo+ID4gYiIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcN1ZcMlwyXHUwMjNiXHUwMjNjXDdLXDJcMlx1MDIzY1x1MDIzZFw3YVwy XDJcdTAyM2RcdTAyM2UiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdOXDJcMlx1 MDIzZVx1MDIzZlw3S1wyXDJcdTAyM2ZcdTAyNDBcN1BcMlwyXHUwMjQwXHUwMjQxIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlw3R1wyXDJcdTAyNDFcMjRcM1wyXDJcMlx1MDI0Mlx1MDI0 M1w3PlwyXDJcdTAyNDNcdTAyNDQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDc+XDJc Mlx1MDI0NFwyNlwzXDJcMlwyXHUwMjQ1XHUwMjQ2XDdAXDJcMlx1MDI0Nlx1MDI0NyIpDQo+ID4N Cj4gPiArICAgICAgICBidWYud3JpdGUoIlw3QFwyXDJcdTAyNDdcMzBcM1wyXDJcMlx1MDI0OFx1 MDI0OVw3LQ0KPiA+IFwyXDJcdTAyNDlcMzJcMyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcMlwyXDJcdTAyNGFcdTAyNGJcNyxcMlwyXHUwMjRiXDM0XDNcMlwyXDJcdTAyNGNcdTAyNGQi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcJ1wyXDJcdTAyNGRcMzZcM1wyXDJcMlx1 MDI0ZVx1MDI0Zlw3aFwyXDJcdTAyNGZcdTAyNTAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXDdxXDJcMlx1MDI1MFx1MDI1MVw3dFwyXDJcdTAyNTFcdTAyNTJcN29cMlwyXHUwMjUy XHUwMjUzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdjXDJcMlx1MDI1M1x1MDI1 NFw3dlwyXDJcdTAyNTQNCj4gXDNcMlwyXDJcdTAyNTVcdTAyNTYiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXDdBXDJcMlx1MDI1NlwiXDNcMlwyXDJcdTAyNTdcdTAyNThcNyVcMlwyXHUw MjU4XHUwMjU5IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3ZlwyXDJcdTAyNTlc dTAyNWFcN2dcMlwyXHUwMjVhXHUwMjViXDdoXDJcMlx1MDI1Ylx1MDI1YyIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcN2tcMlwyXHUwMjVjXHUwMjVkXDdwXDJcMlx1MDI1ZFx1MDI1ZVw3 Z1wyXDJcdTAyNWUkXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjVm XHUwMjYwXDclXDJcMlx1MDI2MFx1MDI2MVw3a1wyXDJcdTAyNjFcdTAyNjIiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdwXDJcMlx1MDI2Mlx1MDI2M1w3ZVwyXDJcdTAyNjNcdTAy NjRcN25cMlwyXHUwMjY0XHUwMjY1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3d1wy XDJcdTAyNjVcdTAyNjZcN2ZcMlwyXHUwMjY2XHUwMjY3XDdnXDJcMlx1MDI2NyZcMyIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAyNjhcdTAyNjlcN2hcMlwyXHUwMjY5 XHUwMjZhXDdxXDJcMlx1MDI2YVx1MDI2YiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcN3RcMlwyXHUwMjZiXHUwMjZjXDdvXDJcMlx1MDI2Y1x1MDI2ZFw3clwyXDJcdTAyNmRcdTAy NmUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdtXDJcMlx1MDI2ZVx1MDI2Zlw3 aVwyXDJcdTAyNmZcdTAyNzBcN3ZcMlwyXHUwMjcwXHUwMjcxIikNCj4gPg0KPiA+ICsNCj4gYnVm LndyaXRlKCJcN3tcMlwyXHUwMjcxXHUwMjcyXDdyXDJcMlx1MDI3Mlx1MDI3M1w3Z1wyXDJcdTAy NzMoXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjc0XHUwMjc1XDd9 XDJcMlx1MDI3NSpcM1wyXDJcMlx1MDI3Nlx1MDI3N1w3IikNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJcMTc3XDJcMlx1MDI3NyxcM1wyXDJcMlx1MDI3OFx1MDI3OVw3KlwyXDJcdTAyNzkuXDNc MiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwMjdhXHUwMjdiXDcrXDJcMlx1 MDI3Ylw2MFwzXDJcMlwyXHUwMjdjXHUwMjdkXDciKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUo Il1cMlwyXHUwMjdkXDYyXDNcMlwyXDJcdTAyN2VcdTAyN2ZcN19cMlwyXHUwMjdmXDY0XDNcMiIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwMjgwXHUwMjgxXDdcNjBcMlwyXHUw MjgxXDY2XDNcMlwyXDJcdTAyODJcdTAyODMiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw3 L1wyXDJcdTAyODM4XDNcMlwyXDJcdTAyODRcdTAyODVcNzxcMlwyXHUwMjg1OlwzXDJcMiIpDQo+ ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTAyODZcdTAyODdcN1w2MVwyXDJcdTAyODc8XDNc MlwyXDJcdTAyODhcdTAyODlcNz0iKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAy ODk+XDNcMlwyXDJcdTAyOGFcdTAyOGJcNy5cMlwyXHUwMjhiQFwzXDJcMlwyIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlx1MDI4Y1x1MDI4ZFw3P1wyXDJcdTAyOGRcdTAyOGVcNz9cMlwy XHUwMjhlQlwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAyOGZcdTAyOTBc NyNcMlwyXHUwMjkwXHUwMjkxXDc/XDJcMlx1MDI5MURcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ IGJ1Zi53cml0ZSgiXHUwMjkyXHUwMjkzXDc+XDJcMlx1MDI5M1x1MDI5NFw3P1wyXDJcdTAyOTRG XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMjk1XHUwMjk2XDc+XDJc Mlx1MDI5NkhcM1wyXDJcMlx1MDI5N1x1MDI5OFw3QFwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwMjk4XHUwMjk5XDc/XDJcMlx1MDI5OUpcM1wyXDJcMlx1MDI5YVx1MDI5Ylw3 QFwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMjliTFwzXDJcMlwyXHUwMjlj XHUwMjlkXDd+XDJcMlx1MDI5ZE5cM1wyXDJcMlx1MDI5ZSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53 cml0ZSgiXHUwMjlmXDcoXDJcMlx1MDI5ZlBcM1wyXDJcMlx1MDJhMFx1MDJhMVw3ZlwyXDJcdTAy YTEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMmEyXDdnXDJcMlx1MDJhMlx1 MDJhM1w3eFwyXDJcdTAyYTNcdTAyYTRcN2tcMlwyXHUwMmE0IikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDJhNVw3ZVwyXDJcdTAyYTVcdTAyYTZcN2dcMlwyXHUwMmE2XHUwMmE3 XDdyXDJcMlx1MDJhNyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAyYThcN2Nc MlwyXHUwMmE4XHUwMmE5XDd2XDJcMlx1MDJhOVx1MDJhYVw3alwyXDJcdTAyYWEiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiUlwzXDJcMlwyXHUwMmFiXHUwMmFjXDdoXDJcMlx1MDJhY1x1 MDJhZFw3cVwyXDJcdTAyYWQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMmFl XDd0XDJcMlx1MDJhZVx1MDJhZlw3b1wyXDJcdTAyYWZcdTAyYjBcN3VcMlwyXHUwMmIwIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDJiMVw3Z1wyXDJcdTAyYjFcdTAyYjJcN3ZcMlwy XHUwMmIyVFwzXDJcMlwyXHUwMmIzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1 MDJiNFw3aFwyXDJcdTAyYjRcdTAyYjVcN3FcMlwyXHUwMmI1XHUwMmI2XDd0XDJcMlx1MDJiNiIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAyYjdcN29cMlwyXHUwMmI3XHUwMmI4 XDd1XDJcMlx1MDJiOFx1MDJiOVw3Z1wyXDJcdTAyYjkNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwMmJhXDd2XDJcMlx1MDJiYVx1MDJiYlw3a1wyXDJcdTAyYmJcdTAy YmNcN2ZcMlwyXHUwMmJjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlZcM1wyXDJcMlx1 MDJiZFx1MDJiZVw3Z1wyXDJcdTAyYmVcdTAyYmZcN3BcMlwyXHUwMmJmIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlx1MDJjMFw3ZlwyXDJcdTAyYzBcdTAyYzFcN2hcMlwyXHUwMmMxXHUw MmMyXDdxXDJcMlx1MDJjMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAyYzNcN3Rc MlwyXHUwMmMzXHUwMmM0XDdvXDJcMlx1MDJjNFx1MDJjNVw3dVwyXDJcdTAyYzUiKQ0KPiA+DQo+ ID4gKw0KPiBidWYud3JpdGUoIlx1MDJjNlw3Z1wyXDJcdTAyYzZcdTAyYzdcN3ZcMlwyXHUwMmM3 WFwzXDJcMlwyXHUwMmM4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDJjOVw3 dlwyXDJcdTAyYzlcdTAyY2FcN2tcMlwyXHUwMmNhXHUwMmNiXDd2XDJcMlx1MDJjYiIpDQo+ID4N Cj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMmNjXDduXDJcMlx1MDJjY1x1MDJjZFw3Z1wyXDJcdTAy Y2RaXDNcMlwyXDJcdTAyY2UiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMmNm XDdoXDJcMlx1MDJjZlx1MDJkMFw3cVwyXDJcdTAyZDBcdTAyZDFcN3RcMlwyXHUwMmQxIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDJkMlw3b1wyXDJcdTAyZDJcdTAyZDNcN2tc MlwyXHUwMmQzXHUwMmQ0XDdmXDJcMlx1MDJkNCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcXFwzXDJcMlwyXHUwMmQ1XHUwMmQ2XDdxXDJcMlx1MDJkNlx1MDJkN1w3cFwyXDJcdTAyZDci KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMmQ4XDdnXDJcMlx1MDJkOFx1MDJk OVw3cVwyXDJcdTAyZDlcdTAyZGFcN2hcMlwyXHUwMmRhDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIl5cM1wyXDJcMlx1MDJkYlx1MDJkY1w3Z1wyXDJcdTAyZGNcdTAyZGRcN3Bc MlwyXHUwMmRkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDJkZVw3ZlwyXDJc dTAyZGVcdTAyZGZcN3FcMlwyXHUwMmRmXHUwMmUwXDdwXDJcMlx1MDJlMCIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTAyZTFcN2dcMlwyXHUwMmUxXHUwMmUyXDdxXDJcMlx1MDJl Mlx1MDJlM1w3aFwyXDJcdTAyZTMNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoImBc M1wyXDJcMlx1MDJlNFx1MDJlNVw3clwyXDJcdTAyZTVcdTAyZTZcN3RcMlwyXHUwMmU2IikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDJlN1w3cVwyXDJcdTAyZTdcdTAyZThcN29c MlwyXHUwMmU4XHUwMmU5XDdyXDJcMlx1MDJlOSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTAyZWFcN3ZcMlwyXHUwMmVhYlwzXDJcMlwyXHUwMmViXHUwMmVjXDdxXDJcMlx1MDJlYyIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAyZWRcN3RcMlwyXHUwMmVkXHUwMmVl XDdmXDJcMlx1MDJlZVx1MDJlZlw3Z1wyXDJcdTAyZWYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXHUwMmYwXDd0XDJcMlx1MDJmMFx1MDJmMVw3Z1wyXDJcdTAyZjFcdTAyZjJcN2ZcMlwy XHUwMmYyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDJmM1w3blwyXDJcdTAyZjNc dTAyZjRcN2tcMlwyXHUwMmY0XHUwMmY1XDd1XDJcMlx1MDJmNSIpDQo+ID4NCj4gPiArICAgICAg ICBidWYud3JpdGUoIlx1MDJmNlw3dlwyXDJcdTAyZjZkXDNcMlwyXDJcdTAyZjdcdTAyZjhcN29c MlwyXHUwMmY4IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDJmOVw3Y1wyXDJcdTAy ZjlcdTAyZmFcN3pcMlwyXHUwMmZhXHUwMmZiXDdlXDJcMlx1MDJmYiIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTAyZmNcN3FcMlwyXHUwMmZjXHUwMmZkXDdwXDJcMlx1MDJmZFx1MDJm ZVw3dlwyXDJcdTAyZmUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMmZmXDdjXDJc Mlx1MDJmZlx1MDMwMFw3a1wyXDJcdTAzMDBcdTAzMDFcN3BcMlwyXHUwMzAxIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDMwMlw3Z1wyXDJcdTAzMDJcdTAzMDNcN3RcMlwyXHUw MzAzXHUwMzA0XDd1XDJcMlx1MDMwNCIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiZlwzXDJc MlwyXHUwMzA1XHUwMzA2XDdnXDJcMlx1MDMwNlx1MDMwN1w3cFwyXDJcdTAzMDciKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMzA4XDdmXDJcMlx1MDMwOFx1MDMwOVw3blwyXDJc dTAzMDlcdTAzMGFcN2tcMlwyXHUwMzBhIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAz MGJcN3VcMlwyXHUwMzBiXHUwMzBjXDd2XDJcMlx1MDMwY2hcM1wyXDJcMlx1MDMwZCIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAzMGVcN2dcMlwyXHUwMzBlXHUwMzBmXDdwXDJc Mlx1MDMwZlx1MDMxMFw3ZlwyXDJcdTAzMTAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwMzExXDdoXDJcMlx1MDMxMVx1MDMxMlw3cVwyXDJcdTAzMTJcdTAzMTNcN3RcMlwyXHUw MzEzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAzMTRcN29cMlwyXHUwMzE0alwzXDJc MlwyXHUwMzE1XHUwMzE2XDdoXDJcMlx1MDMxNiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTAzMTdcN3FcMlwyXHUwMzE3XHUwMzE4XDd0XDJcMlx1MDMxOFx1MDMxOVw3b1wyXDJc dTAzMTkiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoImxcM1wyXDJcMlx1MDMxYVx1MDMxYlw3 aFwyXDJcdTAzMWJcdTAzMWNcN3FcMlwyXHUwMzFjIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlx1MDMxZFw3dFwyXDJcdTAzMWRcdTAzMWVcN29cMlwyXHUwMzFlXHUwMzFmXDdvXDJc Mlx1MDMxZiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzIwXDdjXDJcMlx1MDMyMFx1 MDMyMVw3clwyXDJcdTAzMjFuXDNcMlwyXDJcdTAzMjIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwMzIzXDdvXDJcMlx1MDMyM1x1MDMyNFw3Y1wyXDJcdTAzMjRcdTAzMjVcN3Jc MlwyXHUwMzI1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDMyNlw3dlwyXDJc dTAzMjZcdTAzMjdcN2tcMlwyXHUwMzI3XHUwMzI4XDd2XDJcMlx1MDMyOCIpDQo+ID4NCj4gPiAr DQo+IGJ1Zi53cml0ZSgiXHUwMzI5XDduXDJcMlx1MDMyOVx1MDMyYVw3Z1wyXDJcdTAzMmFwXDNc MlwyXDJcdTAzMmIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMzJjXDdvXDJc Mlx1MDMyY1x1MDMyZFw3Y1wyXDJcdTAzMmRcdTAzMmVcN3JcMlwyXHUwMzJlIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDMyZlw3aVwyXDJcdTAzMmZcdTAzMzBcN3dcMlwyXHUw MzMwXHUwMzMxXDdrXDJcMlx1MDMzMSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzMy XDdmXDJcMlx1MDMzMnJcM1wyXDJcMlx1MDMzM1x1MDMzNFw3dVwyXDJcdTAzMzQiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMzM1XDd3XDJcMlx1MDMzNVx1MDMzNlw3ZFwyXDJc dTAzMzZcdTAzMzdcN3ZcMlwyXHUwMzM3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilx1MDMzOFw3a1wyXDJcdTAzMzhcdTAzMzlcN3ZcMlwyXHUwMzM5XHUwMzNhXDduXDJcMlx1MDMz YSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzNiXDdnXDJcMlx1MDMzYnRcM1wyXDJc Mlx1MDMzY1x1MDMzZFw3Z1wyXDJcdTAzM2QiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwMzNlXDdwXDJcMlx1MDMzZVx1MDMzZlw3ZlwyXDJcdTAzM2ZcdTAzNDBcN3VcMlwyXHUw MzQwIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDM0MVw3d1wyXDJcdTAzNDFc dTAzNDJcN2RcMlwyXHUwMzQyXHUwMzQzXDd2XDJcMlx1MDM0MyIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcdTAzNDRcN2tcMlwyXHUwMzQ0XHUwMzQ1XDd2XDJcMlx1MDM0NVx1MDM0 Nlw3blwyXDJcdTAzNDYiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDM0N1w3Z1wyXDJc dTAzNDd2XDNcMlwyXDJcdTAzNDhcdTAzNDlcN2pcMlwyXHUwMzQ5IikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlx1MDM0YVw3Z1wyXDJcdTAzNGFcdTAzNGJcN25cMlwyXHUwMzRiXHUw MzRjXDdyXDJcMlx1MDM0YyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgieFwzXDJcMlwyXHUw MzRkXHUwMzRlXDd2XDJcMlx1MDM0ZVx1MDM0Zlw3Z1wyXDJcdTAzNGYiKQ0KPiA+DQo+ID4gKw0K PiBidWYud3JpdGUoIlx1MDM1MFw3elwyXDJcdTAzNTBcdTAzNTFcN3ZcMlwyXHUwMzUxelwzXDJc MlwyXHUwMzUyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDM1M1w3cVwyXDJc dTAzNTNcdTAzNTRcN3JcMlwyXHUwMzU0XHUwMzU1XDd2XDJcMlx1MDM1NSIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTAzNTZcN2tcMlwyXHUwMzU2XHUwMzU3XDdxXDJcMlx1MDM1 N1x1MDM1OFw3cFwyXDJcdTAzNTgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgifFwzXDJc MlwyXHUwMzU5XHUwMzVhXDdoXDJcMlx1MDM1YVx1MDM1Ylw3blwyXDJcdTAzNWIiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMzVjXDdjXDJcMlx1MDM1Y1x1MDM1ZFw3aVwyXDJc dTAzNWRcdTAzNWVcN3VcMlwyXHUwMzVlIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJ+XDNc MlwyXDJcdTAzNWZcdTAzNjBcN2ZcMlwyXHUwMzYwXHUwMzYxXDdjXDJcMlx1MDM2MSIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAzNjJcN3ZcMlwyXHUwMzYyXHUwMzYzXDdnXDJc Mlx1MDM2M1x1MDA4MFwzXDJcMlwyXHUwMzY0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDM2NVw3Z1wyXDJcdTAzNjVcdTAzNjZcN3BcMlwyXHUwMzY2XHUwMzY3XDdmXDJcMlx1 MDM2NyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAzNjhcN2ZcMlwyXHUwMzY4 XHUwMzY5XDdjXDJcMlx1MDM2OVx1MDM2YVw3dlwyXDJcdTAzNmEiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwMzZiXDdnXDJcMlx1MDM2Ylx1MDA4MlwzXDJcMlwyXHUwMzZjXHUw MzZkXDd7XDJcMlx1MDM2ZA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAz NmVcN2dcMlwyXHUwMzZlXHUwMzZmXDdjXDJcMlx1MDM2Zlx1MDM3MFw3dFwyXDJcdTAzNzAiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMDg0XDNcMlwyXDJcdTAzNzFcdTAzNzJc N29cMlwyXHUwMzcyXHUwMzczXDdxXDJcMlx1MDM3Mw0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcdTAzNzRcN3BcMlwyXHUwMzc0XHUwMzc1XDd2XDJcMlx1MDM3NVx1MDM3 Nlw3alwyXDJcdTAzNzYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMDg2XDNc MlwyXDJcdTAzNzdcdTAzNzhcN2ZcMlwyXHUwMzc4XHUwMzc5XDdjXDJcMlx1MDM3OSIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAzN2FcN3tcMlwyXHUwMzdhXHUwMDg4XDNcMlwy XDJcdTAzN2JcdTAzN2NcN3ZcMlwyXHUwMzdjIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDM3ZFw3a1wyXDJcdTAzN2RcdTAzN2VcN29cMlwyXHUwMzdlXHUwMzdmXDdnXDJcMlx1 MDM3ZiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAwOGFcM1wyXDJcMlx1MDM4 MFx1MDM4MVw3Z1wyXDJcdTAzODFcdTAzODJcN3BcMlwyXHUwMzgyDQo+ID4gIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDM4M1w3ZlwyXDJcdTAzODNcdTAzODRcN3ZcMlwyXHUw Mzg0XHUwMzg1XDdrXDJcMlx1MDM4NSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTAzODZcN29cMlwyXHUwMzg2XHUwMzg3XDdnXDJcMlx1MDM4N1x1MDA4Y1wzXDJcMlwyXHUwMzg4 IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDM4OVw3alwyXDJcdTAzODlcdTAz OGFcN3FcMlwyXHUwMzhhXHUwMzhiXDd3XDJcMlx1MDM4YiIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTAzOGNcN3RcMlwyXHUwMzhjXHUwMDhlXDNcMlwyXDJcdTAzOGRcdTAzOGVc N29cMlwyXHUwMzhlDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDM4 Zlw3a1wyXDJcdTAzOGZcdTAzOTBcN3BcMlwyXHUwMzkwXHUwMzkxXDd3XDJcMlx1MDM5MSIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAzOTJcN3ZcMlwyXHUwMzkyXHUwMzkzXDdn XDJcMlx1MDM5M1x1MDA5MFwzXDJcMlwyXHUwMzk0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlx1MDM5NVw3dVwyXDJcdTAzOTVcdTAzOTZcN2dcMlwyXHUwMzk2XHUwMzk3XDdlXDJc Mlx1MDM5NyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAzOThcN3FcMlwyXHUw Mzk4XHUwMzk5XDdwXDJcMlx1MDM5OVx1MDM5YVw3ZlwyXDJcdTAzOWEiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwMDkyXDNcMlwyXDJcdTAzOWJcdTAzOWNcN2lcMlwyXHUwMzlj XHUwMzlkXDd0XDJcMlx1MDM5ZCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAz OWVcN2NcMlwyXHUwMzllXHUwMzlmXDd7XDJcMlx1MDM5Zlx1MDNhMFw3cVwyXDJcdTAzYTAiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwM2ExXDd3XDJcMlx1MDNhMVx1MDNhMlw3 dlwyXDJcdTAzYTJcdTAzYTNcN2tcMlwyXHUwM2EzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlx1MDNhNFw3aFwyXDJcdTAzYTRcdTAwOTRcM1wyXDJcMlx1MDNhNVx1MDNhNlw3blwy XDJcdTAzYTYNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwM2E3XDdj XDJcMlx1MDNhN1x1MDNhOFw3ZFwyXDJcdTAzYThcdTAzYTlcN2dcMlwyXHUwM2E5IikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDNhYVw3blwyXDJcdTAzYWFcdTAwOTZcM1wyXDJc Mlx1MDNhYlx1MDNhY1w3dlwyXDJcdTAzYWMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwM2FkXDdrXDJcMlx1MDNhZFx1MDNhZVw3b1wyXDJcdTAzYWVcdTAzYWZcN2dcMlwyXHUw M2FmIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDNiMFw3cVwyXDJcdTAzYjBc dTAzYjFcN3dcMlwyXHUwM2IxXHUwM2IyXDd2XDJcMlx1MDNiMg0KPiA+ICIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTAwOThcM1wyXDJcMlx1MDNiM1x1MDNiNFw3a1wyXDJcdTAz YjRcdTAzYjVcN3BcMlwyXHUwM2I1DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDNiNlw3eFwyXDJcdTAzYjZcdTAzYjdcN2dcMlwyXHUwM2I3XHUwM2I4XDdwXDJcMlx1 MDNiOA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAzYjlcN3ZcMlwy XHUwM2I5XHUwM2JhXDdxXDJcMlx1MDNiYVx1MDNiYlw3dFwyXDJcdTAzYmINCj4gPiAiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwM2JjXDd7XDJcMlx1MDNiY1x1MDA5YVwzXDJc MlwyXHUwM2JkXHUwM2JlXDdhXDJcMlx1MDNiZQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTAzYmZcN1BcMlwyXHUwM2JmXHUwM2MwXDdRXDJcMlx1MDNjMFx1MDNjMVw3 UFwyXDJcdTAzYzEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwM2MyXDdhXDJc Mlx1MDNjMlx1MDNjM1w3UFwyXDJcdTAzYzNcdTAzYzRcN1hcMlwyXHUwM2M0IikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlx1MDNjNVw3YVwyXDJcdTAzYzVcdTAzYzZcN0ZcMlwyXHUwM2M2 XHUwM2M3XDdDXDJcMlx1MDNjNyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAz YzhcN1ZcMlwyXHUwM2M4XHUwM2M5XDdDXDJcMlx1MDNjOVx1MDNjYVw3YVwyXDJcdTAzY2EiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwM2NiXDdPXDJcMlx1MDNjYlx1MDNjY1w3 Q1wyXDJcdTAzY2NcdTAzY2RcN1JcMlwyXHUwM2NkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlx1MDA5Y1wzXDJcMlwyXHUwM2NlXHUwM2NmXDd1XDJcMlx1MDNjZlx1MDNkMFw3dlwy XDJcdTAzZDAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwM2QxXDd0XDJcMlx1 MDNkMVx1MDNkMlw3d1wyXDJcdTAzZDJcdTAzZDNcN2VcMlwyXHUwM2QzDQo+ID4gIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDNkNFw3dlwyXDJcdTAzZDRcdTAwOWVcM1wyXDJc Mlx1MDNkNVx1MDNkNlw3d1wyXDJcdTAzZA0KPiA+IDYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwM2Q3XDdwXDJcMlx1MDNkN1x1MDNkOFw3a1wyXDJcdTAzZDhcdTAzZDlcN3Fc MlwyXHUwM2Q5DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDNkYVw3 cFwyXDJcdTAzZGFcdTAwYTBcM1wyXDJcMlx1MDNkYlx1MDNkY1w3RFwyXDJcdTAzZA0KPiA+IGMi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwM2RkXDdRXDJcMlx1MDNkZFx1MDNk ZVw3UVwyXDJcdTAzZGVcdTAzZGZcN05cMlwyXHUwM2QNCj4gPiBmIikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlx1MDNlMFw3R1wyXDJcdTAzZTBcdTAzZTFcN0NcMlwyXHUwM2UxXHUw M2UyXDdQXDJcMlx1MDNlMg0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTAwYTJcM1wyXDJcMlx1MDNlM1x1MDNlNFw3V1wyXDJcdTAzZTRcdTAzZTVcN0tcMlwyXHUwM2UN Cj4gPiA1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDNlNlw3UFwyXDJcdTAz ZTZcdTAzZTdcN1ZcMlwyXHUwM2U3XHUwM2U4XDc4XDJcMlx1MDNlOA0KPiA+ICIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcdTAzZTlcN1w2NlwyXDJcdTAzZTlcdTAwYTRcM1wyXDJcMlx1 MDNlYVx1MDNlYlw3V1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwM2ViXHUw M2VjXDdLXDJcMlx1MDNlY1x1MDNlZFw3UFwyXDJcdTAzZWRcdTAzZWVcN1YiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDNlZVx1MDNlZlw3XDY1XDJcMlx1MDNlZlx1MDNm MFw3XDY0XDJcMlx1MDNmMFx1MDBhNiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc M1wyXDJcMlx1MDNmMVx1MDNmMlw3V1wyXDJcdTAzZjJcdTAzZjNcN0tcMlwyXHUwM2YzXHUwM2Y0 IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcN1BcMlwyXHUwM2Y0XHUwM2Y1XDdWXDJcMlx1 MDNmNVx1MDNmNlw3XDYzXDJcMlx1MDNmNiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcdTAzZjdcNzhcMlwyXHUwM2Y3XHUwMGE4XDNcMlwyXDJcdTAzZjhcdTAzZjlcN1dcMlwyXHUw M2Y5IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDNmYVw3S1wyXDJcdTAzZmFcdTAz ZmJcN1BcMlwyXHUwM2ZiXHUwM2ZjXDdWXDJcMlx1MDNmYyIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcdTAzZmRcNzpcMlwyXHUwM2ZkXHUwMGFhXDNcMlwyXDJcdTAzZmVcdTAzZmZcN0dc MlwyXHUwM2ZmIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQwMFw3SFwyXDJc dTA0MDBcdTA0MDFcN0tcMlwyXHUwNDAxXHUwNDAyXDdhXDJcMlx1MDQwMiIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0MDNcN1VcMlwyXHUwNDAzXHUwNDA0XDdWXDJcMlx1MDQw NFx1MDQwNVw3VFwyXDJcdTA0MDUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw NDA2XDdLXDJcMlx1MDQwNlx1MDQwN1w3UFwyXDJcdTA0MDdcdTA0MDhcN0lcMlwyXHUwNDA4IikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQwOVw3YVwyXDJcdTA0MDlcdTA0MGFc N0tcMlwyXHUwNDBhXHUwNDBiXDdGXDJcMlx1MDQwYiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTAwYWNcM1wyXDJcMlx1MDQwY1x1MDQwZFw3R1wyXDJcdTA0MGRcdTA0MGVcN0hc MlwyXHUwNDANCj4gPiBlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDQwZlw3S1wy XDJcdTA0MGZcdTA0MTBcN2FcMlwyXHUwNDEwXHUwNDExXDdKXDJcMlx1MDQxMSIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0MTJcN0tcMlwyXHUwNDEyXHUwNDEzXDdLXDJcMlx1 MDQxM1x1MDQxNFw3YVwyXDJcdTA0MTQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwNDE1XDdGXDJcMlx1MDQxNVx1MDQxNlw3Q1wyXDJcdTA0MTZcdTA0MTdcN1ZcMlwyXHUwNDE3 IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQxOFw3R1wyXDJcdTA0MThcdTAw YWVcM1wyXDJcMlx1MDQxOVx1MDQxYVw3R1wyXDJcdTA0MQ0KPiA+IGEiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDFiXDdIXDJcMlx1MDQxYlx1MDQxY1w3S1wyXDJcdTA0MWNc dTA0MWRcN2FcMlwyXHUwNDFkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQx ZVw3SlwyXDJcdTA0MWVcdTA0MWZcN0tcMlwyXHUwNDFmXHUwNDIwXDdLXDJcMlx1MDQyMCIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0MjFcN2FcMlwyXHUwNDIxXHUwNDIyXDdW XDJcMlx1MDQyMlx1MDQyM1w3S1wyXDJcdTA0MjMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwNDI0XDdPXDJcMlx1MDQyNFx1MDQyNVw3R1wyXDJcdTA0MjVcdTAwYjBcM1wyXDJc Mlx1MDQyDQo+ID4gNiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0MjdcN0dc MlwyXHUwNDI3XHUwNDI4XDdIXDJcMlx1MDQyOFx1MDQyOVw3S1wyXDJcdTA0MjkiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDJhXDdhXDJcMlx1MDQyYVx1MDQyYlw3SlwyXDJc dTA0MmJcdTA0MmNcN0tcMlwyXHUwNDJjIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilx1MDQyZFw3S1wyXDJcdTA0MmRcdTA0MmVcN2FcMlwyXHUwNDJlXHUwNDJmXDdUXDJcMlx1MDQy ZiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0MzBcN0dcMlwyXHUwNDMwXHUw NDMxXDdIXDJcMlx1MDQzMVx1MDBiMlwzXDJcMlwyXHUwNDMyDQo+ID4gIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlx1MDQzM1w3aVwyXDJcdTA0MzNcdTA0MzRcN3dcMlwyXHUwNDM0 XHUwNDM1XDdrXDJcMlx1MDQzNSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0 MzZcN2ZcMlwyXHUwNDM2XHUwMGI0XDNcMlwyXDJcdTA0MzdcdTA0MzhcN2VcMlwyXHUwNDM4IikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQzOVw3alwyXDJcdTA0MzlcdTA0M2Fc N2dcMlwyXHUwNDNhXHUwNDNiXDdlXDJcMlx1MDQzYiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTA0M2NcN21cMlwyXHUwNDNjXHUwNDNkXDdkXDJcMlx1MDQzZFx1MDQzZVw3cVwy XDJcdTA0M2UNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDNmXDd6 XDJcMlx1MDQzZlx1MDBiNlwzXDJcMlwyXHUwNDQwXHUwNDQxXDdnXDJcMlx1MDQ0MSIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0NDJcN3BcMlwyXHUwNDQyXHUwNDQzXDdmXDJc Mlx1MDQ0M1x1MDQ0NFw3ZVwyXDJcdTA0NDQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwNDQ1XDdqXDJcMlx1MDQ0NVx1MDQ0Nlw3Z1wyXDJcdTA0NDZcdTA0NDdcN2VcMlwyXHUw NDQ3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQ0OFw3bVwyXDJcdTA0NDhc dTA0NDlcN2RcMlwyXHUwNDQ5XHUwNDRhXDdxXDJcMlx1MDQ0YQ0KPiA+ICIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0NGJcN3pcMlwyXHUwNDRiXHUwMGI4XDNcMlwyXDJcdTA0 NGNcdTA0NGRcN3BcMlwyXHUwNDRkDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDQ0ZVw3d1wyXDJcdTA0NGVcdTA0NGZcN29cMlwyXHUwNDRmXHUwNDUwXDdnXDJcMlx1 MDQ1MCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0NTFcN3RcMlwyXHUwNDUx XHUwNDUyXDdrXDJcMlx1MDQ1Mlx1MDQ1M1w3ZVwyXDJcdTA0NTMiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwMGJhXDNcMlwyXDJcdTA0NTRcdTA0NTVcN2dcMlwyXHUwNDU1XHUw NDU2XDdwXDJcMlx1MDQ1Ng0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTA0NTdcN2ZcMlwyXHUwNDU3XHUwNDU4XDdwXDJcMlx1MDQ1OFx1MDQ1OVw3d1wyXDJcdTA0NTki KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDVhXDdvXDJcMlx1MDQ1YVx1MDQ1 Ylw3Z1wyXDJcdTA0NWJcdTA0NWNcN3RcMlwyXHUwNDVjIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDQ1ZFw3a1wyXDJcdTA0NWRcdTA0NWVcN2VcMlwyXHUwNDVlXHUwMGJjXDNc MlwyXDJcdTA0NWYNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDYw XDdvXDJcMlx1MDQ2MFx1MDQ2MVw3a1wyXDJcdTA0NjFcdTA0NjJcN3BcMlwyXHUwNDYyIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQ2M1w3a1wyXDJcdTA0NjNcdTA0NjRcN29c MlwyXHUwNDY0XHUwNDY1XDd3XDJcMlx1MDQ2NSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTA0NjZcN29cMlwyXHUwNDY2XHUwMGJlXDNcMlwyXDJcdTA0NjdcdTA0NjhcN29cMlwy XHUwNDY4DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQ2OVw3Y1wy XDJcdTA0NjlcdTA0NmFcN3pcMlwyXHUwNDZhXHUwNDZiXDdrXDJcMlx1MDQ2YiIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0NmNcN29cMlwyXHUwNDZjXHUwNDZkXDd3XDJcMlx1 MDQ2ZFx1MDQ2ZVw3b1wyXDJcdTA0NmUNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwMGMwXDNcMlwyXDJcdTA0NmZcdTA0NzBcN3VcMlwyXHUwNDcwXHUwNDcxXDd2XDJc Mlx1MDQ3MSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0NzJcN2dcMlwyXHUw NDcyXHUwNDczXDdyXDJcMlx1MDQ3M1x1MDBjMlwzXDJcMlwyXHUwNDc0IikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlx1MDQ3NVw3ZlwyXDJcdTA0NzVcdTA0NzZcN2dcMlwyXHUwNDc2 XHUwNDc3XDdoXDJcMlx1MDQ3NyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0 NzhcN2NcMlwyXHUwNDc4XHUwNDc5XDd3XDJcMlx1MDQ3OVx1MDQ3YVw3blwyXDJcdTA0N2EiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDdiXDd2XDJcMlx1MDQ3Ylx1MDBjNFwz XDJcMlwyXHUwNDdjXHUwNDdkXDdyXDJcMlx1MDQ3ZCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTA0N2VcN2NcMlwyXHUwNDdlXHUwNDdmXDd1XDJcMlx1MDQ3Zlx1MDQ4MFw3dVwy XDJcdTA0ODAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDgxXDd5XDJcMlx1 MDQ4MVx1MDQ4Mlw3cVwyXDJcdTA0ODJcdTA0ODNcN3RcMlwyXHUwNDgzIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlx1MDQ4NFw3ZlwyXDJcdTA0ODRcdTAwYzZcM1wyXDJcMlx1MDQ4 NVx1MDQ4Nlw3Z1wyXDJcdTA0ODYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw NDg3XDdwXDJcMlx1MDQ4N1x1MDQ4OFw3ZlwyXDJcdTA0ODhcdTA0ODlcN3JcMlwyXHUwNDg5IikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQ4YVw3Y1wyXDJcdTA0OGFcdTA0OGJc N3VcMlwyXHUwNDhiXHUwNDhjXDd1XDJcMlx1MDQ4YyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTA0OGRcN3lcMlwyXHUwNDhkXHUwNDhlXDdxXDJcMlx1MDQ4ZVx1MDQ4Zlw3dFwy XDJcdTA0OGYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDkwXDdmXDJcMlx1 MDQ5MFx1MDBjOFwzXDJcMlwyXHUwNDkxXHUwNDkyXDd1XDJcMlx1MDQ5MiIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0OTNcN3ZcMlwyXHUwNDkzXHUwNDk0XDd0XDJcMlx1MDQ5 NFx1MDQ5NVw3a1wyXDJcdTA0OTUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw NDk2XDdwXDJcMlx1MDQ5Nlx1MDQ5N1w3aVwyXDJcdTA0OTdcdTAwY2FcM1wyXDJcMlx1MDQ5OCIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0OTlcN2dcMlwyXHUwNDk5XHUwNDlh XDdwXDJcMlx1MDQ5YVx1MDQ5Ylw3ZlwyXDJcdTA0OWIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwNDljXDd1XDJcMlx1MDQ5Y1x1MDQ5ZFw3dlwyXDJcdTA0OWRcdTA0OWVcN3Rc MlwyXHUwNDllIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDQ5Zlw3a1wyXDJcdTA0 OWZcdTA0YTBcN3BcMlwyXHUwNGEwXHUwNGExXDdpXDJcMlx1MDRhMSIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcdTAwY2NcM1wyXDJcMlx1MDRhMlx1MDRhM1w3b1wyXDJcdTA0YTNc dTA0YTRcN2tcMlwyXHUwNGE0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDRh NVw3cFwyXDJcdTA0YTVcdTA0YTZcN3VcMlwyXHUwNGE2XHUwNGE3XDdrXDJcMlx1MDRhNyIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0YThcN3xcMlwyXHUwNGE4XHUwNGE5XDdn XDJcMlx1MDRhOVx1MDBjZVwzXDJcMlwyXHUwNGFhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlx1MDRhYlw3b1wyXDJcdTA0YWJcdTA0YWNcN2NcMlwyXHUwNGFjXHUwNGFkXDd6XDJc Mlx1MDRhZCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0YWVcN3VcMlwyXHUw NGFlXHUwNGFmXDdrXDJcMlx1MDRhZlx1MDRiMFw3fFwyXDJcdTA0YjAiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwNGIxXDdnXDJcMlx1MDRiMVx1MDBkMFwzXDJcMlwyXHUwNGIy XHUwNGIzXDdnXDJcMlx1MDRiMw0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcdTA0YjRcN3BcMlwyXHUwNGI0XHUwNGI1XDdlXDJcMlx1MDRiNVx1MDRiNlw3cVwyXDJcdTA0 YjYNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNGI3XDdmXDJcMlx1 MDRiN1x1MDRiOFw3a1wyXDJcdTA0YjhcdTA0YjlcN3BcMlwyXHUwNGI5IikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlx1MDRiYVw3aVwyXDJcdTA0YmFcdTAwZDJcM1wyXDJcMlx1MDRi Ylx1MDRiY1w3dVwyXDJcdTA0YmMNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwNGJkXDd3XDJcMlx1MDRiZFx1MDRiZVw3clwyXDJcdTA0YmVcdTA0YmZcN3JcMlwyXHUw NGJmIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDRjMFw3dFwyXDJcdTA0YzBcdTA0 YzFcN2dcMlwyXHUwNGMxXHUwNGMyXDd1XDJcMlx1MDRjMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTA0YzNcN3VcMlwyXHUwNGMzXHUwNGM0XDdrXDJcMlx1MDRjNFx1MDRjNVw3 aFwyXDJcdTA0YzUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMGQ0XDNcMlwy XDJcdTA0YzZcdTA0YzdcN2ZcMlwyXHUwNGM3XHUwNGM4XDdrXDJcMlx1MDRjOCIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0YzlcN3VcMlwyXHUwNGM5XHUwNGNhXDdjXDJcMlx1 MDRjYVx1MDRjYlw3ZFwyXDJcdTA0Y2IiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwNGNjXDduXDJcMlx1MDRjY1x1MDRjZFw3Z1wyXDJcdTA0Y2RcdTA0Y2VcN2tcMlwyXHUwNGNl IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDRjZlw3aFwyXDJcdTA0Y2ZcdTAw ZDZcM1wyXDJcMlx1MDRkMFx1MDRkMVw3alwyXDJcdTA0ZDEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXHUwNGQyXDdrXDJcMlx1MDRkMlx1MDRkM1w3ZlwyXDJcdTA0ZDNcdTA0ZDRc N2ZcMlwyXHUwNGQ0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDRkNVw3Z1wy XDJcdTA0ZDVcdTA0ZDZcN3BcMlwyXHUwNGQ2XHUwMGQ4XDNcMlwyXDJcdTA0ZA0KPiA+IDciKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNGQ4XDdpXDJcMlx1MDRkOFx1MDRkOVw3 cVwyXDJcdTA0ZDlcdTA0ZGFcN3ZcMlwyXHUwNGRhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlx1MDRkYlw3cVwyXDJcdTA0ZGJcdTAwZGFcM1wyXDJcMlx1MDRkY1x1MDRkZFw3aFwy XDJcdTA0ZA0KPiA+IGQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNGRlXDdx XDJcMlx1MDRkZVx1MDRkZlw3dFwyXDJcdTA0ZGZcdTA0ZTBcN29cMlwyXHUwNGUwIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDRlMVw3dVwyXDJcdTA0ZTFcdTA0ZTJcN2dcMlwy XHUwNGUyXHUwNGUzXDd2XDJcMlx1MDRlMw0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTA0ZTRcN2lcMlwyXHUwNGU0XHUwNGU1XDd3XDJcMlx1MDRlNVx1MDRlNlw3a1wy XDJcdTA0ZTYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNGU3XDdmXDJcMlx1 MDRlN1x1MDBkY1wzXDJcMlwyXHUwNGU4XHUwNGU5XDdrXDJcMlx1MDRlOQ0KPiA+ICIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0ZWFcN3BcMlwyXHUwNGVhXHUwNGViXDdlXDJc Mlx1MDRlYlx1MDRlY1w3cVwyXDJcdTA0ZWMNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwNGVkXDdwXDJcMlx1MDRlZFx1MDRlZVw3dVwyXDJcdTA0ZWVcdTA0ZWZcN2tc MlwyXHUwNGVmDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDRmMFw3dVwy XDJcdTA0ZjBcdTA0ZjFcN3ZcMlwyXHUwNGYxXHUwNGYyXDdnXDJcMlx1MDRmMiIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcdTA0ZjNcN3BcMlwyXHUwNGYzXHUwNGY0XDd2XDJcMlx1MDRm NFx1MDRmNVw3a1wyXDJcdTA0ZjUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw NGY2XDdoXDJcMlx1MDRmNlx1MDBkZVwzXDJcMlwyXHUwNGY3XHUwNGY4XDd5XDJcMlx1MDRmOCIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA0ZjlcN2NcMlwyXHUwNGY5XHUwNGZhXDd0 XDJcMlx1MDRmYVx1MDRmYlw3cFwyXDJcdTA0ZmIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXHUwNGZjXDdrXDJcMlx1MDRmY1x1MDRmZFw3cFwyXDJcdTA0ZmRcdTA0ZmVcN2lcMlwyXHUw NGZlIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDRmZlw3a1wyXDJcdTA0ZmZc dTA1MDBcN2hcMlwyXHUwNTAwXHUwMGUwXDNcMlwyXDJcdTA1MDEiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwNTAyXDdwXDJcMlx1MDUwMlx1MDUwM1w3cVwyXDJcdTA1MDNcdTA1 MDRcN3VcMlwyXHUwNTA0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDUwNVw3 d1wyXDJcdTA1MDVcdTA1MDZcN2RcMlwyXHUwNTA2XHUwNTA3XDdvXDJcMlx1MDUwNyIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1MDhcN2tcMlwyXHUwNTA4XHUwNTA5XDd2XDJc Mlx1MDUwOVx1MDUwYVw3a1wyXDJcdTA1MGEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwNTBiXDdoXDJcMlx1MDUwYlx1MDBlMlwzXDJcMlwyXHUwNTBjXHUwNTBkXDdnXDJcMlx1 MDUwZA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1MGVcN3BcMlwy XHUwNTBlXHUwNTBmXDdmXDJcMlx1MDUwZlx1MDUxMFw3a1wyXDJcdTA1MTAiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTExXDdoXDJcMlx1MDUxMVx1MDBlNFwzXDJcMlwyXHUw NTEyXHUwNTEzXDdtXDJcMlx1MDUxDQo+ID4gMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTA1MTRcN2dcMlwyXHUwNTE0XHUwNTE1XDd7XDJcMlx1MDUxNVx1MDBlNlwzXDJcMlwy XHUwNTE2IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDUxN1w3RlwyXDJcdTA1 MTdcdTA1MThcN0dcMlwyXHUwNTE4XHUwNTE5XDdIXDJcMlx1MDUxOSIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcdTA1MWFcN0NcMlwyXHUwNTFhXHUwNTFiXDdXXDJcMlx1MDUxYlx1 MDUxY1w3TlwyXDJcdTA1MWMNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwNTFkXDdWXDJcMlx1MDUxZFx1MDBlOFwzXDJcMlwyXHUwNTFlXHUwNTFmXDdPXDJcMlx1MDUx Zg0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1MjBcN0NcMlwyXHUw NTIwXHUwNTIxXDdQXDJcMlx1MDUyMVx1MDUyMlw3V1wyXDJcdTA1MjINCj4gPiAiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTIzXDdIXDJcMlx1MDUyM1x1MDUyNFw3Q1wyXDJc dTA1MjRcdTA1MjVcN0VcMlwyXHUwNTI1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilx1MDUyNlw3VlwyXDJcdTA1MjZcdTA1MjdcN1dcMlwyXHUwNTI3XHUwNTI4XDdUXDJcMlx1MDUy OA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1MjlcN0tcMlwyXHUw NTI5XHUwNTJhXDdQXDJcMlx1MDUyYVx1MDUyYlw3SVwyXDJcdTA1MmIiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwMGVhXDNcMlwyXDJcdTA1MmNcdTA1MmRcN0VcMlwyXHUwNTJk XHUwNTJlXDdKXDJcMlx1MDUyZQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcdTA1MmZcN0dcMlwyXHUwNTJmXHUwNTMwXDdFXDJcMlx1MDUzMFx1MDUzMVw3TVwyXDJcdTA1 MzEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTMyXDdEXDJcMlx1MDUzMlx1 MDUzM1w3UVwyXDJcdTA1MzNcdTA1MzRcN1pcMlwyXHUwNTM0IikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDUzNVw3YVwyXDJcdTA1MzVcdTA1MzZcN0ZcMlwyXHUwNTM2XHUwNTM3 XDdHXDJcMlx1MDUzNyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1MzhcN0hc MlwyXHUwNTM4XHUwNTM5XDdDXDJcMlx1MDUzOVx1MDUzYVw3V1wyXDJcdTA1M2ENCj4gPiAiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTNiXDdOXDJcMlx1MDUzYlx1MDUzY1w3 VlwyXDJcdTA1M2NcdTAwZWNcM1wyXDJcMlx1MDUzZA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcdTA1M2VcN0VcMlwyXHUwNTNlXHUwNTNmXDdKXDJcMlx1MDUzZlx1MDU0 MFw3R1wyXDJcdTA1NDAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTQxXDdF XDJcMlx1MDU0MVx1MDU0Mlw3TVwyXDJcdTA1NDJcdTA1NDNcN0RcMlwyXHUwNTQzDQo+ID4gIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDU0NFw3UVwyXDJcdTA1NDRcdTA1NDVc N1pcMlwyXHUwNTQ1XHUwNTQ2XDdhXDJcMlx1MDU0NiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTA1NDdcN0ZcMlwyXHUwNTQ3XHUwNTQ4XDdHXDJcMlx1MDU0OFx1MDU0OVw3SFwy XDJcdTA1NDkiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTRhXDdDXDJcMlx1 MDU0YVx1MDU0Ylw3V1wyXDJcdTA1NGJcdTA1NGNcN05cMlwyXHUwNTRjDQo+ID4gIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDU0ZFw3VlwyXDJcdTA1NGRcdTA1NGVcN2FcMlwy XHUwNTRlXHUwNTRmXDdPXDJcMlx1MDU0ZiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcdTA1NTBcN0hcMlwyXHUwNTUwXHUwNTUxXDdJXDJcMlx1MDU1MVx1MDBlZVwzXDJcMlwyXHUw NTUyDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDU1M1w3S1wyXDJc dTA1NTNcdTA1NTRcN1BcMlwyXHUwNTU0XHUwNTU1XDdWXDJcMlx1MDU1NSIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1NTZcN0dcMlwyXHUwNTU2XHUwNTU3XDdUXDJcMlx1MDU1 N1x1MDU1OFw3Q1wyXDJcdTA1NTgiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw NTU5XDdFXDJcMlx1MDU1OVx1MDU1YVw3VlwyXDJcdTA1NWFcdTA1NWJcN0tcMlwyXHUwNTViIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDU1Y1w3WFwyXDJcdTA1NWNcdTA1NWRc N0dcMlwyXHUwNTVkXHUwMGYwXDNcMlwyXDJcdTA1NWUNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwNTVmXDdQXDJcMlx1MDU1Zlx1MDU2MFw3WFwyXDJcdTA1NjBcdTA1 NjFcN2FcMlwyXHUwNTYxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDU2Mlw3 Q1wyXDJcdTA1NjJcdTA1NjNcN0VcMlwyXHUwNTYzXHUwNTY0XDdFXDJcMlx1MDU2NCIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1NjVcN0dcMlwyXHUwNTY1XHUwNTY2XDdVXDJc Mlx1MDU2Nlx1MDU2N1w3VVwyXDJcdTA1NjcNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwMGYyXDNcMlwyXDJcdTA1NjhcdTA1NjlcN1RcMlwyXHUwNTY5XHUwNTZhXDdH XDJcMlx1MDU2YQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1NmJc N1VcMlwyXHUwNTZiXHUwNTZjXDdHXDJcMlx1MDU2Y1x1MDU2ZFw3VlwyXDJcdTA1NmQNCj4gPiAi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTZlXDdhXDJcMlx1MDU2ZVx1MDU2 Zlw3VFwyXDJcdTA1NmZcdTA1NzBcN0dcMlwyXHUwNTcwIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDU3MVw3U1wyXDJcdTA1NzFcdTA1NzJcN1dcMlwyXHUwNTcyXHUwNTczXDdL XDJcMlx1MDU3Mw0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1NzRc N1RcMlwyXHUwNTc0XHUwNTc1XDdHXDJcMlx1MDU3NVx1MDU3Nlw3RlwyXDJcdTA1NzYiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMGY0XDNcMlwyXDJcdTA1NzdcdTA1NzhcN1Rc MlwyXHUwNTc4XHUwNTc5XDdHXDJcMlx1MDU3OQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTA1N2FcN0VcMlwyXHUwNTdhXHUwNTdiXDdRXDJcMlx1MDU3Ylx1MDU3Y1w3 UFwyXDJcdTA1N2MiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTdkXDdQXDJc Mlx1MDU3ZFx1MDU3ZVw3R1wyXDJcdTA1N2VcdTA1N2ZcN0VcMlwyXHUwNTdmIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDU4MFw3VlwyXDJcdTA1ODBcdTA1ODFcN2FcMlwyXHUw NTgxXHUwNTgyXDdUXDJcMlx1MDU4MiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTA1ODNcN0dcMlwyXHUwNTgzXHUwNTg0XDdTXDJcMlx1MDU4NFx1MDU4NVw3V1wyXDJcdTA1ODUN Cj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTg2XDdLXDJcMlx1MDU4 Nlx1MDU4N1w3VFwyXDJcdTA1ODdcdTA1ODhcN0dcMlwyXHUwNTg4IikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlx1MDU4OVw3RlwyXDJcdTA1ODlcdTAwZjZcM1wyXDJcMlx1MDU4YVx1 MDU4Ylw3TlwyXDJcdTA1OGINCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwNThjXDdDXDJcMlx1MDU4Y1x1MDU4ZFw3VlwyXDJcdTA1OGRcdTA1OGVcN0dcMlwyXHUwNThl DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDU4Zlw3YVwyXDJcdTA1OGZc dTA1OTBcN0VcMlwyXHUwNTkwXHUwNTkxXDdKXDJcMlx1MDU5MSIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcdTA1OTJcN0dcMlwyXHUwNTkyXHUwNTkzXDdFXDJcMlx1MDU5M1x1MDU5 NFw3TVwyXDJcdTA1OTQNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw MGY4XDNcMlwyXDJcdTA1OTVcdTA1OTZcN1RcMlwyXHUwNTk2XHUwNTk3XDdHXDJcMlx1MDU5Nw0K PiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1OThcN0NcMlwyXHUwNTk4 XHUwNTk5XDdGXDJcMlx1MDU5OVx1MDU5YVw3YVwyXDJcdTA1OWEiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwNTliXDdRXDJcMlx1MDU5Ylx1MDU5Y1w3UFwyXDJcdTA1OWNcdTA1 OWRcN05cMlwyXHUwNTlkDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1 MDU5ZVw3W1wyXDJcdTA1OWVcdTAwZmFcM1wyXDJcMlx1MDU5Zlx1MDVhMFw3UVwyXDJcdTA1YTAi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNWExXDdSXDJcMlx1MDVhMVx1MDVh Mlw3VlwyXDJcdTA1YTJcdTA1YTNcN0tcMlwyXHUwNWEzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDVhNFw3UVwyXDJcdTA1YTRcdTA1YTVcN1BcMlwyXHUwNWE1XHUwNWE2XDdV XDJcMlx1MDVhNg0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1YTdc N2FcMlwyXHUwNWE3XHUwNWE4XDdRXDJcMlx1MDVhOFx1MDVhOVw3UFwyXDJcdTA1YTkiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNWFhXDdOXDJcMlx1MDVhYVx1MDVhYlw3W1wy XDJcdTA1YWJcdTAwZmNcM1wyXDJcMlx1MDVhYyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTA1YWRcN1RcMlwyXHUwNWFkXHUwNWFlXDdHXDJcMlx1MDVhZVx1MDVhZlw3VVwyXDJc dTA1YWYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNWIwXDdWXDJcMlx1MDVi MFx1MDViMVw3YVwyXDJcdTA1YjFcdTA1YjJcN1VcMlwyXHUwNWIyDQo+ID4gIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDViM1w3VlwyXDJcdTA1YjNcdTA1YjRcN1tcMlwyXHUw NWI0XHUwNWI1XDdOXDJcMlx1MDViNQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTA1YjZcN0dcMlwyXHUwNWI2XHUwMGZlXDNcMlwyXDJcdTA1YjdcdTA1YjhcN2VcMlwy XHUwNWINCj4gPiA4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDViOVw3blwy XDJcdTA1YjlcdTA1YmFcN2NcMlwyXHUwNWJhXHUwNWJiXDd1XDJcMlx1MDViYg0KPiA+ICIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1YmNcN3VcMlwyXHUwNWJjXHUwMTAwXDNc MlwyXDJcdTA1YmRcdTA1YmVcN3VcMlwyXHUwNWINCj4gPiBlIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDViZlw3d1wyXDJcdTA1YmZcdTA1YzBcN2RcMlwyXHUwNWMwXHUwNWMx XDdlXDJcMlx1MDVjMSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1YzJcN25cMlwy XHUwNWMyXHUwNWMzXDdjXDJcMlx1MDVjM1x1MDVjNFw3dVwyXDJcdTA1YzQiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNWM1XDd1XDJcMlx1MDVjNVx1MDEwMlwzXDJcMlwyXHUw NWM2XHUwNWM3XDdlXDJcMlx1MDVjNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1 YzhcN25cMlwyXHUwNWM4XHUwNWM5XDdjXDJcMlx1MDVjOVx1MDVjYVw3dVwyXDJcdTA1Y2EiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNWNiXDd1XDJcMlx1MDVjYlx1MDVjY1w3 aVwyXDJcdTA1Y2NcdTA1Y2RcN3dcMlwyXHUwNWNkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlx1MDVjZVw3a1wyXDJcdTA1Y2VcdTA1Y2ZcN2ZcMlwyXHUwNWNmXHUwMTA0XDNcMlwy XDJcdTA1ZDAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNWQxXDd2XDJcMlx1 MDVkMVx1MDVkMlw3e1wyXDJcdTA1ZDJcdTA1ZDNcN3JcMlwyXHUwNWQzIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlx1MDVkNFw3Z1wyXDJcdTA1ZDRcdTA1ZDVcN2ZcMlwyXHUwNWQ1 XHUwNWQ2XDdnXDJcMlx1MDVkNiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1 ZDdcN2hcMlwyXHUwNWQ3XHUwMTA2XDNcMlwyXDJcdTA1ZDhcdTA1ZDlcN3RcMlwyXHUwNWQ5DQo+ ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDVkYVw3Z1wyXDJcdTA1ZGFc dTA1ZGJcN3VcMlwyXHUwNWRiXHUwNWRjXDd2XDJcMlx1MDVkYw0KPiA+ICIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1ZGRcN3FcMlwyXHUwNWRkXHUwNWRlXDd0XDJcMlx1MDVk ZVx1MDVkZlw3Z1wyXDJcdTA1ZGYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw MTA4XDNcMlwyXDJcdTA1ZTBcdTA1ZTFcN3VcMlwyXHUwNWUxXHUwNWUyXDdjXDJcMlx1MDVlMg0K PiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1ZTNcN3hcMlwyXHUwNWUz XHUwNWU0XDdnXDJcMlx1MDVlNFx1MDEwYVwzXDJcMlwyXHUwNWU1DQo+ID4gIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDVlNlw3ZlwyXDJcdTA1ZTZcdTA1ZTdcN2dcMlwyXHUw NWU3XHUwNWU4XDdoXDJcMlx1MDVlOCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTA1ZTlcN2NcMlwyXHUwNWU5XHUwNWVhXDd3XDJcMlx1MDVlYVx1MDVlYlw3blwyXDJcdTA1ZWIN Cj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNWVjXDd2XDJcMlx1MDVl Y1x1MDVlZFw3dVwyXDJcdTA1ZWRcdTAxMGNcM1wyXDJcMlx1MDVlZQ0KPiA+ICIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcdTA1ZWZcN2RcMlwyXHUwNWVmXHUwNWYwXDdjXDJcMlx1MDVm MFx1MDVmMVw3cFwyXDJcdTA1ZjEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNWYy XDdwXDJcMlx1MDVmMlx1MDVmM1w3Z1wyXDJcdTA1ZjNcdTA1ZjRcN3RcMlwyXHUwNWY0IikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDEwZVwzXDJcMlwyXHUwNWY1XHUwNWY2XDdj XDJcMlx1MDVmNlx1MDVmN1w3blwyXDJcdTA1ZjciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXHUwNWY4XDdrXDJcMlx1MDVmOFx1MDVmOVw3aVwyXDJcdTA1ZjlcdTA1ZmFcN3BcMlwyXHUw NWZhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDExMFwzXDJcMlwyXHUwNWZi XHUwNWZjXDduXDJcMlx1MDVmY1x1MDVmZFw3Z1wyXDJcdTA1ZmQiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwNWZlXDdoXDJcMlx1MDVmZVx1MDVmZlw3dlwyXDJcdTA1ZmZcdTAx MTJcM1wyXDJcMlx1MDYwMCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA2MDFcN3Rc MlwyXHUwNjAxXHUwNjAyXDdrXDJcMlx1MDYwMlx1MDYwM1w3aVwyXDJcdTA2MDMiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjA0XDdqXDJcMlx1MDYwNFx1MDYwNVw3dlwyXDJc dTA2MDVcdTAxMTRcM1wyXDJcMlx1MDYwNiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcdTA2MDdcN2VcMlwyXHUwNjA3XHUwNjA4XDdnXDJcMlx1MDYwOFx1MDYwOVw3cFwyXDJcdTA2 MDkiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjBhXDd2XDJcMlx1MDYwYVx1 MDYwYlw3Z1wyXDJcdTA2MGJcdTA2MGNcN3RcMlwyXHUwNjBjIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDExNlwzXDJcMlwyXHUwNjBkXHUwNjBlXDduXDJcMlx1MDYwZVx1MDYw Zlw3a1wyXDJcdTA2MGYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjEwXDdw XDJcMlx1MDYxMFx1MDYxMVw3Z1wyXDJcdTA2MTFcdTAxMThcM1wyXDJcMlx1MDYxMg0KPiA+ICIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2MTNcN3BcMlwyXHUwNjEzXHUwNjE0 XDdjXDJcMlx1MDYxNFx1MDYxNVw3b1wyXDJcdTA2MTUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwNjE2XDdnXDJcMlx1MDYxNlx1MDExYVwzXDJcMlwyXHUwNjE3XHUwNjE4XDd4 XDJcMlx1MDYxOCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2MTlcN2NcMlwy XHUwNjE5XHUwNjFhXDd0XDJcMlx1MDYxYVx1MDYxYlw3a1wyXDJcdTA2MWIiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjFjXDdmXDJcMlx1MDYxY1x1MDExY1wzXDJcMlwyXHUw NjFkXHUwNjFlXDdzXDJcMlx1MDYxZSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTA2MWZcN3dcMlwyXHUwNjFmXHUwNjIwXDdnXDJcMlx1MDYyMFx1MDYyMVw3dVwyXDJcdTA2MjEi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjIyXDd2XDJcMlx1MDYyMlx1MDYy M1w3a1wyXDJcdTA2MjNcdTA2MjRcN3FcMlwyXHUwNjI0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDYyNVw3cFwyXDJcdTA2MjVcdTAxMWVcM1wyXDJcMlx1MDYyNlx1MDYyN1w3 c1wyXDJcdTA2MjcNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjI4 XDd3XDJcMlx1MDYyOFx1MDYyOVw3Z1wyXDJcdTA2MjlcdTA2MmFcN3VcMlwyXHUwNjJhIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDYyYlw3dlwyXDJcdTA2MmJcdTA2MmNcN2tc MlwyXHUwNjJjXHUwNjJkXDdxXDJcMlx1MDYyZCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTA2MmVcN3BcMlwyXHUwNjJlXHUwNjJmXDdrXDJcMlx1MDYyZlx1MDYzMFw3ZlwyXDJc dTA2MzAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMTIwXDNcMlwyXDJcdTA2 MzFcdTA2MzJcN2tcMlwyXHUwNjMyXHUwNjMzXDdvXDJcMlx1MDYzMw0KPiA+ICIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcdTA2MzRcN2NcMlwyXHUwNjM0XHUwNjM1XDdpXDJcMlx1MDYz NVx1MDYzNlw3Z1wyXDJcdTA2MzYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw MTIyXDNcMlwyXDJcdTA2MzdcdTA2MzhcN25cMlwyXHUwNjM4XHUwNjM5XDdxXDJcMlx1MDYzOQ0K PiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2M2FcN2VcMlwyXHUwNjNh XHUwNjNiXDdtXDJcMlx1MDYzYlx1MDYzY1w3Z1wyXDJcdTA2M2MiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwNjNkXDdmXDJcMlx1MDYzZFx1MDEyNFwzXDJcMlwyXHUwNjNlXHUw NjNmXDd0XDJcMlx1MDYzZiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2NDBc N3dcMlwyXHUwNjQwXHUwNjQxXDduXDJcMlx1MDY0MVx1MDY0Mlw3Z1wyXDJcdTA2NDIiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMTI2XDNcMlwyXDJcdTA2NDNcdTA2NDRcN2dc MlwyXHUwNjQ0XHUwNjQ1XDdwXDJcMlx1MDY0NQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTA2NDZcN2ZcMlwyXHUwNjQ2XHUwNjQ3XDd0XDJcMlx1MDY0N1x1MDY0OFw3 d1wyXDJcdTA2NDgiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjQ5XDduXDJc Mlx1MDY0OVx1MDY0YVw3Z1wyXDJcdTA2NGFcdTAxMjhcM1wyXDJcMlx1MDY0Yg0KPiA+ICIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2NGNcN3hcMlwyXHUwNjRjXHUwNjRkXDdj XDJcMlx1MDY0ZFx1MDY0ZVw3blwyXDJcdTA2NGUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwNjRmXDd3XDJcMlx1MDY0Zlx1MDY1MFw3Z1wyXDJcdTA2NTBcdTAxMmFcM1wyXDJc Mlx1MDY1MSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2NTJcN3RcMlwyXHUw NjUyXHUwNjUzXDdnXDJcMlx1MDY1M1x1MDY1NFw3Y1wyXDJcdTA2NTQiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjU1XDdmXDJcMlx1MDY1NVx1MDEyY1wzXDJcMlwyXHUwNjU2 XHUwNjU3XDd5XDJcMlx1MDY1NyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2 NThcN3RcMlwyXHUwNjU4XHUwNjU5XDdrXDJcMlx1MDY1OVx1MDY1YVw3dlwyXDJcdTA2NWEiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjViXDdnXDJcMlx1MDY1Ylx1MDEyZVwz XDJcMlwyXHUwNjVjXHUwNjVkXDd0XDJcMlx1MDY1ZA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcdTA2NWVcN2dcMlwyXHUwNjVlXHUwNjVmXDd1XDJcMlx1MDY1Zlx1MDY2 MFw3Z1wyXDJcdTA2NjAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjYxXDd2 XDJcMlx1MDY2MVx1MDY2Mlw3ZFwyXDJcdTA2NjJcdTA2NjNcN3dcMlwyXHUwNjYzIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDY2NFw3dlwyXDJcdTA2NjRcdTA2NjVcN3ZcMlwy XHUwNjY1XHUwNjY2XDdxXDJcMlx1MDY2NiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcdTA2NjdcN3BcMlwyXHUwNjY3XHUwMTMwXDNcMlwyXDJcdTA2NjhcdTA2NjlcN2dcMlwyXHUw NjY5DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDY2YVw3cFwyXDJc dTA2NmFcdTA2NmJcN2ZcMlwyXHUwNjZiXHUwNjZjXDd0XDJcMlx1MDY2YyIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2NmRcN2dcMlwyXHUwNjZkXHUwNjZlXDd1XDJcMlx1MDY2 ZVx1MDY2Zlw3Z1wyXDJcdTA2NmYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw NjcwXDd2XDJcMlx1MDY3MFx1MDY3MVw3ZFwyXDJcdTA2NzFcdTA2NzJcN3dcMlwyXHUwNjcyIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDY3M1w3dlwyXDJcdTA2NzNcdTA2NzRc N3ZcMlwyXHUwNjc0XHUwNjc1XDdxXDJcMlx1MDY3NSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTA2NzZcN3BcMlwyXHUwNjc2XHUwMTMyXDNcMlwyXDJcdTA2NzdcdTA2NzhcN2Zc MlwyXHUwNjc4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDY3OVw3Z1wyXDJc dTA2NzlcdTA2N2FcN2hcMlwyXHUwNjdhXHUwNjdiXDdjXDJcMlx1MDY3YiIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2N2NcN3dcMlwyXHUwNjdjXHUwNjdkXDduXDJcMlx1MDY3 ZFx1MDY3ZVw3dlwyXDJcdTA2N2UNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwNjdmXDd1XDJcMlx1MDY3Zlx1MDY4MFw3dlwyXDJcdTA2ODBcdTA2ODFcN3FcMlwyXHUw NjgxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDY4Mlw3dFwyXDJcdTA2ODJc dTA2ODNcN2dcMlwyXHUwNjgzXHUwMTM0XDNcMlwyXDJcdTA2ODQiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwNjg1XDdjXDJcMlx1MDY4NVx1MDY4Nlw3dlwyXDJcdTA2ODZcdTA2 ODdcN3ZcMlwyXHUwNjg3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDY4OFw3 dFwyXDJcdTA2ODhcdTA2ODlcN2tcMlwyXHUwNjg5XHUwNjhhXDdkXDJcMlx1MDY4YSIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2OGJcN3dcMlwyXHUwNjhiXHUwNjhjXDd2XDJc Mlx1MDY4Y1x1MDY4ZFw3Z1wyXDJcdTA2OGQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwMTM2XDNcMlwyXDJcdTA2OGVcdTA2OGZcN3hcMlwyXHUwNjhmXHUwNjkwXDdjXDJcMlx1 MDY5MCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2OTFcN3RcMlwyXHUwNjkx XHUwNjkyXDd1XDJcMlx1MDY5Mlx1MDY5M1w3dlwyXDJcdTA2OTMiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwNjk0XDdxXDJcMlx1MDY5NFx1MDY5NVw3dFwyXDJcdTA2OTVcdTA2 OTZcN2dcMlwyXHUwNjk2IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDEzOFwz XDJcMlwyXHUwNjk3XHUwNjk4XDdnXDJcMlx1MDY5OFx1MDY5OVw3aFwyXDJcdTA2OTkNCj4gPiAi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjlhXDdrXDJcMlx1MDY5YVx1MDY5 Ylw3eFwyXDJcdTA2OWJcdTA2OWNcN2NcMlwyXHUwNjljIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDY5ZFw3dFwyXDJcdTA2OWRcdTA2OWVcN3VcMlwyXHUwNjllXHUwNjlmXDd2 XDJcMlx1MDY5ZiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2YTBcN3FcMlwy XHUwNmEwXHUwNmExXDd0XDJcMlx1MDZhMVx1MDZhMlw3Z1wyXDJcdTA2YTIiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMTNhXDNcMlwyXDJcdTA2YTNcdTA2YTRcN3hcMlwyXHUw NmE0XHUwNmE1XDdjXDJcMlx1MDZhNSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTA2YTZcN3RcMlwyXHUwNmE2XHUwNmE3XDd1XDJcMlx1MDZhN1x1MDZhOFw3a1wyXDJcdTA2YTgi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNmE5XDd8XDJcMlx1MDZhOVx1MDZh YVw3Z1wyXDJcdTA2YWFcdTAxM2NcM1wyXDJcMlx1MDZhYiIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTA2YWNcN3BcMlwyXHUwNmFjXHUwNmFkXDdjXDJcMlx1MDZhZFx1MDZhZVw3 b1wyXDJcdTA2YWUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNmFmXDdnXDJc Mlx1MDZhZlx1MDZiMFw3eFwyXDJcdTA2YjBcdTA2YjFcN2NcMlwyXHUwNmIxIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDZiMlw3blwyXDJcdTA2YjJcdTA2YjNcN3dcMlwyXHUw NmIzXHUwNmI0XDdnXDJcMlx1MDZiNA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTA2YjVcN3hcMlwyXHUwNmI1XHUwNmI2XDdjXDJcMlx1MDZiNlx1MDZiN1w3dFwyXDJc dTA2YjciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNmI4XDd1XDJcMlx1MDZi OFx1MDZiOVw3dlwyXDJcdTA2YjlcdTA2YmFcN3FcMlwyXHUwNmJhDQo+ID4gIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDZiYlw3dFwyXDJcdTA2YmJcdTA2YmNcN2dcMlwyXHUw NmJjXHUwMTNlXDNcMlwyXDJcdTA2YmQNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwNmJlXDdjXDJcMlx1MDZiZVx1MDZiZlw3ZVwyXDJcdTA2YmZcdTA2YzBcN3ZcMlwy XHUwNmMwIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDZjMVw3a1wyXDJcdTA2 YzFcdTA2YzJcN3FcMlwyXHUwNmMyXHUwNmMzXDdwXDJcMlx1MDZjMyIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcdTAxNDBcM1wyXDJcMlx1MDZjNFx1MDZjNVw3ZVwyXDJcdTA2YzVc dTA2YzZcN3FcMlwyXHUwNmM2IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDZj N1w3cFwyXDJcdTA2YzdcdTA2YzhcN2hcMlwyXHUwNmM4XHUwNmM5XDdrXDJcMlx1MDZjOSIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2Y2FcN2lcMlwyXHUwNmNhXHUwMTQyXDNc MlwyXDJcdTA2Y2JcdTA2Y2NcN2dcMlwyXHUwNmNjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MDZjZFw3cFwyXDJcdTA2Y2RcdTA2Y2VcN2ZcMlwyXHUwNmNlXHUwNmNmXDdjXDJcMlx1 MDZjZiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2ZDBcN2VcMlwyXHUwNmQw XHUwNmQxXDd2XDJcMlx1MDZkMVx1MDZkMlw3a1wyXDJcdTA2ZDINCj4gPiAiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNmQzXDdxXDJcMlx1MDZkM1x1MDZkNFw3cFwyXDJcdTA2 ZDRcdTAxNDRcM1wyXDJcMlx1MDZkDQo+ID4gNSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTA2ZDZcN3RcMlwyXHUwNmQ2XHUwNmQ3XDdnXDJcMlx1MDZkN1x1MDZkOFw3aFwyXDJc dTA2ZDgiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNmQ5XDd0XDJcMlx1MDZk OVx1MDZkYVw3Z1wyXDJcdTA2ZGFcdTA2ZGJcN3VcMlwyXHUwNmRiDQo+ID4gIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDZkY1w3alwyXDJcdTA2ZGNcdTAxNDZcM1wyXDJcMlx1 MDZkZFx1MDZkZVw3a1wyXDJcdTA2ZGUNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwNmRmXDdwXDJcMlx1MDZkZlx1MDZlMFw3dlwyXDJcdTA2ZTBcdTA2ZTFcN2dcMlwy XHUwNmUxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDZlMlw3dFwyXDJcdTA2 ZTJcdTA2ZTNcN3hcMlwyXHUwNmUzXHUwNmU0XDdjXDJcMlx1MDZlNCIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcdTA2ZTVcN25cMlwyXHUwNmU1XHUwMTQ4XDNcMlwyXDJcdTA2ZTZc dTA2ZTdcN3hcMlwyXHUwNmU3DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilx1MDZlOFw3Y1wyXDJcdTA2ZThcdTA2ZTlcN3RcMlwyXHUwNmU5XHUwNmVhXDd1XDJcMlx1MDZl YSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2ZWJcN3ZcMlwyXHUwNmViXHUw NmVjXDdxXDJcMlx1MDZlY1x1MDZlZFw3dFwyXDJcdTA2ZWQNCj4gPiAiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwNmVlXDdnXDJcMlx1MDZlZVx1MDZlZlw3ZlwyXDJcdTA2ZWZc dTA2ZjBcN2dcMlwyXHUwNmYwIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDZmMVw3 eFwyXDJcdTA2ZjFcdTA2ZjJcN2tcMlwyXHUwNmYyXHUwNmYzXDdlXDJcMlx1MDZmMyIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA2ZjRcN2dcMlwyXHUwNmY0XHUwMTRhXDNcMlwyXDJc dTA2ZjVcdTA2ZjZcN2lcMlwyXHUwNmY2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1 MDZmN1w3d1wyXDJcdTA2ZjdcdTA2ZjhcN2tcMlwyXHUwNmY4XHUwNmY5XDdmXDJcMlx1MDZmOSIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA2ZmFcN3FcMlwyXHUwNmZhXHUwNmZiXDdy XDJcMlx1MDZmYlx1MDE0Y1wzXDJcMlwyXHUwNmZjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MDZmZFw3Z1wyXDJcdTA2ZmRcdTA2ZmVcN3BcMlwyXHUwNmZlXHUwNmZmXDdmXDJcMlx1 MDZmZiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3MDBcN2lcMlwyXHUwNzAw XHUwNzAxXDd3XDJcMlx1MDcwMVx1MDcwMlw3a1wyXDJcdTA3MDIiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwNzAzXDdmXDJcMlx1MDcwM1x1MDcwNFw3cVwyXDJcdTA3MDRcdTA3 MDVcN3JcMlwyXHUwNzA1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDE0ZVwz XDJcMlwyXHUwNzA2XHUwNzA3XDdmXDJcMlx1MDcwN1x1MDcwOFw3Y1wyXDJcdTA3MDgiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzA5XDd2XDJcMlx1MDcwOVx1MDcwYVw3Y1wy XDJcdTA3MGFcdTA3MGJcN3ZcMlwyXHUwNzBiIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDcwY1w3e1wyXDJcdTA3MGNcdTA3MGRcN3JcMlwyXHUwNzBkXHUwNzBlXDdnXDJcMlx1 MDcwZSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAxNTBcM1wyXDJcMlx1MDcw Zlx1MDcxMFw3ZlwyXDJcdTA3MTBcdTA3MTFcN2NcMlwyXHUwNzExIikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlx1MDcxMlw3dlwyXDJcdTA3MTJcdTA3MTNcN2NcMlwyXHUwNzEzXHUw MTUyXDNcMlwyXDJcdTA3MTQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzE1 XDdvXDJcMlx1MDcxNVx1MDcxNlw3cVwyXDJcdTA3MTZcdTA3MTdcN2ZcMlwyXHUwNzE3IikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDcxOFw3Y1wyXDJcdTA3MThcdTA3MTlcN25c MlwyXHUwNzE5XHUwMTU0XDNcMlwyXDJcdTA3MWEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwNzFiXDdQXDJcMlx1MDcxYlx1MDcxY1w3UVwyXDJcdTA3MWNcdTA3MWRcN1BcMlwy XHUwNzFkDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDcxZVw3YVwy XDJcdTA3MWVcdTA3MWZcN0ZcMlwyXHUwNzFmXHUwNzIwXDdHXDJcMlx1MDcyMCIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3MjFcN1hcMlwyXHUwNzIxXHUwNzIyXDdLXDJcMlx1 MDcyMlx1MDcyM1w3RVwyXDJcdTA3MjMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwNzI0XDdHXDJcMlx1MDcyNFx1MDE1NlwzXDJcMlwyXHUwNzI1XHUwNzI2XDdGXDJcMlx1MDcy Ng0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3MjdcN0tcMlwyXHUw NzI3XHUwNzI4XDdVXDJcMlx1MDcyOFx1MDcyOVw3TVwyXDJcdTA3MjkNCj4gPiAiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzJhXDdhXDJcMlx1MDcyYVx1MDcyYlw3RlwyXDJc dTA3MmJcdTA3MmNcN0dcMlwyXHUwNzJjIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilx1MDcyZFw3WFwyXDJcdTA3MmRcdTA3MmVcN0tcMlwyXHUwNzJlXHUwNzJmXDdFXDJcMlx1MDcy ZiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3MzBcN0dcMlwyXHUwNzMwXHUw MTU4XDNcMlwyXDJcdTA3MzFcdTA3MzJcN1hcMlwyXHUwNzMyDQo+ID4gIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlx1MDczM1w3S1wyXDJcdTA3MzNcdTA3MzRcN0ZcMlwyXHUwNzM0 XHUwNzM1XDdHXDJcMlx1MDczNSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3 MzZcN1FcMlwyXHUwNzM2XHUwNzM3XDdhXDJcMlx1MDczN1x1MDczOFw3RlwyXDJcdTA3MzgiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzM5XDdHXDJcMlx1MDczOVx1MDczYVw3 WFwyXDJcdTA3M2FcdTA3M2JcN0tcMlwyXHUwNzNiDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDczY1w3RVwyXDJcdTA3M2NcdTA3M2RcN0dcMlwyXHUwNzNkXHUwMTVh XDNcMlwyXDJcdTA3M2UNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw NzNmXDdQXDJcMlx1MDczZlx1MDc0MFw3R1wyXDJcdTA3NDBcdTA3NDFcN1ZcMlwyXHUwNzQxIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDc0Mlw3WVwyXDJcdTA3NDJcdTA3NDNc N1FcMlwyXHUwNzQzXHUwNzQ0XDdUXDJcMlx1MDc0NCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTA3NDVcN01cMlwyXHUwNzQ1XHUwNzQ2XDdhXDJcMlx1MDc0Nlx1MDc0N1w3Rlwy XDJcdTA3NDciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzQ4XDdHXDJcMlx1 MDc0OFx1MDc0OVw3WFwyXDJcdTA3NDlcdTA3NGFcN0tcMlwyXHUwNzRhIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlx1MDc0Ylw3RVwyXDJcdTA3NGJcdTA3NGNcN0dcMlwyXHUwNzRj XHUwMTVjXDNcMlwyXDJcdTA3NGQNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwNzRlXDdLXDJcMlx1MDc0ZVx1MDc0Zlw3UFwyXDJcdTA3NGZcdTA3NTBcN1JcMlwyXHUw NzUwIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDc1MVw3V1wyXDJcdTA3NTFc dTA3NTJcN1ZcMlwyXHUwNzUyXHUwNzUzXDdhXDJcMlx1MDc1Mw0KPiA+ICIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3NTRcN0ZcMlwyXHUwNzU0XHUwNzU1XDdHXDJcMlx1MDc1 NVx1MDc1Nlw3WFwyXDJcdTA3NTYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw NzU3XDdLXDJcMlx1MDc1N1x1MDc1OFw3RVwyXDJcdTA3NThcdTA3NTlcN0dcMlwyXHUwNzU5IikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDE1ZVwzXDJcMlwyXHUwNzVhXHUwNzVi XDdRXDJcMlx1MDc1Ylx1MDc1Y1w3UFwyXDJcdTA3NWMNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwNzVkXDdEXDJcMlx1MDc1ZFx1MDc1ZVw3UVwyXDJcdTA3NWVcdTA3 NWZcN0NcMlwyXHUwNzVmIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDc2MFw3 VFwyXDJcdTA3NjBcdTA3NjFcN0ZcMlwyXHUwNzYxXHUwNzYyXDdhXDJcMlx1MDc2MiIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3NjNcN0ZcMlwyXHUwNzYzXHUwNzY0XDdHXDJc Mlx1MDc2NFx1MDc2NVw3WFwyXDJcdTA3NjUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwNzY2XDdLXDJcMlx1MDc2Nlx1MDc2N1w3RVwyXDJcdTA3NjdcdTA3NjhcN0dcMlwyXHUw NzY4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDE2MFwzXDJcMlwyXHUwNzY5 XHUwNzZhXDdRXDJcMlx1MDc2YVx1MDc2Ylw3VlwyXDJcdTA3Ng0KPiA+IGIiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzZjXDdKXDJcMlx1MDc2Y1x1MDc2ZFw3R1wyXDJcdTA3 NmRcdTA3NmVcN1RcMlwyXHUwNzZlIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1 MDc2Zlw3YVwyXDJcdTA3NmZcdTA3NzBcN0ZcMlwyXHUwNzcwXHUwNzcxXDdHXDJcMlx1MDc3MSIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3NzJcN1hcMlwyXHUwNzcyXHUwNzcz XDdLXDJcMlx1MDc3M1x1MDc3NFw3RVwyXDJcdTA3NzQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwNzc1XDdHXDJcMlx1MDc3NVx1MDE2MlwzXDJcMlwyXHUwNzc2XHUwNzc3XDdV XDJcMlx1MDc3Nw0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3Nzhc N0dcMlwyXHUwNzc4XHUwNzc5XDdWXDJcMlx1MDc3OVx1MDc3YVw3V1wyXDJcdTA3N2ENCj4gPiAi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzdiXDdSXDJcMlx1MDc3Ylx1MDc3 Y1w3YVwyXDJcdTA3N2NcdTA3N2RcN0NcMlwyXHUwNzdkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDc3ZVw3UlwyXDJcdTA3N2VcdTA3N2ZcN1JcMlwyXHUwNzdmXHUwNzgwXDdO XDJcMlx1MDc4MCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3ODFcN0tcMlwy XHUwNzgxXHUwNzgyXDdFXDJcMlx1MDc4Mlx1MDc4M1w3Q1wyXDJcdTA3ODMiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzg0XDdWXDJcMlx1MDc4NFx1MDc4NVw3S1wyXDJcdTA3 ODVcdTA3ODZcN1FcMlwyXHUwNzg2IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1 MDc4N1w3UFwyXDJcdTA3ODdcdTAxNjRcM1wyXDJcMlx1MDc4OFx1MDc4OVw3SVwyXDJcdTA3ODki KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzhhXDdHXDJcMlx1MDc4YVx1MDc4 Ylw3UFwyXDJcdTA3OGJcdTA3OGNcN0dcMlwyXHUwNzhjDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlx1MDc4ZFw3VFwyXDJcdTA3OGRcdTA3OGVcN0NcMlwyXHUwNzhlXHUw NzhmXDdOXDJcMlx1MDc4ZiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3OTBc N2FcMlwyXHUwNzkwXHUwNzkxXDdDXDJcMlx1MDc5MVx1MDc5Mlw3UlwyXDJcdTA3OTIiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzkzXDdSXDJcMlx1MDc5M1x1MDc5NFw3Tlwy XDJcdTA3OTRcdTA3OTVcN0tcMlwyXHUwNzk1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDc5Nlw3RVwyXDJcdTA3OTZcdTA3OTdcN0NcMlwyXHUwNzk3XHUwNzk4XDdWXDJcMlx1 MDc5OCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3OTlcN0tcMlwyXHUwNzk5 XHUwNzlhXDdRXDJcMlx1MDc5YVx1MDc5Ylw3UFwyXDJcdTA3OWINCj4gPiAiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMTY2XDNcMlwyXDJcdTA3OWNcdTA3OWRcN0hcMlwyXHUw NzlkXHUwNzllXDdUXDJcMlx1MDc5ZQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTA3OWZcN1FcMlwyXHUwNzlmXHUwN2EwXDdQXDJcMlx1MDdhMFx1MDdhMVw3VlwyXDJc dTA3YTEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwN2EyXDdhXDJcMlx1MDdh Mlx1MDdhM1w3UlwyXDJcdTA3YTNcdTA3YTRcN0NcMlwyXHUwN2E0IikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlx1MDdhNVw3SVwyXDJcdTA3YTVcdTA3YTZcN0dcMlwyXHUwN2E2XHUw MTY4XDNcMlwyXDJcdTA3YTciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwN2E4 XDdVXDJcMlx1MDdhOFx1MDdhOVw3S1wyXDJcdTA3YTlcdTA3YWFcN1BcMlwyXHUwN2FhIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDdhYlw3SVwyXDJcdTA3YWJcdTA3YWNcN05c MlwyXHUwN2FjXHUwN2FkXDdHXDJcMlx1MDdhZCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTA3YWVcN2FcMlwyXHUwN2FlXHUwN2FmXDdXXDJcMlx1MDdhZlx1MDdiMFw3VVwyXDJc dTA3YjANCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwN2IxXDdHXDJc Mlx1MDdiMVx1MDE2YVwzXDJcMlwyXHUwN2IyXHUwN2IzXDdbXDJcMlx1MDdiMw0KPiA+ICIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3YjRcN0dcMlwyXHUwN2I0XHUwN2I1XDdD XDJcMlx1MDdiNVx1MDdiNlw3VFwyXDJcdTA3YjYNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXHUwN2I3XDdhXDJcMlx1MDdiN1x1MDdiOFw3VVwyXDJcdTA3YjhcdTA3Yjlc N1dcMlwyXHUwN2INCj4gPiA5IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDdi YVw3UlwyXDJcdTA3YmFcdTA3YmJcN1JcMlwyXHUwN2JiXHUwN2JjXDdUXDJcMlx1MDdiYw0KPiA+ ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3YmRcN0dcMlwyXHUwN2JkXHUw N2JlXDdVXDJcMlx1MDdiZVx1MDdiZlw3VVwyXDJcdTA3Yg0KPiA+IGYiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwMTZjXDNcMlwyXDJcdTA3YzBcdTA3YzFcN09cMlwyXHUwN2Mx XHUwN2MyXDdRXDJcMlx1MDdjMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3YzNc N1BcMlwyXHUwN2MzXHUwN2M0XDdWXDJcMlx1MDdjNFx1MDdjNVw3SlwyXDJcdTA3YzUiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwN2M2XDdhXDJcMlx1MDdjNlx1MDdjN1w3VVwy XDJcdTA3YzdcdTA3YzhcN1dcMlwyXHUwN2M4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDdjOVw3UlwyXDJcdTA3YzlcdTA3Y2FcN1JcMlwyXHUwN2NhXHUwN2NiXDdUXDJcMlx1 MDdjYiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3Y2NcN0dcMlwyXHUwN2Nj XHUwN2NkXDdVXDJcMlx1MDdjZFx1MDdjZVw3VVwyXDJcdTA3Y2UiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwMTZlXDNcMlwyXDJcdTA3Y2ZcdTA3ZDBcN0ZcMlwyXHUwN2QwXHUw N2QxXDdDXDJcMlx1MDdkMQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTA3ZDJcN1tcMlwyXHUwN2QyXHUwN2QzXDdhXDJcMlx1MDdkM1x1MDdkNFw3VVwyXDJcdTA3ZDQN Cj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwN2Q1XDdXXDJcMlx1MDdk NVx1MDdkNlw3UlwyXDJcdTA3ZDZcdTA3ZDdcN1JcMlwyXHUwN2QNCj4gPiA3IikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDdkOFw3VFwyXDJcdTA3ZDhcdTA3ZDlcN0dcMlwyXHUw N2Q5XHUwN2RhXDdVXDJcMlx1MDdkYQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTA3ZGJcN1VcMlwyXHUwN2RiXHUwMTcwXDNcMlwyXDJcdTA3ZGNcdTA3ZGRcN0pcMlwy XHUwN2QNCj4gPiBkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDdkZVw3UVwy XDJcdTA3ZGVcdTA3ZGZcN1dcMlwyXHUwN2RmXHUwN2UwXDdUXDJcMlx1MDdlDQo+ID4gMCIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3ZTFcN2FcMlwyXHUwN2UxXHUwN2UyXDdV XDJcMlx1MDdlMlx1MDdlM1w3V1wyXDJcdTA3ZQ0KPiA+IDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXHUwN2U0XDdSXDJcMlx1MDdlNFx1MDdlNVw3UlwyXDJcdTA3ZTVcdTA3ZTZc N1RcMlwyXHUwN2U2DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDdl N1w3R1wyXDJcdTA3ZTdcdTA3ZThcN1VcMlwyXHUwN2U4XHUwN2U5XDdVXDJcMlx1MDdlDQo+ID4g OSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAxNzJcM1wyXDJcMlx1MDdlYVx1 MDdlYlw3T1wyXDJcdTA3ZWJcdTA3ZWNcN0tcMlwyXHUwN2UNCj4gPiBjIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlx1MDdlZFw3UFwyXDJcdTA3ZWRcdTA3ZWVcN1dcMlwyXHUwN2Vl XHUwN2VmXDdWXDJcMlx1MDdlDQo+ID4gZiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTA3ZjBcN0dcMlwyXHUwN2YwXHUwN2YxXDdhXDJcMlx1MDdmMVx1MDdmMlw3VVwyXDJcdTA3ZjIi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwN2YzXDdXXDJcMlx1MDdmM1x1MDdm NFw3UlwyXDJcdTA3ZjRcdTA3ZjVcN1JcMlwyXHUwN2Y1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MDdmNlw3VFwyXDJcdTA3ZjZcdTA3ZjdcN0dcMlwyXHUwN2Y3XHUwN2Y4XDdVXDJc Mlx1MDdmOCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3ZjlcN1VcMlwyXHUw N2Y5XHUwMTc0XDNcMlwyXDJcdTA3ZmFcdTA3ZmJcN1VcMlwyXHUwN2ZiIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlx1MDdmY1w3R1wyXDJcdTA3ZmNcdTA3ZmRcN0VcMlwyXHUwN2Zk XHUwN2ZlXDdRXDJcMlx1MDdmZSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3ZmZc N1BcMlwyXHUwN2ZmXHUwODAwXDdGXDJcMlx1MDgwMFx1MDgwMVw3YVwyXDJcdTA4MDEiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwODAyXDdVXDJcMlx1MDgwMlx1MDgwM1w3V1wy XDJcdTA4MDNcdTA4MDRcN1JcMlwyXHUwODA0DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDgwNVw3UlwyXDJcdTA4MDVcdTA4MDZcN1RcMlwyXHUwODA2XHUwODA3XDdH XDJcMlx1MDgwNyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4MDhcN1VcMlwy XHUwODA4XHUwODA5XDdVXDJcMlx1MDgwOVx1MDE3NlwzXDJcMlwyXHUwODBhDQo+ID4gIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDgwYlw3VVwyXDJcdTA4MGJcdTA4MGNcN1Zc MlwyXHUwODBjXHUwODBkXDdRXDJcMlx1MDgwZA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTA4MGVcN1RcMlwyXHUwODBlXHUwODBmXDdDXDJcMlx1MDgwZlx1MDgxMFw3 SVwyXDJcdTA4MTAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwODExXDdHXDJc Mlx1MDgxMVx1MDgxMlw3YVwyXDJcdTA4MTJcdTA4MTNcN1BcMlwyXHUwODEzIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDgxNFw3UVwyXDJcdTA4MTRcdTA4MTVcN1RcMlwyXHUw ODE1XHUwODE2XDdPXDJcMlx1MDgxNiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTA4MTdcN0NcMlwyXHUwODE3XHUwODE4XDdOXDJcMlx1MDgxOFx1MDE3OFwzXDJcMlwyXHUwODE5 DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDgxYVw3VVwyXDJcdTA4 MWFcdTA4MWJcN1ZcMlwyXHUwODFiXHUwODFjXDdRXDJcMlx1MDgxYw0KPiA+ICIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4MWRcN1RcMlwyXHUwODFkXHUwODFlXDdDXDJcMlx1 MDgxZVx1MDgxZlw3SVwyXDJcdTA4MWYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwODIwXDdHXDJcMlx1MDgyMFx1MDgyMVw3YVwyXDJcdTA4MjFcdTA4MjJcN1ZcMlwyXHUwODIy IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDgyM1w3S1wyXDJcdTA4MjNcdTA4 MjRcN09cMlwyXHUwODI0XHUwODI1XDdHXDJcMlx1MDgyNQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcdTAxN2FcM1wyXDJcMlx1MDgyNlx1MDgyN1w3VVwyXDJcdTA4Mjdc dTA4MjhcN1ZcMlwyXHUwODI4DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilx1MDgyOVw3UVwyXDJcdTA4MjlcdTA4MmFcN1RcMlwyXHUwODJhXHUwODJiXDdDXDJcMlx1MDgy YiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4MmNcN0lcMlwyXHUwODJjXHUw ODJkXDdHXDJcMlx1MDgyZFx1MDgyZVw3YVwyXDJcdTA4MmUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXHUwODJmXDdZXDJcMlx1MDgyZlx1MDgzMFw3Q1wyXDJcdTA4MzBcdTA4MzFc N01cMlwyXHUwODMxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDgzMlw3R1wy XDJcdTA4MzJcdTA4MzNcN1dcMlwyXHUwODMzXHUwODM0XDdSXDJcMlx1MDgzNA0KPiA+ICIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAxN2NcM1wyXDJcMlx1MDgzNVx1MDgzNlw3 V1wyXDJcdTA4MzZcdTA4MzdcN1BcMlwyXHUwODM3DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDgzOFw3S1wyXDJcdTA4MzhcdTA4MzlcN1NcMlwyXHUwODM5XHUwODNh XDdXXDJcMlx1MDgzYQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4 M2JcN0dcMlwyXHUwODNiXHUwMTdlXDNcMlwyXDJcdTA4M2NcdTA4M2RcN1BcMlwyXHUwODMNCj4g PiBkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDgzZVw3UVwyXDJcdTA4M2Vc dTA4M2ZcN0dcMlwyXHUwODNmXHUwODQwXDdPXDJcMlx1MDg0MA0KPiA+ICIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4NDFcN1JcMlwyXHUwODQxXHUwODQyXDdWXDJcMlx1MDg0 Mlx1MDg0M1w3W1wyXDJcdTA4NDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw MTgwXDNcMlwyXDJcdTA4NDRcdTA4NDVcN2VcMlwyXHUwODQ1XHUwODQ2XDdxXDJcMlx1MDg0Ng0K PiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4NDdcN3BcMlwyXHUwODQ3 XHUwODQ4XDdmXDJcMlx1MDg0OFx1MDE4MlwzXDJcMlwyXHUwODQ5IikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlx1MDg0YVw3aFwyXDJcdTA4NGFcdTA4NGJcN2tcMlwyXHUwODRiXHUw ODRjXDdwXDJcMlx1MDg0YyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4NGRc N2ZcMlwyXHUwODRkXHUwMTg0XDNcMlwyXDJcdTA4NGVcdTA4NGZcN29cMlwyXHUwODRmIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDg1MFw3a1wyXDJcdTA4NTBcdTA4NTFcN2Zc MlwyXHUwODUxXHUwMTg2XDNcMlwyXDJcdTA4NTIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwODUzXDd2XDJcMlx1MDg1M1x1MDg1NFw3cVwyXDJcdTA4NTRcdTA4NTVcN21cMlwy XHUwODU1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDg1Nlw3Z1wyXDJcdTA4 NTZcdTA4NTdcN3BcMlwyXHUwODU3XHUwMTg4XDNcMlwyXDJcdTA4NTgNCj4gPiAiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwODU5XDd1XDJcMlx1MDg1OVx1MDg1YVw3clwyXDJc dTA4NWFcdTA4NWJcN2NcMlwyXHUwODViIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilx1MDg1Y1w3cFwyXDJcdTA4NWNcdTAxOGFcM1wyXDJcMlx1MDg1ZFx1MDg1ZVw3ZlwyXDJcdTA4 NWUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwODVmXDd3XDJcMlx1MDg1Zlx1 MDg2MFw3clwyXDJcdTA4NjBcdTAxOGNcM1wyXDJcMlx1MDg2MSIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcdTA4NjJcN3hcMlwyXHUwODYyXHUwODYzXDdjXDJcMlx1MDg2M1x1MDg2 NFw3dFwyXDJcdTA4NjQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwODY1XDdn XDJcMlx1MDg2NVx1MDg2Nlw3c1wyXDJcdTA4NjZcdTA4NjdcN3hcMlwyXHUwODY3IikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDg2OFw3Y1wyXDJcdTA4NjhcdTA4NjlcN25cMlwy XHUwODY5XHUwMThlXDNcMlwyXDJcdTA4NmENCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwODZiXDd4XDJcMlx1MDg2Ylx1MDg2Y1w3Y1wyXDJcdTA4NmNcdTA4NmRcN3Rc MlwyXHUwODZkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDE5MFwzXDJcMlwy XHUwODZlXHUwODZmXDdrXDJcMlx1MDg2Zlx1MDg3MFw3ZlwyXDJcdTA4NzAiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwODcxXDdnXDJcMlx1MDg3MVx1MDg3Mlw3c1wyXDJcdTA4 NzJcdTA4NzNcN3hcMlwyXHUwODczIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1 MDg3NFw3Y1wyXDJcdTA4NzRcdTA4NzVcN25cMlwyXHUwODc1XHUwMTkyXDNcMlwyXDJcdTA4NzYi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwODc3XDdrXDJcMlx1MDg3N1x1MDg3 OFw3ZlwyXDJcdTA4NzhcdTA4NzlcN2dcMlwyXHUwODc5IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDg3YVw3c1wyXDJcdTA4N2FcdTA4N2JcN2tcMlwyXHUwODdiXHUwODdjXDdm XDJcMlx1MDg3YyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAxOTRcM1wyXDJc Mlx1MDg3ZFx1MDg3ZVw3a1wyXDJcdTA4N2VcdTA4N2ZcN2ZcMlwyXHUwODdmIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDg4MFw3Z1wyXDJcdTA4ODBcdTA4ODFcN3NcMlwyXHUw ODgxXHUwODgyXDd4XDJcMlx1MDg4MiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTA4ODNcN2NcMlwyXHUwODgzXHUwODg0XDduXDJcMlx1MDg4NFx1MDg4NVw3blwyXDJcdTA4ODUi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwODg2XDdrXDJcMlx1MDg4Nlx1MDg4 N1w3dVwyXDJcdTA4ODdcdTA4ODhcN3ZcMlwyXHUwODg4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDE5NlwzXDJcMlwyXHUwODg5XHUwODhhXDdzXDJcMlx1MDg4YVx1MDg4Ylw3 d1wyXDJcdTA4OGINCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwODhj XDdnXDJcMlx1MDg4Y1x1MDg4ZFw3dVwyXDJcdTA4OGRcdTA4OGVcN3ZcMlwyXHUwODhlIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDg4Zlw3a1wyXDJcdTA4OGZcdTA4OTBcN3Fc MlwyXHUwODkwXHUwODkxXDdwXDJcMlx1MDg5MSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTA4OTJcN3RcMlwyXHUwODkyXHUwODkzXDdnXDJcMlx1MDg5M1x1MDg5NFw3aFwyXDJc dTA4OTQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMTk4XDNcMlwyXDJcdTA4 OTVcdTA4OTZcN3RcMlwyXHUwODk2XHUwODk3XDd3XDJcMlx1MDg5Nw0KPiA+ICIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4OThcN25cMlwyXHUwODk4XHUwODk5XDdnXDJcMlx1 MDg5OVx1MDg5YVw3dFwyXDJcdTA4OWEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwODliXDdnXDJcMlx1MDg5Ylx1MDg5Y1w3aFwyXDJcdTA4OWNcdTAxOWFcM1wyXDJcMlx1MDg5 ZA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4OWVcN3VcMlwyXHUw ODllXHUwODlmXDd2XDJcMlx1MDg5Zlx1MDhhMFw3dFwyXDJcdTA4YTAiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwOGExXDdrXDJcMlx1MDhhMVx1MDhhMlw3cFwyXDJcdTA4YTJc dTA4YTNcN2lcMlwyXHUwOGEzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDhh NFw3dFwyXDJcdTA4YTRcdTA4YTVcN2dcMlwyXHUwOGE1XHUwOGE2XDdoXDJcMlx1MDhhNiIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAxOWNcM1wyXDJcMlx1MDhhN1x1MDhhOFw3 clwyXDJcdTA4YThcdTA4YTlcN3dcMlwyXHUwOGE5DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDhhYVw3dVwyXDJcdTA4YWFcdTA4YWJcN2pcMlwyXHUwOGFiXHUwOGFj XDd2XDJcMlx1MDhhYyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4YWRcN2pc MlwyXHUwOGFkXHUwOGFlXDdrXDJcMlx1MDhhZVx1MDhhZlw3dVwyXDJcdTA4YWYiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMTllXDNcMlwyXDJcdTA4YjBcdTA4YjFcN3VcMlwy XHUwOGIxXHUwOGIyXDdnXDJcMlx1MDhiDQo+ID4gMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTA4YjNcN2VcMlwyXHUwOGIzXHUwOGI0XDd3XDJcMlx1MDhiNFx1MDhiNVw3dFwy XDJcdTA4YjUNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOGI2XDdr XDJcMlx1MDhiNlx1MDhiN1w3dlwyXDJcdTA4YjdcdTA4YjhcN3tcMlwyXHUwOGI4IikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDFhMFwzXDJcMlwyXHUwOGI5XHUwOGJhXDdpXDJc Mlx1MDhiYVx1MDhiYlw3Z1wyXDJcdTA4YmINCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwOGJjXDd2XDJcMlx1MDhiY1x1MDFhMlwzXDJcMlwyXHUwOGJkXHUwOGJlXDdW XDJcMlx1MDhiDQo+ID4gZSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4YmZc N1RcMlwyXHUwOGJmXHUwOGMwXDdXXDJcMlx1MDhjMFx1MDhjMVw3R1wyXDJcdTA4YzEiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMWE0XDNcMlwyXDJcdTA4YzJcdTA4YzNcN0hc MlwyXHUwOGMzXHUwOGM0XDdDXDJcMlx1MDhjNCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTA4YzVcN05cMlwyXHUwOGM1XHUwOGM2XDdVXDJcMlx1MDhjNlx1MDhjN1w3R1wyXDJc dTA4YzciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMWE2XDNcMlwyXDJcdTA4 YzhcdTA4YzlcN1FcMlwyXHUwOGM5XHUwOGNhXDdQXDJcMlx1MDhjYSIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcdTA4Y2JcN0dcMlwyXHUwOGNiXHUwMWE4XDNcMlwyXDJcdTA4Y2Nc dTA4Y2RcN1FcMlwyXHUwOGNkDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilx1MDhjZVw3UFwyXDJcdTA4Y2VcdTA4Y2ZcN0dcMlwyXHUwOGNmXHUwOGQwXDdVXDJcMlx1MDhk MCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxYWFcM1wyXDJcMlx1MDhkMVx1MDhk Mlw3XFxcMlwyXHUwOGQyXHUwOGQzXDdHXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTA4ZDNcdTA4ZDRcN1RcMlwyXHUwOGQ0XHUwOGQ1XDdRXDJcMlx1MDhkNVx1MDFhY1wzXDIi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDhkNlx1MDhkN1w3V1wyXDJcdTA4 ZDdcdTA4ZDhcN1BcMlwyXHUwOGQ4XHUwOGQ5IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlw3RlwyXDJcdTA4ZDlcdTA4ZGFcN0dcMlwyXHUwOGRhXHUwOGRiXDdIXDJcMlx1MDhkYlx1 MDhkYw0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN0tcMlwyXHUwOGRj XHUwOGRkXDdQXDJcMlx1MDhkZFx1MDhkZVw3R1wyXDJcdTA4ZGVcdTA4ZGYNCj4gPiAiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdGXDJcMlx1MDhkZlx1MDFhZVwzXDJcMlwyXHUw OGUwXHUwOGUxXDdYXDJcMlx1MDhlMVx1MDhlMg0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcN0dcMlwyXHUwOGUyXHUwOGUzXDdUXDJcMlx1MDhlM1x1MDhlNFw3VVwyXDJc dTA4ZTRcdTA4ZTUNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdLXDJc Mlx1MDhlNVx1MDhlNlw3UVwyXDJcdTA4ZTZcdTA4ZTdcN1BcMlwyXHUwOGU3XHUwMWIwDQo+ID4g IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwOGU4XHUwOGU5XDdu XDJcMlx1MDhlOVx1MDhlYVw3Z1wyXDJcdTA4ZWFcdTA4ZQ0KPiA+IGIiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDdwXDJcMlx1MDhlYlx1MDhlY1w3aVwyXDJcdTA4ZWNcdTA4ZWRc N3ZcMlwyXHUwOGVkXHUwOGVlIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3alwy XDJcdTA4ZWVcdTAxYjJcM1wyXDJcMlx1MDhlZlx1MDhmMFw3Q1wyXDJcdTA4ZjBcdTA4ZjEiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdQXDJcMlx1MDhmMVx1MDhmMlw3RlwyXDJc dTA4ZjJcdTAxYjRcM1wyXDJcMlx1MDhmM1x1MDhmNCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcN1FcMlwyXHUwOGY0XHUwOGY1XDdUXDJcMlx1MDhmNVx1MDFiNlwzXDJcMlwyXHUw OGY2XHUwOGY3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3UFwyXDJcdTA4Zjdc dTA4ZjhcN1FcMlwyXHUwOGY4XHUwOGY5XDdWXDJcMlx1MDhmOVx1MDFiOCIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDhmYVx1MDhmYlw3dVwyXDJcdTA4ZmJcdTA4 ZmNcN2dcMlwyXHUwOGZjXHUwOGZkIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3dlwy XDJcdTA4ZmRcdTAxYmFcM1wyXDJcMlx1MDhmZVx1MDhmZlw3XHUwMDgwXDJcMlx1MDhmZiIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAxYmNcM1wyXDJcMlx1MDkwMFx1MDkwMVw3 ZFwyXDJcdTA5MDFcdTA5MDJcN3FcMlwyXHUwOTAyDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDkwM1w3cVwyXDJcdTA5MDNcdTA5MDRcN25cMlwyXHUwOTA0XHUwOTA1 XDd4XDJcMlx1MDkwNSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA5MDZcN2Nc MlwyXHUwOTA2XHUwOTA3XDduXDJcMlx1MDkwN1x1MDFiZVwzXDJcMlwyXHUwOTA4DQo+ID4gIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDkwOVw3dVwyXDJcdTA5MDlcdTA5MGFc N3ZcMlwyXHUwOTBhXHUwOTBiXDd0XDJcMlx1MDkwYiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTA5MGNcN2tcMlwyXHUwOTBjXHUwOTBkXDdwXDJcMlx1MDkwZFx1MDkwZVw3aVwy XDJcdTA5MGUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOTBmXDd4XDJcMlx1 MDkwZlx1MDkxMFw3Y1wyXDJcdTA5MTBcdTA5MTFcN25cMlwyXHUwOTExIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlx1MDFjMFwzXDJcMlwyXHUwOTEyXHUwOTEzXDd3XDJcMlx1MDkx M1x1MDkxNFw3cFwyXDJcdTA5MTQNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwOTE1XDdrXDJcMlx1MDkxNVx1MDkxNlw3cFwyXDJcdTA5MTZcdTA5MTdcN3ZcMlwyXHUw OTE3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDkxOFw3eFwyXDJcdTA5MThc dTA5MTlcN2NcMlwyXHUwOTE5XHUwOTFhXDduXDJcMlx1MDkxYSIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcdTAxYzJcM1wyXDJcMlx1MDkxYlx1MDkxY1w3dlwyXDJcdTA5MWNcdTA5 MWRcN3FcMlwyXHUwOTFkDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1 MDkxZVw3d1wyXDJcdTA5MWVcdTA5MWZcN3JcMlwyXHUwOTFmXHUwOTIwXDdyXDJcMlx1MDkyMCIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA5MjFcN2dcMlwyXHUwOTIxXHUwOTIy XDd0XDJcMlx1MDkyMlx1MDFjNFwzXDJcMlwyXHUwOTIzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDkyNFw3dlwyXDJcdTA5MjRcdTA5MjVcN3FcMlwyXHUwOTI1XHUwOTI2XDdu XDJcMlx1MDkyNiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA5MjdcN3FcMlwy XHUwOTI3XHUwOTI4XDd5XDJcMlx1MDkyOFx1MDkyOVw3Z1wyXDJcdTA5MjkiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOTJhXDd0XDJcMlx1MDkyYVx1MDFjNlwzXDJcMlwyXHUw OTJiXHUwOTJjXDdvXDJcMlx1MDkyYyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTA5MmRcN2NcMlwyXHUwOTJkXHUwOTJlXDd2XDJcMlx1MDkyZVx1MDkyZlw3ZVwyXDJcdTA5MmYi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOTMwXDdqXDJcMlx1MDkzMFx1MDFj OFwzXDJcMlwyXHUwOTMxXHUwOTMyXDdvXDJcMlx1MDkzMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTA5MzNcN2NcMlwyXHUwOTMzXHUwOTM0XDd2XDJcMlx1MDkzNFx1MDkzNVw3 ZVwyXDJcdTA5MzUiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDkzNlw3alwyXDJcdTA5 MzZcdTA5MzdcN1w2NFwyXDJcdTA5MzdcdTAxY2FcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTA5MzhcdTA5MzlcN2VcMlwyXHUwOTM5XHUwOTNhXDdjXDJcMlx1MDkzYVx1 MDkzYlw3diIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwOTNiXHUwOTNjXDdn XDJcMlx1MDkzY1x1MDkzZFw3cFwyXDJcdTA5M2RcdTA5M2UiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDdjXDJcMlx1MDkzZVx1MDkzZlw3dlwyXDJcdTA5M2ZcdTA5NDBcN2dcMlwyXHUw OTQwXHUwMWNjIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwOTQx XHUwOTQyXDdzXDJcMlx1MDk0Mlx1MDk0M1w3d1wyXDJcdTA5NDNcdTA5NDQNCj4gPiAiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdnXDJcMlx1MDk0NFx1MDk0NVw3dVwyXDJcdTA5 NDVcdTA5NDZcN3ZcMlwyXHUwOTQ2XHUwOTQ3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlw3a1wyXDJcdTA5NDdcdTA5NDhcN3FcMlwyXHUwOTQ4XHUwOTQ5XDdwXDJcMlx1MDk0OVx1 MDk0YSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN3RcMlwyXHUwOTRhXHUwOTRi XDdnXDJcMlx1MDk0Ylx1MDk0Y1w3aFwyXDJcdTA5NGNcdTA5NGQiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXDd4XDJcMlx1MDk0ZFx1MDk0ZVw3Y1wyXDJcdTA5NGVcdTA5NGZcN25c MlwyXHUwOTRmXHUwMWNlIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXDJcMlwy XHUwOTUwXHUwOTUxXDd1XDJcMlx1MDk1MVx1MDk1Mlw3dlwyXDJcdTA5NTJcdTA5NTMNCj4gPiAi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDd0XDJcMlx1MDk1M1x1MDk1NFw3a1wy XDJcdTA5NTRcdTA5NTVcN3BcMlwyXHUwOTU1XHUwOTU2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlw3aVwyXDJcdTA5NTZcdTA5NTdcN3RcMlwyXHUwOTU3XHUwOTU4XDdnXDJcMlx1MDk1 OFx1MDk1OSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN2hcMlwyXHUwOTU5XHUw OTVhXDd4XDJcMlx1MDk1YVx1MDk1Ylw3Y1wyXDJcdTA5NWJcdTA5NWMiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDduXDJcMlx1MDk1Y1x1MDFkMFwzXDJcMlwyXHUwOTVkXHUwOTVl XDdvXDJcMlx1MDk1ZVx1MDk1Zg0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcN2NcMlwyXHUwOTVmXHUwOTYwXDdyXDJcMlx1MDk2MFx1MDFkMlwzXDJcMlwyXHUwOTYxXHUw OTYyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3dFwyXDJcdTA5NjJcdTA5NjNc N2dcMlwyXHUwOTYzXHUwOTY0XDdoXDJcMlx1MDk2NFx1MDk2NSIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcN3RcMlwyXHUwOTY1XHUwOTY2XDdnXDJcMlx1MDk2Nlx1MDk2N1w3dVwy XDJcdTA5NjdcdTA5NjgiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdqXDJcMlx1 MDk2OFx1MDk2OVw3aVwyXDJcdTA5NjlcdTA5NmFcN3dcMlwyXHUwOTZhXHUwOTZiIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3a1wyXDJcdTA5NmJcdTA5NmNcN2ZcMlwyXHUwOTZj XHUwMWQ0XDNcMlwyXDJcdTA5NmRcdTA5NmUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXDdVXDJcMlx1MDk2ZVx1MDk2Zlw3VlwyXDJcdTA5NmZcdTA5NzBcN1RcMlwyXHUwOTcwXHUw OTcxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3S1wyXDJcdTA5NzFcdTA5NzJc N1BcMlwyXHUwOTcyXHUwOTczXDdJXDJcMlx1MDk3M1x1MDk3NCIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcN2FcMlwyXHUwOTc0XHUwOTc1XDdWXDJcMlx1MDk3NVx1MDk3Nlw3UVwy XDJcdTA5NzZcdTA5NzciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdNXDJcMlx1 MDk3N1x1MDk3OFw3R1wyXDJcdTA5NzhcdTA5NzlcN1BcMlwyXHUwOTc5XHUwMWQ2DQo+ID4gIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwOTdhXHUwOTdiXDdRXDJc Mlx1MDk3Ylx1MDk3Y1w3UlwyXDJcdTA5N2NcdTA5N2QNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXDdWXDJcMlx1MDk3ZFx1MDk3ZVw3S1wyXDJcdTA5N2VcdTA5N2ZcN1Fc MlwyXHUwOTdmXHUwOTgwIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3UFwyXDJc dTA5ODBcdTA5ODFcN2FcMlwyXHUwOTgxXHUwOTgyXDdGXDJcMlx1MDk4Mlx1MDk4MyIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN0dcMlwyXHUwOTgzXHUwOTg0XDdIXDJcMlx1MDk4 NFx1MDk4NVw3Q1wyXDJcdTA5ODVcdTA5ODYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXDdXXDJcMlx1MDk4Nlx1MDk4N1w3TlwyXDJcdTA5ODdcdTA5ODhcN1ZcMlwyXHUwOTg4XHUw MWQ4DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwOTg5 XHUwOThhXDdRXDJcMlx1MDk4YVx1MDk4Ylw3UlwyXDJcdTA5OGJcdTA5OGMNCj4gPiAiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdWXDJcMlx1MDk4Y1x1MDk4ZFw3S1wyXDJcdTA5 OGRcdTA5OGVcN1FcMlwyXHUwOThlXHUwOThmDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlw3UFwyXDJcdTA5OGZcdTA5OTBcN2FcMlwyXHUwOTkwXHUwOTkxXDdGXDJcMlx1 MDk5MVx1MDk5MiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN0dcMlwyXHUwOTky XHUwOTkzXDdIXDJcMlx1MDk5M1x1MDk5NFw3Q1wyXDJcdTA5OTRcdTA5OTUiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdXXDJcMlx1MDk5NVx1MDk5Nlw3TlwyXDJcdTA5OTZcdTA5 OTdcN1ZcMlwyXHUwOTk3XHUwOTk4DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlw3YVwyXDJcdTA5OThcdTA5OTlcN09cMlwyXHUwOTk5XHUwOTlhXDdIXDJcMlx1MDk5YVx1 MDk5YiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN0lcMlwyXHUwOTliXHUwMWRh XDNcMlwyXDJcdTA5OWNcdTA5OWRcN1BcMlwyXHUwOTlkXHUwOTllDQo+ID4gIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3V1wyXDJcdTA5OWVcdTA5OWZcN09cMlwyXHUwOTlmXHUw OWEwXDdHXDJcMlx1MDlhMFx1MDlhMQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcN1RcMlwyXHUwOWExXHUwOWEyXDdLXDJcMlx1MDlhMlx1MDlhM1w3RVwyXDJcdTA5YTNc dTA5YTQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdhXDJcMlx1MDlhNFx1MDlh NVw3VVwyXDJcdTA5YTVcdTA5YTZcN0tcMlwyXHUwOWE2XHUwOWE3IikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlw3XFxcMlwyXHUwOWE3XHUwOWE4XDdHXDJcMlx1MDlhOFx1MDlhOVw3 YVwyXDJcdTA5YTlcdTA5YWENCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdc NjNcMlwyXHUwOWFhXHUwMWRjXDNcMlwyXDJcdTA5YWJcdTA5YWNcN1BcMlwyXHUwOWFjIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDlhZFw3V1wyXDJcdTA5YWRcdTA5YWVcN09c MlwyXHUwOWFlXHUwOWFmXDdHXDJcMlx1MDlhZg0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTA5YjBcN1RcMlwyXHUwOWIwXHUwOWIxXDdLXDJcMlx1MDliMVx1MDliMlw3 RVwyXDJcdTA5YjINCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOWIz XDdhXDJcMlx1MDliM1x1MDliNFw3VVwyXDJcdTA5YjRcdTA5YjVcN0tcMlwyXHUwOWI1DQo+ID4g IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDliNlw3XFxcMlwyXHUwOWI2XHUw OWI3XDdHXDJcMlx1MDliN1x1MDliOFw3YVwyXDJcdTA5Yg0KPiA+IDgiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXHUwOWI5XDdcNjRcMlwyXHUwOWI5XHUwMWRlXDNcMlwyXDJcdTA5YmFc dTA5YmJcN1BcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDliYlx1MDliY1w3 V1wyXDJcdTA5YmNcdTA5YmRcN09cMlwyXHUwOWJkXHUwOWJlXDdHIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlwyXDJcdTA5YmVcdTA5YmZcN1RcMlwyXHUwOWJmXHUwOWMwXDdLXDJcMlx1 MDljMFx1MDljMSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN0VcMlwyXHUwOWMx XHUwOWMyXDdhXDJcMlx1MDljMlx1MDljM1w3VVwyXDJcdTA5YzNcdTA5YzQiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdLXDJcMlx1MDljNFx1MDljNVw3XFxcMlwyXHUwOWM1XHUw OWM2XDdHXDJcMlx1MDljNlx1MDljNyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDdhXDJc Mlx1MDljN1x1MDljOFw3XDY2XDJcMlx1MDljOFx1MDFlMFwzXDJcMlwyXHUwOWM5IikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDljYVw3UFwyXDJcdTA5Y2FcdTA5Y2JcN1dcMlwy XHUwOWNiXHUwOWNjXDdPXDJcMlx1MDljYyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcdTA5Y2RcN0dcMlwyXHUwOWNkXHUwOWNlXDdUXDJcMlx1MDljZVx1MDljZlw3S1wyXDJcdTA5 Y2YiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOWQwXDdFXDJcMlx1MDlkMFx1 MDlkMVw3YVwyXDJcdTA5ZDFcdTA5ZDJcN1VcMlwyXHUwOWQyDQo+ID4gIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlx1MDlkM1w3S1wyXDJcdTA5ZDNcdTA5ZDRcN1xcXDJcMlx1MDlk NFx1MDlkNVw3R1wyXDJcdTA5ZA0KPiA+IDUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwOWQ2XDdhXDJcMlx1MDlkNlx1MDlkN1w3OlwyXDJcdTA5ZDdcdTAxZTJcM1wyXDJcMlx1 MDlkOA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA5ZDlcN0ZcMlwy XHUwOWQ5XHUwOWRhXDdLXDJcMlx1MDlkYVx1MDlkYlw3VVwyXDJcdTA5ZGINCj4gPiAiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOWRjXDdSXDJcMlx1MDlkY1x1MDlkZFw3Tlwy XDJcdTA5ZGRcdTA5ZGVcN0NcMlwyXHUwOWQNCj4gPiBlIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDlkZlw3W1wyXDJcdTA5ZGZcdTA5ZTBcN2FcMlwyXHUwOWUwXHUwOWUxXDdL XDJcMlx1MDllMSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA5ZTJcN1BcMlwy XHUwOWUyXHUwOWUzXDdWXDJcMlx1MDllM1x1MDllNFw3YVwyXDJcdTA5ZTQNCj4gPiAiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOWU1XDdGXDJcMlx1MDllNVx1MDllNlw3R1wy XDJcdTA5ZTZcdTA5ZTdcN0VcMlwyXHUwOWU3DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDFlNFwzXDJcMlwyXHUwOWU4XHUwOWU5XDdGXDJcMlx1MDllOVx1MDllYVw3 S1wyXDJcdTA5ZQ0KPiA+IGEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOWVi XDdVXDJcMlx1MDllYlx1MDllY1w3UlwyXDJcdTA5ZWNcdTA5ZWRcN05cMlwyXHUwOWUNCj4gPiBk IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDllZVw3Q1wyXDJcdTA5ZWVcdTA5 ZWZcN1tcMlwyXHUwOWVmXHUwOWYwXDdhXDJcMlx1MDlmMCIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTA5ZjFcN1dcMlwyXHUwOWYxXHUwOWYyXDdLXDJcMlx1MDlmMlx1MDlmM1w3 UFwyXDJcdTA5ZjMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOWY0XDdWXDJcMlx1 MDlmNFx1MDlmNVw3YVwyXDJcdTA5ZjVcdTA5ZjZcN0ZcMlwyXHUwOWY2IikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlx1MDlmN1w3R1wyXDJcdTA5ZjdcdTA5ZjhcN0VcMlwyXHUwOWY4 XHUwMWU2XDNcMlwyXDJcdTA5ZjkiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOWZh XDdGXDJcMlx1MDlmYVx1MDlmYlw3S1wyXDJcdTA5ZmJcdTA5ZmNcN1VcMlwyXHUwOWZjIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDlmZFw3UlwyXDJcdTA5ZmRcdTA5ZmVcN05cMlwy XHUwOWZlXHUwOWZmXDdDXDJcMlx1MDlmZiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcdTBhMDBcN1tcMlwyXHUwYTAwXHUwYTAxXDdhXDJcMlx1MGEwMVx1MGEwMlw3V1wyXDJcdTBh MDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwYTAzXDdLXDJcMlx1MGEwM1x1 MGEwNFw3UFwyXDJcdTBhMDRcdTBhMDVcN1ZcMlwyXHUwYTA1IikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MGEwNlw3YVwyXDJcdTBhMDZcdTBhMDdcN0pcMlwyXHUwYTA3XHUwYTA4 XDdHXDJcMlx1MGEwOCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTBhMDlcN1pc MlwyXHUwYTA5XHUwMWU4XDNcMlwyXDJcdTBhMGFcdTBhMGJcN0tcMlwyXHUwYTBiDQo+ID4gIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MGEwY1w3UFwyXDJcdTBhMGNcdTBhMGRc N1VcMlwyXHUwYTBkXHUwYTBlXDdHXDJcMlx1MGEwZQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcdTBhMGZcN1BcMlwyXHUwYTBmXHUwYTEwXDdVXDJcMlx1MGExMFx1MGEx MVw3S1wyXDJcdTBhMTEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwYTEyXDdW XDJcMlx1MGExMlx1MGExM1w3S1wyXDJcdTBhMTNcdTBhMTRcN1hcMlwyXHUwYTE0IikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MGExNVw3R1wyXDJcdTBhMTVcdTAxZWFcM1wyXDJc Mlx1MGExNlx1MGExN1w3VVwyXDJcdTBhMQ0KPiA+IDciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwYTE4XDdHXDJcMlx1MGExOFx1MGExOVw3UFwyXDJcdTBhMTlcdTBhMWFcN1Vc MlwyXHUwYTFhDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MGExYlw3 S1wyXDJcdTBhMWJcdTBhMWNcN1ZcMlwyXHUwYTFjXHUwYTFkXDdLXDJcMlx1MGExZCIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTBhMWVcN1hcMlwyXHUwYTFlXHUwYTFmXDdHXDJc Mlx1MGExZlx1MDFlY1wzXDJcMlwyXHUwYTIwDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MGEyMVw3TlwyXDJcdTBhMjFcdTBhMjJcN0NcMlwyXHUwYTIyXHUwYTIzXDdV XDJcMlx1MGEyMw0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTBhMjRc N1ZcMlwyXHUwYTI0XHUwYTI1XDdhXDJcMlx1MGEyNVx1MGEyNlw3UFwyXDJcdTBhMjYiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwYTI3XDdRXDJcMlx1MGEyN1x1MGEyOFw3UFwy XDJcdTBhMjhcdTBhMjlcN2FcMlwyXHUwYTI5IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MGEyYVw3T1wyXDJcdTBhMmFcdTBhMmJcN0NcMlwyXHUwYTJiXHUwYTJjXDdWXDJcMlx1 MGEyYyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTBhMmRcN0VcMlwyXHUwYTJk XHUwYTJlXDdKXDJcMlx1MGEyZVx1MDFlZVwzXDJcMlwyXHUwYTJmDQo+ID4gIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MGEzMFw3SFwyXDJcdTBhMzBcdTBhMzFcN0tcMlwyXHUw YTMxXHUwYTMyXDdUXDJcMlx1MGEzMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTBhMzNcN1VcMlwyXHUwYTMzXHUwYTM0XDdWXDJcMlx1MGEzNFx1MGEzNVw3YVwyXDJcdTBhMzUi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwYTM2XDdQXDJcMlx1MGEzNlx1MGEz N1w3UVwyXDJcdTBhMzdcdTBhMzhcN1BcMlwyXHUwYTM4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MGEzOVw3YVwyXDJcdTBhMzlcdTBhM2FcN09cMlwyXHUwYTNhXHUwYTNiXDdD XDJcMlx1MGEzYiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTBhM2NcN1ZcMlwy XHUwYTNjXHUwYTNkXDdFXDJcMlx1MGEzZFx1MGEzZVw3SlwyXDJcdTBhM2UiKQ0KPiA+DQo+ID4g Kw0KPiBidWYud3JpdGUoIlx1MDFmMFwzXDJcMlwyXHUwYTNmXHUwYTQwXDdcNjJcMlwyXHUwYTQw XHUwYTQxXDd6XDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhNDFcdTBhNDNc M1wyXDJcMlx1MGE0Mlx1MGE0NFx0XDJcMlwyXHUwYTQzXHUwYTQyXDMiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwYTQ0XHUwYTQ1XDNcMlwyXDJcdTBhNDVcdTBhNDNc M1wyXDJcMlx1MGE0NVx1MGE0NiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJc Mlx1MGE0Nlx1MGE0ZFwzXDJcMlwyXHUwYTQ3XHUwYTQ5XHRcM1wyXDJcdTBhNDgiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYTQ3XDNcMlwyXDJcdTBhNDlcdTBhNGFcM1wyXDJcMlx1 MGE0YVx1MGE0OFwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGE0YVx1 MGE0YlwzXDJcMlwyXHUwYTRiXHUwYTRkXDNcMlwyXDJcdTBhNGNcdTBhM2ZcMyIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTBhNGNcdTBhNDhcM1wyXDJcMlx1MGE0ZFx1 MDFmMlwzXDJcMlwyXHUwYTRlXHUwYTUyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdFw0 XDJcMlx1MGE0Zlx1MGE1MVx0XDVcMlwyXHUwYTUwXHUwYTRmXDNcMlwyXDJcdTBhNTEiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYTU0XDNcMlwyXDJcdTBhNTJcdTBhNTBcM1wyXDJc Mlx1MGE1Mlx1MGE1M1wzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGE1 M1x1MDFmNFwzXDJcMlwyXHUwYTU0XHUwYTUyXDNcMlwyXDJcdTBhNTVcdTBhNTdcNyIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCIlXDJcMlx1MGE1Nlx1MGE1OFw1XHUwMWZiXHUwMGZlXDJc dTBhNTdcdTBhNTZcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhNTdc dTBhNThcM1wyXDJcMlx1MGE1OFx1MGE1OVwzXDJcMlwyXHUwYTU5XHUwYTVhXDciKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiZlwyXDJcdTBhNWFcdTBhNWJcN2dcMlwyXHUwYTViXHUwYTVj XDdoXDJcMlx1MGE1Y1x1MGE1ZCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN2tc MlwyXHUwYTVkXHUwYTVlXDdwXDJcMlx1MGE1ZVx1MGE1Zlw3Z1wyXDJcdTBhNWZcdTBhNjMiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhNjBcdTBhNjJcblw2XDJcMlx1 MGE2MVx1MGE2MFwzXDJcMlwyXHUwYTYyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1 MGE2NVwzXDJcMlwyXHUwYTYzXHUwYTYxXDNcMlwyXDJcdTBhNjNcdTBhNjRcM1wyXDJcMiIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhNjRcdTBhNjZcM1wyXDJcMlx1MGE2NVx1MGE2 M1wzXDJcMlwyXHUwYTY2XHUwYTY3XGIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw MGZiXDJcMlx1MGE2N1x1MDFmNlwzXDJcMlwyXHUwYTY4XHUwYTZhXDclXDJcMlx1MGE2OSIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhNmJcNVx1MDFmYlx1MDBmZVwyXHUwYTZhXHUw YTY5XDNcMlwyXDJcdTBhNmFcdTBhNmIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJc MlwyXHUwYTZiXHUwYTZjXDNcMlwyXDJcdTBhNmNcdTBhNmRcN25cMlwyXHUwYTZkIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MGE2ZVw3a1wyXDJcdTBhNmVcdTBhNmZcN3BcMlwy XHUwYTZmXHUwYTcwXDdnXDJcMlx1MGE3MCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTBhNzRcM1wyXDJcMlx1MGE3MVx1MGE3M1xuXDZcMlwyXHUwYTcyXHUwYTcxXDNcMlwyXDIiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYTczXHUwYTc2XDNcMlwyXDJcdTBhNzRcdTBh NzJcM1wyXDJcMlx1MGE3NFx1MGE3NVwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo IlwyXDJcMlx1MGE3NVx1MGE3N1wzXDJcMlwyXHUwYTc2XHUwYTc0XDNcMlwyXDJcdTBhNzdcdTBh NzgiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXGJcdTAwZmNcMlwyXHUwYTc4XHUw MWY4XDNcMlwyXDJcdTBhNzlcdTBhN2JcNyVcMlwyXHUwYTdhIikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlx1MGE3Y1w1XHUwMWZiXHUwMGZlXDJcdTBhN2JcdTBhN2FcM1wyXDJcMlx1MGE3 Ylx1MGE3YyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhN2NcdTBhN2Rc M1wyXDJcMlx1MGE3ZFx1MGE3ZVw3a1wyXDJcdTBhN2UiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwYTdmXDdwXDJcMlx1MGE3Zlx1MGE4MFw3ZVwyXDJcdTBhODBcdTBhODFcN25c MlwyXHUwYTgxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MGE4Mlw3d1wyXDJc dTBhODJcdTBhODNcN2ZcMlwyXHUwYTgzXHUwYTg0XDdnXDJcMlx1MGE4NCIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTBhODhcM1wyXDJcMlx1MGE4NVx1MGE4N1xuXDZcMlwyXHUwYTg2 XHUwYTg1XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYTg3XHUwYThh XDNcMlwyXDJcdTBhODhcdTBhODZcM1wyXDJcMlx1MGE4OFx1MGE4OVwzIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MGE4OVx1MGE4YlwzXDJcMlwyXHUwYThhXHUwYTg4 XDNcMlwyXDJcdTBhOGJcdTBhOGMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXGJc dTAwZmRcMlwyXHUwYThjXHUwMWZhXDNcMlwyXDJcdTBhOGRcdTBhOGZcdFw3XDJcMlx1MGE4ZSIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhOGRcM1wyXDJcMlx1MGE4Zlx1MGE5MFwz XDJcMlwyXHUwYTkwXHUwYThlXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XHUwYTkwXHUwYTkxXDNcMlwyXDJcdTBhOTFcdTBhOTJcM1wyXDJcMlx1MGE5Mlx1MGE5M1xiIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDBmZVwyXDJcdTBhOTNcdTAxZmNcM1wyXDJc Mlx1MGE5NFx1MGE5Nlw3XDE3XDJcMlx1MGE5NSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgi XHUwYTk3XDdcZlwyXDJcdTBhOTZcdTBhOTVcM1wyXDJcMlx1MGE5Nlx1MGE5N1wzXDJcMlwyIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGE5N1x1MGE5YVwzXDJcMlwyXHUwYTk4XHUw YTlhXDdcZlwyXDJcdTBhOTlcdTBhOTRcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcMlwyXDJcdTBhOTlcdTBhOThcM1wyXDJcMlx1MGE5YVx1MGE5YlwzXDJcMlwyXHUwYTliXHUw YTljIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcYlx1MDBmZlwyXDJcdTBhOWNcdTAxZmVc M1wyXDJcMlx1MGE5ZFx1MGE5ZVw3XDYxXDJcMiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgi XHUwYTllXHUwYTlmXDdcNjFcMlwyXHUwYTlmXHUwYWEzXDNcMlwyXDJcdTBhYTBcdTBhYTIiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXG5cYlwyXDJcdTBhYTFcdTBhYTBcM1wyXDJcMlx1 MGFhMlx1MGFhNVwzXDJcMlwyXHUwYWEzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1 MGFhMVwzXDJcMlwyXHUwYWEzXHUwYWE0XDNcMlwyXDJcdTBhYTRcdTBhYTZcM1wyXDJcMiIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTBhYTVcdTBhYTNcM1wyXDJcMlx1MGFhNlx1 MGFhN1xiXHUwMTAwXDJcMlx1MGFhN1x1MDIwMCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcM1wyXDJcMlx1MGFhOFx1MGFhOVw3Z1wyXDJcdTBhYTlcdTBhYWFcN3pcMlwyXHUwYWFh XHUwYWFiIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3dlwyXDJcdTBhYWJcdTBh YWNcN2dcMlwyXHUwYWFjXHUwYWFkXDd0XDJcMlx1MGFhZFx1MGFhZSIpDQo+ID4NCj4gPiArDQo+ IGJ1Zi53cml0ZSgiXDdwXDJcMlx1MGFhZVx1MGFiMlwzXDJcMlwyXHUwYWFmXHUwYWIxXG5cNlwy XDJcdTBhYjAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYWFmXDNcMlwyXDJcdTBh YjFcdTBhYjRcM1wyXDJcMlx1MGFiMlx1MGFiMFwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlx1MGFiMlx1MGFiM1wzXDJcMlwyXHUwYWIzXHUwYWI1XDNcMlwyXDJcdTBhYjRc dTBhYjJcMyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwYWI1XHUwYWI2XGJc dTAxMDFcMlwyXHUwYWI2XHUwMjAyXDNcMlwyXDJcMjIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDJcdTBhNDVcdTBhNGFcdTBhNGNcdTBhNTJcdTBhNTdcdTBhNjNcdTBhNmFcdTBh NzRcdTBhN2IiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcdTBhODhcdTBhOTBcdTBh OTZcdTBhOTlcdTBhYTNcdTBhYjJcM1xiXDJcMiIpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g YnVmLmdldHZhbHVlKCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBW ZnJTeW50YXhMZXhlcihMZXhlcik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGF0biA9IEFU TkRlc2VyaWFsaXplcigpLmRlc2VyaWFsaXplKHNlcmlhbGl6ZWRBVE4oKSkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgZGVjaXNpb25zVG9ERkEgPSBbIERGQShkcywgaSkgZm9yIGksIGRzIGlu DQo+IGVudW1lcmF0ZShhdG4uZGVjaXNpb25Ub1N0YXRlKSBdDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIFRfXzAgPSAxDQo+ID4NCj4gPiArICAgIFRfXzEgPSAyDQo+ID4NCj4gPiArICAgIFRf XzIgPSAzDQo+ID4NCj4gPiArICAgIFRfXzMgPSA0DQo+ID4NCj4gPiArICAgIFRfXzQgPSA1DQo+ ID4NCj4gPiArICAgIFRfXzUgPSA2DQo+ID4NCj4gPiArICAgIFRfXzYgPSA3DQo+ID4NCj4gPiAr ICAgIFRfXzcgPSA4DQo+ID4NCj4gPiArICAgIFRfXzggPSA5DQo+ID4NCj4gPiArICAgIFRfXzkg PSAxMA0KPiA+DQo+ID4gKyAgICBUX18xMCA9IDExDQo+ID4NCj4gPiArICAgIFRfXzExID0gMTIN Cj4gPg0KPiA+ICsgICAgVF9fMTIgPSAxMw0KPiA+DQo+ID4gKyAgICBUX18xMyA9IDE0DQo+ID4N Cj4gPiArICAgIFRfXzE0ID0gMTUNCj4gPg0KPiA+ICsgICAgVF9fMTUgPSAxNg0KPiA+DQo+ID4g KyAgICBEZWZpbmUgPSAxNw0KPiA+DQo+ID4gKyAgICBJbmNsdWRlID0gMTgNCj4gPg0KPiA+ICsg ICAgRm9ybVBrZ1R5cGUgPSAxOQ0KPiA+DQo+ID4gKyAgICBPcGVuQnJhY2UgPSAyMA0KPiA+DQo+ ID4gKyAgICBDbG9zZUJyYWNlID0gMjENCj4gPg0KPiA+ICsgICAgT3BlblBhcmVuID0gMjINCj4g Pg0KPiA+ICsgICAgQ2xvc2VQYXJlbiA9IDIzDQo+ID4NCj4gPiArICAgIE9wZW5CcmFja2V0ID0g MjQNCj4gPg0KPiA+ICsgICAgQ2xvc2VCcmFja2V0ID0gMjUNCj4gPg0KPiA+ICsgICAgRG90ID0g MjYNCj4gPg0KPiA+ICsgICAgTmVnYXRpdmUgPSAyNw0KPiA+DQo+ID4gKyAgICBDb2xvbiA9IDI4 DQo+ID4NCj4gPiArICAgIFNsYXNoID0gMjkNCj4gPg0KPiA+ICsgICAgU2VtaWNvbG9uID0gMzAN Cj4gPg0KPiA+ICsgICAgQ29tbWEgPSAzMQ0KPiA+DQo+ID4gKyAgICBFcXVhbCA9IDMyDQo+ID4N Cj4gPiArICAgIE5vdEVxdWFsID0gMzMNCj4gPg0KPiA+ICsgICAgTGVzc0VxdWFsID0gMzQNCj4g Pg0KPiA+ICsgICAgTGVzcyA9IDM1DQo+ID4NCj4gPiArICAgIEdyZWF0ZXJFcXVhbCA9IDM2DQo+ ID4NCj4gPiArICAgIEdyZWF0ZXIgPSAzNw0KPiA+DQo+ID4gKyAgICBCaXRXaXNlT3IgPSAzOA0K PiA+DQo+ID4gKyAgICBCaXRXaXNlQW5kID0gMzkNCj4gPg0KPiA+ICsgICAgRGV2aWNlUGF0aCA9 IDQwDQo+ID4NCj4gPiArICAgIEZvcm1TZXQgPSA0MQ0KPiA+DQo+ID4gKyAgICBGb3JtU2V0SWQg PSA0Mg0KPiA+DQo+ID4gKyAgICBFbmRGb3JtU2V0ID0gNDMNCj4gPg0KPiA+ICsgICAgVGl0bGUg PSA0NA0KPiA+DQo+ID4gKyAgICBGb3JtSWQgPSA0NQ0KPiA+DQo+ID4gKyAgICBPbmVPZiA9IDQ2 DQo+ID4NCj4gPiArICAgIEVuZE9uZU9mID0gNDcNCj4gPg0KPiA+ICsgICAgUHJvbXB0ID0gNDgN Cj4gPg0KPiA+ICsgICAgT3JkZXJlZExpc3QgPSA0OQ0KPiA+DQo+ID4gKyAgICBNYXhDb250YWlu ZXJzID0gNTANCj4gPg0KPiA+ICsgICAgRW5kTGlzdCA9IDUxDQo+ID4NCj4gPiArICAgIEVuZEZv cm0gPSA1Mg0KPiA+DQo+ID4gKyAgICBGb3JtID0gNTMNCj4gPg0KPiA+ICsgICAgRm9ybU1hcCA9 IDU0DQo+ID4NCj4gPiArICAgIE1hcFRpdGxlID0gNTUNCj4gPg0KPiA+ICsgICAgTWFwR3VpZCA9 IDU2DQo+ID4NCj4gPiArICAgIFN1YnRpdGxlID0gNTcNCj4gPg0KPiA+ICsgICAgRW5kU3VidGl0 bGUgPSA1OA0KPiA+DQo+ID4gKyAgICBIZWxwID0gNTkNCj4gPg0KPiA+ICsgICAgVGV4dCA9IDYw DQo+ID4NCj4gPiArICAgIE9wdGlvbiA9IDYxDQo+ID4NCj4gPiArICAgIEZMQUdTID0gNjINCj4g Pg0KPiA+ICsgICAgRGF0ZSA9IDYzDQo+ID4NCj4gPiArICAgIEVuZERhdGUgPSA2NA0KPiA+DQo+ ID4gKyAgICBZZWFyID0gNjUNCj4gPg0KPiA+ICsgICAgTW9udGggPSA2Ng0KPiA+DQo+ID4gKyAg ICBEYXkgPSA2Nw0KPiA+DQo+ID4gKyAgICBUaW1lID0gNjgNCj4gPg0KPiA+ICsgICAgRW5kVGlt ZSA9IDY5DQo+ID4NCj4gPiArICAgIEhvdXIgPSA3MA0KPiA+DQo+ID4gKyAgICBNaW51dGUgPSA3 MQ0KPiA+DQo+ID4gKyAgICBTZWNvbmQgPSA3Mg0KPiA+DQo+ID4gKyAgICBHcmF5T3V0SWYgPSA3 Mw0KPiA+DQo+ID4gKyAgICBMYWJlbCA9IDc0DQo+ID4NCj4gPiArICAgIFRpbWVvdXQgPSA3NQ0K PiA+DQo+ID4gKyAgICBJbnZlbnRvcnkgPSA3Ng0KPiA+DQo+ID4gKyAgICBOb25OdkRhdGFNYXAg PSA3Nw0KPiA+DQo+ID4gKyAgICBTdHJ1Y3QgPSA3OA0KPiA+DQo+ID4gKyAgICBVbmlvbiA9IDc5 DQo+ID4NCj4gPiArICAgIEJvb2xlYW4gPSA4MA0KPiA+DQo+ID4gKyAgICBVaW50NjQgPSA4MQ0K PiA+DQo+ID4gKyAgICBVaW50MzIgPSA4Mg0KPiA+DQo+ID4gKyAgICBVaW50MTYgPSA4Mw0KPiA+ DQo+ID4gKyAgICBVaW50OCA9IDg0DQo+ID4NCj4gPiArICAgIEVGSV9TVFJJTkdfSUQgPSA4NQ0K PiA+DQo+ID4gKyAgICBFRklfSElJX0RBVEUgPSA4Ng0KPiA+DQo+ID4gKyAgICBFRklfSElJX1RJ TUUgPSA4Nw0KPiA+DQo+ID4gKyAgICBFRklfSElJX1JFRiA9IDg4DQo+ID4NCj4gPiArICAgIFV1 aWQgPSA4OQ0KPiA+DQo+ID4gKyAgICBDaGVja0JveCA9IDkwDQo+ID4NCj4gPiArICAgIEVuZENo ZWNrQm94ID0gOTENCj4gPg0KPiA+ICsgICAgTnVtZXJpYyA9IDkyDQo+ID4NCj4gPiArICAgIEVu ZE51bWVyaWMgPSA5Mw0KPiA+DQo+ID4gKyAgICBNaW5pbXVtID0gOTQNCj4gPg0KPiA+ICsgICAg TWF4aW11bSA9IDk1DQo+ID4NCj4gPiArICAgIFN0ZXAgPSA5Ng0KPiA+DQo+ID4gKyAgICBEZWZh dWx0ID0gOTcNCj4gPg0KPiA+ICsgICAgUGFzc3dvcmQgPSA5OA0KPiA+DQo+ID4gKyAgICBFbmRQ YXNzd29yZCA9IDk5DQo+ID4NCj4gPiArICAgIFN0cmluZyA9IDEwMA0KPiA+DQo+ID4gKyAgICBF bmRTdHJpbmcgPSAxMDENCj4gPg0KPiA+ICsgICAgTWluU2l6ZSA9IDEwMg0KPiA+DQo+ID4gKyAg ICBNYXhTaXplID0gMTAzDQo+ID4NCj4gPiArICAgIEVuY29kaW5nID0gMTA0DQo+ID4NCj4gPiAr ICAgIFN1cHByZXNzSWYgPSAxMDUNCj4gPg0KPiA+ICsgICAgRGlzYWJsZUlmID0gMTA2DQo+ID4N Cj4gPiArICAgIEhpZGRlbiA9IDEwNw0KPiA+DQo+ID4gKyAgICBHb3RvID0gMTA4DQo+ID4NCj4g PiArICAgIEZvcm1TZXRHdWlkID0gMTA5DQo+ID4NCj4gPiArICAgIEluY29uc2lzdGVudElmID0g MTEwDQo+ID4NCj4gPiArICAgIFdhcm5pbmdJZiA9IDExMQ0KPiA+DQo+ID4gKyAgICBOb1N1Ym1p dElmID0gMTEyDQo+ID4NCj4gPiArICAgIEVuZElmID0gMTEzDQo+ID4NCj4gPiArICAgIEtleSA9 IDExNA0KPiA+DQo+ID4gKyAgICBEZWZhdWx0RmxhZyA9IDExNQ0KPiA+DQo+ID4gKyAgICBNYW51 ZmFjdHVyaW5nRmxhZyA9IDExNg0KPiA+DQo+ID4gKyAgICBDaGVja0JveERlZmF1bHRGbGFnID0g MTE3DQo+ID4NCj4gPiArICAgIENoZWNrQm94RGVmYXVsdE1mZ0ZsYWcgPSAxMTgNCj4gPg0KPiA+ ICsgICAgSW50ZXJhY3RpdmVGbGFnID0gMTE5DQo+ID4NCj4gPiArICAgIE5WQWNjZXNzRmxhZyA9 IDEyMA0KPiA+DQo+ID4gKyAgICBSZXNldFJlcXVpcmVkRmxhZyA9IDEyMQ0KPiA+DQo+ID4gKyAg ICBSZWNvbm5lY3RSZXF1aXJlZEZsYWcgPSAxMjINCj4gPg0KPiA+ICsgICAgTGF0ZUNoZWNrRmxh ZyA9IDEyMw0KPiA+DQo+ID4gKyAgICBSZWFkT25seUZsYWcgPSAxMjQNCj4gPg0KPiA+ICsgICAg T3B0aW9uT25seUZsYWcgPSAxMjUNCj4gPg0KPiA+ICsgICAgUmVzdFN0eWxlRmxhZyA9IDEyNg0K PiA+DQo+ID4gKyAgICBDbGFzcyA9IDEyNw0KPiA+DQo+ID4gKyAgICBTdWJjbGFzcyA9IDEyOA0K PiA+DQo+ID4gKyAgICBDbGFzc0d1aWQgPSAxMjkNCj4gPg0KPiA+ICsgICAgVHlwZURlZiA9IDEz MA0KPiA+DQo+ID4gKyAgICBSZXN0b3JlID0gMTMxDQo+ID4NCj4gPiArICAgIFNhdmUgPSAxMzIN Cj4gPg0KPiA+ICsgICAgRGVmYXVsdHMgPSAxMzMNCj4gPg0KPiA+ICsgICAgQmFubmVyID0gMTM0 DQo+ID4NCj4gPiArICAgIEFsaWduID0gMTM1DQo+ID4NCj4gPiArICAgIExlZnQgPSAxMzYNCj4g Pg0KPiA+ICsgICAgUmlnaHQgPSAxMzcNCj4gPg0KPiA+ICsgICAgQ2VudGVyID0gMTM4DQo+ID4N Cj4gPiArICAgIExpbmUgPSAxMzkNCj4gPg0KPiA+ICsgICAgTmFtZSA9IDE0MA0KPiA+DQo+ID4g KyAgICBWYXJJZCA9IDE0MQ0KPiA+DQo+ID4gKyAgICBRdWVzdGlvbiA9IDE0Mg0KPiA+DQo+ID4g KyAgICBRdWVzdGlvbklkID0gMTQzDQo+ID4NCj4gPiArICAgIEltYWdlID0gMTQ0DQo+ID4NCj4g PiArICAgIExvY2tlZCA9IDE0NQ0KPiA+DQo+ID4gKyAgICBSdWxlID0gMTQ2DQo+ID4NCj4gPiAr ICAgIEVuZFJ1bGUgPSAxNDcNCj4gPg0KPiA+ICsgICAgVmFsdWUgPSAxNDgNCj4gPg0KPiA+ICsg ICAgUmVhZCA9IDE0OQ0KPiA+DQo+ID4gKyAgICBXcml0ZSA9IDE1MA0KPiA+DQo+ID4gKyAgICBS ZXNldEJ1dHRvbiA9IDE1MQ0KPiA+DQo+ID4gKyAgICBFbmRSZXNldEJ1dHRvbiA9IDE1Mg0KPiA+ DQo+ID4gKyAgICBEZWZhdWx0U3RvcmUgPSAxNTMNCj4gPg0KPiA+ICsgICAgQXR0cmlidXRlID0g MTU0DQo+ID4NCj4gPiArICAgIFZhcnN0b3JlID0gMTU1DQo+ID4NCj4gPiArICAgIEVmaXZhcnN0 b3JlID0gMTU2DQo+ID4NCj4gPiArICAgIFZhclNpemUgPSAxNTcNCj4gPg0KPiA+ICsgICAgTmFt ZVZhbHVlVmFyU3RvcmUgPSAxNTgNCj4gPg0KPiA+ICsgICAgQWN0aW9uID0gMTU5DQo+ID4NCj4g PiArICAgIENvbmZpZyA9IDE2MA0KPiA+DQo+ID4gKyAgICBFbmRBY3Rpb24gPSAxNjENCj4gPg0K PiA+ICsgICAgUmVmcmVzaCA9IDE2Mg0KPiA+DQo+ID4gKyAgICBJbnRlcnZhbCA9IDE2Mw0KPiA+ DQo+ID4gKyAgICBWYXJzdG9yZURldmljZSA9IDE2NA0KPiA+DQo+ID4gKyAgICBHdWlkT3AgPSAx NjUNCj4gPg0KPiA+ICsgICAgRW5kR3VpZE9wID0gMTY2DQo+ID4NCj4gPiArICAgIERhdGFUeXBl ID0gMTY3DQo+ID4NCj4gPiArICAgIERhdGEgPSAxNjgNCj4gPg0KPiA+ICsgICAgTW9kYWwgPSAx NjkNCj4gPg0KPiA+ICsgICAgQ2xhc3NOb25EZXZpY2UgPSAxNzANCj4gPg0KPiA+ICsgICAgQ2xh c3NEaXNrRGV2aWNlID0gMTcxDQo+ID4NCj4gPiArICAgIENsYXNzVmlkZW9EZXZpY2UgPSAxNzIN Cj4gPg0KPiA+ICsgICAgQ2xhc3NOZXR3b3JrRGV2aWNlID0gMTczDQo+ID4NCj4gPiArICAgIENs YXNzSW5wdXREZXZpY2UgPSAxNzQNCj4gPg0KPiA+ICsgICAgQ2xhc3NPbkJvYXJkRGV2aWNlID0g MTc1DQo+ID4NCj4gPiArICAgIENsYXNzT3RoZXJEZXZpY2UgPSAxNzYNCj4gPg0KPiA+ICsgICAg U3ViY2xhc3NTZXR1cEFwcGxpY2F0aW9uID0gMTc3DQo+ID4NCj4gPiArICAgIFN1YmNsYXNzR2Vu ZXJhbEFwcGxpY2F0aW9uID0gMTc4DQo+ID4NCj4gPiArICAgIFN1YmNsYXNzRnJvbnRQYWdlID0g MTc5DQo+ID4NCj4gPiArICAgIFN1YmNsYXNzU2luZ2xlVXNlID0gMTgwDQo+ID4NCj4gPiArICAg IFllYXJTdXBwcHJlc3NGbGFnID0gMTgxDQo+ID4NCj4gPiArICAgIE1vbnRoU3VwcHJlc3NGbGFn ID0gMTgyDQo+ID4NCj4gPiArICAgIERheVN1cHByZXNzRmxhZyA9IDE4Mw0KPiA+DQo+ID4gKyAg ICBIb3VyU3VwcHByZXNzRmxhZyA9IDE4NA0KPiA+DQo+ID4gKyAgICBNaW51dGVTdXBwcmVzc0Zs YWcgPSAxODUNCj4gPg0KPiA+ICsgICAgU2Vjb25kU3VwcHJlc3NGbGFnID0gMTg2DQo+ID4NCj4g PiArICAgIFN0b3JhZ2VOb3JtYWxGbGFnID0gMTg3DQo+ID4NCj4gPiArICAgIFN0b3JhZ2VUaW1l RmxhZyA9IDE4OA0KPiA+DQo+ID4gKyAgICBTdG9yYWdlV2FrZVVwRmxhZyA9IDE4OQ0KPiA+DQo+ ID4gKyAgICBVbmlRdWVGbGFnID0gMTkwDQo+ID4NCj4gPiArICAgIE5vRW1wdHlGbGFnID0gMTkx DQo+ID4NCj4gPiArICAgIENvbmQgPSAxOTINCj4gPg0KPiA+ICsgICAgRmluZCA9IDE5Mw0KPiA+ DQo+ID4gKyAgICBNaWQgPSAxOTQNCj4gPg0KPiA+ICsgICAgVG9rID0gMTk1DQo+ID4NCj4gPiAr ICAgIFNwYW4gPSAxOTYNCj4gPg0KPiA+ICsgICAgRHVwID0gMTk3DQo+ID4NCj4gPiArICAgIFZh ckVxVmFsID0gMTk4DQo+ID4NCj4gPiArICAgIFZhciA9IDE5OQ0KPiA+DQo+ID4gKyAgICBJZEVx VmFsID0gMjAwDQo+ID4NCj4gPiArICAgIElkRXFJZCA9IDIwMQ0KPiA+DQo+ID4gKyAgICBJZEVx VmFsTGlzdCA9IDIwMg0KPiA+DQo+ID4gKyAgICBRdWVzdGlvblJlZiA9IDIwMw0KPiA+DQo+ID4g KyAgICBSdWxlUmVmID0gMjA0DQo+ID4NCj4gPiArICAgIFN0cmluZ1JlZiA9IDIwNQ0KPiA+DQo+ ID4gKyAgICBQdXNoVGhpcyA9IDIwNg0KPiA+DQo+ID4gKyAgICBTZWN1cml0eSA9IDIwNw0KPiA+ DQo+ID4gKyAgICBHZXQgPSAyMDgNCj4gPg0KPiA+ICsgICAgVHJ1ZVN5bWJvbCA9IDIwOQ0KPiA+ DQo+ID4gKyAgICBGYWxzZVN5bWJvbCA9IDIxMA0KPiA+DQo+ID4gKyAgICBPbmUgPSAyMTENCj4g Pg0KPiA+ICsgICAgT25lcyA9IDIxMg0KPiA+DQo+ID4gKyAgICBaZXJvID0gMjEzDQo+ID4NCj4g PiArICAgIFVuZGVmaW5lZCA9IDIxNA0KPiA+DQo+ID4gKyAgICBWZXJzaW9uID0gMjE1DQo+ID4N Cj4gPiArICAgIExlbmd0aCA9IDIxNg0KPiA+DQo+ID4gKyAgICBBTkQgPSAyMTcNCj4gPg0KPiA+ ICsgICAgT1IgPSAyMTgNCj4gPg0KPiA+ICsgICAgTk9UID0gMjE5DQo+ID4NCj4gPiArICAgIFNl dCA9IDIyMA0KPiA+DQo+ID4gKyAgICBCaXRXaXNlTm90ID0gMjIxDQo+ID4NCj4gPiArICAgIEJv b2xWYWwgPSAyMjINCj4gPg0KPiA+ICsgICAgU3RyaW5nVmFsID0gMjIzDQo+ID4NCj4gPiArICAg IFVuSW50VmFsID0gMjI0DQo+ID4NCj4gPiArICAgIFRvVXBwZXIgPSAyMjUNCj4gPg0KPiA+ICsg ICAgVG9Mb3dlciA9IDIyNg0KPiA+DQo+ID4gKyAgICBNYXRjaCA9IDIyNw0KPiA+DQo+ID4gKyAg ICBNYXRjaDIgPSAyMjgNCj4gPg0KPiA+ICsgICAgQ2F0ZW5hdGUgPSAyMjkNCj4gPg0KPiA+ICsg ICAgUXVlc3Rpb25SZWZWYWwgPSAyMzANCj4gPg0KPiA+ICsgICAgU3RyaW5nUmVmVmFsID0gMjMx DQo+ID4NCj4gPiArICAgIE1hcCA9IDIzMg0KPiA+DQo+ID4gKyAgICBSZWZyZXNoR3VpZCA9IDIz Mw0KPiA+DQo+ID4gKyAgICBTdHJpbmdUb2tlbiA9IDIzNA0KPiA+DQo+ID4gKyAgICBPcHRpb25E ZWZhdWx0ID0gMjM1DQo+ID4NCj4gPiArICAgIE9wdGlvbkRlZmF1bHRNZmcgPSAyMzYNCj4gPg0K PiA+ICsgICAgTnVtZXJpY1NpemVPbmUgPSAyMzcNCj4gPg0KPiA+ICsgICAgTnVtZXJpY1NpemVU d28gPSAyMzgNCj4gPg0KPiA+ICsgICAgTnVtZXJpY1NpemVGb3VyID0gMjM5DQo+ID4NCj4gPiAr ICAgIE51bWVyaWNTaXplRWlnaHQgPSAyNDANCj4gPg0KPiA+ICsgICAgRGlzUGxheUludERlYyA9 IDI0MQ0KPiA+DQo+ID4gKyAgICBEaXNQbGF5VUludERlYyA9IDI0Mg0KPiA+DQo+ID4gKyAgICBE aXNQbGF5VUludEhleCA9IDI0Mw0KPiA+DQo+ID4gKyAgICBJbnNlbnNpdGl2ZSA9IDI0NA0KPiA+ DQo+ID4gKyAgICBTZW5zaXRpdmUgPSAyNDUNCj4gPg0KPiA+ICsgICAgTGFzdE5vbk1hdGNoID0g MjQ2DQo+ID4NCj4gPiArICAgIEZpcnN0Tm9uTWF0Y2ggPSAyNDcNCj4gPg0KPiA+ICsgICAgTnVt YmVyID0gMjQ4DQo+ID4NCj4gPiArICAgIFN0cmluZ0lkZW50aWZpZXIgPSAyNDkNCj4gPg0KPiA+ ICsgICAgQ29tcGxleERlZmluZSA9IDI1MA0KPiA+DQo+ID4gKyAgICBMaW5lRGVmaW5pdGlvbiA9 IDI1MQ0KPiA+DQo+ID4gKyAgICBJbmNsdWRlRGVmaW5pdGlvbiA9IDI1Mg0KPiA+DQo+ID4gKyAg ICBXaGl0ZXNwYWNlID0gMjUzDQo+ID4NCj4gPiArICAgIE5ld2xpbmUgPSAyNTQNCj4gPg0KPiA+ ICsgICAgTGluZUNvbW1lbnQgPSAyNTUNCj4gPg0KPiA+ICsgICAgRXh0ZXJuID0gMjU2DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGNoYW5uZWxOYW1lcyA9IFsgdSJERUZBVUxUX1RPS0VOX0NI QU5ORUwiLCB1IkhJRERFTiIgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBtb2RlTmFtZXMg PSBbICJERUZBVUxUX01PREUiIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgbGl0ZXJhbE5h bWVzID0gWyAiPElOVkFMSUQ+IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJ3Nob3cnIiwgIidw dXNoJyIsICIncG9wJyIsICInI3ByYWdtYSciLCAiJ3BhY2snIiwgIic9JyIsDQo+ID4gIidJTUFH RV9UT0tFTiciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInSE9SSVpPTlRBTCciLCAiJ01VTFRJ X0xJTkUnIiwgIic8PCciLCAiJz4+JyIsICInKyciLCAiJyonIiwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAiJyUnIiwgIidmb3JtYXQnIiwgIic/JyIsICInI2RlZmluZSciLCAiJyNpbmNsdWRlJyIs ICInZm9ybXBrZ3R5cGUnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJ3snIiwgIid9JyIsICIn KCciLCAiJyknIiwgIidbJyIsICInXSciLCAiJy4nIiwgIictJyIsICInOiciLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICInLyciLCAiJzsnIiwgIicsJyIsICInPT0nIiwgIichPSciLCAiJzw9JyIs ICInPCciLCAiJz49JyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIic+JyIsICInfCciLCAiJyYn IiwgIidkZXZpY2VwYXRoJyIsICInZm9ybXNldCciLCAiJ2Zvcm1zZXRpZCciLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICInZW5kZm9ybXNldCciLCAiJ3RpdGxlJyIsICInZm9ybWlkJyIsICInb25l b2YnIiwgIidlbmRvbmVvZiciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICIncHJvbXB0JyIsICIn b3JkZXJlZGxpc3QnIiwgIidtYXhjb250YWluZXJzJyIsICInZW5kbGlzdCciLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICInZW5kZm9ybSciLCAiJ2Zvcm0nIiwgIidmb3JtbWFwJyIsICInbWFwdGl0 bGUnIiwgIidtYXBndWlkJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIidzdWJ0aXRsZSciLCAi J2VuZHN1YnRpdGxlJyIsICInaGVscCciLCAiJ3RleHQnIiwgIidvcHRpb24nIiwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAiJ2ZsYWdzJyIsICInZGF0ZSciLCAiJ2VuZGRhdGUnIiwgIid5ZWFyJyIs ICInbW9udGgnIiwgIidkYXknIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJ3RpbWUnIiwgIidl bmR0aW1lJyIsICInaG91ciciLCAiJ21pbnV0ZSciLCAiJ3NlY29uZCciLCAiJ2dyYXlvdXRpZici LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInbGFiZWwnIiwgIid0aW1lb3V0JyIsICInaW52ZW50 b3J5JyIsICInX05PTl9OVl9EQVRBX01BUCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInc3Ry dWN0JyIsICIndW5pb24nIiwgIidCT09MRUFOJyIsICInVUlOVDY0JyIsICInVUlOVDMyJyIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgIidVSU5UMTYnIiwgIidVSU5UOCciLCAiJ0VGSV9TVFJJTkdf SUQnIiwgIidFRklfSElJX0RBVEUnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJ0VGSV9ISUlf VElNRSciLCAiJ0VGSV9ISUlfUkVGJyIsICInZ3VpZCciLCAiJ2NoZWNrYm94JyIsDQo+ID4gIidl bmRjaGVja2JveCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInbnVtZXJpYyciLCAiJ2VuZG51 bWVyaWMnIiwgIidtaW5pbXVtJyIsICInbWF4aW11bSciLCAiJ3N0ZXAnIiwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAiJ2RlZmF1bHQnIiwgIidwYXNzd29yZCciLCAiJ2VuZHBhc3N3b3JkJyIsICIn c3RyaW5nJyIsICInZW5kc3RyaW5nJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIidtaW5zaXpl JyIsICInbWF4c2l6ZSciLCAiJ2VuY29kaW5nJyIsICInc3VwcHJlc3NpZiciLCAiJ2Rpc2FibGVp ZiciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInaGlkZGVuJyIsICInZ290byciLCAiJ2Zvcm1z ZXRndWlkJyIsICInaW5jb25zaXN0ZW50aWYnIiwgIid3YXJuaW5naWYnIiwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAiJ25vc3VibWl0aWYnIiwgIidlbmRpZiciLCAiJ2tleSciLCAiJ0RFRkFVTFQn IiwgIidNQU5VRkFDVFVSSU5HJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIidDSEVDS0JPWF9E RUZBVUxUJyIsICInQ0hFQ0tCT1hfREVGQVVMVF9NRkcnIiwNCj4gPiAiJ0lOVEVSQUNUSVZFJyIs DQo+ID4NCj4gPiArICAgICAgICAgICAgIidOVl9BQ0NFU1MnIiwgIidSRVNFVF9SRVFVSVJFRCci LCAiJ1JFQ09OTkVDVF9SRVFVSVJFRCciLA0KPiA+ICInTEFURV9DSEVDSyciLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICInUkVBRF9PTkxZJyIsICInT1BUSU9OU19PTkxZJyIsICInUkVTVF9TVFlM RSciLCAiJ2NsYXNzJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIidzdWJjbGFzcyciLCAiJ2Ns YXNzZ3VpZCciLCAiJ3R5cGVkZWYnIiwgIidyZXN0b3JlJyIsICInc2F2ZSciLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICInZGVmYXVsdHMnIiwgIidiYW5uZXInIiwgIidhbGlnbiciLCAiJ2xlZnQn IiwgIidyaWdodCciLCAiJ2NlbnRlciciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInbGluZSci LCAiJ25hbWUnIiwgIid2YXJpZCciLCAiJ3F1ZXN0aW9uJyIsICIncXVlc3Rpb25pZCciLA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICInaW1hZ2UnIiwgIidsb2NrZWQnIiwgIidydWxlJyIsICInZW5k cnVsZSciLCAiJ3ZhbHVlJyIsICIncmVhZCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInd3Jp dGUnIiwgIidyZXNldGJ1dHRvbiciLCAiJ2VuZHJlc2V0YnV0dG9uJyIsICInZGVmYXVsdHN0b3Jl JyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIidhdHRyaWJ1dGUnIiwgIid2YXJzdG9yZSciLCAi J2VmaXZhcnN0b3JlJyIsICIndmFyc2l6ZSciLA0KPiA+ICInbmFtZXZhbHVldmFyc3RvcmUnIiwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAiJ2FjdGlvbiciLCAiJ2NvbmZpZyciLCAiJ2VuZGFjdGlv biciLCAiJ3JlZnJlc2gnIiwgIidpbnRlcnZhbCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICIn dmFyc3RvcmVkZXZpY2UnIiwgIidndWlkb3AnIiwgIidlbmRndWlkb3AnIiwgIidkYXRhdHlwZSci LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInZGF0YSciLCAiJ21vZGFsJyIsICInTk9OX0RFVklD RSciLCAiJ0RJU0tfREVWSUNFJyIsDQo+ID4gIidWSURFT19ERVZJQ0UnIiwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAiJ05FVFdPUktfREVWSUNFJyIsICInSU5QVVRfREVWSUNFJyIsICInT05CT0FS RF9ERVZJQ0UnIiwNCj4gPiAiJ09USEVSX0RFVklDRSciLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICInU0VUVVBfQVBQTElDQVRJT04nIiwgIidHRU5FUkFMX0FQUExJQ0FUSU9OJyIsDQo+ID4gIidG Uk9OVF9QQUdFJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIidTSU5HTEVfVVNFJyIsICInWUVB Ul9TVVBQUkVTUyciLCAiJ01PTlRIX1NVUFBSRVNTJyIsDQo+ID4gIidEQVlfU1VQUFJFU1MnIiwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAiJ0hPVVJfU1VQUFJFU1MnIiwgIidNSU5VVEVfU1VQUFJF U1MnIiwNCj4gIidTRUNPTkRfU1VQUFJFU1MnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJ1NU T1JBR0VfTk9STUFMJyIsICInU1RPUkFHRV9USU1FJyIsICInU1RPUkFHRV9XQUtFVVAnIiwNCj4g PiAiJ1VOSVFVRSciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInTk9FTVBUWSciLCAiJ2NvbmQn IiwgIidmaW5kJyIsICInbWlkJyIsICIndG9rZW4nIiwgIidzcGFuJyIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgIidkdXAnIiwgIid2YXJlcXZhbCciLCAiJ3ZhciciLCAiJ2lkZXF2YWwnIiwgIidp ZGVxaWQnIiwgIidpZGVxdmFsbGlzdCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICIncXVlc3Rp b25yZWYnIiwgIidydWxlcmVmJyIsICInc3RyaW5ncmVmJyIsICIncHVzaHRoaXMnIiwgIidzZWN1 cml0eSciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInZ2V0JyIsICInVFJVRSciLCAiJ0ZBTFNF JyIsICInT05FJyIsICInT05FUyciLCAiJ1pFUk8nIiwNCj4gIidVTkRFRklORUQnIiwNCj4gPg0K PiA+ICsgICAgICAgICAgICAiJ1ZFUlNJT04nIiwgIidsZW5ndGgnIiwgIidBTkQnIiwgIidPUici LCAiJ05PVCciLCAiJ3NldCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInficiLCAiJ2Jvb2x2 YWwnIiwgIidzdHJpbmd2YWwnIiwgIid1bmludHZhbCciLCAiJ3RvdXBwZXInIiwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAiJ3RvbG93ZXInIiwgIidtYXRjaCciLCAiJ21hdGNoMiciLCAiJ2NhdGVu YXRlJyIsICIncXVlc3Rpb25yZWZ2YWwnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJ3N0cmlu Z3JlZnZhbCciLCAiJ21hcCciLCAiJ3JlZnJlc2hndWlkJyIsICInU1RSSU5HX1RPS0VOJyIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgIidPUFRJT05fREVGQVVMVCciLCAiJ09QVElPTl9ERUZBVUxU X01GRyciLA0KPiA+ICInTlVNRVJJQ19TSVpFXzEnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAi J05VTUVSSUNfU0laRV8yJyIsICInTlVNRVJJQ19TSVpFXzQnIiwgIidOVU1FUklDX1NJWkVfOCci LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInRElTUExBWV9JTlRfREVDJyIsICInRElTUExBWV9V SU5UX0RFQyciLA0KPiAiJ0RJU1BMQVlfVUlOVF9IRVgnIiwNCj4gPg0KPiA+ICsgICAgICAgICAg ICAiJ0lOU0VOU0lUSVZFJyIsICInU0VOU0lUSVZFJyIsICInTEFTVF9OT05fTUFUQ0gnIiwNCj4g PiAiJ0ZJUlNUX05PTl9NQVRDSCciIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgc3ltYm9s aWNOYW1lcyA9IFsgIjxJTlZBTElEPiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIkRlZmluZSIs ICJJbmNsdWRlIiwgIkZvcm1Qa2dUeXBlIiwgIk9wZW5CcmFjZSIsICJDbG9zZUJyYWNlIiwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAiT3BlblBhcmVuIiwgIkNsb3NlUGFyZW4iLCAiT3BlbkJyYWNr ZXQiLCAiQ2xvc2VCcmFja2V0IiwgIkRvdCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIk5lZ2F0 aXZlIiwgIkNvbG9uIiwgIlNsYXNoIiwgIlNlbWljb2xvbiIsICJDb21tYSIsICJFcXVhbCIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgIk5vdEVxdWFsIiwgIkxlc3NFcXVhbCIsICJMZXNzIiwgIkdy ZWF0ZXJFcXVhbCIsICJHcmVhdGVyIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiQml0V2lzZU9y IiwgIkJpdFdpc2VBbmQiLCAiRGV2aWNlUGF0aCIsICJGb3JtU2V0IiwgIkZvcm1TZXRJZCIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgIkVuZEZvcm1TZXQiLCAiVGl0bGUiLCAiRm9ybUlkIiwgIk9u ZU9mIiwgIkVuZE9uZU9mIiwgIlByb21wdCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIk9yZGVy ZWRMaXN0IiwgIk1heENvbnRhaW5lcnMiLCAiRW5kTGlzdCIsICJFbmRGb3JtIiwgIkZvcm0iLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICJGb3JtTWFwIiwgIk1hcFRpdGxlIiwgIk1hcEd1aWQiLCAi U3VidGl0bGUiLCAiRW5kU3VidGl0bGUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICJIZWxwIiwg IlRleHQiLCAiT3B0aW9uIiwgIkZMQUdTIiwgIkRhdGUiLCAiRW5kRGF0ZSIsICJZZWFyIiwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAiTW9udGgiLCAiRGF5IiwgIlRpbWUiLCAiRW5kVGltZSIsICJI b3VyIiwgIk1pbnV0ZSIsICJTZWNvbmQiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICJHcmF5T3V0 SWYiLCAiTGFiZWwiLCAiVGltZW91dCIsICJJbnZlbnRvcnkiLCAiTm9uTnZEYXRhTWFwIiwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAiU3RydWN0IiwgIlVuaW9uIiwgIkJvb2xlYW4iLCAiVWludDY0 IiwgIlVpbnQzMiIsICJVaW50MTYiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICJVaW50OCIsICJF RklfU1RSSU5HX0lEIiwgIkVGSV9ISUlfREFURSIsICJFRklfSElJX1RJTUUiLA0KPiA+ICJFRklf SElJX1JFRiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIlV1aWQiLCAiQ2hlY2tCb3giLCAiRW5k Q2hlY2tCb3giLCAiTnVtZXJpYyIsICJFbmROdW1lcmljIiwNCj4gPg0KPiA+ICsgICAgICAgICAg ICAiTWluaW11bSIsICJNYXhpbXVtIiwgIlN0ZXAiLCAiRGVmYXVsdCIsICJQYXNzd29yZCIsDQo+ ID4gIkVuZFBhc3N3b3JkIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiU3RyaW5nIiwgIkVuZFN0 cmluZyIsICJNaW5TaXplIiwgIk1heFNpemUiLCAiRW5jb2RpbmciLA0KPiAiU3VwcHJlc3NJZiIs DQo+ID4NCj4gPiArICAgICAgICAgICAgIkRpc2FibGVJZiIsICJIaWRkZW4iLCAiR290byIsICJG b3JtU2V0R3VpZCIsICJJbmNvbnNpc3RlbnRJZiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIldh cm5pbmdJZiIsICJOb1N1Ym1pdElmIiwgIkVuZElmIiwgIktleSIsICJEZWZhdWx0RmxhZyIsDQo+ ID4gIk1hbnVmYWN0dXJpbmdGbGFnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiQ2hlY2tCb3hE ZWZhdWx0RmxhZyIsICJDaGVja0JveERlZmF1bHRNZmdGbGFnIiwNCj4gIkludGVyYWN0aXZlRmxh ZyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIk5WQWNjZXNzRmxhZyIsICJSZXNldFJlcXVpcmVk RmxhZyIsICJSZWNvbm5lY3RSZXF1aXJlZEZsYWciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICJM YXRlQ2hlY2tGbGFnIiwgIlJlYWRPbmx5RmxhZyIsICJPcHRpb25Pbmx5RmxhZyIsICJSZXN0U3R5 bGVGbGFnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiQ2xhc3MiLCAiU3ViY2xhc3MiLCAiQ2xh c3NHdWlkIiwgIlR5cGVEZWYiLCAiUmVzdG9yZSIsICJTYXZlIiwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAiRGVmYXVsdHMiLCAiQmFubmVyIiwgIkFsaWduIiwgIkxlZnQiLCAiUmlnaHQiLCAiQ2Vu dGVyIiwgIkxpbmUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICJOYW1lIiwgIlZhcklkIiwgIlF1 ZXN0aW9uIiwgIlF1ZXN0aW9uSWQiLCAiSW1hZ2UiLCAiTG9ja2VkIiwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAiUnVsZSIsICJFbmRSdWxlIiwgIlZhbHVlIiwgIlJlYWQiLCAiV3JpdGUiLCAiUmVz ZXRCdXR0b24iLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICJFbmRSZXNldEJ1dHRvbiIsICJEZWZh dWx0U3RvcmUiLCAiQXR0cmlidXRlIiwgIlZhcnN0b3JlIiwNCj4gPiAiRWZpdmFyc3RvcmUiLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICJWYXJTaXplIiwgIk5hbWVWYWx1ZVZhclN0b3JlIiwgIkFj dGlvbiIsICJDb25maWciLCAiRW5kQWN0aW9uIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiUmVm cmVzaCIsICJJbnRlcnZhbCIsICJWYXJzdG9yZURldmljZSIsICJHdWlkT3AiLCAiRW5kR3VpZE9w IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiRGF0YVR5cGUiLCAiRGF0YSIsICJNb2RhbCIsICJD bGFzc05vbkRldmljZSIsICJDbGFzc0Rpc2tEZXZpY2UiLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICJDbGFzc1ZpZGVvRGV2aWNlIiwgIkNsYXNzTmV0d29ya0RldmljZSIsICJDbGFzc0lucHV0RGV2 aWNlIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiQ2xhc3NPbkJvYXJkRGV2aWNlIiwgIkNsYXNz T3RoZXJEZXZpY2UiLA0KPiA+ICJTdWJjbGFzc1NldHVwQXBwbGljYXRpb24iLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICJTdWJjbGFzc0dlbmVyYWxBcHBsaWNhdGlvbiIsICJTdWJjbGFzc0Zyb250 UGFnZSIsDQo+ID4gIlN1YmNsYXNzU2luZ2xlVXNlIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAi WWVhclN1cHBwcmVzc0ZsYWciLCAiTW9udGhTdXBwcmVzc0ZsYWciLCAiRGF5U3VwcHJlc3NGbGFn IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiSG91clN1cHBwcmVzc0ZsYWciLCAiTWludXRlU3Vw cHJlc3NGbGFnIiwNCj4gIlNlY29uZFN1cHByZXNzRmxhZyIsDQo+ID4NCj4gPiArICAgICAgICAg ICAgIlN0b3JhZ2VOb3JtYWxGbGFnIiwgIlN0b3JhZ2VUaW1lRmxhZyIsICJTdG9yYWdlV2FrZVVw RmxhZyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIlVuaVF1ZUZsYWciLCAiTm9FbXB0eUZsYWci LCAiQ29uZCIsICJGaW5kIiwgIk1pZCIsICJUb2siLCAiU3BhbiIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgIkR1cCIsICJWYXJFcVZhbCIsICJWYXIiLCAiSWRFcVZhbCIsICJJZEVxSWQiLCAiSWRF cVZhbExpc3QiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICJRdWVzdGlvblJlZiIsICJSdWxlUmVm IiwgIlN0cmluZ1JlZiIsICJQdXNoVGhpcyIsICJTZWN1cml0eSIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgIkdldCIsICJUcnVlU3ltYm9sIiwgIkZhbHNlU3ltYm9sIiwgIk9uZSIsICJPbmVzIiwg Ilplcm8iLA0KPiA+ICJVbmRlZmluZWQiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICJWZXJzaW9u IiwgIkxlbmd0aCIsICJBTkQiLCAiT1IiLCAiTk9UIiwgIlNldCIsICJCaXRXaXNlTm90IiwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAiQm9vbFZhbCIsICJTdHJpbmdWYWwiLCAiVW5JbnRWYWwiLCAi VG9VcHBlciIsICJUb0xvd2VyIiwgIk1hdGNoIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiTWF0 Y2gyIiwgIkNhdGVuYXRlIiwgIlF1ZXN0aW9uUmVmVmFsIiwgIlN0cmluZ1JlZlZhbCIsICJNYXAi LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICJSZWZyZXNoR3VpZCIsICJTdHJpbmdUb2tlbiIsICJP cHRpb25EZWZhdWx0IiwNCj4gIk9wdGlvbkRlZmF1bHRNZmciLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICJOdW1lcmljU2l6ZU9uZSIsICJOdW1lcmljU2l6ZVR3byIsICJOdW1lcmljU2l6ZUZvdXIi LA0KPiA+ICJOdW1lcmljU2l6ZUVpZ2h0IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiRGlzUGxh eUludERlYyIsICJEaXNQbGF5VUludERlYyIsICJEaXNQbGF5VUludEhleCIsICJJbnNlbnNpdGl2 ZSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIlNlbnNpdGl2ZSIsICJMYXN0Tm9uTWF0Y2giLCAi Rmlyc3ROb25NYXRjaCIsICJOdW1iZXIiLA0KPiA+ICJTdHJpbmdJZGVudGlmaWVyIiwNCj4gPg0K PiA+ICsgICAgICAgICAgICAiQ29tcGxleERlZmluZSIsICJMaW5lRGVmaW5pdGlvbiIsICJJbmNs dWRlRGVmaW5pdGlvbiIsDQo+ICJXaGl0ZXNwYWNlIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAi TmV3bGluZSIsICJMaW5lQ29tbWVudCIsICJFeHRlcm4iIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgcnVsZU5hbWVzID0gWyAiVF9fMCIsICJUX18xIiwgIlRfXzIiLCAiVF9fMyIsICJUX180 IiwgIlRfXzUiLCAiVF9fNiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIlRfXzciLCAi VF9fOCIsICJUX185IiwgIlRfXzEwIiwgIlRfXzExIiwgIlRfXzEyIiwgIlRfXzEzIiwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAiVF9fMTQiLCAiVF9fMTUiLCAiRGVmaW5lIiwgIkluY2x1 ZGUiLCAiRm9ybVBrZ1R5cGUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICJPcGVuQnJh Y2UiLCAiQ2xvc2VCcmFjZSIsICJPcGVuUGFyZW4iLCAiQ2xvc2VQYXJlbiIsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgIk9wZW5CcmFja2V0IiwgIkNsb3NlQnJhY2tldCIsICJEb3QiLCAi TmVnYXRpdmUiLCAiQ29sb24iLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICJTbGFzaCIs ICJTZW1pY29sb24iLCAiQ29tbWEiLCAiRXF1YWwiLCAiTm90RXF1YWwiLCAiTGVzc0VxdWFsIiwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAiTGVzcyIsICJHcmVhdGVyRXF1YWwiLCAiR3Jl YXRlciIsICJCaXRXaXNlT3IiLCAiQml0V2lzZUFuZCIsDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgIkRldmljZVBhdGgiLCAiRm9ybVNldCIsICJGb3JtU2V0SWQiLCAiRW5kRm9ybVNldCIs ICJUaXRsZSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIkZvcm1JZCIsICJPbmVPZiIs ICJFbmRPbmVPZiIsICJQcm9tcHQiLCAiT3JkZXJlZExpc3QiLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICJNYXhDb250YWluZXJzIiwgIkVuZExpc3QiLCAiRW5kRm9ybSIsICJGb3JtIiwg IkZvcm1NYXAiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICJNYXBUaXRsZSIsICJNYXBH dWlkIiwgIlN1YnRpdGxlIiwgIkVuZFN1YnRpdGxlIiwgIkhlbHAiLA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICJUZXh0IiwgIk9wdGlvbiIsICJGTEFHUyIsICJEYXRlIiwgIkVuZERhdGUi LCAiWWVhciIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIk1vbnRoIiwgIkRheSIsICJU aW1lIiwgIkVuZFRpbWUiLCAiSG91ciIsICJNaW51dGUiLCAiU2Vjb25kIiwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAiR3JheU91dElmIiwgIkxhYmVsIiwgIlRpbWVvdXQiLCAiSW52ZW50 b3J5IiwgIk5vbk52RGF0YU1hcCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIlN0cnVj dCIsICJVbmlvbiIsICJCb29sZWFuIiwgIlVpbnQ2NCIsICJVaW50MzIiLCAiVWludDE2IiwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAiVWludDgiLCAiRUZJX1NUUklOR19JRCIsICJFRklf SElJX0RBVEUiLCAiRUZJX0hJSV9USU1FIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAi RUZJX0hJSV9SRUYiLCAiVXVpZCIsICJDaGVja0JveCIsICJFbmRDaGVja0JveCIsICJOdW1lcmlj IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAiRW5kTnVtZXJpYyIsICJNaW5pbXVtIiwg Ik1heGltdW0iLCAiU3RlcCIsICJEZWZhdWx0IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAiUGFzc3dvcmQiLCAiRW5kUGFzc3dvcmQiLCAiU3RyaW5nIiwgIkVuZFN0cmluZyIsICJNaW5T aXplIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAiTWF4U2l6ZSIsICJFbmNvZGluZyIs ICJTdXBwcmVzc0lmIiwgIkRpc2FibGVJZiIsICJIaWRkZW4iLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICJHb3RvIiwgIkZvcm1TZXRHdWlkIiwgIkluY29uc2lzdGVudElmIiwgIldhcm5p bmdJZiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIk5vU3VibWl0SWYiLCAiRW5kSWYi LCAiS2V5IiwgIkRlZmF1bHRGbGFnIiwgIk1hbnVmYWN0dXJpbmdGbGFnIiwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAiQ2hlY2tCb3hEZWZhdWx0RmxhZyIsICJDaGVja0JveERlZmF1bHRN ZmdGbGFnIiwNCj4gPiAiSW50ZXJhY3RpdmVGbGFnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAiTlZBY2Nlc3NGbGFnIiwgIlJlc2V0UmVxdWlyZWRGbGFnIiwgIlJlY29ubmVjdFJlcXVp cmVkRmxhZyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIkxhdGVDaGVja0ZsYWciLCAi UmVhZE9ubHlGbGFnIiwgIk9wdGlvbk9ubHlGbGFnIiwNCj4gPiAiUmVzdFN0eWxlRmxhZyIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIkNsYXNzIiwgIlN1YmNsYXNzIiwgIkNsYXNzR3Vp ZCIsICJUeXBlRGVmIiwgIlJlc3RvcmUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICJT YXZlIiwgIkRlZmF1bHRzIiwgIkJhbm5lciIsICJBbGlnbiIsICJMZWZ0IiwgIlJpZ2h0IiwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAiQ2VudGVyIiwgIkxpbmUiLCAiTmFtZSIsICJWYXJJ ZCIsICJRdWVzdGlvbiIsICJRdWVzdGlvbklkIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAiSW1hZ2UiLCAiTG9ja2VkIiwgIlJ1bGUiLCAiRW5kUnVsZSIsICJWYWx1ZSIsICJSZWFkIiwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAiV3JpdGUiLCAiUmVzZXRCdXR0b24iLCAiRW5k UmVzZXRCdXR0b24iLCAiRGVmYXVsdFN0b3JlIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAiQXR0cmlidXRlIiwgIlZhcnN0b3JlIiwgIkVmaXZhcnN0b3JlIiwgIlZhclNpemUiLA0KPiA+ ICJOYW1lVmFsdWVWYXJTdG9yZSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIkFjdGlv biIsICJDb25maWciLCAiRW5kQWN0aW9uIiwgIlJlZnJlc2giLCAiSW50ZXJ2YWwiLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICJWYXJzdG9yZURldmljZSIsICJHdWlkT3AiLCAiRW5kR3Vp ZE9wIiwgIkRhdGFUeXBlIiwgIkRhdGEiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICJN b2RhbCIsICJDbGFzc05vbkRldmljZSIsICJDbGFzc0Rpc2tEZXZpY2UiLA0KPiAiQ2xhc3NWaWRl b0RldmljZSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIkNsYXNzTmV0d29ya0Rldmlj ZSIsICJDbGFzc0lucHV0RGV2aWNlIiwNCj4gIkNsYXNzT25Cb2FyZERldmljZSIsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgIkNsYXNzT3RoZXJEZXZpY2UiLCAiU3ViY2xhc3NTZXR1cEFw cGxpY2F0aW9uIiwNCj4gPiAiU3ViY2xhc3NHZW5lcmFsQXBwbGljYXRpb24iLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICJTdWJjbGFzc0Zyb250UGFnZSIsICJTdWJjbGFzc1NpbmdsZVVz ZSIsICJZZWFyU3VwcHByZXNzRmxhZyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIk1v bnRoU3VwcHJlc3NGbGFnIiwgIkRheVN1cHByZXNzRmxhZyIsICJIb3VyU3VwcHByZXNzRmxhZyIs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIk1pbnV0ZVN1cHByZXNzRmxhZyIsICJTZWNv bmRTdXBwcmVzc0ZsYWciLA0KPiA+ICJTdG9yYWdlTm9ybWFsRmxhZyIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgIlN0b3JhZ2VUaW1lRmxhZyIsICJTdG9yYWdlV2FrZVVwRmxhZyIsICJV bmlRdWVGbGFnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAiTm9FbXB0eUZsYWciLCAi Q29uZCIsICJGaW5kIiwgIk1pZCIsICJUb2siLCAiU3BhbiIsICJEdXAiLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICJWYXJFcVZhbCIsICJWYXIiLCAiSWRFcVZhbCIsICJJZEVxSWQiLCAi SWRFcVZhbExpc3QiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICJRdWVzdGlvblJlZiIs ICJSdWxlUmVmIiwgIlN0cmluZ1JlZiIsICJQdXNoVGhpcyIsICJTZWN1cml0eSIsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgIkdldCIsICJUcnVlU3ltYm9sIiwgIkZhbHNlU3ltYm9sIiwg Ik9uZSIsICJPbmVzIiwgIlplcm8iLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICJVbmRl ZmluZWQiLCAiVmVyc2lvbiIsICJMZW5ndGgiLCAiQU5EIiwgIk9SIiwgIk5PVCIsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgIlNldCIsICJCaXRXaXNlTm90IiwgIkJvb2xWYWwiLCAiU3Ry aW5nVmFsIiwgIlVuSW50VmFsIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAiVG9VcHBl ciIsICJUb0xvd2VyIiwgIk1hdGNoIiwgIk1hdGNoMiIsICJDYXRlbmF0ZSIsDQo+ID4gIlF1ZXN0 aW9uUmVmVmFsIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAiU3RyaW5nUmVmVmFsIiwg Ik1hcCIsICJSZWZyZXNoR3VpZCIsICJTdHJpbmdUb2tlbiIsDQo+ID4gIk9wdGlvbkRlZmF1bHQi LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICJPcHRpb25EZWZhdWx0TWZnIiwgIk51bWVy aWNTaXplT25lIiwgIk51bWVyaWNTaXplVHdvIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAiTnVtZXJpY1NpemVGb3VyIiwgIk51bWVyaWNTaXplRWlnaHQiLCAiRGlzUGxheUludERlYyIs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIkRpc1BsYXlVSW50RGVjIiwgIkRpc1BsYXlV SW50SGV4IiwgIkluc2Vuc2l0aXZlIiwgIlNlbnNpdGl2ZSIsDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgIkxhc3ROb25NYXRjaCIsICJGaXJzdE5vbk1hdGNoIiwgIk51bWJlciIsICJTdHJp bmdJZGVudGlmaWVyIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAiQ29tcGxleERlZmlu ZSIsICJMaW5lRGVmaW5pdGlvbiIsICJJbmNsdWRlRGVmaW5pdGlvbiIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgIldoaXRlc3BhY2UiLCAiTmV3bGluZSIsICJMaW5lQ29tbWVudCIsICJF eHRlcm4iIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZ3JhbW1hckZpbGVOYW1lID0gIlZm clN5bnRheC5nNCINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYs IGlucHV0PU5vbmUsIG91dHB1dDpUZXh0SU8gPSBzeXMuc3Rkb3V0KToNCj4gPg0KPiA+ICsgICAg ICAgIHN1cGVyKCkuX19pbml0X18oaW5wdXQsIG91dHB1dCkNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuY2hlY2tWZXJzaW9uKCI0LjcuMiIpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9pbnRlcnAg PSBMZXhlckFUTlNpbXVsYXRvcihzZWxmLCBzZWxmLmF0biwgc2VsZi5kZWNpc2lvbnNUb0RGQSwN Cj4gPiBQcmVkaWN0aW9uQ29udGV4dENhY2hlKCkpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9h Y3Rpb25zID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fcHJlZGljYXRlcyA9IE5vbmUN Cj4gPg0KPiA+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxl ci9WZnJTeW50YXhQYXJzZXIucHkNCj4gPiBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNv bXBpbGVyL1ZmclN5bnRheFBhcnNlci5weQ0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4g aW5kZXggMDAwMDAwMDAwMC4uYjZhZjIxYjc5NQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysg Yi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50YXhQYXJzZXIucHkN Cj4gPiBAQCAtMCwwICsxLDIwNDYwIEBADQo+ID4gKyMgR2VuZXJhdGVkIGZyb20gVmZyU3ludGF4 Lmc0IGJ5IEFOVExSIDQuNy4yDQo+ID4NCj4gPiArIyBlbmNvZGluZzogdXRmLTgNCj4gPg0KPiA+ ICtmcm9tIGFudGxyNCBpbXBvcnQgKg0KPiA+DQo+ID4gK2Zyb20gaW8gaW1wb3J0IFN0cmluZ0lP DQo+ID4NCj4gPiArZnJvbSB0eXBpbmcgaW1wb3J0IFRleHRJTw0KPiA+DQo+ID4gK2ltcG9ydCBz eXMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtmcm9tIFZm ckNvbXBpbGVyLkNvbW1vbkN0eXBlcyBpbXBvcnQgKg0KPiA+DQo+ID4gK2Zyb20gVmZyQ29tcGls ZXIuVmZyRm9ybVBrZyBpbXBvcnQgKg0KPiA+DQo+ID4gK2Zyb20gVmZyQ29tcGlsZXIuVmZyVXRp bGl0eSBpbXBvcnQgKg0KPiA+DQo+ID4gK2Zyb20gVmZyQ29tcGlsZXIuVmZyVHJlZSBpbXBvcnQg Kg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2RlZiBzZXJpYWxpemVkQVROKCk6 DQo+ID4NCj4gPiArICAgIHdpdGggU3RyaW5nSU8oKSBhcyBidWY6DQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcM1x1NjA4Ylx1YTcyYVx1ODEzM1x1YjllZFx1NDE3Y1x1M2JlN1x1Nzc4 Nlx1NTk2NFwzXHUwMTANCj4gPiAyIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUw YmEzXDRcMlx0XDJcNFwzXHRcM1w0XDRcdFw0XDRcNVx0XDVcNFw2XHRcNlw0XDdcdFw3IikNCj4g Pg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDRcYlx0XGJcNFx0XHRcdFw0XG5cdFxuXDRcMTNc dFwxM1w0XGZcdFxmXDRcclx0XHJcNFwxNiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUo Ilx0XDE2XDRcMTdcdFwxN1w0XDIwXHRcMjBcNFwyMVx0XDIxXDRcMjJcdFwyMlw0XDIzXHRcMjMi KQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcNFwyNFx0XDI0XDRcMjVcdFwyNVw0XDI2 XHRcMjZcNFwyN1x0XDI3XDRcMzBcdFwzMFw0XDMxIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXHRcMzFcNFwzMlx0XDMyXDRcMzNcdFwzM1w0XDM0XHRcMzRcNFwzNVx0XDM1XDRcMzZc dFwzNiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlw0XDM3XHRcMzdcNCBcdCBcNCFc dCFcNFwiXHRcIlw0I1x0I1w0JFx0JFw0JVx0JVw0Jlx0IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1 Zi53cml0ZSgiJlw0XCdcdFwnXDQoXHQoXDQpXHQpXDQqXHQqXDQrXHQrXDQsXHQsXDQtXHQtXDQu XHQuXDQiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCIvXHQvXDRcNjBcdFw2MFw0XDYx XHRcNjFcNFw2Mlx0XDYyXDRcNjNcdFw2M1w0XDY0XHRcNjQiKQ0KPiA+DQo+ID4gKyAgICAgICAg YnVmLndyaXRlKCJcNFw2NVx0XDY1XDRcNjZcdFw2Nlw0XDY3XHRcNjdcNDhcdDhcNDlcdDlcNDpc dDpcNDtcdCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCI7XDQ8XHQ8XDQ9XHQ9XDQ+XHQ+ XDQ/XHQ/XDRAXHRAXDRBXHRBXDRCXHRCXDRDXHRDXDREXHQiKQ0KPiA+DQo+ID4gKyAgICAgICAg YnVmLndyaXRlKCJEXDRFXHRFXDRGXHRGXDRHXHRHXDRIXHRIXDRJXHRJXDRKXHRKXDRLXHRLXDRM XHRMXDRNXHQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiTVw0Tlx0Tlw0T1x0T1w0UFx0 UFw0UVx0UVw0Ulx0Ulw0U1x0U1w0VFx0VFw0VVx0VVw0Vlx0IikNCj4gPg0KPiA+ICsgICAgICAg IGJ1Zi53cml0ZSgiVlw0V1x0V1w0WFx0WFw0WVx0WVw0Wlx0Wlw0W1x0W1w0XFxcdFxcXDRdXHRd XDReXHReXDQiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJfXHRfXDRgXHRgXDRhXHRh XDRiXHRiXDRjXHRjXDRkXHRkXDRlXHRlXDRmXHRmXDRnXHRnXDQiKQ0KPiA+DQo+ID4gKyAgICAg ICAgYnVmLndyaXRlKCJoXHRoXDRpXHRpXDRqXHRqXDRrXHRrXDRsXHRsXDRtXHRtXDRuXHRuXDRv XHRvXDRwXHRwXDQiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJxXHRxXDRyXHRyXDRz XHRzXDR0XHR0XDR1XHR1XDR2XHR2XDR3XHR3XDR4XHR4XDR5XHR5XDQiKQ0KPiA+DQo+ID4gKw0K PiBidWYud3JpdGUoInpcdHpcNHtcdHtcNHxcdHxcNH1cdH1cNH5cdH5cNFwxNzdcdFwxNzdcNFx1 MDA4MFx0XHUwMDgwIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw0XHUwMDgxXHRcdTAw ODFcNFx1MDA4Mlx0XHUwMDgyXDRcdTAwODNcdFx1MDA4M1w0XHUwMDg0IikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlx0XHUwMDg0XDRcdTAwODVcdFx1MDA4NVw0XHUwMDg2XHRcdTAwODZc NFx1MDA4N1x0XHUwMDg3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw0XHUwMDg4XHRc dTAwODhcNFx1MDA4OVx0XHUwMDg5XDRcdTAwOGFcdFx1MDA4YVw0XHUwMDhiIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlx0XHUwMDhiXDRcdTAwOGNcdFx1MDA4Y1w0XHUwMDhkXHRcdTAw OGRcNFx1MDA4ZVx0XHUwMDhlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw0XHUwMDhm XHRcdTAwOGZcNFx1MDA5MFx0XHUwMDkwXDRcdTAwOTFcdFx1MDA5MVw0XHUwMDkyIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlx0XHUwMDkyXDRcdTAwOTNcdFx1MDA5M1w0XHUwMDk0XHRc dTAwOTRcNFx1MDA5NVx0XHUwMDk1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw0XHUw MDk2XHRcdTAwOTZcNFx1MDA5N1x0XHUwMDk3XDRcdTAwOThcdFx1MDA5OFw0XHUwMDk5IikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx0XHUwMDk5XDRcdTAwOWFcdFx1MDA5YVw0XHUwMDli XHRcdTAwOWJcNFx1MDA5Y1x0XHUwMDljIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw0 XHUwMDlkXHRcdTAwOWRcNFx1MDA5ZVx0XHUwMDllXDRcdTAwOWZcdFx1MDA5Zlw0XHUwMGEwIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx0XHUwMGEwXDRcdTAwYTFcdFx1MDBhMVw0XHUw MGEyXHRcdTAwYTJcNFx1MDBhM1x0XHUwMGEzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilw0XHUwMGE0XHRcdTAwYTRcNFx1MDBhNVx0XHUwMGE1XDRcdTAwYTZcdFx1MDBhNlw0XHUwMGE3 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx0XHUwMGE3XDRcdTAwYThcdFx1MDBhOFw0 XHUwMGE5XHRcdTAwYTlcNFx1MDBhYVx0XHUwMGFhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlw0XHUwMGFiXHRcdTAwYWJcNFx1MDBhY1x0XHUwMGFjXDRcdTAwYWRcdFx1MDBhZFw0XHUw MGFlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx0XHUwMGFlXDRcdTAwYWZcdFx1MDBh Zlw0XHUwMGIwXHRcdTAwYjBcNFx1MDBiMVx0XHUwMGIxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlw0XHUwMGIyXHRcdTAwYjJcNFx1MDBiM1x0XHUwMGIzXDRcdTAwYjRcdFx1MDBi NFw0XHUwMGI1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx0XHUwMGI1XDRcdTAwYjZc dFx1MDBiNlw0XHUwMGI3XHRcdTAwYjdcNFx1MDBiOFx0XHUwMGI4IikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlw0XHUwMGI5XHRcdTAwYjlcNFx1MDBiYVx0XHUwMGJhXDRcdTAwYmJc dFx1MDBiYlw0XHUwMGJjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx0XHUwMGJjXDRc dTAwYmRcdFx1MDBiZFw0XHUwMGJlXHRcdTAwYmVcNFx1MDBiZlx0XHUwMGJmIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlw0XHUwMGMwXHRcdTAwYzBcNFx1MDBjMVx0XHUwMGMxXDRcdTAw YzJcdFx1MDBjMlw0XHUwMGMzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx0XHUwMGMz XDRcdTAwYzRcdFx1MDBjNFw0XHUwMGM1XHRcdTAwYzVcNFx1MDBjNlx0XHUwMGM2IikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlw0XHUwMGM3XHRcdTAwYzdcNFx1MDBjOFx0XHUwMGM4XDRc dTAwYzlcdFx1MDBjOVw0XHUwMGNhIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdFx1MDBj YVw0XHUwMGNiXHRcdTAwY2JcM1wyXDNcMlwzXDJcN1wyXHUwMTlhXG5cMlxmXDIiKQ0KPiA+DQo+ ID4gKw0KPiBidWYud3JpdGUoIlwxNlwyXHUwMTlkXDEzXDJcM1wyXDNcMlwzXDNcM1wzXDNcNFwz XDRcM1w0XDVcNFx1MDFhNiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXG5cNFwzXDRcM1w0 XDVcNFx1MDFhYVxuXDRcM1w1XDVcNVx1MDFhZFxuXDVcM1w2XDNcNlwzIikNCj4gPg0KPiA+ICsN Cj4gYnVmLndyaXRlKCJcNlwzXDZcM1w2XDNcNlw1XDZcdTAxYjVcblw2XDNcNlwzXDZcM1w3XDVc N1x1MDFiYVxuXDciKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDdcM1w3XDVcN1x1MDFi ZVxuXDdcM1w3XDVcN1x1MDFjMVxuXDdcM1w3XDNcN1wzXDdcMyIpDQo+ID4NCj4gPiArDQo+IGJ1 Zi53cml0ZSgiXDdcNVw3XHUwMWM3XG5cN1wzXDdcM1w3XDNcYlw1XGJcdTAxY2NcblxiXDNcYlwz XGJcNVxiIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDFkMFxuXGJcM1xiXDVcYlx1 MDFkM1xuXGJcM1xiXDNcYlwzXGJcM1xiXDVcYlx1MDFkOSIpDQo+ID4NCj4gPiArICAgICAgICBi dWYud3JpdGUoIlxuXGJcM1xiXDNcYlwzXHRcM1x0XDNcdFwzXHRcM1x0XDNcdFwzXHRcM1x0XDNc dFwzXHRcMyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlx0XDNcdFwzXHRcM1x0XDdc dFx1MDFlYlxuXHRcZlx0XDE2XHRcdTAxZWVcMTNcdFwzXG5cMyIpDQo+ID4NCj4gPiArDQo+IGJ1 Zi53cml0ZSgiXG5cM1xuXDNcblwzXG5cNVxuXHUwMWY1XG5cblwzXG5cM1xuXDNcMTNcM1wxM1wz XDEzXDMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcMTNcM1wxM1w1XDEzXHUwMWZl XG5cMTNcM1wxM1wzXDEzXDNcZlwzXGZcM1xmXDNcZlwzXGYiKQ0KPiA+DQo+ID4gKyAgICAgICAg YnVmLndyaXRlKCJcNVxmXHUwMjA3XG5cZlwzXGZcM1xmXDNcclwzXHJcM1xyXDNcclwzXHJcNVxy XHUwMjEwXG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcclwzXHJcM1xyXDNcMTZc M1wxNlwzXDE2XDNcMTZcM1wxNlw1XDE2XHUwMjE5XG5cMTZcMyIpDQo+ID4NCj4gPiArDQo+IGJ1 Zi53cml0ZSgiXDE2XDNcMTZcM1wxN1wzXDE3XDNcMTdcM1wxN1wzXDE3XDVcMTdcdTAyMjJcblwx N1wzXDE3IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wxN1wzXDIwXDNcMjBcM1wyMFwz XDIwXDNcMjBcNVwyMFx1MDIyYlxuXDIwXDNcMjBcMyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0 ZSgiXDIwXDNcMjFcM1wyMVwzXDIxXDNcMjFcM1wyMVw1XDIxXHUwMjM0XG5cMjFcM1wyMVwzXDIx IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyMlwzXDIyXDNcMjJcM1wyMlwzXDIyXDVc MjJcdTAyM2RcblwyMlwzXDIyXDNcMjJcMyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDIz XDNcMjNcM1wyM1wzXDIzXDNcMjNcNVwyM1x1MDI0NlxuXDIzXDNcMjNcM1wyM1wzXDI0IikNCj4g Pg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMjRcNVwyNFx1MDI0Y1xuXDI0XDNcMjRcM1wy NFwzXDI0XDNcMjRcM1wyNVwzXDI1XDUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDI1 XHUwMjU0XG5cMjVcM1wyNVwzXDI1XDNcMjVcM1wyNVwzXDI2XDNcMjZcNVwyNlx1MDI1YyIpDQo+ ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXG5cMjZcM1wyNlwzXDI2XDNcMjZcM1wyNlwzXDI3XDNc MjdcNVwyN1x1MDI2NFxuXDI3XDMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcMjdc M1wyN1wzXDI3XDNcMjdcM1wzMFwzXDMwXDNcMzBcM1wzMFwzXDMwXDNcMzBcM1wzMCIpDQo+ID4N Cj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMzBcM1wzMFwzXDMwXDNcMzBcM1wzMFwzXDMwXDNcMzBc M1wzMFwzXDMwXDNcMzBcM1wzMCIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwzXDMw XDNcMzBcM1wzMFwzXDMwXDNcMzBcM1wzMFw1XDMwXHUwMjgyXG5cMzBcM1wzMFwzIikNCj4gPg0K PiA+ICsNCj4gYnVmLndyaXRlKCJcMzBcM1wzMFwzXDMwXDNcMzBcNVwzMFx1MDI4OVxuXDMwXDNc MzBcM1wzMFwzXDMwXDNcMzAiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wzMFw1 XDMwXHUwMjkwXG5cMzBcM1wzMFwzXDMwXDNcMzBcM1wzMFwzXDMxXDNcMzFcMyIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcMzFcNVwzMVx1MDI5OVxuXDMxXDNcMzFcM1wzMVw1XDMxXHUw MjlkXG5cMzFcM1wzMVwzXDMxIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw1XDMxXHUw MmExXG5cMzFcM1wzMlwzXDMyXDNcMzJcN1wzMlx1MDJhNlxuXDMyXGZcMzJcMTYiKQ0KPiA+DQo+ ID4gKw0KPiBidWYud3JpdGUoIlwzMlx1MDJhOVwxM1wzMlwzXDMzXDNcMzNcM1wzNFwzXDM0XDNc MzVcN1wzNVx1MDJiMFxuIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDM1XGZcMzVc MTZcMzVcdTAyYjNcMTNcMzVcM1wzNlwzXDM2XDNcMzZcM1wzNlwzXDM2XDMiKQ0KPiA+DQo+ID4g Kw0KPiBidWYud3JpdGUoIlwzNlwzXDM2XDNcMzZcM1wzNlwzXDM2XDVcMzZcdTAyYmZcblwzNlwz XDM3XDNcMzdcM1wzNyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMzdcM1wzN1wzXDM3 XDNcMzdcM1wzN1wzXDM3XDNcMzdcM1wzN1wzXDM3XDNcMzdcNVwzNyIpDQo+ID4NCj4gPiArICAg ICAgICBidWYud3JpdGUoIlx1MDJjZVxuXDM3XDNcMzdcM1wzN1wzIFwzIFwzIFwzIFwzIFwzIFwz IFwzIFwzIFwzIFwzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiIFwzIFwzIFwzIFwz IFwzIFwzIFw1IFx1MDJlM1xuIFwzIFwzIFwzIFwzIFw1IFx1MDJlOVxuIikNCj4gPg0KPiA+ICsg ICAgICAgIGJ1Zi53cml0ZSgiIFwzIFwzIFwzIFwzIFwzIFwzIFwzIFwzIFwzIFwzIVwzIVwzIVwz IVwzIVwzIVwzIVwzIVwzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCIhXDMhXDMhXDMhXDMh XDMhXDMhXDMhXDMhXDUhXHUwMzA1XG4hXDMhXDMhXDMhXDMhXDUhXHUwMzBiIikNCj4gPg0KPiA+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXG4hXDMhXDMhXDMhXDMhXDMhXDchXHUwMzEyXG4hXGYhXDE2 IVx1MDMxNVwxMyFcMyFcMyEiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcMyFcMyFc MyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFcNSFcdTAzMjdcbiIpDQo+ID4NCj4g PiArDQo+IGJ1Zi53cml0ZSgiIVwzIVwzIVwzIVwzIVwzIVwzXCJcM1wiXDMjXDMjXDMjXDMjXDMj XDMjXDMjXDUjXHUwMzM3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlxuI1wzI1wzI1wz I1wzI1wzI1wzI1wzI1w2I1x1MDM0MFxuI1xyI1wxNiNcdTAzNDFcMyNcMyIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCIjXDMjXDMjXDMjXDMkXDMkXDMkXDMkXDMkXDMkXDMkXDMlXDMl XDMlXDMlXDMlXDMlXDMlXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiJlwzJlwz JlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzXCdcM1wnDQo+ID4gIikN Cj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcJ1wzXCdcM1wnXDNcJ1wzXCdcM1wnXDNc J1wzXCdcM1wnXDNcJ1w1XCdcdTAzNzNcblwnIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXDNcJ1wzXCdcMyhcMyhcMyhcMyhcMyhcMylcMylcMylcMypcMypcMypcMypcNSpcdTAzODMi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXG4qXDMqXDMqXDMqXDMqXDMqXDUqXHUwMzhh XG4qXDMqXDMqXDMqXDMqXDUqXHUwMzkwXG4iKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi KlwzK1wzK1wzK1wzK1wzK1wzK1wzK1wzK1wzK1wzK1wzK1wzK1wzK1wzK1wzLFwzLFwzLFwzIikN Cj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiLFwzLFwzLFwzLFwzLFw1LFx1MDNhOFxuLFwz LVwzLVwzLVwzLVwzLVwzLVwzLVw3LVx1MDNiMSIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3Jp dGUoIlxuLVxmLVwxNi1cdTAzYjRcMTMtXDUtXHUwM2I2XG4tXDMuXDUuXHUwM2I5XG4uXDMuXDMu IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMu XDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndy aXRlKCIuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDcuXHUw M2RlIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXG4uXGYuXDE2Llx1MDNlMVwxMy5c My5cNS5cdTAzZTRcbi5cMy9cMy9cMy9cMy9cMy9cMy8iKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIlwzL1wzXDYwXDNcNjBcM1w2MVwzXDYxXDVcNjFcdTAzZjFcblw2MVwzXDYyXDNcNjJcM1w2 MiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDdcNjJcdTAzZjZcblw2MlxmXDYyXDE2XDYy XHUwM2Y5XDEzXDYyXDNcNjNcM1w2M1wzXDYzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJc M1w2M1wzXDYzXDNcNjNcM1w2M1wzXDYzXDNcNjNcM1w2M1wzXDYzXDNcNjNcM1w2M1w3XDYzIikN Cj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA0MDhcblw2M1xmXDYzXDE2XDYzXHUwNDBiXDEz XDYzXDNcNjNcM1w2M1wzXDYzXDNcNjQiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDY0 XDNcNjRcM1w2NFwzXDY0XDNcNjRcM1w2NFwzXDY0XDNcNjRcM1w2NFwzXDY0XDNcNjQiKQ0KPiA+ DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcM1w2NFwzXDY0XDNcNjRcNVw2NFx1MDQxZlxuXDY0 XDNcNjVcM1w2NVwzXDY1XDNcNjVcMyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlw2 NVwzXDY1XDNcNjVcM1w2NVwzXDY1XDNcNjVcM1w2NVwzXDY1XDNcNjVcM1w2NVwzXDY1IikNCj4g Pg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1w2NVwzXDY1XDdcNjVcdTA0MzJcblw2NVxmXDY1XDE2 XDY1XHUwNDM1XDEzXDY1XDNcNjUiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw3XDY1XHUw NDM4XG5cNjVcZlw2NVwxNlw2NVx1MDQzYlwxM1w2NVwzXDY1XDNcNjVcM1w2NSIpDQo+ID4NCj4g PiArICAgICAgICBidWYud3JpdGUoIlwzXDY2XDNcNjZcM1w2NlwzXDY3XDNcNjdcM1w2N1wzOFwz OFwzOFwzOFwzOFwzOFwzOFwzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiOVwzOVwz OVw1OVx1MDQ1MFxuOVwzOlwzOlwzOlwzOlwzOlwzOlwzOlwzOlwzOlwzOlwzOlw1IikNCj4gPg0K PiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiOlx1MDQ1ZFxuOlwzOlwzOlw1Olx1MDQ2MVxuOlwzOlwz OlwzOlw1Olx1MDQ2NlxuOlwzOlwzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCI6XDc6XHUw NDZhXG46XGY6XDE2Olx1MDQ2ZFwxMzpcNTpcdTA0NmZcbjpcMzpcMzpcNTpcdTA0NzMiKQ0KPiA+ DQo+ID4gKw0KPiBidWYud3JpdGUoIlxuOlwzO1wzO1w1O1x1MDQ3N1xuO1wzPFwzPFwzPFw3PFx1 MDQ3Y1xuPFxmPFwxNjxcdTA0N2YiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDEzPFwz PVwzPVwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIj5cMz5cMz5cMz5cMz5cMz5cMz5cNT5cdTA0OThcbj5c Mz5cMz5cMz5cMz5cMz5cMz5cNz5cdTA0YQ0KPiA+IDAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXG4+XGY+XDE2Plx1MDRhM1wxMz5cMz5cMz5cMz5cMz5cMz5cNT5cdTA0YWFcbj5cMz5c Mz4iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDU+XHUwNGFlXG4+XDM+XDM+XDM/ XDM/XDU/XHUwNGI0XG4/XDNAXDNAXDVAXHUwNGI4XG4iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiQFwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwz QVwzQVwzDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIkFcM0FcM0FcM0Fc M0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcMyIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJBXDNBXDNBXDNBXDNBXDNBXDNBXDNBXDNBXDVBXHUwNGU2XG5B XDNBXDNBXDVBXHUwNGVhXG4iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiQVwzQVwz QVwzQVwzQVwzQVw1QVx1MDRmMVxuQVwzQVwzQVwzQVwzQVw1QVx1MDRmN1xuQVwzIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIkFcM0FcNUFcdTA0ZmJcbkFcM0FcM0FcM0JcM0JcM0Jc N0JcdTA1MDJcbkJcZkJcMTZCXHUwNTA1DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlwxM0JcM0NcM0NcNUNcdTA1MDlcbkNcM0RcM0RcM0RcM0RcM0RcM0RcM0RcM0RcM0Rc M0RcNSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJEXHUwNTE1XG5EXDNEXDNEXDNEXDNF XDNFXDNFXDNFXDNFXDNFXDVFXHUwNTIwXG5FXDNGXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiRlwzRlwzRlwzRlwzRlwzRlwzRlwzRlwzRlwzRlw1Rlx1MDUyZFxuRlwzR1wzR1wzR1wz R1wzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIkdcM0dcM0dcM0dcM0dcM0dcM0dc M0dcM0dcN0dcdTA1M2NcbkdcZkdcMTZHXHUwNTNmXDEzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIkdcM0dcM0dcNUdcdTA1NDNcbkdcM0dcM0dcM0dcNUdcdTA1NDhcbkdcM0hcM0hc M0hcM0hcDQo+ID4gMyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJIXDNIXDNIXDNIXDNI XDNIXDNIXDNIXDNIXDdIXHUwNTU3XG5IXGZIXDE2SFx1MDU1YVwxMyIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJIXDNIXDNIXDVIXHUwNTVlXG5IXDNIXDNIXDNIXDVIXHUwNTYzXG5IXDNJ XDNJXDNJXDNJXDMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJJXDNJXDVJXHUwNTZi XG5JXDNKXDNKXDNKXDNKXDNKXDNLXDNLXDNLXDNLXDNLXDNLXDNLXDMiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiS1wzTFwzTFwzTFwzTFwzTFwzTVwzTVwzTVwzTVwzTVwzTVwzTVwz TVwzTVwzTVwzTVwzDQo+ID4gTVw1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIk1c dTA1OGJcbk1cM01cM01cM01cNU1cdTA1OTBcbk1cM05cN05cdTA1OTNcbk5cZk5cMQ0KPiA+IDZO IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDU5NlwxM05cM09cM09cM09cM09c M09cM09cM09cNU9cdTA1OWZcbk9cM1BcM1BcM1BcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJQXDNQXDNQXDNQXDNQXDVQXHUwNWE5XG5QXDNRXDNRXDNRXDNRXDNRXDNRXDNRXDNR XDdRXHUNCj4gPiAwNWIzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlxuUVxmUVwx NlFcdTA1YjZcMTNRXDNRXDNRXDVRXHUwNWJhXG5RXDNRXDNRXDNRXDVRXHUwDQo+ID4gNWJmIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlxuUVwzUlwzUlwzUlwzUlwzUlwzUlwzUlwzUlw3 Ulx1MDVjOVxuUlxmUlwxNlJcdTA1Y2NcMTMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi UlwzUlwzUlw1Ulx1MDVkMFxuUlwzUlwzUlwzUlw1Ulx1MDVkNVxuUlwzU1wzU1wzU1wzU1wzIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlNcM1NcM1NcM1NcNVNcdTA1ZGZcblNcM1NcM1Nc M1NcM1NcNVNcdTA1ZTVcblNcM1RcM1RcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJUXDNUXDNVXDNVXDNWXDNWXDNWXDNWXDNWXDNWXDNWXDNWXDNWXDNWXDNWXDNWXDNWXDNWXDMi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiVlwzVlwzVlwzVlwzVlw1Vlx1MDYwMFxu VlwzVlwzVlw3Vlx1MDYwNFxuVlxmVlwxNlZcdTA2MA0KPiA+IDciKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXDEzVlwzVlwzVlwzV1wzV1wzV1w3V1x1MDYwZVxuV1xmV1wxNldcdTA2 MTFcMTNXXDNYDQo+ID4gXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiWFwzWFwzWFwz WFwzWFwzWFwzWFwzWFwzWFwzWFw1WFx1MDYxZVxuWFwzWVwzWVwzWVwzWVwzIikNCj4gPg0KPiA+ ICsgICAgICAgIGJ1Zi53cml0ZSgiWlwzWlwzWlwzWlwzW1w3W1x1MDYyOVxuW1xmW1wxNltcdTA2 MmNcMTNbXDNcXFwzXFxcNVxcIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA2MzBcblxc XDNdXDNdXDVdXHUwNjM0XG5dXDNeXDNeXDNeXDNeXDNeXDNeXDNeXDNeXDMiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXlw1Xlx1MDYzZlxuXlwzXlwzXlwzXlwzXlw1Xlx1MDY0NVxuXlwz XlwzXlwzXlwzXlwzX1wzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiX1wzX1w3X1x1 MDY0ZVxuX1xmX1wxNl9cdTA2NTFcMTNfXDNgXDNgXDNgXDNgXDNgXDNgXDUiKQ0KPiA+DQo+ID4g Kw0KPiBidWYud3JpdGUoImBcdTA2NTlcbmBcM2FcM2FcM2FcM2FcM2FcM2FcM2FcM2FcNWFcdTA2 NjNcbmFcM2FcM2FcMyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiYVwzYVwzYVwzYVwzYVwz YVwzYVwzYVwzYVwzYlwzYlwzYlw3Ylx1MDY3M1xuYlxmYlwxNmIiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwNjc2XDEzYlwzY1wzY1w1Y1x1MDY3YVxuY1wzZFwzZFw1ZFx1MDY3ZVxu ZFwzZVwzZVwzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoImVcM2VcM2VcM2VcM2VcM2Vc M2VcNWVcdTA2ODlcbmVcM2VcM2VcM2VcM2VcNWVcdTA2OGZcbiIpDQo+ID4NCj4gPiArICAgICAg ICBidWYud3JpdGUoImVcM2VcM2VcM2VcM2VcM2VcM2ZcM2ZcM2ZcNWZcdTA2OTlcbmZcM2ZcM2Zc M2ZcM2ZcM2ZcNSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJmXHUwNmEwXG5mXDNmXDNm XDNmXDNmXDNmXDNmXDVmXHUwNmE4XG5mXDNnXDNnXDNnXDdnXHUwNmFkIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlxuZ1xmZ1wxNmdcdTA2YjBcMTNnXDNoXDNoXDNoXDNoXDNoXDNo XDNoXDNoXDNoXDVoXHUwNmJiIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXG5oXDNp XDNpXDNpXDNpXDNpXDNpXDNpXDNpXDNpXDVpXHUwNmM2XG5pXDNpXDVpXHUwNmM5IikNCj4gPg0K PiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXG5pXDNpXDNpXDNpXDNpXDNqXDNqXDNqXDdqXHUwNmQy XG5qXGZqXDE2alx1MDZkNVwxM2oiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcM2tc M2tcNWtcdTA2ZDlcbmtcM2xcM2xcM2xcM2xcM2xcM2xcM2xcM2xcNWxcdTA2ZTNcbiIpDQo+ID4N Cj4gPiArICAgICAgICBidWYud3JpdGUoImxcM2xcM2xcM2xcM2xcNWxcdTA2ZTlcbmxcM2xcM2xc M2xcM2xcM2xcM2xcM2xcM2xcM2xcMyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJsXDNs XDNsXDNtXDNtXDNtXDdtXHUwNmZhXG5tXGZtXDE2bVx1MDZmZFwxM21cM25cM25cMyIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJuXDVuXHUwNzAyXG5uXDNvXDNvXDNvXDNvXDNvXDNvXDNv XDNvXDVvXHUwNzBjXG5vXDNvXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgib1wzb1wz b1w1b1x1MDcxMlxub1wzb1wzb1wzb1wzb1wzb1wzb1wzb1wzb1wzb1wzb1wzb1wzIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIm9cNW9cdTA3MjBcbm9cM29cM29cM29cM29cM3BcM3BcM3Bc N3BcdTA3MjlcbnBcZnBcMTZwIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDcyY1wx M3BcM3FcM3FcNXFcdTA3MzBcbnFcM3JcM3JcM3JcM3JcM3JcM3JcM3JcNXJcdTA3MzkiKQ0KPiA+ DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcbnJcM3JcM3JcM3JcM3JcM3JcNXJcdTA3NDBcbnJc M3JcM3JcM3JcM3JcM3NcM3NcM3NcNyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoInNc dTA3NDlcbnNcZnNcMTZzXHUwNzRjXDEzc1wzdFwzdFwzdFwzdFw1dFx1MDc1MlxudFwzIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoInVcM3VcM3VcM3VcM3VcM3VcM3VcM3VcNXVcdTA3NWNc bnVcM3VcM3VcM3VcM3VcM3VcM3VcMyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJ1XDN1 XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDMiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgidVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwz dVwzdVwzdVwzdVwzdVwzdVwzdVwzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoInVcM3Vc M3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcMyIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJ1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1 XDN1XDV1XHUwN2E3XG51XDN1XDciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgidVx1MDdh YVxudVxmdVwxNnVcdTA3YWRcMTN1XDV1XHUwN2FmXG51XDN1XDN1XDN1XDN2XDMiKQ0KPiA+DQo+ ID4gKw0KPiBidWYud3JpdGUoInZcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcNXZcdTA3 YzBcbnZcM3ZcM3ZcM3ZcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJ2XDV2XHUw N2M2XG52XDN3XDN3XDN3XDd3XHUwN2NiXG53XGZ3XDE2d1x1MDdjZVwxM3dcMyIpDQo+ID4NCj4g PiArDQo+IGJ1Zi53cml0ZSgieFwzeFwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVw1eVx1MDdkYVxu eVwzeVwzeVwzeVwzeVwzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJ5XDN5XDN5XDN5XDN5 XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDMiKQ0KPiA+DQo+ID4gKw0K PiBidWYud3JpdGUoInlcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lc M3lcM3lcM3lcMyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgieVwzeVwzeVwzeVwzeVwzeVwz eVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzIikNCj4gPg0KPiA+ICsNCj4gYnVm LndyaXRlKCJ5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDV5XHUw ODI1XG4iKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoInlcM3lcN3lcdTA4MjhcbnlcZnlcMTZ5 XHUwODJiXDEzeVw1eVx1MDgyZFxueVwzeVwzeVwzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53 cml0ZSgieVwzelwzelwzelwzelwzelwzelwzelwzelwzelwzelwzelwzelw1elx1MDgzZVxuelwz elwzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgielwzelwzelw1elx1MDg0NFxuelwz e1wze1wze1w3e1x1MDg0OVxue1xme1wxNntcdTA4NGMiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIlwxM3tcM3xcM3xcM31cM31cM31cM31cNX1cdTA4NTRcbn1cM35cM35cM35cM35cM35cM1wx NzciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMTc3XDNcdTAwODBcM1x1MDA4MFwz XHUwMDgxXDNcdTAwODFcM1x1MDA4MVwzXHUwMDgxIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlwzXHUwMDgxXDNcdTAwODFcNVx1MDA4MVx1MDg2NVxuXHUwMDgxXDNcdTAwODJcM1x1MDA4 MiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDA4MlwzXHUwMDgyXDVcdTAwODJc dTA4NmJcblx1MDA4MlwzXHUwMDgzXDNcdTAwODMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDNcdTAwODNcM1x1MDA4M1w3XHUwMDgzXHUwODcxXG5cdTAwODNcZlx1MDA4M1wxNlx1MDA4 MyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA4NzRcMTNcdTAwODNcM1x1MDA4M1wz XHUwMDgzXDNcdTAwODNcM1x1MDA4NFwzXHUwMDg0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlwzXHUwMDg0XDNcdTAwODRcM1x1MDA4NFwzXHUwMDg0XDdcdTAwODRcdTA4N2Zcblx1MDA4 NCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcZlx1MDA4NFwxNlx1MDA4NFx1MDg4Mlwx M1x1MDA4NFwzXHUwMDg0XDNcdTAwODRcNVx1MDA4NCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcdTA4ODZcblx1MDA4NFwzXHUwMDg0XDNcdTAwODRcM1x1MDA4NFwzXHUwMDg1XDNcdTAw ODUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwODVcM1x1MDA4NVwzXHUwMDg1 XDNcdTAwODVcN1x1MDA4NVx1MDg5MVxuXHUwMDg1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlxmXHUwMDg1XDE2XHUwMDg1XHUwODk0XDEzXHUwMDg1XDNcdTAwODVcM1x1MDA4NVw1XHUw MDg1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDg5OFxuXHUwMDg1XDNcdTAwODVc M1x1MDA4NVwzXHUwMDg1XDNcdTAwODZcM1x1MDA4NiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcM1x1MDA4NlwzXHUwMDg2XDNcdTAwODZcM1x1MDA4Nlw3XHUwMDg2XHUwOGEzXG5cdTAw ODYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXGZcdTAwODZcMTZcdTAwODZcdTA4YTZc MTNcdTAwODZcM1x1MDA4NlwzXHUwMDg2XDVcdTAwODYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXHUwOGFhXG5cdTAwODZcM1x1MDA4NlwzXHUwMDg2XDNcdTAwODZcN1x1MDA4Nlx1MDhh ZlxuIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDA4NlxmXHUwMDg2XDE2XHUwMDg2 XHUwOGIyXDEzXHUwMDg2XDNcdTAwODZcM1x1MDA4NiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcM1x1MDA4NlwzXHUwMDg3XDNcdTAwODdcM1x1MDA4N1wzXHUwMDg3XDNcdTAwODdcM1x1 MDA4NyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN1x1MDA4N1x1MDhiZFxuXHUwMDg3 XGZcdTAwODdcMTZcdTAwODdcdTA4YzBcMTNcdTAwODciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDNcdTAwODdcM1x1MDA4N1w1XHUwMDg3XHUwOGM0XG5cdTAwODdcM1x1MDA4N1wzXHUw MDg3IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA4N1w3XHUwMDg3XHUwOGM5XG5c dTAwODdcZlx1MDA4N1wxNlx1MDA4N1x1MDhjYyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcMTNcdTAwODdcM1x1MDA4N1wzXHUwMDg3XDNcdTAwODdcM1x1MDA4OFwzXHUwMDg4XDNc dTAwODgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwODhcM1x1MDA4OFwzXHUw MDg4XDNcdTAwODhcM1x1MDA4OFwzXHUwMDg4XDNcdTAwODgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDNcdTAwODhcM1x1MDA4OFwzXHUwMDg4XDdcdTAwODhcdTA4ZGVcblx1MDA4OFxm XHUwMDg4IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwxNlx1MDA4OFx1MDhlMVwxM1x1 MDA4OFwzXHUwMDg4XDNcdTAwODhcNVx1MDA4OFx1MDhlNSIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcblx1MDA4OFwzXHUwMDg4XDNcdTAwODhcM1x1MDA4OFwzXHUwMDg4XDNcdTAw ODlcM1x1MDA4OSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDA4OVw1XHUwMDg5 XHUwOGVlXG5cdTAwODlcM1x1MDA4YVwzXHUwMDhhXDNcdTAwOGEiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXDNcdTAwOGFcM1x1MDA4YVwzXHUwMDhhXDNcdTAwOGFcM1x1MDA4YVwzXHUw MDhhXDNcdTAwOGEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwOGJcM1x1 MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGIiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1 MDA4YlwzXHUwMDhiXDNcdTAwOGIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNc dTAwOGJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGIiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDVcdTAwOGJcdTA5MGZcblx1MDA4YlwzXHUwMDhi XDNcdTAwOGJcM1x1MDA4Y1wzXHUwMDhjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwz XHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUw MDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwzXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhj IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1w3 XHUwMDhjXHUwOTJkXG5cdTAwOGNcZlx1MDA4YyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcMTZcdTAwOGNcdTA5MzBcMTNcdTAwOGNcNVx1MDA4Y1x1MDkzMlxuXHUwMDhjXDNcdTAwOGMi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDVc dTAwOGNcdTA5Mzhcblx1MDA4Y1wzXHUwMDhjIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlwzXHUwMDhjXDNcdTAwOGRcM1x1MDA4ZFwzXHUwMDhkXDNcdTAwOGRcM1x1MDA4ZVwzXHUw MDhlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw1XHUwMDhlXHUwOTQyXG5cdTAwOGVc M1x1MDA4ZVwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcM1x1MDA4ZVwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZVwzXHUwMDhlXDNcdTAwOGVc M1x1MDA4ZSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1x1MDA4ZVwzXHUwMDhl XDNcdTAwOGVcM1x1MDA4ZVwzXHUwMDhlXDNcdTAwOGVcNVx1MDA4ZSIpDQo+ID4NCj4gPiArDQo+ IGJ1Zi53cml0ZSgiXHUwOTU1XG5cdTAwOGVcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4 ZlwzXHUwMDhmIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMDhmXDNcdTAwOGZc M1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlw1XHUwMDhmIikNCj4gPg0KPiA+ICsNCj4g YnVmLndyaXRlKCJcdTA5NjJcblx1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhm XDVcdTAwOGYiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDk2OFxuXHUwMDhmXDNcdTAw OGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcNVx1MDA4ZiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53 cml0ZSgiXHUwOTZlXG5cdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlw1XHUw MDhmIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA5NzRcblx1MDA4ZlwzXHUwMDhmXDNc dTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDVcdTAwOGYiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUo Ilx1MDk3YVxuXHUwMDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcNVx1MDA4ZiIp DQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwOTgwXG5cdTAwOGZcM1x1MDA4ZlwzXHUwMDhm XDNcdTAwOGZcM1x1MDA4Zlw1XHUwMDhmIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA5 ODZcblx1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDVcdTAwOGYiKQ0KPiA+ DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDk4Y1xuXHUwMDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUw MDhmXDNcdTAwOGZcNVx1MDA4ZiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwOTkyXG5c dTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlw1XHUwMDhmIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDk5OFxuXHUwMDhmXDVcdTAwOGZcdTA5OWFcblx1MDA4 ZlwzXHUwMDhmXDdcdTAwOGZcdTA5OWQiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlxuXHUw MDhmXGZcdTAwOGZcMTZcdTAwOGZcdTA5YTBcMTNcdTAwOGZcNVx1MDA4Zlx1MDlhMiIpDQo+ID4N Cj4gPiArDQo+IGJ1Zi53cml0ZSgiXG5cdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDdcdTAwOGZcdTA5 YTZcblx1MDA4ZlxmXHUwMDhmIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcMTZcdTAwOGZc dTA5YTlcMTNcdTAwOGZcM1x1MDA4Zlw1XHUwMDhmXHUwOWFjXG5cdTAwOGYiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDkwXDNcdTAwOTBcM1x1MDA5 MFwzXHUwMDkwXDNcdTAwOTAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDVcdTAwOTBc dTA5YjVcblx1MDA5MFwzXHUwMDkwXDNcdTAwOTBcN1x1MDA5MFx1MDliOVxuIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlx1MDA5MFxmXHUwMDkwXDE2XHUwMDkwXHUwOWJjXDEzXHUwMDkw XDNcdTAwOTBcM1x1MDA5MCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDA5MFwz XHUwMDkxXDNcdTAwOTFcM1x1MDA5MVwzXHUwMDkyXDNcdTAwOTJcM1x1MDA5MyIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDA5M1wzXHUwMDkzXDdcdTAwOTNcdTA5Yzlcblx1MDA5 M1xmXHUwMDkzXDE2XHUwMDkzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDljY1wx M1x1MDA5M1wzXHUwMDk0XDNcdTAwOTRcM1x1MDA5NFw3XHUwMDk0XHUwOWQxIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlxuXHUwMDk0XGZcdTAwOTRcMTZcdTAwOTRcdTA5ZDRcMTNc dTAwOTRcM1x1MDA5NVwzXHUwMDk1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUw MDk1XDdcdTAwOTVcdTA5ZDlcblx1MDA5NVxmXHUwMDk1XDE2XHUwMDk1XHUwOWRjIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlwxM1x1MDA5NVwzXHUwMDk2XDNcdTAwOTZcM1x1MDA5Nlw3 XHUwMDk2XHUwOWUxXG5cdTAwOTYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXGZcdTAw OTZcMTZcdTAwOTZcdTA5ZTRcMTNcdTAwOTZcM1x1MDA5N1wzXHUwMDk3XDNcdTAwOTciKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcdTAwOTdcdTA5ZTlcblx1MDA5N1xmXHUwMDk3XDE2 XHUwMDk3XHUwOWVjXDEzXHUwMDk3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUw MDk4XDNcdTAwOThcN1x1MDA5OFx1MDlmMFxuXHUwMDk4XGZcdTAwOThcMTZcdTAwOTgiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOWYzXDEzXHUwMDk4XDNcdTAwOTlcM1x1MDA5OVwz XHUwMDk5XDNcdTAwOTlcNVx1MDA5OSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA5 Zjlcblx1MDA5OVwzXHUwMDlhXDNcdTAwOWFcN1x1MDA5YVx1MDlmZFxuXHUwMDlhXGYiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMDlhXDE2XHUwMDlhXHUwYTAwXDEzXHUwMDlhXDNc dTAwOWJcM1x1MDA5YlwzXHUwMDliIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUw MDliXDNcdTAwOWJcM1x1MDA5YlwzXHUwMDliXDNcdTAwOWJcNVx1MDA5Ylx1MGEwYSIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcblx1MDA5YlwzXHUwMDljXDNcdTAwOWNcN1x1MDA5Y1x1 MGEwZVxuXHUwMDljXGZcdTAwOWMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDE2 XHUwMDljXHUwYTExXDEzXHUwMDljXDNcdTAwOWRcM1x1MDA5ZFwzXHUwMDlkXDNcdTAwOWQiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDVcdTAwOWRcdTBhMTdcblx1MDA5ZFwzXHUwMDll XDNcdTAwOWVcN1x1MDA5ZVx1MGExYlxuIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1 MDA5ZVxmXHUwMDllXDE2XHUwMDllXHUwYTFlXDEzXHUwMDllXDNcdTAwOWZcM1x1MDA5ZiIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDA5ZlwzXHUwMDlmXDVcdTAwOWZcdTBhMjRc blx1MDA5ZlwzXHUwMGEwXDNcdTAwYTAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdc dTAwYTBcdTBhMjhcblx1MDBhMFxmXHUwMGEwXDE2XHUwMGEwXHUwYTJiXDEzXHUwMGEwIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGExXDNcdTAwYTFcM1x1MDBhMVwzXHUwMGEx XDNcdTAwYTFcM1x1MDBhMVw1XHUwMGExIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1 MGEzM1xuXHUwMGExXDNcdTAwYTJcM1x1MDBhMlwzXHUwMGEyXDdcdTAwYTJcdTBhMzhcbiIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAwYTJcZlx1MDBhMlwxNlx1MDBhMlx1MGEzYlwx M1x1MDBhMlwzXHUwMGEyXDNcdTAwYTIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNc dTAwYTNcM1x1MDBhM1wzXHUwMGEzXDNcdTAwYTNcM1x1MDBhM1wzXHUwMGEzXDNcdTAwYTMiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYTNcM1x1MDBhM1wzXHUwMGEzXDNcdTAw YTNcM1x1MDBhM1w1XHUwMGEzXHUwYTRiIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo IlxuXHUwMGEzXDNcdTAwYTRcM1x1MDBhNFwzXHUwMGE0XDNcdTAwYTRcM1x1MDBhNFwzXHUwMGE0 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGE0XDNcdTAwYTVcM1x1MDBhNVwz XHUwMGE1XDNcdTAwYTVcM1x1MDBhNVwzXHUwMGE1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlwzXHUwMGE1XDNcdTAwYTZcM1x1MDBhNlwzXHUwMGE2XDNcdTAwYTZcM1x1MDBhNlwzXHUw MGE2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGE2XDNcdTAwYTZcM1x1MDBh NlwzXHUwMGE3XDNcdTAwYTdcM1x1MDBhN1wzXHUwMGE3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlwzXHUwMGE4XDNcdTAwYThcM1x1MDBhOFwzXHUwMGE4XDNcdTAwYThcM1x1MDBhOFwz XHUwMGE4IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGE4XDNcdTAwYThcM1x1 MDBhOFwzXHUwMGE4XDVcdTAwYThcdTBhNzNcblx1MDBhOCIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcM1x1MDBhOVwzXHUwMGE5XDNcdTAwYWFcM1x1MDBhYVwzXHUwMGFhXDNcdTAwYWFc M1x1MDBhYSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDBhYVwzXHUwMGFhXDNc dTAwYWFcM1x1MDBhYVwzXHUwMGFhXDNcdTAwYWFcM1x1MDBhYSIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcM1x1MDBhYVwzXHUwMGFhXDNcdTAwYWFcNVx1MDBhYVx1MGE4NlxuXHUwMGFh XDNcdTAwYWIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYWJcM1x1MDBh YlwzXHUwMGFiXDNcdTAwYWJcM1x1MDBhYlwzXHUwMGFiXDNcdTAwYWIiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDNcdTAwYWJcM1x1MDBhYlwzXHUwMGFiXDNcdTAwYWJcNVx1MDBhYlx1 MGE5NFxuXHUwMGFiIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGFjXDNcdTAw YWNcM1x1MDBhY1wzXHUwMGFjXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFjIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlwzXHUwMGFjXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFjXDNcdTAwYWNc NVx1MDBhY1x1MGFhMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcblx1MDBhY1wzXHUw MGFkXDNcdTAwYWRcM1x1MDBhZFwzXHUwMGFkXDZcdTAwYWRcdTBhYTgiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXG5cdTAwYWRcclx1MDBhZFwxNlx1MDBhZFx1MGFhOVwzXHUwMGFlXDNc dTAwYWVcM1x1MDBhZSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDBhZVwzXHUw MGFlXDNcdTAwYWVcM1x1MDBhZVw3XHUwMGFlXHUwYWIzXG5cdTAwYWUiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXGZcdTAwYWVcMTZcdTAwYWVcdTBhYjZcMTNcdTAwYWVcNVx1MDBhZVx1 MGFiOFxuXHUwMGFlIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBhZlwzXHUwMGFm XDNcdTAwYWZcM1x1MDBhZlw1XHUwMGFmXHUwYWJlXG5cdTAwYWYiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjBcM1x1MDBiMFwzXHUwMGIwXDNcdTAwYjBcM1x1MDBiMFwz XHUwMGIxXDNcdTAwYjEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjFc M1x1MDBiMVwzXHUwMGIxXDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIyXDNcdTAwYjIiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIyXDVcdTAwYjJcdTBh ZDFcblx1MDBiMlwzXHUwMGIyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUw MGIyXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGI0XDNcdTAwYjRcM1x1MDBiNFwzXHUwMGI0IikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGI0XDNcdTAwYjVcM1x1MDBiNVwzXHUw MGI2XDNcdTAwYjZcM1x1MDBiNlwzXHUwMGI2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwzXHUwMGI2XDNcdTAwYjZcM1x1MDBiNlw1XHUwMGI2XHUwYWU1XG5cdTAwYjZcM1x1MDBiNiIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1x1MDBiNlwzXHUwMGI3XDNcdTAwYjdc M1x1MDBiOFwzXHUwMGI4XDNcdTAwYjhcM1x1MDBiOCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcM1x1MDBiOFwzXHUwMGI4XDNcdTAwYjhcM1x1MDBiOFwzXHUwMGI4XDNcdTAwYjhc NVx1MDBiOCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhZjVcblx1MDBiOFwzXHUw MGI5XDNcdTAwYjlcM1x1MDBiOVwzXHUwMGI5XDNcdTAwYjkiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmFcM1x1MDBiYVwzXHUw MGJiXDNcdTAwYmIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYmJcM1x1 MDBiYlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYlwzXHUwMGJiXDNcdTAwYmINCj4gPiAiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDVcdTAwYmJcdTBiMGFcblx1MDBiYlwzXHUwMGJi XDNcdTAwYmJcM1x1MDBiYlwzXHUwMGJiIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo IlwzXHUwMGJiXDVcdTAwYmJcdTBiMTFcblx1MDBiYlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYiIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1x1MDBiY1wzXHUwMGJjXDNcdTAwYmNc M1x1MDBiY1wzXHUwMGJjXDNcdTAwYmRcM1x1MDBiZCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcM1x1MDBiZFwzXHUwMGJkXDNcdTAwYmRcM1x1MDBiZVwzXHUwMGJlXDNcdTAwYmVc M1x1MDBiZQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1x1MDBiZVw1 XHUwMGJlXHUwYjI1XG5cdTAwYmVcM1x1MDBiZVwzXHUwMGJlXDNcdTAwYmUiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYmVcM1x1MDBiZlwzXHUwMGJmXDNcdTAwYmZcM1x1MDBi ZlwzXHUwMGJmXDNcdTAwYzAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYzBc M1x1MDBjMFwzXHUwMGMwXDNcdTAwYzBcM1x1MDBjMVwzXHUwMGMxXDNcdTAwYzEiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYzFcM1x1MDBjMVwzXHUwMGMyXDNcdTAwYzJcM1x1 MDBjMlwzXHUwMGMyXDNcdTAwYzIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAw YzJcM1x1MDBjMlw1XHUwMGMyXHUwYjQxXG5cdTAwYzJcM1x1MDBjMlwzXHUwMGMyIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGMyXDNcdTAwYzJcM1x1MDBjM1wzXHUwMGMzXDNc dTAwYzNcM1x1MDBjM1wzXHUwMGMzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw1XHUw MGMzXHUwYjRjXG5cdTAwYzNcM1x1MDBjNFwzXHUwMGM0XDNcdTAwYzRcM1x1MDBjNCIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDBjNFwzXHUwMGM0XDNcdTAwYzRcM1x1MDBjNFwz XHUwMGM0XDNcdTAwYzVcM1x1MDBjNSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1 MDBjNVwzXHUwMGM1XDNcdTAwYzVcN1x1MDBjNVx1MGI1Y1xuXHUwMGM1XGZcdTAwYzUiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDE2XHUwMGM1XHUwYjVmXDEzXHUwMGM1XDNcdTAwYzVc M1x1MDBjNVwzXHUwMGM1XDNcdTAwYzUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNc dTAwYzVcM1x1MDBjNVwzXHUwMGM1XDNcdTAwYzVcM1x1MDBjNlwzXHUwMGM2XDNcdTAwYzciKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYzdcM1x1MDBjN1wzXHUwMGM3XDNcdTAw YzdcM1x1MDBjN1wzXHUwMGM3XDNcdTAwYzciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XDNcdTAwYzdcM1x1MDBjOFwzXHUwMGM4XDNcdTAwYzhcM1x1MDBjOFwzXHUwMGM4XDNcdTAwYzgi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYzhcM1x1MDBjOFwzXHUwMGM4XDNc dTAwYzlcM1x1MDBjOVwzXHUwMGM5XDNcdTAwYzkiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDNcdTAwYzlcM1x1MDBjOVwzXHUwMGM5XDdcdTAwYzlcdTBiODRcblx1MDBjOVxmXHUwMGM5 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwxNlx1MDBjOVx1MGI4N1wxM1x1MDBjOVwz XHUwMGM5XDNcdTAwYzlcM1x1MDBjOVwzXHUwMGM5IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlwzXHUwMGM5XDNcdTAwYzlcM1x1MDBjOVwzXHUwMGM5XDNcdTAwY2FcM1x1MDBjYVwzXHUw MGNiIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGNiXDNcdTAwY2JcM1x1MDBj YlwzXHUwMGNiXDNcdTAwY2JcM1x1MDBjYlwzXHUwMGNiIikNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJcM1x1MDBjYlw3XHUwMGNiXHUwYjljXG5cdTAwY2JcZlx1MDBjYlwxNlx1MDBjYlx1MGI5 ZiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDEzXHUwMGNiXDNcdTAwY2JcM1x1MDBjYlwz XHUwMGNiXDJcMlx1MDBjY1wyXDRcNlxiXG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRl KCJcZlwxNlwyMFwyMlwyNFwyNlwzMFwzMlwzNFwzNiBcIiQmKCosLlw2MFw2Mlw2NFw2Njg6PCIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCI+QEJERkhKTE5QUlRWWFpcXF5gYmRmaGps bnBydHZ4enx+XHUwMDgwXHUwMDgyXHUwMDg0XHUwMA0KPiA+IDg2IikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDA4OFx1MDA4YVx1MDA4Y1x1MDA4ZVx1MDA5MFx1MDA5Mlx1MDA5NFx1 MDA5Nlx1MDA5OCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAwOWFcdTAwOWNcdTAw OWVcdTAwYTBcdTAwYTJcdTAwYTRcdTAwYTZcdTAwYThcdTAwYWEiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwMGFjXHUwMGFlXHUwMGIwXHUwMGIyXHUwMGI0XHUwMGI2XHUwMGI4XHUw MGJhXHUwMGJjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDBiZVx1MDBjMFx1MDBj Mlx1MDBjNFx1MDBjNlx1MDBjOFx1MDBjYVx1MDBjY1x1MDBjZSIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcdTAwZDBcdTAwZDJcdTAwZDRcdTAwZDZcdTAwZDhcdTAwZGFcdTAwZGNc dTAwZGVcdTAwZTAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGUyXHUwMGU0XHUw MGU2XHUwMGU4XHUwMGVhXHUwMGVjXHUwMGVlXHUwMGYwXHUwMGYyIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDBmNFx1MDBmNlx1MDBmOFx1MDBmYVx1MDBmY1x1MDBmZVx1MDEwMFx1 MDEwMlx1MDEwNCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxMDZcdTAxMDhcdTAx MGFcdTAxMGNcdTAxMGVcdTAxMTBcdTAxMTJcdTAxMTRcdTAxMTYiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwMTE4XHUwMTFhXHUwMTFjXHUwMTFlXHUwMTIwXHUwMTIyXHUwMTI0XHUw MTI2XHUwMTI4IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDEyYVx1MDEyY1x1MDEy ZVx1MDEzMFx1MDEzMlx1MDEzNFx1MDEzNlx1MDEzOFx1MDEzYSIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTAxM2NcdTAxM2VcdTAxNDBcdTAxNDJcdTAxNDRcdTAxNDZcdTAxNDhcdTAx NGFcdTAxNGMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMTRlXHUwMTUwXHUwMTUy XHUwMTU0XHUwMTU2XHUwMTU4XHUwMTVhXHUwMTVjXHUwMTVlIikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlx1MDE2MFx1MDE2Mlx1MDE2NFx1MDE2Nlx1MDE2OFx1MDE2YVx1MDE2Y1x1MDE2 ZVx1MDE3MCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxNzJcdTAxNzRcdTAxNzZc dTAxNzhcdTAxN2FcdTAxN2NcdTAxN2VcdTAxODBcdTAxODIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwMTg0XHUwMTg2XHUwMTg4XHUwMThhXHUwMThjXHUwMThlXHUwMTkwXHUwMTky XHUwMTk0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDIwXDNcMlw0XDVcNFwy XHUwMGFjXHUwMGIyXHUwMGZhXHUwMGZhXDRcMlx1MDBiM1x1MDBiNiIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTAwZmFcdTAwZmFcNFwyXG5cblx1MDBmYVx1MDBmYVw1XDJcdTAwYjdc dTAwYjlcdTAwYmQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGJmXHUwMGZhXHUw MGZhXDRcMlx1MDBiYVx1MDBiZlx1MDBmYVx1MDBmYVwzXDJcdTAwODUiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXHUwMDg2XDNcMlx1MDA4YVx1MDA4Y1wzXDJSVlwzXDJcdTAwZmFcdTAw ZmJcM1wyXHUwMGVmIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAwZjJcNFwyXHUwMGQz XHUwMGQ5XHUwMGZhXHUwMGZhXDNcMlx1MDBmNlx1MDBmN1wzXDIiKQ0KPiA+DQo+ID4gKw0KPiBi dWYud3JpdGUoIlx1MDBmOFx1MDBmYVwyXHUwYzZlXDJcdTAxOWJcM1wyXDJcMlw0XHUwMWEwXDNc MlwyXDJcNiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMWEyXDNcMlwyXDJcYlx1MDFh Y1wzXDJcMlwyXG5cdTAxYWVcM1wyXDJcMlxmXHUwMWI5IikNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJcM1wyXDJcMlwxNlx1MDFjYlwzXDJcMlwyXDIwXHUwMWVjXDNcMlwyXDJcMjJcdTAxZWZc MyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwyXDJcMlwyNFx1MDFmOFwzXDJcMlwy XDI2XHUwMjAxXDNcMlwyXDJcMzBcdTAyMGFcM1wyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRl KCJcMlwyXDMyXHUwMjEzXDNcMlwyXDJcMzRcdTAyMWNcM1wyXDJcMlwzNlx1MDIyNVwzXDJcMiIp DQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwyDQo+ID4gXHUwMjJlXDNcMlwyXDJcIlx1 MDIzN1wzXDJcMlwyJFx1MDI0MFwzXDJcMlwyJlx1MDI0OSIpDQo+ID4NCj4gPiArICAgICAgICBi dWYud3JpdGUoIlwzXDJcMlwyKFx1MDI1MVwzXDJcMlwyKlx1MDI1OVwzXDJcMlwyLFx1MDI2MVwz XDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIi5cdTAyNjlcM1wyXDJcMlw2 MFx1MDI5NVwzXDJcMlwyXDYyXHUwMmEyXDNcMlwyXDJcNjRcdTAyYWEiKQ0KPiA+DQo+ID4gKw0K PiBidWYud3JpdGUoIlwzXDJcMlwyXDY2XHUwMmFjXDNcMlwyXDI4XHUwMmIxXDNcMlwyXDI6XHUw MmJlXDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyPFx1MDJjMFwzXDJcMlwy Plx1MDJkMVwzXDJcMlwyQFx1MDJmM1wzXDJcMlwyQlx1MDMyZCIpDQo+ID4NCj4gPiArDQo+IGJ1 Zi53cml0ZSgiXDNcMlwyXDJEXHUwMzJmXDNcMlwyXDJGXHUwMzQ4XDNcMlwyXDJIXHUwMzRmXDNc MlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiSlx1MDM1NlwzXDJcMlwyTFx1MDM2 NlwzXDJcMlwyTlx1MDM3NlwzXDJcMlwyUFx1MDM3YlwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlwyXDJcMlJcdTAzODJcM1wyXDJcMlRcdTAzOTFcM1wyXDJcMlZcdTAzYTdcM1wy XDJcMlhcdTAzYjUiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyWlx1MDNlM1wz XDJcMlwyXFxcdTAzZTVcM1wyXDJcMl5cdTAzZWNcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+IGJ1 Zi53cml0ZSgiYFx1MDNmMFwzXDJcMlwyYlx1MDNmMlwzXDJcMlwyZFx1MDNmYVwzXDJcMlwyZlx1 MDQxZVwzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcMmhcdTA0MjBcM1wyXDJc MmpcdTA0M2ZcM1wyXDJcMmxcdTA0NDJcM1wyXDJcMm5cdTA0NDUiKQ0KPiA+DQo+ID4gKyAgICAg ICAgYnVmLndyaXRlKCJcM1wyXDJcMnBcdTA0NGZcM1wyXDJcMnJcdTA0NTFcM1wyXDJcMnRcdTA0 NzZcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJ2XHUwNDc4XDNcMlwyXDJ4 XHUwNDgwXDNcMlwyXDJ6XHUwNDgyXDNcMlwyXDJ8XHUwNGIzXDMiKQ0KPiA+DQo+ID4gKw0KPiBi dWYud3JpdGUoIlwyXDJcMn5cdTA0YjdcM1wyXDJcMlx1MDA4MFx1MDRiOVwzXDJcMlwyXHUwMDgy XHUwNGZlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMDg0XHUwNTA4 XDNcMlwyXDJcdTAwODZcdTA1MGFcM1wyXDJcMlx1MDA4OCIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53 cml0ZSgiXHUwNTFmXDNcMlwyXDJcdTAwOGFcdTA1MmNcM1wyXDJcMlx1MDA4Y1x1MDUyZVwzXDJc MlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDA4ZVx1MDU0OVwzXDJcMlwyXHUw MDkwXHUwNTY0XDNcMlwyXDJcdTAwOTJcdTA1NmNcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcMlwyXDJcdTAwOTRcdTA1NzFcM1wyXDJcMlx1MDA5Nlx1MDU3OVwzXDJcMlwyXHUw MDk4XHUwNTdlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMDlhXHUw NTk0XDNcMlwyXDJcdTAwOWNcdTA1OWVcM1wyXDJcMlx1MDA5ZSIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTA1YThcM1wyXDJcMlx1MDBhMFx1MDVhYVwzXDJcMlwyXHUwMGEyXHUwNWMw XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGE0XHUwNWQ2XDNcMlwy XDJcdTAwYTZcdTA1ZTZcM1wyXDJcMlx1MDBhOFx1MDVlYVwzIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlwyXDJcMlx1MDBhYVx1MDVlY1wzXDJcMlwyXHUwMGFjXHUwNjBhXDNcMlwy XDJcdTAwYWVcdTA2MWQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAw YjBcdTA2MWZcM1wyXDJcMlx1MDBiMlx1MDYyM1wzXDJcMlwyXHUwMGI0IikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlx1MDYyYVwzXDJcMlwyXHUwMGI2XHUwNjJmXDNcMlwyXDJcdTAwYjhc dTA2MzNcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAwYmFcdTA2MzVc M1wyXDJcMlx1MDBiY1x1MDY0YVwzXDJcMlwyXHUwMGJlXHUwNjU4XDMiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMGMwXHUwNjVhXDNcMlwyXDJcdTAwYzJcdTA2NmZc M1wyXDJcMlx1MDBjNFx1MDY3OSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTAwYzZcdTA2N2RcM1wyXDJcMlx1MDBjOFx1MDY3ZlwzXDJcMlwyXHUwMGNhIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlx1MDY5NVwzXDJcMlwyXHUwMGNjXHUwNmE5XDNcMlwyXDJcdTAw Y2VcdTA2YmFcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAwZDBcdTA2 YmNcM1wyXDJcMlx1MDBkMlx1MDZjZVwzXDJcMlwyXHUwMGQ0XHUwNmQ4XDMiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMGQ2XHUwNmRhXDNcMlwyXDJcdTAwZDhcdTA2 ZjZcM1wyXDJcMlx1MDBkYVx1MDcwMQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcM1wyXDJcMlx1MDBkY1x1MDcwM1wzXDJcMlwyXHUwMGRlXHUwNzI1XDNcMlwyXDJcdTAwZTAi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNzJmXDNcMlwyXDJcdTAwZTJcdTA3MzFc M1wyXDJcMlx1MDBlNFx1MDc0NVwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilx1MDBlNlx1MDc1MVwzXDJcMlwyXHUwMGU4XHUwNzUzXDNcMlwyXDJcdTAwZWFcdTA3YjNcMyIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAwZWNcdTA3YzdcM1wyXDJc Mlx1MDBlZVx1MDdjZlwzXDJcMlwyXHUwMGYwXHUwN2QxIikNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJcM1wyXDJcMlx1MDBmMlx1MDgzMVwzXDJcMlwyXHUwMGY0XHUwODQ1XDNcMlwyXDJcdTAw ZjYiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDg0ZFwzXDJcMlwyXHUwMGY4XHUwODUz XDNcMlwyXDJcdTAwZmFcdTA4NTVcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgi XHUwMGZjXHUwODVhXDNcMlwyXDJcdTAwZmVcdTA4NWNcM1wyXDJcMlx1MDEwMFx1MDg2NFwzIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDEwMlx1MDg2YVwzXDJcMlwy XHUwMTA0XHUwODZjXDNcMlwyXDJcdTAxMDZcdTA4NzgiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIlwzXDJcMlwyXHUwMTA4XHUwODhhXDNcMlwyXDJcdTAxMGFcdTA4OWNcM1wyXDJcMlx1MDEw YyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA4YjZcM1wyXDJcMlx1MDEwZVx1MDhk MFwzXDJcMlwyXHUwMTEwXHUwOGVkXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXHUwMTEyXHUwOGVmXDNcMlwyXDJcdTAxMTRcdTA4ZjlcM1wyXDJcMlx1MDExNlx1MDkxMlwz IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDExOFx1MDkzYlwzXDJc MlwyXHUwMTFhXHUwOTNmXDNcMlwyXDJcdTAxMWNcdTA5NTYiKQ0KPiA+DQo+ID4gKw0KPiBidWYu d3JpdGUoIlwzXDJcMlwyXHUwMTFlXHUwOWFmXDNcMlwyXDJcdTAxMjBcdTA5YzBcM1wyXDJcMlx1 MDEyMiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwOWMzXDNcMlwyXDJcdTAxMjRcdTA5 YzVcM1wyXDJcMlx1MDEyNlx1MDljZFwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MDEyOFx1MDlkNVwzXDJcMlwyXHUwMTJhXHUwOWRkXDNcMlwyXDJcdTAxMmNcdTA5ZTVc MyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAxMmVcdTA5ZWRcM1wy XDJcMlx1MDEzMFx1MDlmOFwzXDJcMlwyXHUwMTMyXHUwOWZhIikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlwzXDJcMlwyXHUwMTM0XHUwYTA5XDNcMlwyXDJcdTAxMzZcdTBhMGJcM1wyXDJc Mlx1MDEzOCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhMTZcM1wyXDJcMlx1MDEz YVx1MGExOFwzXDJcMlwyXHUwMTNjXHUwYTIzXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwMTNlXHUwYTI1XDNcMlwyXDJcdTAxNDBcdTBhMzJcM1wyXDJcMlx1MDE0Mlx1 MGEzOVwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDE0NFx1MGE0 YVwzXDJcMlwyXHUwMTQ2XHUwYTRjXDNcMlwyXDJcdTAxNDhcdTBhNTMiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxNGFcdTBhNWFcM1wyXDJcMlx1MDE0Y1x1MGE2M1wz XDJcMlwyXHUwMTRlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGE3MlwzXDJcMlwy XHUwMTUwXHUwYTc0XDNcMlwyXDJcdTAxNTJcdTBhNzZcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTAxNTRcdTBhODdcM1wyXDJcMlx1MDE1Nlx1MGE5NVwzXDJcMlwyXHUw MTU4XHUwYWEzXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTVh XHUwYWI3XDNcMlwyXDJcdTAxNWNcdTBhYjlcM1wyXDJcMlx1MDE1ZVx1MGFiZiIpDQo+ID4NCj4g PiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxNjBcdTBhYzRcM1wyXDJcMlx1MDE2Mlx1MGFj OVwzXDJcMlwyXHUwMTY0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGFkNFwzXDJc MlwyXHUwMTY2XHUwYWQ2XDNcMlwyXDJcdTAxNjhcdTBhZGJcM1wyXDJcMiIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTAxNmFcdTBhZGRcM1wyXDJcMlx1MDE2Y1x1MGFlOFwzXDJcMlwy XHUwMTZlXHUwYWY0XDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUw MTcwXHUwYWY2XDNcMlwyXDJcdTAxNzJcdTBhZmJcM1wyXDJcMlx1MDE3NFx1MGIwMCIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDE3Nlx1MGIxNVwzXDJcMlwyXHUwMTc4 XHUwYjFhXDNcMlwyXDJcdTAxN2EiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYjFm XDNcMlwyXDJcdTAxN2NcdTBiMmFcM1wyXDJcMlx1MDE3ZVx1MGIyZlwzXDJcMlwyIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDE4MFx1MGIzNFwzXDJcMlwyXHUwMTgyXHUwYjM5XDNc MlwyXDJcdTAxODRcdTBiNGJcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwy XDJcdTAxODZcdTBiNGRcM1wyXDJcMlx1MDE4OFx1MGI1NlwzXDJcMlwyXHUwMThhXHUwYjY4DQo+ ID4gIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMThjXHUwYjZhXDNc MlwyXDJcdTAxOGVcdTBiNzNcM1wyXDJcMlx1MDE5MCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcdTBiN2NcM1wyXDJcMlx1MDE5Mlx1MGI5MFwzXDJcMlwyXHUwMTk0XHUwYjkyXDNcMlwy XDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMTk2XHUwMTlhXDVcblw2XDJcdTAx OTdcdTAxOWFcNVxmXDdcMlx1MDE5OFx1MDE5YVw1IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRl KCJcMTZcYlwyXHUwMTk5XHUwMTk2XDNcMlwyXDJcdTAxOTlcdTAxOTdcM1wyXDJcMlx1MDE5OSIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxOThcM1wyXDJcMlx1MDE5YVx1MDE5ZFwz XDJcMlwyXHUwMTliXHUwMTk5XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XHUwMTliXHUwMTljXDNcMlwyXDJcdTAxOWNcdTAxOWVcM1wyXDJcMlx1MDE5ZFx1MDE5YlwzIikN Cj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAxOWVcdTAxOWZcNS5cMzBcMlx1MDE5 ZlwzXDNcMlwyXDJcdTAxYTBcdTAxYTEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdc M1wyXDJcdTAxYTFcNVwzXDJcMlwyXHUwMWEyXHUwMWE1XHRcMlwyXDJcdTAxYTNcdTAxYTQiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDFhNFx1MDFhNlw3XHUwMGZi XDJcMlx1MDFhNVx1MDFhM1wzXDJcMlwyXHUwMWE1IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRl KCJcdTAxYTZcM1wyXDJcMlx1MDFhNlx1MDFhOVwzXDJcMlwyXHUwMWE3XHUwMWE4XDchXDJcMiIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxYThcdTAxYWFcN1x1MDBmYVwyXDJcdTAx YTlcdTAxYTdcM1wyXDJcMlx1MDFhOVx1MDFhYSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcM1wyXDJcMlx1MDFhYVw3XDNcMlwyXDJcdTAxYWJcdTAxYWRcN1x1MDBmYVwyXDJcdTAxYWMi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMWFiXDNcMlwyXDJcdTAxYWNcdTAxYWRc M1wyXDJcMlx1MDFhZFx0XDNcMlwyXDJcdTAxYWUiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUo Ilx1MDFhZlw3XDZcMlwyXHUwMWFmXHUwMWIwXDdcN1wyXDJcdTAxYjBcdTAxYjRcN1wzMFwyIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwMWIxXHUwMWI1XDVcNFwzXDJcdTAxYjJc dTAxYjVcNVw2XDRcMlx1MDFiM1x1MDFiNSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc NVxiXDVcMlx1MDFiNFx1MDFiMVwzXDJcMlwyXHUwMWI0XHUwMWIyXDNcMlwyXDJcdTAxYjQiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMWIzXDNcMlwyXDJcdTAxYjRcdTAxYjVcM1wy XDJcMlx1MDFiNVx1MDFiNlwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilx1MDFiNlx1MDFiN1w3XDMxXDJcMlx1MDFiN1wxM1wzXDJcMlwyXHUwMWI4XHUwMWJhXDdcdTAw ODQNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDFiOVx1MDFi OFwzXDJcMlwyXHUwMWI5XHUwMWJhXDNcMlwyXDJcdTAxYmFcdTAxYmIiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxYmJcdTAxYmRcN1BcMlwyXHUwMWJjXHUwMWJl XDdPXDJcMlx1MDFiZFx1MDFiDQo+ID4gYyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc M1wyXDJcMlx1MDFiZFx1MDFiZVwzXDJcMlwyXHUwMWJlXHUwMWMwXDNcMlwyXDJcdTAxYmYiKQ0K PiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDFjMVw3XHUwMGZiXDJcMlx1MDFjMFx1MDFiZlwz XDJcMlwyXHUwMWMwXHUwMWMxXDNcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwy XHUwMWMxXHUwMWMyXDNcMlwyXDJcdTAxYzJcdTAxYzNcN1wyNlwyXDJcdTAxYzNcdTAxYzQiKQ0K PiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw1XDIwXHRcMlx1MDFjNFx1MDFjNlw3XDI3XDJcMlx1 MDFjNVx1MDFjN1w3XHUwMGZiXDJcMiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMWM2 XHUwMWM1XDNcMlwyXDJcdTAxYzZcdTAxYzdcM1wyXDJcMlx1MDFjN1x1MDFjOFwzIikNCj4gPg0K PiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMWM4XHUwMWM5XDcgXDJcMlx1MDFjOVxy XDNcMlwyXDJcdTAxY2FcdTAxY2MiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdc dTAwODRcMlwyXHUwMWNiXHUwMWNhXDNcMlwyXDJcdTAxY2JcdTAxY2NcM1wyXDJcMlx1MDFjYyIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAxY2RcM1wyXDJcMlx1MDFjZFx1MDFj Zlw3UVwyXDJcdTAxY2VcdTAxZDBcN09cMlwyXHUwMWNmDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDFjZVwzXDJcMlwyXHUwMWNmXHUwMWQwXDNcMlwyXDJcdTAxZDBcdTAx ZDJcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAxZDFcdTAxZDNc N1x1MDBmYlwyXDJcdTAxZDJcdTAxZDFcM1wyXDJcMlx1MDFkMlx1MDFkMyIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDFkM1x1MDFkNFwzXDJcMlwyXHUwMWQ0XHUwMWQ1 XDdcMjZcMlwyXHUwMWQ1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDFkNlw1XDIw XHRcMlx1MDFkNlx1MDFkOFw3XDI3XDJcMlx1MDFkN1x1MDFkOVw3XHUwMGZiIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcdTAxZDhcdTAxZDdcM1wyXDJcMlx1MDFkOFx1MDFk OVwzXDJcMlwyXHUwMWQ5XHUwMWRhIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNc MlwyXDJcdTAxZGFcdTAxZGJcNw0KPiA+IFwyXDJcdTAxZGJcMTdcM1wyXDJcMlx1MDFkY1x1MDFl YiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcNVwyMlxuXDJcdTAxZGRcdTAxZWJc NVwyNFwxM1wyXHUwMWRlXHUwMWViXDVcMjZcZlwyXHUwMWRmDQo+ID4gIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlx1MDFlYlw1XDMwXHJcMlx1MDFlMFx1MDFlYlw1XDMyXDE2XDJcdTAx ZTFcdTAxZWJcNVwzNCIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwxN1wyXHUwMWUy XHUwMWViXDVcMzZcMjBcMlx1MDFlM1x1MDFlYlw1DQo+ID4gXDIxXDJcdTAxZTQiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMWViXDVcIlwyMlwyXHUwMWU1XHUwMWViXDUkXDIzXDJc dTAxZTZcdTAxZWJcNSZcMjQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTAxZTdc dTAxZWJcNShcMjVcMlx1MDFlOFx1MDFlYlw1KlwyNlwyXHUwMWU5XHUwMWViIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlw1LFwyN1wyXHUwMWVhXHUwMWRjXDNcMlwyXDJcdTAxZWFcdTAx ZGRcM1wyXDJcMlx1MDFlYSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxZGVcM1wy XDJcMlx1MDFlYVx1MDFkZlwzXDJcMlwyXHUwMWVhXHUwMWUwXDNcMlwyXDIiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwMWVhXHUwMWUxXDNcMlwyXDJcdTAxZWFcdTAxZTJcM1wyXDJc Mlx1MDFlYVx1MDFlM1wzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1 MDFlYVx1MDFlNFwzXDJcMlwyXHUwMWVhXHUwMWU1XDNcMlwyXDJcdTAxZWFcdTAxZTYNCj4gPiAi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxZWFcdTAxZTdcM1wyXDJc Mlx1MDFlYVx1MDFlOFwzXDJcMlwyXHUwMWVhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilx1MDFlOVwzXDJcMlwyXHUwMWViXHUwMWVlXDNcMlwyXDJcdTAxZWNcdTAxZWFcM1wyXDJcMiIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxZWNcdTAxZWRcM1wyXDJcMlx1MDFlZFwy MVwzXDJcMlwyXHUwMWVlXHUwMWVjXDNcMiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUo IlwyXDJcdTAxZWZcdTAxZjBcN1NcMlwyXHUwMWYwXHUwMWY0XDdcdTAwZmJcMlwyXHUwMWYxIikN Cj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMWYyXDdcMzJcMlwyXHUwMWYyXHUwMWYz XDdcdTAwZmFcMlwyXHUwMWYzXHUwMWY1XDciKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRl KCJcMzNcMlwyXHUwMWY0XHUwMWYxXDNcMlwyXDJcdTAxZjRcdTAxZjVcM1wyXDJcMlx1MDFmNSIp DQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlx1MDFmNlwzXDJcMlwyXHUwMWY2XHUwMWY3 XDcNCj4gPiBcMlwyXHUwMWY3XDIzXDNcMlwyXDJcdTAxZjgiKQ0KPiA+DQo+ID4gKw0KPiBidWYu d3JpdGUoIlx1MDFmOVw3VFwyXDJcdTAxZjlcdTAxZmRcN1x1MDBmYlwyXDJcdTAxZmFcdTAxZmJc N1wzMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwMWZiXHUwMWZjXDdcdTAw ZmFcMlwyXHUwMWZjXHUwMWZlXDdcMzNcMlwyXHUwMWZkIikNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJcdTAxZmFcM1wyXDJcMlx1MDFmZFx1MDFmZVwzXDJcMlwyXHUwMWZlXHUwMWZmXDNcMlwy XDIiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAxZmZcdTAyMDBcNw0KPiBcMlwy XHUwMjAwXDI1XDNcMlwyXDJcdTAyMDFcdTAyMDJcN1VcMiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53 cml0ZSgiXDJcdTAyMDJcdTAyMDZcN1x1MDBmYlwyXDJcdTAyMDNcdTAyMDRcN1wzMlwyXDJcdTAy MDQiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDIwNVw3XHUwMGZhXDJcMlx1MDIwNVx1 MDIwN1w3XDMzXDJcMlx1MDIwNlx1MDIwM1wzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlwyXDJcMlx1MDIwNlx1MDIwN1wzXDJcMlwyXHUwMjA3XHUwMjA4XDNcMlwyXDJcdTAyMDhc dTAyMDkiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcNw0KPiA+IFwyXDJcdTAyMDlc MjdcM1wyXDJcMlx1MDIwYVx1MDIwYlw3VlwyXDJcdTAyMGJcdTAyMGYiKQ0KPiA+DQo+ID4gKw0K PiBidWYud3JpdGUoIlw3XHUwMGZiXDJcMlx1MDIwY1x1MDIwZFw3XDMyXDJcMlx1MDIwZFx1MDIw ZVw3XHUwMGZhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTAyMGVcdTAyMTBc N1wzM1wyXDJcdTAyMGZcdTAyMGNcM1wyXDJcMlx1MDIwZlx1MDIxMCIpDQo+ID4NCj4gPiArICAg ICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMjEwXHUwMjExXDNcMlwyXDJcdTAyMTFcdTAyMTJc Nw0KPiBcMlwyXHUwMjEyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzMVwzXDJcMlwy XHUwMjEzXHUwMjE0XDdSXDJcMlx1MDIxNFx1MDIxOFw3XHUwMGZiXDJcMiIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTAyMTVcdTAyMTZcN1wzMlwyXDJcdTAyMTZcdTAyMTdcN1x1 MDBmYVwyXDJcdTAyMTdcdTAyMTkiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcMzNc MlwyXHUwMjE4XHUwMjE1XDNcMlwyXDJcdTAyMThcdTAyMTlcM1wyXDJcMlx1MDIxOSIpDQo+ID4N Cj4gPiArICAgICAgICBidWYud3JpdGUoIlx1MDIxYVwzXDJcMlwyXHUwMjFhXHUwMjFiXDcNCj4g PiBcMlwyXHUwMjFiXDMzXDNcMlwyXDJcdTAyMWMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXHUwMjFkXDdXXDJcMlx1MDIxZFx1MDIyMVw3XHUwMGZiXDJcMlx1MDIxZVx1MDIxZlw3XDMy IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTAyMWZcdTAyMjBcN1x1MDBmYVwy XDJcdTAyMjBcdTAyMjJcN1wzM1wyXDJcdTAyMjEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXHUwMjFlXDNcMlwyXDJcdTAyMjFcdTAyMjJcM1wyXDJcMlx1MDIyMlx1MDIyM1wzXDJcMlwy IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjIzXHUwMjI0XDcNCj4gXDJcMlx1 MDIyNFwzNVwzXDJcMlwyXHUwMjI1XHUwMjI2XDdYXDIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIlwyXHUwMjI2XHUwMjJhXDdcdTAwZmJcMlwyXHUwMjI3XHUwMjI4XDdcMzJcMlwyXHUwMjI4 IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAyMjlcN1x1MDBmYVwyXDJcdTAyMjlcdTAy MmJcN1wzM1wyXDJcdTAyMmFcdTAyMjdcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcMlwyXDJcdTAyMmFcdTAyMmJcM1wyXDJcMlx1MDIyYlx1MDIyY1wzXDJcMlwyXHUwMjJjXHUw MjJkIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDcNCj4gPiBcMlwyXHUwMjJkXDM3 XDNcMlwyXDJcdTAyMmVcdTAyMmZcN1lcMlwyXHUwMjJmXHUwMjMzIikNCj4gPg0KPiA+ICsNCj4g YnVmLndyaXRlKCJcN1x1MDBmYlwyXDJcdTAyMzBcdTAyMzFcN1wzMlwyXDJcdTAyMzFcdTAyMzJc N1x1MDBmYSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXHUwMjMyXHUwMjM0 XDdcMzNcMlwyXHUwMjMzXHUwMjMwXDNcMlwyXDJcdTAyMzNcdTAyMzQiKQ0KPiA+DQo+ID4gKyAg ICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDIzNFx1MDIzNVwzXDJcMlwyXHUwMjM1XHUwMjM2 XDcNCj4gXDJcMlx1MDIzNiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCIhXDNcMlwy XDJcdTAyMzdcdTAyMzhcN1pcMlwyXHUwMjM4XHUwMjNjXDdcdTAwZmJcMlwyXHUwMjM5IikNCj4g Pg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAyM2FcN1wzMlwyXDJcdTAyM2FcdTAyM2JcN1x1MDBm YVwyXDJcdTAyM2JcdTAyM2RcNyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDMzXDJcMlx1 MDIzY1x1MDIzOVwzXDJcMlwyXHUwMjNjXHUwMjNkXDNcMlwyXDJcdTAyM2QiKQ0KPiA+DQo+ID4g KyAgICAgICAgYnVmLndyaXRlKCJcdTAyM2VcM1wyXDJcMlx1MDIzZVx1MDIzZlw3DQo+IFwyXDJc dTAyM2YjXDNcMlwyXDJcdTAyNDAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMjQx XDdcdTAwZmJcMlwyXHUwMjQxXHUwMjQ1XDdcdTAwZmJcMlwyXHUwMjQyXHUwMjQzIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XDMyXDJcMlx1MDI0M1x1MDI0NFw3XHUwMGZhXDJcMlx1 MDI0NFx1MDI0Nlw3XDMzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAyNDVc dTAyNDJcM1wyXDJcMlx1MDI0NVx1MDI0NlwzXDJcMlwyXHUwMjQ2XHUwMjQ3XDMiKQ0KPiA+DQo+ ID4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTAyNDdcdTAyNDhcNw0KPiA+IFwyXDJcdTAy NDglXDNcMlwyXDJcdTAyNDlcdTAyNGJcNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJT XDJcMlx1MDI0YVx1MDI0Y1w3XHUwMGZiXDJcMlx1MDI0Ylx1MDI0YVwzXDJcMlwyXHUwMjRiIikN Cj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAyNGNcM1wyXDJcMlx1MDI0Y1x1MDI0ZFwzXDJc MlwyXHUwMjRkXHUwMjRlXDdcMzZcMiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwy XHUwMjRlXHUwMjRmXDdcdTAwZmFcMlwyXHUwMjRmXHUwMjUwXDcgXDJcMlx1MDI1MFwnIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMjUxXHUwMjUzXDdUXDJcMlx1 MDI1Mlx1MDI1NFw3XHUwMGZiXDJcMlx1MDI1MyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTAyNTJcM1wyXDJcMlx1MDI1M1x1MDI1NFwzXDJcMlwyXHUwMjU0XHUwMjU1XDNcMlwyXDIi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMjU1XHUwMjU2XDdcMzZcMlwyXHUw MjU2XHUwMjU3XDdcdTAwZmFcMlwyXHUwMjU3XHUwMjU4IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDcNCj4gXDJcMlx1MDI1OClcM1wyXDJcMlx1MDI1OVx1MDI1Ylw3VVwyXDJcdTAy NWFcdTAyNWMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdcdTAwZmJcMlwyXHUw MjViXHUwMjVhXDNcMlwyXDJcdTAyNWJcdTAyNWNcM1wyXDJcMlx1MDI1YyIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTAyNWRcM1wyXDJcMlx1MDI1ZFx1MDI1ZVw3XDM2XDJcMlx1MDI1 ZVx1MDI1Zlw3XHUwMGZhIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDI1 Zlx1MDI2MFw3DQo+IFwyXDJcdTAyNjArXDNcMlwyXDJcdTAyNjFcdTAyNjNcN1YiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDI2Mlx1MDI2NFw3XHUwMGZiXDJcMlx1MDI2M1x1 MDI2MlwzXDJcMlwyXHUwMjYzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAyNjRcM1wy XDJcMlx1MDI2NFx1MDI2NVwzXDJcMlwyXHUwMjY1XHUwMjY2XDdcMzZcMiIpDQo+ID4NCj4gPiAr ICAgICAgICBidWYud3JpdGUoIlwyXHUwMjY2XHUwMjY3XDdcdTAwZmFcMlwyXHUwMjY3XHUwMjY4 XDcgXDJcMlx1MDI2OC0NCj4gXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlwy XHUwMjY5XHUwMjZhXDcrXDJcMlx1MDI2YVx1MDI2Ylw3W1wyXDJcdTAyNmJcdTAyNmMiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTAyNmNcdTAyNmRcNUxcJ1wyXHUw MjZkXHUwMjZlXDchXDJcMlx1MDI2ZVx1MDI2ZiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcNy5cMlwyXHUwMjZmXHUwMjcwXDdcYlwyXDJcdTAyNzBcdTAyNzFcN1x1MDBlY1wyXDJcdTAy NzEiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDI3Mlw3XDMwXDJcMlx1MDI3Mlx1MDI3 M1w3XHUwMGZhXDJcMlx1MDI3M1x1MDI3NFw3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlwzMVwyXDJcdTAyNzRcdTAyNzVcNyFcMlwyXHUwMjc1XHUwMjc2XDc9XDJcMlx1MDI3Nlx1 MDI3NyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTAyNzdcdTAyNzhcN1x1 MDBlY1wyXDJcdTAyNzhcdTAyNzlcN1wzMFwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwMjc5XHUwMjdhXDdcdTAwZmFcMlwyXHUwMjdhXHUwMjdiXDdcMzFcMlwyXHUwMjdi XHUwMjgxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3IVwyXDJcdTAyN2NcdTAy N2RcN1x1MDA4M1wyXDJcdTAyN2RcdTAyN2VcN1xiXDJcMlx1MDI3ZSIpDQo+ID4NCj4gPiArDQo+ IGJ1Zi53cml0ZSgiXHUwMjdmXDVcNjBcMzFcMlx1MDI3Zlx1MDI4MFw3IVwyXDJcdTAyODBcdTAy ODJcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTAyODFcdTAyN2NcM1wy XDJcMlx1MDI4MVx1MDI4MlwzXDJcMlwyXHUwMjgyXHUwMjg4IikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMjgzXHUwMjg0XDdcdTAwODFcMlwyXHUwMjg0XHUwMjg1 XDdcYlwyXDJcdTAyODUiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDI4Nlw1XDYyXDMy XDJcdTAyODZcdTAyODdcNyFcMlwyXHUwMjg3XHUwMjg5XDNcMlwyIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlwyXHUwMjg4XHUwMjgzXDNcMlwyXDJcdTAyODhcdTAyODlcM1wyXDJcMlx1 MDI4OVx1MDI4ZiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDI4 YVx1MDI4Ylw3XHUwMDgyXDJcMlx1MDI4Ylx1MDI4Y1w3XGJcMlwyXHUwMjhjIikNCj4gPg0KPiA+ ICsNCj4gYnVmLndyaXRlKCJcdTAyOGRcNVw2NlwzNFwyXHUwMjhkXHUwMjhlXDchXDJcMlx1MDI4 ZVx1MDI5MFwzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlx1MDI4Zlx1MDI4 YVwzXDJcMlwyXHUwMjhmXHUwMjkwXDNcMlwyXDJcdTAyOTBcdTAyOTEiKQ0KPiA+DQo+ID4gKyAg ICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDI5MVx1MDI5Mlw1OFwzNVwyXHUwMjkyXHUwMjkz XDctDQo+IFwyXDJcdTAyOTMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAyOTRc NyBcMlwyXHUwMjk0L1wzXDJcMlwyXHUwMjk1XHUwMjk4XDVMXCdcMlx1MDI5NiIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAyOTdcNyhcMlwyXHUwMjk3XHUwMjk5XDVMXCdcMlx1 MDI5OFx1MDI5NlwzXDJcMlwyXHUwMjk4IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAy OTlcM1wyXDJcMlx1MDI5OVx1MDI5Y1wzXDJcMlwyXHUwMjlhXHUwMjliXDcoXDJcMiIpDQo+ID4N Cj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMjliXHUwMjlkXDVMXCdcMlx1MDI5Y1x1MDI5YVwzXDJc MlwyXHUwMjljXHUwMjlkXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlwyXHUw MjlkXHUwMmEwXDNcMlwyXDJcdTAyOWVcdTAyOWZcNyhcMlwyXHUwMjlmXHUwMmExIikNCj4gPg0K PiA+ICsNCj4gYnVmLndyaXRlKCJcNUxcJ1wyXHUwMmEwXHUwMjllXDNcMlwyXDJcdTAyYTBcdTAy YTFcM1wyXDJcMlx1MDJhMSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcNjFcM1wy XDJcMlx1MDJhMlx1MDJhN1w1XDY0XDMzXDJcdTAyYTNcdTAyYTRcNyhcMlwyXHUwMmE0IikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDJhNlw1XDY0XDMzXDJcdTAyYTVcdTAyYTNcM1wy XDJcMlx1MDJhNlx1MDJhOVwzXDJcMiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTAy YTdcdTAyYTVcM1wyXDJcMlx1MDJhN1x1MDJhOFwzXDJcMlwyXHUwMmE4XDYzXDMiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMmE5XHUwMmE3XDNcMlwyXDJcdTAyYWFcdTAy YWJcdFwzXDJcMlx1MDJhYlw2NSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1wy XDJcMlx1MDJhY1x1MDJhZFx0XDRcMlwyXHUwMmFkXDY3XDNcMlwyXDJcdTAyYWVcdTAyYjAiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDU6XDM2XDJcdTAyYWZcdTAyYWVcM1wyXDJcMlx1 MDJiMFx1MDJiM1wzXDJcMlwyXHUwMmIxIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1 MDJhZlwzXDJcMlwyXHUwMmIxXHUwMmIyXDNcMlwyXDJcdTAyYjI5XDNcMlwyXDJcdTAyYjMiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMmIxXDNcMlwyXDJcdTAyYjRcdTAyYmZcNWRc NjNcMlx1MDJiNVx1MDJiZlw1aFw2NVwyIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgi XHUwMmI2XHUwMmJmXDVqXDY2XDJcdTAyYjdcdTAyYmZcNT4NCj4gPiBcMlx1MDJiOFx1MDJiZlw1 QCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCIhXDJcdTAyYjlcdTAyYmZcNUQjXDJcdTAy YmFcdTAyYmZcNTxcMzdcMlx1MDJiYlx1MDJiZiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcNUYkXDJcdTAyYmNcdTAyYmZcNUglXDJcdTAyYmRcdTAyYmZcNVx1MDExY1x1MDA4Zlwy XHUwMmINCj4gPiBlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDJiNFwzXDJcMlwy XHUwMmJlXHUwMmI1XDNcMlwyXDJcdTAyYmVcdTAyYjZcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTAyYmVcdTAyYjdcM1wyXDJcMlx1MDJiZVx1MDJiOFwzXDJcMlwyXHUw MmJlXHUwMmI5XDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMmJl XHUwMmJhXDNcMlwyXDJcdTAyYmVcdTAyYmJcM1wyXDJcMlx1MDJiZVx1MDJiDQo+ID4gYyIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDJiZVx1MDJiZFwzXDJcMlwyXHUw MmJmO1wzXDJcMlwyXHUwMmMwXHUwMmMxIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcN1x1 MDA5YlwyXDJcdTAyYzFcdTAyYzJcN1x1MDBmYlwyXDJcdTAyYzJcdTAyYzNcNyFcMiIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlx1MDJjM1x1MDJjNFw3XDYyXDJcMlx1MDJjNFx1MDJj NVw3XGJcMlwyXHUwMmM1XHUwMmM2IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcN1x1MDBl Y1wyXDJcdTAyYzZcdTAyYzdcN1wzMFwyXDJcdTAyYzdcdTAyYzhcN1x1MDBmYSIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwMmM4XHUwMmNkXDdcMzFcMlwyXHUwMmM5XHUwMmNh XDchXDJcMlx1MDJjYVx1MDJjYiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDdcdTAwOWNc MlwyXHUwMmNiXHUwMmNjXDdcYlwyXDJcdTAyY2NcdTAyY2VcN1x1MDBmYVwyIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwMmNkXHUwMmM5XDNcMlwyXDJcdTAyY2RcdTAyY2VcM1wy XDJcMlx1MDJjZVx1MDJjZiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwy XHUwMmNmXHUwMmQwXDcNCj4gPiBcMlwyXHUwMmQwPVwzXDJcMlwyXHUwMmQxXHUwMmUyIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XHUwMDlkXDJcMlx1MDJkMlx1MDJkM1w3XHUwMGZi XDJcMlx1MDJkM1x1MDJlM1w3IVwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXHUw MmQ0XHUwMmQ1XDdWXDJcMlx1MDJkNVx1MDJlM1w3IVwyXDJcdTAyZDZcdTAyZDdcNyIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJVXDJcMlx1MDJkN1x1MDJlM1w3IVwyXDJcdTAyZDhcdTAy ZDlcN1RcMlwyXHUwMmQ5XHUwMmUzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3 IVwyXDJcdTAyZGFcdTAyZGJcN1NcMlwyXHUwMmRiXHUwMmUzXDchXDJcMlx1MDJkY1x1MDJkZCIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN1hcMlwyXHUwMmRkXHUwMmUzXDchXDJc Mlx1MDJkZVx1MDJkZlw3WVwyXDJcdTAyZGZcdTAyZTMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDchXDJcMlx1MDJlMFx1MDJlMVw3WlwyXDJcdTAyZTFcdTAyZTNcNyFcMlwyXHUw MmUyXHUwMmQyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMmUyXHUw MmQ0XDNcMlwyXDJcdTAyZTJcdTAyZDZcM1wyXDJcMlx1MDJlMiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTAyZDhcM1wyXDJcMlx1MDJlMlx1MDJkYVwzXDJcMlwyXHUwMmUyXHUwMmRj XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMmUyXHUwMmRlXDNcMlwy XDJcdTAyZTJcdTAyZTBcM1wyXDJcMlx1MDJlM1x1MDJlOFwzIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlwyXDJcMlx1MDJlNFx1MDJlNVw3XHUwMDhmXDJcMlx1MDJlNVx1MDJlNlw3 XGJcMlwyXHUwMmU2IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAyZTdcN1x1MDBmYVwy XDJcdTAyZTdcdTAyZTlcNyFcMlwyXHUwMmU4XHUwMmU0XDNcMiIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcMlwyXHUwMmU4XHUwMmU5XDNcMlwyXDJcdTAyZTlcdTAyZWFcM1wyXDJc Mlx1MDJlYVx1MDJlYiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN1x1MDA4ZVwyXDJc dTAyZWJcdTAyZWNcN1xiXDJcMlx1MDJlY1x1MDJlZFw3XHUwMGZiXDIiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDJcdTAyZWRcdTAyZWVcNyFcMlwyXHUwMmVlXHUwMmVmXDdbXDJcMlx1 MDJlZlx1MDJmMFw3IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXGJcMlwyXHUwMmYw XHUwMmYxXDVMXCdcMlx1MDJmMVx1MDJmMlw3IFwyXDJcdTAyZjI/XDMiKQ0KPiA+DQo+ID4gKw0K PiBidWYud3JpdGUoIlwyXDJcMlx1MDJmM1x1MDMwNFw3XHUwMDllXDJcMlx1MDJmNFx1MDJmNVw3 XHUwMGZiXDJcMiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMmY1XHUwMzA1XDchXDJc Mlx1MDJmNlx1MDJmN1w3VlwyXDJcdTAyZjdcdTAzMDVcNyEiKQ0KPiA+DQo+ID4gKw0KPiBidWYu d3JpdGUoIlwyXDJcdTAyZjhcdTAyZjlcN1VcMlwyXHUwMmY5XHUwMzA1XDchXDJcMlx1MDJmYVx1 MDJmYiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN1RcMlwyXHUwMmZiXHUwMzA1XDch XDJcMlx1MDJmY1x1MDJmZFw3U1wyXDJcdTAyZmRcdTAzMDUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDchXDJcMlx1MDJmZVx1MDJmZlw3WFwyXDJcdTAyZmZcdTAzMDVcNyFcMlwyXHUw MzAwXHUwMzAxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3WVwyXDJcdTAzMDFc dTAzMDVcNyFcMlwyXHUwMzAyXHUwMzAzXDdaXDJcMlx1MDMwM1x1MDMwNSIpDQo+ID4NCj4gPiAr DQo+IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDMwNFx1MDJmNFwzXDJcMlwyXHUwMzA0XHUwMmY2XDNc MlwyXDJcdTAzMDQiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDJmOFwzXDJcMlwyXHUw MzA0XHUwMmZhXDNcMlwyXDJcdTAzMDRcdTAyZmNcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTAzMDRcdTAyZmVcM1wyXDJcMlx1MDMwNFx1MDMwMFwzXDJcMlwyXHUwMzA0 XHUwMzAyXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMzA1XHUwMzBh XDNcMlwyXDJcdTAzMDZcdTAzMDdcN1x1MDA4ZlwyXDJcdTAzMDciKQ0KPiA+DQo+ID4gKw0KPiBi dWYud3JpdGUoIlx1MDMwOFw3XGJcMlwyXHUwMzA4XHUwMzA5XDdcdTAwZmFcMlwyXHUwMzA5XHUw MzBiXDchIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTAzMGFcdTAzMDZcM1wy XDJcMlx1MDMwYVx1MDMwYlwzXDJcMlwyXHUwMzBiXHUwMzBjIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMzBjXHUwMzBkXDdcdTAwOWNcMlwyXHUwMzBkXHUwMzBl XDdcYlwyXDJcdTAzMGUNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw MzEzXDVCXCJcMlx1MDMwZlx1MDMxMFw3KFwyXDJcdTAzMTBcdTAzMTJcNUJcIlwyXHUwMzExIikN Cj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAzMGZcM1wyXDJcMlx1MDMxMlx1MDMxNVwzXDJc MlwyXHUwMzEzXHUwMzExXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw MzEzXHUwMzE0XDNcMlwyXDJcdTAzMTRcdTAzMTZcM1wyXDJcMlx1MDMxNVx1MDMxM1wzIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcMlx1MDMxNlx1MDMyNlw3IVwyXDJcdTAzMTdc dTAzMThcN1x1MDA4ZVwyXDJcdTAzMTgiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDMx OVw3XGJcMlwyXHUwMzE5XHUwMzFhXDdcdTAwZmJcMlwyXHUwMzFhXHUwMzI3XDchIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTAzMWJcdTAzMWNcN1x1MDA4ZVwyXDJcdTAzMWNc dTAzMWRcN1xiXDJcMlx1MDMxZCIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzFlXDdc dTAwZWNcMlwyXHUwMzFlXHUwMzFmXDdcMzBcMlwyXHUwMzFmXHUwMzIwXDciKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGZhXDJcMlx1MDMyMFx1MDMyMVw3XDMxXDJcMlx1MDMyMVx1 MDMyMlw3IVwyXDJcdTAzMjIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMzIz XDdcdTAwOWZcMlwyXHUwMzIzXHUwMzI0XDdcYlwyXDJcdTAzMjRcdTAzMjVcN1x1MDBmYSIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwMzI1XHUwMzI3XDchXDJcMlx1MDMyNlx1 MDMxN1wzXDJcMlwyXHUwMzI2XHUwMzFiIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wy XDJcMlx1MDMyN1x1MDMyOFwzXDJcMlwyXHUwMzI4XHUwMzI5XDdbXDJcMlx1MDMyOSIpDQo+ID4N Cj4gPiArICAgICAgICBidWYud3JpdGUoIlx1MDMyYVw3XGJcMlwyXHUwMzJhXHUwMzJiXDVMXCdc Mlx1MDMyYlx1MDMyY1w3DQo+ID4gXDJcMlx1MDMyYyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJBXDNcMlwyXDJcdTAzMmRcdTAzMmVcN1x1MDBmYVwyXDJcdTAzMmVDXDNcMlwyXDJcdTAz MmYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMzMwXDdcdTAwYTBcMlwyXHUwMzMw XHUwMzMxXDdcdTAwZmJcMlwyXHUwMzMxXHUwMzM2IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlw3IVwyXDJcdTAzMzJcdTAzMzNcN1x1MDA4ZlwyXDJcdTAzMzNcdTAzMzRcN1xiXDJc Mlx1MDMzNCIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzM1XDdcdTAwZmFcMlwyXHUw MzM1XHUwMzM3XDchXDJcMlx1MDMzNlx1MDMzMlwzXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDJcMlx1MDMzNlx1MDMzN1wzXDJcMlwyXHUwMzM3XHUwMzNmXDNcMlwyXDJcdTAzMzhc dTAzMzkiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcdTAwOGVcMlwyXHUwMzM5XHUw MzNhXDdcYlwyXDJcdTAzM2FcdTAzM2JcN1x1MDBlY1wyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJcMlx1MDMzYlx1MDMzY1w3XDMwXDJcMlx1MDMzY1x1MDMzZFw3XHUwMGZhXDJcMlx1MDMz ZCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAzM2VcN1wzMVwyXDJcdTAzM2VcdTAz NDBcNyFcMlwyXHUwMzNmXHUwMzM4XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXHUwMzQwXHUwMzQxXDNcMlwyXDJcdTAzNDFcdTAzM2ZcM1wyXDJcMlx1MDM0MVx1MDM0Mlwz IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDM0Mlx1MDM0M1wzXDJc MlwyXHUwMzQzXHUwMzQ0XDdbXDJcMlx1MDM0NFx1MDM0NSIpDQo+ID4NCj4gPiArICAgICAgICBi dWYud3JpdGUoIlw3XGJcMlwyXHUwMzQ1XHUwMzQ2XDVMXCdcMlx1MDM0Nlx1MDM0N1w3IFwyXDJc dTAzNDdFIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDM0OFx1MDM0OVw3 bFwyXDJcdTAzNDlcdTAzNGFcNVx1MDEyNFx1MDA5MyIpDQo+ID4NCj4gPiArICAgICAgICBidWYu d3JpdGUoIlwyXHUwMzRhXHUwMzRiXDcNCj4gXDJcMlx1MDM0Ylx1MDM0Y1w1OFwzNVwyXHUwMzRj XHUwMzRkIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdzXDJcMlx1MDM0ZFx1MDM0 ZVw3DQo+IFwyXDJcdTAzNGVHXDNcMlwyXDJcdTAzNGZcdTAzNTAiKQ0KPiA+DQo+ID4gKyAgICAg ICAgYnVmLndyaXRlKCJcN2tcMlwyXHUwMzUwXHUwMzUxXDVcdTAxMjRcdTAwOTNcMlx1MDM1MVx1 MDM1Mlw3DQo+ID4gXDJcMiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzUyXHUwMzUz XDU4XDM1XDJcdTAzNTNcdTAzNTRcN3NcMlwyXHUwMzU0XHUwMzU1XDciKQ0KPiA+DQo+ID4gKyAg ICAgICAgYnVmLndyaXRlKCINCj4gPiBcMlwyXHUwMzU1SVwzXDJcMlwyXHUwMzU2XHUwMzU3XDdc dTAwZmFcMlwyXHUwMzU3XHUwMzU4IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3IVwy XDJcdTAzNThcdTAzNTlcN1x1MDBmYVwyXDJcdTAzNTlcdTAzNWFcNyFcMlwyXHUwMzVhIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDM1Ylw3XHUwMGZhXDJcMlx1MDM1Ylx1MDM1 Y1w3IVwyXDJcdTAzNWNcdTAzNWRcN1x1MDBmYSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgi XDJcMlx1MDM1ZFx1MDM1ZVw3IVwyXDJcdTAzNWVcdTAzNWZcN1x1MDBmYVwyXDJcdTAzNWYiKQ0K PiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDM2MFw3IVwyXDJcdTAzNjBcdTAzNjFcN1x1MDBm YVwyXDJcdTAzNjFcdTAzNjJcNyFcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc Mlx1MDM2Mlx1MDM2M1w3XHUwMGZhXDJcMlx1MDM2M1x1MDM2NFw3IVwyXDJcdTAzNjRcdTAzNjUi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcdTAwZmFcMlwyXHUwMzY1S1wzXDJcMlwy XHUwMzY2XHUwMzY3XDdcMjZcMlwyXHUwMzY3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDM2OFw3XHUwMGZhXDJcMlx1MDM2OFx1MDM2OVw3IVwyXDJcdTAzNjlcdTAzNmFcN1x1 MDBmYSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDM2YVx1MDM2Ylw3IVwyXDJc dTAzNmJcdTAzNmNcN1x1MDBmYVwyXDJcdTAzNmMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwMzcyXDchXDJcMlx1MDM2ZFx1MDM2ZVw3XDI2XDJcMlx1MDM2ZVx1MDM2Zlw1SiZc Mlx1MDM2ZiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzcwXDdcMjdcMlwyXHUwMzcw XHUwMzczXDNcMlwyXDJcdTAzNzFcdTAzNzNcNUomXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXHUwMzcyXHUwMzZkXDNcMlwyXDJcdTAzNzJcdTAzNzFcM1wyXDJcMlx1MDM3M1x1MDM3 NFwzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcMlx1MDM3NFx1MDM3NVw3XDI3 XDJcMlx1MDM3NU1cM1wyXDJcMlx1MDM3Nlx1MDM3NyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0 ZSgiXDdcdTAwZWNcMlwyXHUwMzc3XHUwMzc4XDdcMzBcMlwyXHUwMzc4XHUwMzc5XDdcdTAwZmEi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDM3OVx1MDM3YVw3XDMxXDJcMlx1 MDM3YU9cM1wyXDJcMlx1MDM3Ylx1MDM3Y1w1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlIqXDJcdTAzN2NcdTAzN2RcNVQrXDJcdTAzN2RRXDNcMlwyXDJcdTAzN2VcdTAzN2ZcN1x1 MDA4ZQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwMzdmXHUwMzgw XDdcYlwyXDJcdTAzODBcdTAzODFcN1x1MDBmYlwyXDJcdTAzODEiKQ0KPiA+DQo+ID4gKw0KPiBi dWYud3JpdGUoIlx1MDM4M1w3IVwyXDJcdTAzODJcdTAzN2VcM1wyXDJcMlx1MDM4Mlx1MDM4M1wz XDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDM4M1x1MDM4OVwzXDJcMlwy XHUwMzg0XHUwMzg1XDdcdTAwOGZcMlwyXHUwMzg1XHUwMzg2IikNCj4gPg0KPiA+ICsgICAgICAg IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTAzODZcdTAzODdcNVgtDQo+ID4gXDJcdTAzODdcdTAzODhc NyFcMlwyXHUwMzg4XHUwMzhhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwy XHUwMzg5XHUwMzg0XDNcMlwyXDJcdTAzODlcdTAzOGFcM1wyXDJcMlx1MDM4YSIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcdTAzOGZcM1wyXDJcMlx1MDM4Ylx1MDM4Y1w3XHUwMDkxXDJc Mlx1MDM4Y1x1MDM4ZFw3XGIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAzOGRc dTAzOGVcN1x1MDBmYVwyXDJcdTAzOGVcdTAzOTBcNyFcMlwyXHUwMzhmIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlx1MDM4YlwzXDJcMlwyXHUwMzhmXHUwMzkwXDNcMlwyXDJcdTAzOTBT XDNcMlwyXDJcdTAzOTEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMzkyXDdcNjJc MlwyXHUwMzkyXHUwMzkzXDdcYlwyXDJcdTAzOTNcdTAzOTRcN1x1MDBlYyIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwMzk0XHUwMzk1XDdcMzBcMlwyXHUwMzk1XHUwMzk2XDdc dTAwZmFcMlwyXHUwMzk2IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAzOTdcN1wzMVwy XDJcdTAzOTdcdTAzOThcNyFcMlwyXHUwMzk4XHUwMzk5XDc9XDJcMiIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcdTAzOTlcdTAzOWFcN1xiXDJcMlx1MDM5YVx1MDM5Ylw3XHUwMGVj XDJcMlx1MDM5Ylx1MDM5YyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN1wzMFwyXDJc dTAzOWNcdTAzOWRcN1x1MDBmYVwyXDJcdTAzOWRcdTAzOWVcN1wzMVwyXDIiKQ0KPiA+DQo+ID4g Kw0KPiBidWYud3JpdGUoIlx1MDM5ZVVcM1wyXDJcMlx1MDM5Zlx1MDNhOFw3flwyXDJcdTAzYTBc dTAzYThcN3lcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDNhMVx1MDNhOFw3 e1wyXDJcdTAzYTJcdTAzYThcN1x1MDA4MFwyXDJcdTAzYTNcdTAzYTgiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDd8XDJcMlx1MDNhNFx1MDNhOFw3XDE3N1wyXDJcdTAzYTVcdTAzYThc N3pcMlwyXHUwM2E2IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAzYThcN31cMlwyXHUw M2E3XHUwMzlmXDNcMlwyXDJcdTAzYTdcdTAzYTBcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTAzYTdcdTAzYTFcM1wyXDJcMlx1MDNhN1x1MDNhMlwzXDJcMlwyXHUwM2E3 XHUwM2EzXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwM2E3XHUw M2E0XDNcMlwyXDJcdTAzYTdcdTAzYTVcM1wyXDJcMlx1MDNhN1x1MDNhNiIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDNhOFdcM1wyXDJcMlx1MDNhOVx1MDNhYVw3XHUw MGZiXDJcMlx1MDNhYSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwM2FiXDdcMzJcMlwy XHUwM2FiXHUwM2FjXDdcdTAwZmFcMlwyXHUwM2FjXHUwM2I2XDciKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXDMzXDJcMlx1MDNhZFx1MDNiMlw3XHUwMGZiXDJcMlx1MDNhZVx1MDNh Zlw3XDM0XDJcMlx1MDNhZiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAzYjFcNVx1 MDE1Y1x1MDBhZlwyXHUwM2IwXHUwM2FlXDNcMlwyXDJcdTAzYjFcdTAzYjQiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAzYjJcdTAzYjBcM1wyXDJcMlx1MDNiMlx1MDNi M1wzXDJcMlwyXHUwM2IzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDNiNlwzXDJc MlwyXHUwM2I0XHUwM2IyXDNcMlwyXDJcdTAzYjVcdTAzYTlcM1wyXDJcMiIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTAzYjVcdTAzYWRcM1wyXDJcMlx1MDNiNllcM1wyXDJcMlx1MDNi N1x1MDNiOVw3XDM1XDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTAzYjhcdTAz YjdcM1wyXDJcMlx1MDNiOFx1MDNiOVwzXDJcMlwyXHUwM2I5XHUwM2JhIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwM2JhXHUwM2U0XDdcdTAwZmFcMlwyXHUwM2JiXHUw M2U0XDdcdTAwZDNcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlx1MDNiY1x1 MDNlNFw3XHUwMGQ0XDJcMlx1MDNiZFx1MDNlNFw3XHUwMGQ1XDJcMlx1MDNiZSIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcdTAzZTRcN1x1MDBkNlwyXDJcdTAzYmZcdTAzZTRcN1x1MDBk N1wyXDJcdTAzYzBcdTAzYzEiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw3XHUwMGZhXDJc Mlx1MDNjMVx1MDNjMlw3XDM2XDJcMlx1MDNjMlx1MDNjM1w3XHUwMGZhIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlwyXDJcdTAzYzNcdTAzYzRcN1wzNlwyXDJcdTAzYzRcdTAzZTRcN1x1 MDBmYVwyXDJcdTAzYzUiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDNjNlw3XHUwMGZh XDJcMlx1MDNjNlx1MDNjN1w3XDM3XDJcMlx1MDNjN1x1MDNjOFw3IikNCj4gPg0KPiA+ICsNCj4g YnVmLndyaXRlKCJcdTAwZmFcMlwyXHUwM2M4XHUwM2M5XDdcMzdcMlwyXHUwM2M5XHUwM2U0XDdc dTAwZmFcMiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwyXHUwM2NhXHUwM2NiXDdc dTAwZmFcMlwyXHUwM2NiXHUwM2NjXDcNCj4gPiBcMlwyXHUwM2NjXHUwM2NkIikNCj4gPg0KPiA+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwZmFcMlwyXHUwM2NkXHUwM2NlXDcNCj4gPiBcMlwy XHUwM2NlXHUwM2NmXDVMXCdcMlx1MDNjZiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUo Ilx1MDNkMFw3DQo+ID4gXDJcMlx1MDNkMFx1MDNkMVw3XHUwMGVjXDJcMlx1MDNkMVx1MDNkMlw3 XDMwIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTAzZDJcdTAzZDNcN1x1MDBm YVwyXDJcdTAzZDNcdTAzZDRcN1wzMVwyXDJcdTAzZDQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXHUwM2U0XDNcMlwyXDJcdTAzZDVcdTAzZDZcN1x1MDBlY1wyXDJcdTAzZDZcdTAzZDdc N1wzMCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwM2Q3XHUwM2Q4XDdcdTAw ZmFcMlwyXHUwM2Q4XHUwM2U0XDdcMzFcMlwyXHUwM2Q5IikNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJcdTAzZGFcN1wyNlwyXDJcdTAzZGFcdTAzZGZcN1x1MDBmYVwyXDJcdTAzZGJcdTAzZGNc NyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCIhXDJcMlx1MDNkY1x1MDNkZVw3XHUwMGZh XDJcMlx1MDNkZFx1MDNkYlwzXDJcMlwyXHUwM2RlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MDNlMVwzXDJcMlwyXHUwM2RmXHUwM2RkXDNcMlwyXDJcdTAzZGZcdTAzZTBcM1wyXDJc MiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAzZTBcdTAzZTJcM1wyXDJcMlx1MDNl MVx1MDNkZlwzXDJcMlwyXHUwM2UyXHUwM2U0XDciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDI3XDJcMlx1MDNlM1x1MDNiOFwzXDJcMlwyXHUwM2UzXHUwM2JiXDNcMlwyXDJcdTAzZTMi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwM2JjXDNcMlwyXDJcdTAzZTNcdTAzYmRc M1wyXDJcMlx1MDNlM1x1MDNiZVwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilx1MDNlM1x1MDNiZlwzXDJcMlwyXHUwM2UzXHUwM2MwXDNcMlwyXDJcdTAzZTNcdTAzYzVcMyIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAzZTNcdTAzY2FcM1wyXDJc Mlx1MDNlM1x1MDNkNVwzXDJcMlwyXHUwM2UzXHUwM2Q5DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4g YnVmLndyaXRlKCJcM1wyXDJcMlx1MDNlNFtcM1wyXDJcMlx1MDNlNVx1MDNlNlw3XHUwMDkyXDJc Mlx1MDNlNiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwM2U3XDdcYlwyXDJcdTAzZTdc dTAzZThcN1x0XDJcMlx1MDNlOFx1MDNlOVw3XDMwXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDJcdTAzZTlcdTAzZWFcN1x1MDBmYVwyXDJcdTAzZWFcdTAzZWJcN1wzMVwyXDJcdTAz ZWIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXVwzXDJcMlwyXHUwM2VjXHUwM2VkXDdc dTAwOTNcMlwyXHUwM2VkX1wzXDJcMlwyXHUwM2VlIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRl KCJcdTAzZjFcNVxcL1wyXHUwM2VmXHUwM2YxXDVeXDYwXDJcdTAzZjBcdTAzZWVcM1wyXDJcMiIp DQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlx1MDNmMFx1MDNlZlwzXDJcMlwyXHUwM2Yx YVwzXDJcMlwyXHUwM2YyXHUwM2Y3XDVgXDYxIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXDJcdTAzZjNcdTAzZjRcNyFcMlwyXHUwM2Y0XHUwM2Y2XDVgXDYxXDJcdTAzZjVcdTAzZjMi KQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwM2Y2XHUwM2Y5XDNcMlwyXDJc dTAzZjdcdTAzZjVcM1wyXDJcMlx1MDNmNyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUw M2Y4XDNcMlwyXDJcdTAzZjhjXDNcMlwyXDJcdTAzZjlcdTAzZjdcM1wyXDJcMlx1MDNmYSIpDQo+ ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwM2ZiXDdcNjdcMlwyXHUwM2ZiXHUwM2ZjXDcvXDJc Mlx1MDNmY1x1MDNmZFw3XGJcMlwyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAzZmRc dTAzZmVcN1x1MDBmYVwyXDJcdTAzZmVcdTAzZmZcNyFcMlwyXHUwM2ZmXHUwNDAwIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3LlwyXDJcdTA0MDBcdTA0MDFcN1xiXDJcMlx1MDQw MVx1MDQwMlw3XHUwMGVjXDJcMlx1MDQwMiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUw NDAzXDdcMzBcMlwyXHUwNDAzXHUwNDA0XDdcdTAwZmFcMlwyXHUwNDA0XHUwNDA1XDciKQ0KPiA+ DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcMzFcMlwyXHUwNDA1XHUwNDA5XDcNCj4gPiBcMlwy XHUwNDA2XHUwNDA4XDVmXDY0XDJcdTA0MDdcdTA0MDYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDNcMlwyXDJcdTA0MDhcdTA0MGJcM1wyXDJcMlx1MDQwOVx1MDQwN1wzXDJcMlwyXHUw NDA5IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDQwYVwzXDJcMlwyXHUwNDBhXHUw NDBjXDNcMlwyXDJcdTA0MGJcdTA0MDlcM1wyXDJcMiIpDQo+ID4NCj4gPiArICAgICAgICBidWYu d3JpdGUoIlx1MDQwY1x1MDQwZFw3XDY2XDJcMlx1MDQwZFx1MDQwZVw3DQo+IFwyXDJcdTA0MGVl XDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDQwZlx1MDQxZlw1alw2Nlwy XHUwNDEwXHUwNDFmXDVsXDY3XDJcdTA0MTFcdTA0MWYiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIlw1bjhcMlx1MDQxMlx1MDQxZlw1XHUwMGE0U1wyXHUwNDEzXHUwNDFmXDVwOVwyXHUwNDE0 IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA0MWZcNVx1MDA4OEVcMlx1MDQxNVx1MDQx Zlw1XHUwMGY4fVwyXHUwNDE2XHUwNDFmXDUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XHUwMTE4XHUwMDhkXDJcdTA0MTdcdTA0MWZcNVx1MDExYVx1MDA4ZVwyXHUwNDE4XHUwNDFmIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw1XHUwMTEwXHUwMDg5XDJcdTA0MTlcdTA0MWZc NVx1MDExY1x1MDA4ZlwyXHUwNDFhXHUwNDFmIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilw1XHUwMTIwXHUwMDkxXDJcdTA0MWJcdTA0MWNcNVx1MDA5NkxcMlx1MDQxY1x1MDQxZFw3IikN Cj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiDQo+ID4gXDJcMlx1MDQxZFx1MDQxZlwzXDJc MlwyXHUwNDFlXHUwNDBmXDNcMlwyXDJcdTA0MWVcdTA0MTAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDNcMlwyXDJcdTA0MWVcdTA0MTFcM1wyXDJcMlx1MDQxZVx1MDQxMlwzXDJcMlwy XHUwNDFlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDQxM1wzXDJcMlwyXHUwNDFl XHUwNDE0XDNcMlwyXDJcdTA0MWVcdTA0MTVcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcdTA0MWVcdTA0MTZcM1wyXDJcMlx1MDQxZVx1MDQxN1wzXDJcMlwyXHUwNDFlXHUw NDE4XDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwNDFlXHUwNDE5 XDNcMlwyXDJcdTA0MWVcdTA0MWFcM1wyXDJcMlx1MDQxZVx1MDQxYg0KPiA+ICIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDQxZmdcM1wyXDJcMlx1MDQyMFx1MDQyMVw3 OFwyXDJcdTA0MjFcdTA0MjIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDcvXDJc Mlx1MDQyMlx1MDQyM1w3XGJcMlwyXHUwNDIzXHUwNDI0XDdcdTAwZmFcMlwyXHUwNDI0IikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQzM1w3IVwyXDJcdTA0MjVcdTA0MjZcNzlc MlwyXHUwNDI2XHUwNDI3XDdcYlwyXDJcdTA0MjciKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUo Ilx1MDQyOFw3XHUwMGVjXDJcMlx1MDQyOFx1MDQyOVw3XDMwXDJcMlx1MDQyOVx1MDQyYVw3IikN Cj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGZhXDJcMlx1MDQyYVx1MDQyYlw3XDMx XDJcMlx1MDQyYlx1MDQyY1w3DQo+ID4gXDJcMlx1MDQyYyIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTA0MmRcNzpcMlwyXHUwNDJkXHUwNDJlXDdcYlwyXDJcdTA0MmVcdTA0MmZc NUxcJ1wyXHUwNDJmIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDMwXDcNCj4g XDJcMlx1MDQzMFx1MDQzMlwzXDJcMlwyXHUwNDMxXHUwNDI1XDNcMlwyXDIiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwNDMyXHUwNDM1XDNcMlwyXDJcdTA0MzNcdTA0MzFcM1wyXDJc Mlx1MDQzM1x1MDQzNFwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1 MDQzNFx1MDQzOVwzXDJcMlwyXHUwNDM1XHUwNDMzXDNcMlwyXDJcdTA0MzZcdTA0MzgiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDVmXDY0XDJcdTA0MzdcdTA0MzZcM1wyXDJcMlx1MDQz OFx1MDQzYlwzXDJcMlwyXHUwNDM5IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDQz N1wzXDJcMlwyXHUwNDM5XHUwNDNhXDNcMlwyXDJcdTA0M2FcdTA0M2NcM1wyXDJcMiIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA0M2JcdTA0MzlcM1wyXDJcMlx1MDQzY1x1MDQzZFw3 XDY2XDJcMlx1MDQzZFx1MDQzZSIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlw3IFwy XDJcdTA0M2VpXDNcMlwyXDJcdTA0M2ZcdTA0NDBcNVxcL1wyXHUwNDQwXHUwNDQxIikNCj4gPg0K PiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDcNCj4gPiBcMlwyXHUwNDQxa1wzXDJcMlwyXHUwNDQy XHUwNDQzXDVeXDYwXDJcdTA0NDNcdTA0NDQiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRl KCJcNw0KPiA+IFwyXDJcdTA0NDRtXDNcMlwyXDJcdTA0NDVcdTA0NDZcN1x1MDA5NFwyXDJcdTA0 NDZcdTA0NDciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdcdTAwZmJcMlwyXHUw NDQ3XHUwNDQ4XDchXDJcMlx1MDQ0OFx1MDQ0OVw1XHUwMTI0XHUwMDkzIikNCj4gPg0KPiA+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA0NDlcdTA0NGFcN1x1MDA5NVwyXDJcdTA0NGFcdTA0NGJc Nw0KPiA+IFwyXDJcdTA0NGJvXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlwy XHUwNDRjXHUwNDUwXDVyOlwyXHUwNDRkXHUwNDUwXDV6PlwyXHUwNDRlXHUwNDUwIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw1fkBcMlx1MDQ0Zlx1MDQ0Y1wzXDJcMlwyXHUwNDRm XHUwNDRkXDNcMlwyXDJcdTA0NGZcdTA0NGUNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDNcMlwyXDJcdTA0NTBxXDNcMlwyXDJcdTA0NTFcdTA0NTJcNztcMlwyXHUwNDUyXHUw NDUzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3PlwyXDJcdTA0NTNcdTA0NTRc N1xiXDJcMlx1MDQ1NFx1MDQ1NVw3XHUwMGVjXDJcMlx1MDQ1NSIpDQo+ID4NCj4gPiArDQo+IGJ1 Zi53cml0ZSgiXHUwNDU2XDdcMzBcMlwyXHUwNDU2XHUwNDU3XDdcdTAwZmFcMlwyXHUwNDU3XHUw NDVjXDciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDMxXDJcMlx1MDQ1OFx1MDQ1 OVw3IVwyXDJcdTA0NTlcdTA0NWFcN0BcMlwyXHUwNDVhXHUwNDViIikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlw3XGJcMlwyXHUwNDViXHUwNDVkXDV2PFwyXHUwNDVjXHUwNDU4XDNc MlwyXDJcdTA0NWNcdTA0NWQNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJc MlwyXHUwNDVkXHUwNDcyXDNcMlwyXDJcdTA0NWVcdTA0NWZcNyFcMlwyXHUwNDVmIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDQ2MVw1Ylw2MlwyXHUwNDYwXHUwNDVlXDNcMlwyXDJc dTA0NjBcdTA0NjFcM1wyXDJcMiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlx1MDQ2 MVx1MDQ2MlwzXDJcMlwyXHUwNDYyXHUwNDczXDcNCj4gXDJcMlx1MDQ2M1x1MDQ2NFw3IikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIiFcMlwyXHUwNDY0XHUwNDY2XDViXDYyXDJcdTA0 NjVcdTA0NjNcM1wyXDJcMlx1MDQ2NVx1MDQ2NiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgi XDNcMlwyXDJcdTA0NjZcdTA0NmVcM1wyXDJcMlx1MDQ2N1x1MDQ2Ylw3IVwyXDJcdTA0NjgiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDZhXDV0O1wyXHUwNDY5XHUwNDY4XDNc MlwyXDJcdTA0NmFcdTA0NmRcM1wyXDJcMlx1MDQ2YiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0 ZSgiXHUwNDY5XDNcMlwyXDJcdTA0NmJcdTA0NmNcM1wyXDJcMlx1MDQ2Y1x1MDQ2ZlwzXDJcMlwy IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDQ2ZFx1MDQ2YlwzXDJcMlwyXHUwNDZl XHUwNDY3XDNcMlwyXDJcdTA0NmVcdTA0NmZcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcMlwyXDJcdTA0NmZcdTA0NzBcM1wyXDJcMlx1MDQ3MFx1MDQ3MVw3PFwyXDJcdTA0NzFc dTA0NzMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcNw0KPiBcMlwyXHUwNDcyXHUw NDYwXDNcMlwyXDJcdTA0NzJcdTA0NjVcM1wyXDJcMlx1MDQ3MyIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJzXDNcMlwyXDJcdTA0NzRcdTA0NzdcNXA5XDJcdTA0NzVcdTA0NzdcNVx1MDA4 OEVcMlx1MDQ3NiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA0NzRcM1wyXDJcMlx1 MDQ3Nlx1MDQ3NVwzXDJcMlwyXHUwNDc3dVwzXDJcMlwyXHUwNDc4IikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDQ3ZFw1eD1cMlx1MDQ3OVx1MDQ3YVw3KFwyXDJcdTA0N2FcdTA0N2Nc NXg9XDJcdTA0N2IiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNDc5XDNcMlwyXDJc dTA0N2NcdTA0N2ZcM1wyXDJcMlx1MDQ3ZFx1MDQ3YlwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDQ3ZFx1MDQ3ZVwzXDJcMlwyXHUwNDdld1wzXDJcMlwyXHUwNDdmXHUw NDdkXDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwNDgwXHUwNDgxXHRc NVwyXDJcdTA0ODF5XDNcMlwyXDJcdTA0ODJcdTA0ODNcNz5cMiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcMlx1MDQ4M1x1MDQ4NFw3PVwyXDJcdTA0ODRcdTA0ODVcN1xiXDJcMlx1MDQ4 NVx1MDQ4NiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDdcdTAwZWNcMlwyXHUwNDg2XHUw NDg3XDdcMzBcMlwyXHUwNDg3XHUwNDg4XDdcdTAwZmEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDJcMlx1MDQ4OFx1MDQ4OVw3XDMxXDJcMlx1MDQ4OVx1MDQ4YVw3IVwyXDJcdTA0OGFc dTA0OGIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDc+XDJcMlx1MDQ4Ylx1MDQ4 Y1w3XGJcMlwyXHUwNDhjXHUwNDhkXDdcdTAwZWNcMlwyXHUwNDhkIikNCj4gPg0KPiA+ICsNCj4g YnVmLndyaXRlKCJcdTA0OGVcN1wzMFwyXDJcdTA0OGVcdTA0OGZcN1x1MDBmYVwyXDJcdTA0OGZc dTA0OTdcNyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMzFcMlwyXHUwNDkwXHUw NDkxXDchXDJcMlx1MDQ5MVx1MDQ5Mlw3PlwyXDJcdTA0OTJcdTA0OTMiKQ0KPiA+DQo+ID4gKw0K PiBidWYud3JpdGUoIlw3XGJcMlwyXHUwNDkzXHUwNDk0XDdcdTAwZWNcMlwyXHUwNDk0XHUwNDk1 XDdcMzBcMlwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQ5NVx1MDQ5Nlw3 XHUwMGZhXDJcMlx1MDQ5Nlx1MDQ5OFw3XDMxXDJcMlx1MDQ5N1x1MDQ5MCIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDQ5N1x1MDQ5OFwzXDJcMlwyXHUwNDk4XHUwNGE5 XDNcMlwyXDJcdTA0OTkiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDlhXDch XDJcMlx1MDQ5YVx1MDQ5Ylw3QFwyXDJcdTA0OWJcdTA0OWNcN1xiXDJcMlx1MDQ5Yw0KPiA+ICIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA0YTFcNXw/XDJcdTA0OWRcdTA0OWVcNyhc MlwyXHUwNDllXHUwNGEwXDV8P1wyXHUwNDlmIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilx1MDQ5ZFwzXDJcMlwyXHUwNGEwXHUwNGEzXDNcMlwyXDJcdTA0YTFcdTA0OWZcM1wyXDJcMiIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA0YTFcdTA0YTJcM1wyXDJcMlx1MDRhMlx1 MDRhNFwzXDJcMlwyXHUwNGEzXHUwNGExXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XDJcMlwyXHUwNGE0XHUwNGE1XDchXDJcMlx1MDRhNVx1MDRhNlw3dFwyXDJcdTA0YTZcdTA0YTci KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA0YTdcdTA0YThcN1x1 MDBmYVwyXDJcdTA0YThcdTA0YWFcM1wyXDJcMlx1MDRhOSIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcdTA0OTlcM1wyXDJcMlx1MDRhOVx1MDRhYVwzXDJcMlwyXHUwNGFhXHUwNGFkXDNc MlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNGFiXHUwNGFjXDchXDJcMlx1 MDRhY1x1MDRhZVw1Ylw2MlwyXHUwNGFkXHUwNGFiXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDJcMlwyXHUwNGFkXHUwNGFlXDNcMlwyXDJcdTA0YWVcdTA0YWZcM1wyXDJcMlx1 MDRhZlx1MDRiMCIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlw3DQo+ID4gXDJcMlx1 MDRiMHtcM1wyXDJcMlx1MDRiMVx1MDRiNFw3XHUwMGZhXDJcMlx1MDRiMlx1MDRiNCIpDQo+ID4N Cj4gPiArDQo+IGJ1Zi53cml0ZSgiXDVWLFwyXHUwNGIzXHUwNGIxXDNcMlwyXDJcdTA0YjNcdTA0 YjJcM1wyXDJcMlx1MDRiNH0iKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTA0YjVcdTA0YjhcNVx1MDA4MEFcMlx1MDRiNlx1MDRiOFw1XHUwMDg2RFwyIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlx1MDRiN1x1MDRiNVwzXDJcMlwyXHUwNGI3XHUwNGI2XDNcMlwy XDJcdTA0YjhcMTc3XDNcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwNGI5 XHUwNGU5XDduXDJcMlx1MDRiYVx1MDRiYlw3KlwyXDJcdTA0YmJcdTA0YmMiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA0YmNcdTA0YmRcN1x1MDBlY1wyXDJcdTA0YmRc dTA0YmVcN1wzMFwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNGJlXHUw NGJmXDdcdTAwZmFcMlwyXHUwNGJmXHUwNGMwXDdcMzFcMlwyXHUwNGMwXHUwNGMxIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3IVwyXDJcdTA0YzFcdTA0YzJcN29cMlwyXHUwNGMy XHUwNGMzXDdcYlwyXDJcdTA0YzNcdTA0YzQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XDVMXCdcMlx1MDRjNFx1MDRjNVw3IVwyXDJcdTA0YzVcdTA0YzZcNy9cMlwyXHUwNGM2XHUwNGM3 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XGJcMlwyXHUwNGM3XHUwNGM4XDdcdTAw ZmFcMlwyXHUwNGM4XHUwNGM5XDchXDJcMlx1MDRjOSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTA0Y2FcN1x1MDA5MFwyXDJcdTA0Y2FcdTA0Y2JcN1xiXDJcMlx1MDRjYlx1MDRj Y1w3XHUwMGZhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTA0Y2NcdTA0Y2Rc NyFcMlwyXHUwNGNkXHUwNGVhXDNcMlwyXDJcdTA0Y2VcdTA0Y2YiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXDdvXDJcMlx1MDRjZlx1MDRkMFw3XGJcMlwyXHUwNGQwXHUwNGQxXDVM XCdcMlx1MDRkMVx1MDRkMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcNyFcMlwy XHUwNGQyXHUwNGQzXDcvXDJcMlx1MDRkM1x1MDRkNFw3XGJcMlwyXHUwNGQ0XHUwNGQ1DQo+ID4g IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcN1x1MDBmYVwyXDJcdTA0ZDVcdTA0ZDZcNyFc MlwyXHUwNGQ2XHUwNGQ3XDdcdTAwOTBcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcMlx1MDRkN1x1MDRkOFw3XGJcMlwyXHUwNGQ4XHUwNGQ5XDdcdTAwZmFcMlwyXHUwNGQ5XHUw NGQNCj4gPiBhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3IVwyXDJcdTA0ZGFc dTA0ZWFcM1wyXDJcMlx1MDRkYlx1MDRkY1w3L1wyXDJcdTA0ZGNcdTA0ZGQNCj4gPiAiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA0ZGRcdTA0ZGVcN1x1MDBmYVwy XDJcdTA0ZGVcdTA0ZGZcNyFcMlwyXHUwNGRmIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDRlMFw3XHUwMDkwXDJcMlx1MDRlMFx1MDRlNVw3XGJcMlwyXHUwNGUxXHUwNGUyXDdc dTAwZg0KPiA+IGIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA0ZTJcdTA0ZTZc NyFcMlwyXHUwNGUzXHUwNGU0XDdcdTAwZmFcMlwyXHUwNGU0IikNCj4gPg0KPiA+ICsNCj4gYnVm LndyaXRlKCJcdTA0ZTZcNyFcMlwyXHUwNGU1XHUwNGUxXDNcMlwyXDJcdTA0ZTVcdTA0ZTNcM1wy XDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0ZTZcdTA0ZWFcM1wyXDJc Mlx1MDRlN1x1MDRlOFw3XHUwMGZhXDJcMlx1MDRlOFx1MDRlYSIpDQo+ID4NCj4gPiArDQo+IGJ1 Zi53cml0ZSgiXDchXDJcMlx1MDRlOVx1MDRiYVwzXDJcMlwyXHUwNGU5XHUwNGNlXDNcMlwyXDJc dTA0ZTkiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNGRiXDNcMlwyXDJcdTA0ZTlc dTA0ZTdcM1wyXDJcMlx1MDRlOVx1MDRlYVwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MDRlYVx1MDRlYlwzXDJcMlwyXHUwNGViXHUwNGYwXDVQKVwyXHUwNGVjXHUwNGVk XDchIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTA0ZWRcdTA0ZWVcN0BcMlwy XHUwNGVlXHUwNGVmXDdcYlwyXDJcdTA0ZWZcdTA0ZjEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDVcdTAwODJCXDJcdTA0ZjBcdTA0ZWNcM1wyXDJcMlx1MDRmMFx1MDRmMVwzXDJcMlwy XHUwNGYxIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDRmNlwzXDJcMlwyXHUwNGYy XHUwNGYzXDchXDJcMlx1MDRmM1x1MDRmNFw3dFwyXDJcdTA0ZjQiKQ0KPiA+DQo+ID4gKw0KPiBi dWYud3JpdGUoIlx1MDRmNVw3XGJcMlwyXHUwNGY1XHUwNGY3XDdcdTAwZmFcMlwyXHUwNGY2XHUw NGYyXDNcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwNGY2XHUwNGY3XDNc MlwyXDJcdTA0ZjdcdTA0ZmFcM1wyXDJcMlx1MDRmOFx1MDRmOSIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcNyFcMlwyXHUwNGY5XHUwNGZiXDVcdTAwYjRbXDJcdTA0ZmFcdTA0ZjhcM1wy XDJcMlx1MDRmYSIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlx1MDRmYlwzXDJcMlwy XHUwNGZiXHUwNGZjXDNcMlwyXDJcdTA0ZmNcdTA0ZmRcNyBcMlwyIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDRmZFx1MDA4MVwzXDJcMlwyXHUwNGZlXHUwNTAzXDVcdTAwODRDXDJc dTA0ZmZcdTA1MDAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDcoXDJcMlx1MDUwMFx1 MDUwMlw1XHUwMDg0Q1wyXHUwNTAxXHUwNGZmXDNcMlwyXDJcdTA1MDIiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXHUwNTA1XDNcMlwyXDJcdTA1MDNcdTA1MDFcM1wyXDJcMlx1MDUwM1x1 MDUwNFwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDUwNFx1MDA4M1wz XDJcMlwyXHUwNTA1XHUwNTAzXDNcMlwyXDJcdTA1MDZcdTA1MDlcNyIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTAwZmFcMlwyXHUwNTA3XHUwNTA5XDVWLFwyXHUwNTA4XHUwNTA2XDNc MlwyXDJcdTA1MDgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNTA3XDNcMlwyXDJc dTA1MDlcdTAwODVcM1wyXDJcMlx1MDUwYVx1MDUwYlw3XHUwMDk5IikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlwyXDJcdTA1MGJcdTA1MGNcN1x1MDA5YlwyXDJcdTA1MGNcdTA1MGRcN1xi XDJcMlx1MDUwZCIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTBlXDdcdTAwZmJcMlwy XHUwNTBlXHUwNTBmXDchXDJcMlx1MDUwZlx1MDUxMFw1VCsiKQ0KPiA+DQo+ID4gKw0KPiBidWYu d3JpdGUoIlwyXHUwNTEwXHUwNTE0XDchXDJcMlx1MDUxMVx1MDUxMlw1Ylw2MlwyXHUwNTEyXHUw NTEzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcNyFcMlwyXHUwNTEzXHUwNTE1XDNcMlwy XDJcdTA1MTRcdTA1MTFcM1wyXDJcMlx1MDUxNCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTA1MTVcM1wyXDJcMlx1MDUxNVx1MDUxNlwzXDJcMlwyXHUwNTE2XHUwNTE3XDdcdTAwOWEi KQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwNTE3XHUwNTE4XDcNCj4gPiBc MlwyXHUwNTE4XHUwMDg3XDNcMlwyXDJcdTA1MTlcdTA1MjAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDVcdTAwYjhdXDJcdTA1MWFcdTA1MjBcNVx1MDBlOHVcMlx1MDUxYlx1MDUyMFw1 XHUwMGM2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoImRcMlx1MDUxY1x1MDUyMFw1XHUw MGQ0a1wyXHUwNTFkXHUwNTIwXDVcdTAwZTJyXDJcdTA1MWUiKQ0KPiA+DQo+ID4gKw0KPiBidWYu d3JpdGUoIlx1MDUyMFw1XHUwMGYweVwyXHUwNTFmXHUwNTE5XDNcMlwyXDJcdTA1MWZcdTA1MWFc M1wyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTA1MWZcdTA1MWJcM1wyXDJc Mlx1MDUxZlx1MDUxY1wzXDJcMlwyXHUwNTFmXHUwNTFkIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlwzXDJcMlwyXHUwNTFmXHUwNTFlXDNcMlwyXDJcdTA1MjBcdTAwODlcM1wyXDJcMlx1 MDUyMSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTIyXDVgXDYxXDJcdTA1MjJcdTA1 MjNcNyFcMlwyXHUwNTIzXHUwNTJkXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwNTI0XHUwNTJkXDVcdTAwOGNHXDJcdTA1MjVcdTA1MmRcNVx1MDA4ZUhcMlx1MDUy Nlx1MDUyDQo+ID4gZCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNVx1MDA5MElcMlx1 MDUyN1x1MDUyZFw1XHUwMDkySlwyXHUwNTI4XHUwNTJkXDVcdTAwOTQiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiS1wyXHUwNTI5XHUwNTJkXDVcdTAxMWNcdTAwOGZcMlx1MDUyYVx1MDUy ZFw1XHUwMDk2TFwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDUyYlx1MDUyZFw1 XHUwMDk4TVwyXHUwNTJjXHUwNTIxXDNcMlwyXDJcdTA1MmNcdTA1MjQiKQ0KPiA+DQo+ID4gKw0K PiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNTJjXHUwNTI1XDNcMlwyXDJcdTA1MmNcdTA1MjZcM1wy XDJcMlx1MDUyYyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTI3XDNcMlwyXDJcdTA1 MmNcdTA1MjhcM1wyXDJcMlx1MDUyY1x1MDUyOVwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlx1MDUyY1x1MDUyYVwzXDJcMlwyXHUwNTJjXHUwNTJiXDNcMlwyXDJcdTA1MmRc dTAwOGJcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA1MmVcdTA1 MmZcN3BcMlwyXHUwNTJmXHUwNTMwXDdcNjJcMlwyXHUwNTMwXHUwNTMxIikNCj4gPg0KPiA+ICsN Cj4gYnVmLndyaXRlKCJcN1xiXDJcMlx1MDUzMVx1MDUzMlw3XHUwMGVjXDJcMlx1MDUzMlx1MDUz M1w3XDMwXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1MzNcdTA1MzRc N1x1MDBmYVwyXDJcdTA1MzRcdTA1MzVcN1wzMVwyXDJcdTA1MzVcdTA1NDIiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDUzNlx1MDUzN1w3QFwyXDJcdTA1MzdcdTA1 MzhcN1xiXDJcMlx1MDUzOFx1MDUzZA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcNVx1MDA5ZVBcMlx1MDUzOVx1MDUzYVw3KFwyXDJcdTA1M2FcdTA1M2NcNVx1MDA5ZVBcMiIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1M2JcdTA1MzlcM1wyXDJcMlx1MDUzY1x1 MDUzZlwzXDJcMlwyXHUwNTNkXHUwNTNiXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXDJcMlwyXHUwNTNkXHUwNTNlXDNcMlwyXDJcdTA1M2VcdTA1NDBcM1wyXDJcMlx1MDUzZlx1 MDUzZA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA1NDBcdTA1 NDFcNyFcMlwyXHUwNTQxXHUwNTQzXDNcMlwyXDJcdTA1NDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwNTM2XDNcMlwyXDJcdTA1NDJcdTA1NDNcM1wyXDJcMlx1MDU0M1x1MDU0NFwz XDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDU0NFx1MDU0NVw1XHUwMTI0 XHUwMDkzXDJcdTA1NDVcdTA1NDdcN3NcMlwyXHUwNTQ2IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXHUwNTQ4XDcNCj4gXDJcMlx1MDU0N1x1MDU0NlwzXDJcMlwyXHUwNTQ3XHUwNTQ4 XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDU0OFx1MDA4ZFwzXDJcMlwy XHUwNTQ5XHUwNTRhXDdyXDJcMlx1MDU0YVx1MDU0Ylw3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlw2MlwyXDJcdTA1NGJcdTA1NGNcN1xiXDJcMlx1MDU0Y1x1MDU0ZFw3XHUwMGVj XDJcMlx1MDU0ZCIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTRlXDdcMzBcMlwyXHUw NTRlXHUwNTRmXDdcdTAwZmFcMlwyXHUwNTRmXHUwNTUwXDciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXDMxXDJcMlx1MDU1MFx1MDU1ZFw3IVwyXDJcdTA1NTFcdTA1NTJcN0BcMlwy XHUwNTUyXHUwNTUzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XGJcMlwyXHUwNTUz XHUwNTU4XDVcdTAwOWVQXDJcdTA1NTRcdTA1NTVcNyhcMlwyXHUwNTU1IikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlx1MDU1N1w1XHUwMDllUFwyXHUwNTU2XHUwNTU0XDNcMlwyXDJcdTA1 NTdcdTA1NWFcM1wyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTA1NThcdTA1 NTZcM1wyXDJcMlx1MDU1OFx1MDU1OVwzXDJcMlwyXHUwNTU5XHUwNTViIikNCj4gPg0KPiA+ICsN Cj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDU1YVx1MDU1OFwzXDJcMlwyXHUwNTViXHUwNTVjXDch XDJcMlx1MDU1YyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1NWVcM1wyXDJcMlx1 MDU1ZFx1MDU1MVwzXDJcMlwyXHUwNTVkXHUwNTVlXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwNTVlXHUwNTVmXDNcMlwyXDJcdTA1NWZcdTA1NjBcNVx1MDEyNFx1MDA5 M1wyXHUwNTYwIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTYyXDdzXDJcMlx1 MDU2MVx1MDU2M1w3DQo+ID4gXDJcMlx1MDU2Mlx1MDU2MVwzXDJcMlwyXHUwNTYyIikNCj4gPg0K PiA+ICsNCj4gYnVmLndyaXRlKCJcdTA1NjNcM1wyXDJcMlx1MDU2M1x1MDA4ZlwzXDJcMlwyXHUw NTY0XHUwNTY1XDdsXDJcMiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlx1MDU2NVx1 MDU2Nlw1XHUwMTI0XHUwMDkzXDJcdTA1NjZcdTA1NjdcNw0KPiBcMlwyXHUwNTY3IikNCj4gPg0K PiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTY4XDVcdTAwYjRbXDJcdTA1NjhcdTA1NmFcN3Nc MlwyXHUwNTY5XHUwNTZiXDcNCj4gXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJc dTA1NmFcdTA1NjlcM1wyXDJcMlx1MDU2YVx1MDU2YlwzXDJcMlwyXHUwNTZiXHUwMDkxIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNTZjXHUwNTZkXDdcdTAwYTRcMlwy XHUwNTZkXHUwNTZlXDdcdTAwYTVcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc Mlx1MDU2ZVx1MDU2Zlw3XGJcMlwyXHUwNTZmXHUwNTcwXDdcdTAwZmFcMlwyXHUwNTcwXHUwMDkz IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNTcxXHUwNTcyXDdc dTAwYTZcMlwyXHUwNTcyXHUwNTczXDdcYlwyXDJcdTA1NzMiKQ0KPiA+DQo+ID4gKw0KPiBidWYu d3JpdGUoIlx1MDU3NFw3XHUwMGVjXDJcMlx1MDU3NFx1MDU3NVw3XDMwXDJcMlx1MDU3NVx1MDU3 Nlw3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDBmYVwyXDJcdTA1NzZcdTA1Nzdc N1wzMVwyXDJcdTA1NzdcdTA1NzhcNyFcMlwyXHUwNTc4IikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MDA5NVwzXDJcMlwyXHUwNTc5XHUwNTdhXDdcdTAwZWJcMlwyXHUwNTdhXHUwNTdi XDdcYiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDU3Ylx1MDU3Y1w1TFwnXDJc dTA1N2NcdTA1N2RcNyFcMlwyXHUwNTdkXHUwMDk3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlwzXDJcMlwyXHUwNTdlXHUwNTdmXDdxXDJcMlx1MDU3Zlx1MDU4MFw3XDYyXDJcMlx1MDU4 MCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1ODFcN1xiXDJcMlx1MDU4MVx1MDU4 Mlw3XHUwMGVjXDJcMlx1MDU4Mlx1MDU4M1w3XDMwIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlwyXDJcdTA1ODNcdTA1ODRcN1x1MDBmYVwyXDJcdTA1ODRcdTA1ODVcN1wzMVwyXDJcdTA1 ODUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNThhXDchXDJcMlx1MDU4Nlx1 MDU4N1w3TVwyXDJcdTA1ODdcdTA1ODhcN1xiXDJcMlx1MDU4OA0KPiA+ICIpDQo+ID4NCj4gPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNTg5XDdcdTAwZmFcMlwyXHUwNTg5XHUwNThiXDchXDJcMlx1MDU4 YVx1MDU4NlwzXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDU4YVx1MDU4 YlwzXDJcMlwyXHUwNThiXHUwNThjXDNcMlwyXDJcdTA1OGNcdTA1OGQiKQ0KPiA+DQo+ID4gKyAg ICAgICAgYnVmLndyaXRlKCJcNVx1MDEyNFx1MDA5M1wyXHUwNThkXHUwNThmXDdzXDJcMlx1MDU4 ZVx1MDU5MFw3DQo+ID4gXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1OGZc dTA1OGVcM1wyXDJcMlx1MDU4Zlx1MDU5MFwzXDJcMlwyXHUwNTkwXHUwMDk5XDMiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwNTkxXHUwNTkzXDVcdTAwOGFGXDJcdTA1OTJc dTA1OTFcM1wyXDJcMlx1MDU5MyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1OTZc M1wyXDJcMlx1MDU5NFx1MDU5MlwzXDJcMlwyXHUwNTk0XHUwNTk1XDNcMlwyXDIiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNTk1XHUwMDliXDNcMlwyXDJcdTA1OTZcdTA1OTRcM1wy XDJcMlx1MDU5N1x1MDU5Zlw1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDBhMFFc Mlx1MDU5OFx1MDU5Zlw1XHUwMGEyUlwyXHUwNTk5XHUwNTlmXDVcdTAwYTZUIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwNTlhXHUwNTlmXDVcdTAwYTRTXDJcdTA1OWJcdTA1OWZc NVx1MDBhOFVcMlx1MDU5YyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1OWZcNVx1 MDBiMFlcMlx1MDU5ZFx1MDU5Zlw1XHUwMGIyWlwyXHUwNTllXHUwNTk3XDMiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwNTllXHUwNTk4XDNcMlwyXDJcdTA1OWVcdTA1 OTlcM1wyXDJcMlx1MDU5ZVx1MDU5YQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcM1wyXDJcMlx1MDU5ZVx1MDU5YlwzXDJcMlwyXHUwNTllXHUwNTljXDNcMlwyXDJcdTA1OWUi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNTlkXDNcMlwyXDJcdTA1OWZcdTAwOWRc M1wyXDJcMlx1MDVhMFx1MDVhOVw3XHUwMGZhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwyXDJcdTA1YTFcdTA1YTlcN3lcMlwyXHUwNWEyXHUwNWE5XDd2XDJcMlx1MDVhM1x1MDVhOSIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN3VcMlwyXHUwNWE0XHUwNWE5XDd7XDJc Mlx1MDVhNVx1MDVhOVw3fFwyXDJcdTA1YTZcdTA1YTkiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDd6XDJcMlx1MDVhN1x1MDVhOVw3fVwyXDJcdTA1YThcdTA1YTBcM1wyXDJcMlx1 MDVhOFx1MDVhMSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDVhOFx1 MDVhMlwzXDJcMlwyXHUwNWE4XHUwNWEzXDNcMlwyXDJcdTA1YTgiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwNWE0XDNcMlwyXDJcdTA1YThcdTA1YTVcM1wyXDJcMlx1MDVhOFx1MDVh NlwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDVhOFx1MDVhN1wzXDJc MlwyXHUwNWE5XHUwMDlmXDNcMlwyXDJcdTA1YWFcdTA1YWJcNyIpDQo+ID4NCj4gPiArICAgICAg ICBidWYud3JpdGUoImtcMlwyXHUwNWFiXHUwNWFjXDVcdTAxMjRcdTAwOTNcMlx1MDVhY1x1MDVi OVw3DQo+ID4gXDJcMlx1MDVhZCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1YWVc N0BcMlwyXHUwNWFlXHUwNWFmXDdcYlwyXDJcdTA1YWZcdTA1YjRcNVx1MDA5ZSIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJQXDJcdTA1YjBcdTA1YjFcNyhcMlwyXHUwNWIxXHUwNWIz XDVcdTAwOWVQXDJcdTA1YjJcdTA1YjANCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTA1YjNcdTA1YjZcM1wyXDJcMlx1MDViNFx1MDViMlwzXDJcMlwyXHUwNWI0 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDViNVwzXDJcMlwyXHUwNWI1XHUwNWI3 XDNcMlwyXDJcdTA1YjZcdTA1YjRcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTA1YjdcdTA1YjhcNyFcMlwyXHUwNWI4XHUwNWJhXDNcMlwyXDJcdTA1YjlcdTA1YWRcMyIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA1YjlcdTA1YmFcM1wyXDJc Mlx1MDViYVx1MDViYlwzXDJcMlwyXHUwNWJiXHUwNWJjDQo+ID4gIikNCj4gPg0KPiA+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXDVcdTAwYjRbXDJcdTA1YmNcdTA1YmVcN3NcMlwyXHUwNWJkXHUwNWJm XDcNCj4gPiBcMlwyXHUwNWJlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDViZFwz XDJcMlwyXHUwNWJlXHUwNWJmXDNcMlwyXDJcdTA1YmZcdTAwYTFcM1wyXDJcMiIpDQo+ID4NCj4g PiArDQo+IGJ1Zi53cml0ZSgiXHUwNWMwXHUwNWMxXDdLXDJcMlx1MDVjMVx1MDVjMlw1XHUwMTI0 XHUwMDkzXDJcdTA1YzIiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA1Y2ZcNw0K PiA+IFwyXDJcdTA1YzNcdTA1YzRcN0BcMlwyXHUwNWM0XHUwNWM1XDdcYlwyXDJcdTA1YzUiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNWNhXDVcdTAwOWVQXDJcdTA1YzZcdTA1Yzdc NyhcMlwyXHUwNWM3XHUwNWM5XDVcdTAwOWUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi UFwyXHUwNWM4XHUwNWM2XDNcMlwyXDJcdTA1YzlcdTA1Y2NcM1wyXDJcMlx1MDVjYVx1MDVjOCIp DQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA1Y2FcdTA1Y2JcM1wyXDJcMlx1 MDVjYlx1MDVjZFwzXDJcMlwyXHUwNWNjIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA1 Y2FcM1wyXDJcMlx1MDVjZFx1MDVjZVw3IVwyXDJcdTA1Y2VcdTA1ZDBcM1wyXDJcMiIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1Y2ZcdTA1YzNcM1wyXDJcMlx1MDVjZlx1MDVkMFwz XDJcMlwyXHUwNWQwXHUwNWQxXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlwy XHUwNWQxXHUwNWQyXDVcdTAwYjRbXDJcdTA1ZDJcdTA1ZDRcN3NcMlwyXHUwNWQzIikNCj4gPg0K PiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWQ1XDcNCj4gXDJcMlx1MDVkNFx1MDVkM1wzXDJc MlwyXHUwNWQ0XHUwNWQ1XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw NWQ1XHUwMGEzXDNcMlwyXDJcdTA1ZDZcdTA1ZGVcN2NcMlwyXHUwNWQ3XHUwNWQ4XDUiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGE2VFwyXHUwNWQ4XHUwNWQ5XDchXDJcMlx1MDVk OVx1MDVkZlwzXDJcMlwyXHUwNWRhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1 MDVkYlw3XGJcMlwyXHUwNWRiXHUwNWRjXDVaLlwyXHUwNWRjXHUwNWRkXDchXDJcMlx1MDVkZCIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1ZGZcM1wyXDJcMlx1MDVkZVx1MDVkN1wz XDJcMlwyXHUwNWRlXHUwNWRhXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwNWRmXHUwNWU0XDNcMlwyXDJcdTA1ZTBcdTA1ZTFcN1x1MDA5YlwyXDJcdTA1ZTFcdTA1 ZTIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA1ZTJcdTA1ZTNc N1x1MDBmYlwyXDJcdTA1ZTNcdTA1ZTVcNyFcMlwyXHUwNWU0IikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlx1MDVlMFwzXDJcMlwyXHUwNWU0XHUwNWU1XDNcMlwyXDJcdTA1ZTVcdTAwYTVc M1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1ZTZcdTA1ZTdcN1x1 MDA5NlwyXDJcdTA1ZTdcdTA1ZThcN1xiXDJcMlx1MDVlOFx1MDVlOSIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcNVx1MDEyNFx1MDA5M1wyXHUwNWU5XHUwMGE3XDNcMlwyXDJcdTA1 ZWFcdTA1ZWJcNVx1MDBhYSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJWXDJcdTA1ZWJc dTAwYTlcM1wyXDJcMlx1MDVlY1x1MDVlZFw3P1wyXDJcdTA1ZWRcdTA1ZWUiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDc+XDJcMlx1MDVlZVx1MDVlZlw3XGJcMlwyXHUwNWVmXHUw NWYwXDdcdTAwZWNcMlwyXHUwNWYwIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUw NWYxXDdcMzBcMlwyXHUwNWYxXHUwNWYyXDdcdTAwZmFcMlwyXHUwNWYyXHUwNWYzXDciKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDMxXDJcMlx1MDVmM1x1MDVmNFw3IVwyXDJcdTA1ZjRc dTA1ZjVcN1x1MDA5NlwyXDJcdTA1ZjUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw NWY2XDdcYlwyXDJcdTA1ZjZcdTA1ZjdcNVouXDJcdTA1ZjdcdTA1ZjhcNyFcMlwyXHUwNWY4IikN Cj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA1ZjlcN0BcMlwyXHUwNWY5XHUwNWZhXDdcYlwy XDJcdTA1ZmFcdTA1ZmZcNVx1MDBhYyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiV1wyXHUw NWZiXHUwNWZjXDchXDJcMlx1MDVmY1x1MDVmZFw3dFwyXDJcdTA1ZmRcdTA1ZmUiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA1ZmVcdTA2MDBcN1x1MDBmYVwyXDJcdTA1 ZmZcdTA1ZmJcM1wyXDJcMlx1MDVmZiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjAw XDNcMlwyXDJcdTA2MDBcdTA2MDVcM1wyXDJcMlx1MDYwMVx1MDYwMlw3IVwyXDIiKQ0KPiA+DQo+ ID4gKw0KPiBidWYud3JpdGUoIlx1MDYwMlx1MDYwNFw1XFwvXDJcdTA2MDNcdTA2MDFcM1wyXDJc Mlx1MDYwNFx1MDYwN1wzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1 MDYwNVx1MDYwM1wzXDJcMlwyXHUwNjA1XHUwNjA2XDNcMlwyXDJcdTA2MDZcdTA2MDgiKQ0KPiA+ DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDYwN1x1MDYwNVwzXDJcMlwyXHUw NjA4XHUwNjA5XDcNCj4gXDJcMlx1MDYwOSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTAwYWJcM1wyXDJcMlx1MDYwYVx1MDYwZlw1XHUwMGFlWFwyXHUwNjBiXHUwNjBjXDcoXDIiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcdTA2MGNcdTA2MGVcNVx1MDBhZVhcMlx1 MDYwZFx1MDYwYlwzXDJcMlwyXHUwNjBlXHUwNjExDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gYnVm LndyaXRlKCJcM1wyXDJcMlx1MDYwZlx1MDYwZFwzXDJcMlwyXHUwNjBmXHUwNjEwXDNcMlwyXDJc dTA2MTAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGFkXDNcMlwyXDJcdTA2MTFc dTA2MGZcM1wyXDJcMlx1MDYxMlx1MDYxZVw3XHUwMGZhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlwyXDJcdTA2MTNcdTA2MWVcN1x1MDBlZFwyXDJcdTA2MTRcdTA2MWVcN1x1MDBl ZVwyXDJcdTA2MQ0KPiA+IDUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNjFlXDd5 XDJcMlx1MDYxNlx1MDYxZVw3e1wyXDJcdTA2MTdcdTA2MWVcN1x1MDA4MFwyIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwNjE4XHUwNjFlXDd8XDJcMlx1MDYxOVx1MDYxZVw3dlwy XDJcdTA2MWFcdTA2MWVcNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJ1XDJcMlx1MDYx Ylx1MDYxZVw3elwyXDJcdTA2MWNcdTA2MWVcN31cMlwyXHUwNjFkXHUwNjEyIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjFkXHUwNjEzXDNcMlwyXDJcdTA2MWRcdTA2 MTRcM1wyXDJcMlx1MDYxZCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA2MTVcM1wy XDJcMlx1MDYxZFx1MDYxNlwzXDJcMlwyXHUwNjFkXHUwNjE3XDNcMlwyXDIiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwNjFkXHUwNjE4XDNcMlwyXDJcdTA2MWRcdTA2MTlcM1wyXDJc Mlx1MDYxZFx1MDYxYVwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1 MDYxZFx1MDYxYlwzXDJcMlwyXHUwNjFkXHUwNjFjXDNcMlwyXDJcdTA2MWVcdTAwYWYiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA2MWZcdTA2MjBcN1x1MDA5N1wy XDJcdTA2MjBcdTA2MjFcNVx1MDEyNFx1MDA5MyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3Jp dGUoIlwyXHUwNjIxXHUwNjIyXDcNCj4gXDJcMlx1MDYyMlx1MDBiMVwzXDJcMlwyXHUwNjIzXHUw NjI0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XHUwMDk4XDJcMlx1MDYyNFx1MDYy NVw1XHUwMTI0XHUwMDkzXDJcdTA2MjVcdTA2MjZcNyIpDQo+ID4NCj4gPiArICAgICAgICBidWYu d3JpdGUoIg0KPiA+IFwyXDJcdTA2MjZcdTAwYjNcM1wyXDJcMlx1MDYyN1x1MDYyOVw1XHUwMGI2 XFxcMlx1MDYyOCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA2MjdcM1wyXDJcMlx1 MDYyOVx1MDYyY1wzXDJcMlwyXHUwNjJhXHUwNjI4XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwNjJhXHUwNjJiXDNcMlwyXDJcdTA2MmJcdTAwYjVcM1wyXDJcMlx1MDYy Y1x1MDYyYVwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDYyZFx1 MDYzMFw1XHUwMDhhRlwyXHUwNjJlXHUwNjMwXDVcdTAwOWNPXDJcdTA2MmYNCj4gPiAiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNjJkXDNcMlwyXDJcdTA2MmZcdTA2MmVcM1wyXDJc Mlx1MDYzMFx1MDBiN1wzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1 MDYzMVx1MDYzNFw1XHUwMGJhXlwyXHUwNjMyXHUwNjM0XDVcdTAwYzBhXDJcdTA2MzNcdTA2Mw0K PiA+IDEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA2MzNcdTA2MzJc M1wyXDJcMlx1MDYzNFx1MDBiOVwzXDJcMlwyXHUwNjM1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDYzNlw3XFxcMlwyXHUwNjM2XHUwNjM3XDVSKlwyXHUwNjM3XHUwNjM4XDVU K1wyXHUwNjM4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDYzZVw3IVwyXDJc dTA2MzlcdTA2M2FcN0BcMlwyXHUwNjNhXHUwNjNiXDdcYlwyXDJcdTA2Mw0KPiA+IGIiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNjNjXDVcdTAwYmNfXDJcdTA2M2NcdTA2M2RcNyFc MlwyXHUwNjNkXHUwNjNmXDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXHUw NjNlXHUwNjM5XDNcMlwyXDJcdTA2M2VcdTA2M2ZcM1wyXDJcMlx1MDYzZlx1MDY0NCIpDQo+ID4N Cj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA2NDBcdTA2NDFcN3RcMlwyXHUwNjQxXHUw NjQyXDdcYlwyXDJcdTA2NDIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDY0M1w3XHUw MGZhXDJcMlx1MDY0M1x1MDY0NVw3IVwyXDJcdTA2NDRcdTA2NDBcM1wyIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlwyXDJcdTA2NDRcdTA2NDVcM1wyXDJcMlx1MDY0NVx1MDY0NlwzXDJc MlwyXHUwNjQ2XHUwNjQ3IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDVcdTAwYjRb XDJcdTA2NDdcdTA2NDhcN11cMlwyXHUwNjQ4XHUwNjQ5XDcNCj4gPiBcMlwyXHUwNjQ5IikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDBiYlwzXDJcMlwyXHUwNjRhXHUwNjRmXDVcdTAw YmVgXDJcdTA2NGJcdTA2NGNcNyhcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc Mlx1MDY0Y1x1MDY0ZVw1XHUwMGJlYFwyXHUwNjRkXHUwNjRiXDNcMlwyXDJcdTA2NGVcdTA2NTEi KQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjRmXHUwNjRkXDNcMlwyXDJc dTA2NGZcdTA2NTBcM1wyXDJcMlx1MDY1MCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTAwYmRcM1wyXDJcMlx1MDY1MVx1MDY0ZlwzXDJcMlwyXHUwNjUyXHUwNjU5XDdcdTAwZmEiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDY1M1x1MDY1OVw3dVwyXDJcdTA2NTRc dTA2NTlcN3ZcMlwyXHUwNjU1XHUwNjU5IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilw3d1wyXDJcdTA2NTZcdTA2NTlcN3hcMlwyXHUwNjU3XHUwNjU5XDVWLFwyXHUwNjU4XHUwNjUy IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjU4XHUwNjUzXDNcMlwy XDJcdTA2NThcdTA2NTRcM1wyXDJcMlx1MDY1OCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTA2NTVcM1wyXDJcMlx1MDY1OFx1MDY1NlwzXDJcMlwyXHUwNjU4XHUwNjU3XDNcMlwyXDIi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNjU5XHUwMGJmXDNcMlwyXDJcdTA2NWFc dTA2NWJcN1x1MDBhMVwyXDJcdTA2NWJcdTA2NWMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXDVQKVwyXHUwNjVjXHUwNjYyXDchXDJcMlx1MDY1ZFx1MDY1ZVw3QFwyXDJcdTA2NWVc dTA2NWYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA2NWZcdTA2NjBc NVx1MDBjMmJcMlx1MDY2MFx1MDY2MVw3IVwyXDJcdTA2NjEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwNjYzXDNcMlwyXDJcdTA2NjJcdTA2NWRcM1wyXDJcMlx1MDY2Mlx1MDY2M1wz XDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDY2M1x1MDY2NFwzXDJcMlwy XHUwNjY0XHUwNjY1XDdcdTAwYTJcMlwyXHUwNjY1XHUwNjY2IikNCj4gPg0KPiA+ICsNCj4gYnVm LndyaXRlKCJcN1xiXDJcMlx1MDY2Nlx1MDY2N1w3XHUwMGVjXDJcMlx1MDY2N1x1MDY2OFw3XDMw XDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2NjhcdTA2NjlcN1x1MDBm YVwyXDJcdTA2NjlcdTA2NmFcN1wzMVwyXDJcdTA2NmFcdTA2NmIiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDY2Ylx1MDY2Y1w1XHUwMDlhTlwyXHUwNjZjXHUwNjZkXDdc dTAwYTNcMlwyIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjZkXHUwNjZlXDcN Cj4gXDJcMlx1MDY2ZVx1MDBjMVwzXDJcMlwyXHUwNjZmXHUwNjc0XDUiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwMGM0Y1wyXHUwNjcwXHUwNjcxXDcoXDJcMlx1MDY3MVx1MDY3 M1w1XHUwMGM0Y1wyXHUwNjcyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDY3MFwz XDJcMlwyXHUwNjczXHUwNjc2XDNcMlwyXDJcdTA2NzRcdTA2NzJcM1wyXDJcMiIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcdTA2NzRcdTA2NzVcM1wyXDJcMlx1MDY3NVx1MDBjM1wzXDJc MlwyXHUwNjc2XHUwNjc0XDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlwyXHUw Njc3XHUwNjdhXDdcdTAwZmFcMlwyXHUwNjc4XHUwNjdhXDVWLFwyXHUwNjc5IikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlx1MDY3N1wzXDJcMlwyXHUwNjc5XHUwNjc4XDNcMlwyXDJcdTA2 N2FcdTAwYzVcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2N2Jc dTA2N2VcNVx1MDBjOGVcMlx1MDY3Y1x1MDY3ZVw1XHUwMGQwaVwyXHUwNjdkXHUwNjcNCj4gPiBi IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDY3ZFx1MDY3Y1wzXDJcMlwy XHUwNjdlXHUwMGM3XDNcMlwyXDJcdTA2N2YiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XHUwNjgwXDdeXDJcMlx1MDY4MFx1MDY4MVw1UipcMlx1MDY4MVx1MDY4Mlw1VCtcMlx1MDY4MiIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2ODhcNyFcMlwyXHUwNjgzXHUwNjg0 XDdAXDJcMlx1MDY4NFx1MDY4NVw3XGJcMlwyXHUwNjg1DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDY4Nlw1XHUwMGNjZ1wyXHUwNjg2XHUwNjg3XDchXDJcMlx1MDY4N1x1 MDY4OVwzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlx1MDY4OFx1MDY4M1wz XDJcMlwyXHUwNjg4XHUwNjg5XDNcMlwyXDJcdTA2ODlcdTA2OGUiKQ0KPiA+DQo+ID4gKw0KPiBi dWYud3JpdGUoIlwzXDJcMlwyXHUwNjhhXHUwNjhiXDd0XDJcMlx1MDY4Ylx1MDY4Y1w3XGJcMlwy XHUwNjhjIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA2OGRcN1x1MDBmYVwyXDJcdTA2 OGRcdTA2OGZcNyFcMlwyXHUwNjhlXHUwNjhhXDNcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcMlwyXHUwNjhlXHUwNjhmXDNcMlwyXDJcdTA2OGZcdTA2OTBcM1wyXDJcMlx1MDY5MFx1 MDY5MSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDVcdTAwY2FmXDJcdTA2OTFcdTA2OTJc NVx1MDBiNFtcMlx1MDY5Mlx1MDY5M1w3X1wyXDIiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndy aXRlKCJcdTA2OTNcdTA2OTRcNw0KPiBcMlwyXHUwNjk0XHUwMGM5XDNcMlwyXDJcdTA2OTVcdTA2 OTZcNyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJgXDJcMlx1MDY5Nlx1MDY5OFw3 XGJcMlwyXHUwNjk3XHUwNjk5XDdcMzVcMlwyXHUwNjk4XHUwNjk3IikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjk4XHUwNjk5XDNcMlwyXDJcdTA2OTlcdTA2OWFcM1wy XDJcMlx1MDY5YSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA2OWJcN1x1MDBmYVwy XDJcdTA2OWJcdTA2OWNcNyFcMlwyXHUwNjljXHUwNjlkXDdhXDIiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXDJcdTA2OWRcdTA2OWZcN1xiXDJcMlx1MDY5ZVx1MDZhMFw3XDM1XDJcMlx1 MDY5Zlx1MDY5ZSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA2OWZcdTA2 YTBcM1wyXDJcMlx1MDZhMFx1MDZhMVwzXDJcMlwyXHUwNmExIikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlx1MDZhMlw3XHUwMGZhXDJcMlx1MDZhMlx1MDZhN1w3IVwyXDJcdTA2YTNcdTA2 YTRcN2JcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlx1MDZhNFx1MDZhNVw3 XGJcMlwyXHUwNmE1XHUwNmE2XDdcdTAwZmFcMlwyXHUwNmE2XHUwNmE4DQo+ID4gIikNCj4gPg0K PiA+ICsNCj4gYnVmLndyaXRlKCJcNyFcMlwyXHUwNmE3XHUwNmEzXDNcMlwyXDJcdTA2YTdcdTA2 YThcM1wyXDJcMlx1MDZhOCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAwY2JcM1wy XDJcMlx1MDZhOVx1MDZhZVw1XHUwMGNlaFwyXHUwNmFhXHUwNmFiXDcoXDIiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcdTA2YWJcdTA2YWRcNVx1MDBjZWhcMlx1MDZhY1x1MDZh YVwzXDJcMlwyXHUwNmFkXHUwNmIwIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJc Mlx1MDZhZVx1MDZhY1wzXDJcMlwyXHUwNmFlXHUwNmFmXDNcMlwyXDJcdTA2YWYiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGNkXDNcMlwyXDJcdTA2YjBcdTA2YWVcM1wyXDJcMlx1 MDZiMVx1MDZiYlw3XHUwMGZhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJc dTA2YjJcdTA2YmJcN1x1MDBlZlwyXDJcdTA2YjNcdTA2YmJcN1x1MDBmMFwyXDJcdTA2YjQNCj4g PiAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNmJiXDdcdTAwZjFcMlwyXHUwNmI1 XHUwNmJiXDdcdTAwZjJcMlwyXHUwNmI2XHUwNmJiIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlw3XHUwMGYzXDJcMlx1MDZiN1x1MDZiYlw3XHUwMGY0XDJcMlx1MDZiOFx1MDZiYlw3XHUw MGY1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTA2YjlcdTA2YmJcNVYsXDJc dTA2YmFcdTA2YjFcM1wyXDJcMlx1MDZiYVx1MDZiMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcM1wyXDJcMlx1MDZiYVx1MDZiM1wzXDJcMlwyXHUwNmJhXHUwNmI0XDNcMlwyXDJcdTA2 YmEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNmI1XDNcMlwyXDJcdTA2YmFcdTA2 YjZcM1wyXDJcMlx1MDZiYVx1MDZiN1wzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MDZiYVx1MDZiOFwzXDJcMlwyXHUwNmJhXHUwNmI5XDNcMlwyXDJcdTA2YmJcdTAwY2Zc MyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA2YmNcdTA2YmRcN1w2 MFwyXDJcdTA2YmRcdTA2YmVcNVIqXDJcdTA2YmVcdTA2YmYNCj4gPiAiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDVUK1wyXHUwNmJmXHUwNmM1XDchXDJcMlx1MDZjMFx1MDZjMVw3QFwy XDJcdTA2YzFcdTA2YzIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA2 YzJcdTA2YzNcNVx1MDBkMmpcMlx1MDZjM1x1MDZjNFw3IVwyXDJcdTA2YzQiKQ0KPiA+DQo+ID4g Kw0KPiBidWYud3JpdGUoIlx1MDZjNlwzXDJcMlwyXHUwNmM1XHUwNmMwXDNcMlwyXDJcdTA2YzVc dTA2YzZcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA2YzZcdTA2Yzhc M1wyXDJcMlx1MDZjN1x1MDZjOVw1XHUwMGNhZlwyXHUwNmM4XHUwNmM3IikNCj4gPg0KPiA+ICsN Cj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDZjOFx1MDZjOVwzXDJcMlwyXHUwNmM5XHUwNmNhXDNc MlwyXDJcdTA2Y2EiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA2Y2JcNVx1MDBi NFtcMlx1MDZjYlx1MDZjY1w3XDYxXDJcMlx1MDZjY1x1MDZjZFw3DQo+ICIpDQo+ID4NCj4gPiAr DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDZjZFx1MDBkMVwzXDJcMlwyXHUwNmNlXHUwNmQzXDVcdTAw Y2VoXDJcdTA2Y2YiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNmQwXDcoXDJcMlx1 MDZkMFx1MDZkMlw1XHUwMGNlaFwyXHUwNmQxXHUwNmNmXDNcMlwyIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlwyXHUwNmQyXHUwNmQ1XDNcMlwyXDJcdTA2ZDNcdTA2ZDFcM1wyXDJcMlx1 MDZkM1x1MDZkNCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDZkNFx1 MDBkM1wzXDJcMlwyXHUwNmQ1XHUwNmQzXDNcMlwyXDJcdTA2ZDYiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwNmQ5XDVcdTAwZDZsXDJcdTA2ZDdcdTA2ZDlcNVx1MDBkY29cMlx1MDZk OFx1MDZkNlwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDZkOFx1 MDZkN1wzXDJcMlwyXHUwNmQ5XHUwMGQ1XDNcMlwyXDJcdTA2ZGFcdTA2ZGINCj4gPiAiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdmXDJcMlx1MDZkYlx1MDZkY1w1UClcMlx1MDZk Y1x1MDZlMlw3IVwyXDJcdTA2ZGRcdTA2ZGUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXDdAXDJcMlx1MDZkZVx1MDZkZlw3XGJcMlwyXHUwNmRmXHUwNmUwXDVcdTAwZDhtXDJcdTA2 ZTANCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDZlMVw3IVwyXDJcdTA2ZTFc dTA2ZTNcM1wyXDJcMlx1MDZlMlx1MDZkZFwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MDZlMlx1MDZlM1wzXDJcMlwyXHUwNmUzXHUwNmU4XDNcMlwyXDJcdTA2ZTRcdTA2 ZTVcNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJ0XDJcMlx1MDZlNVx1MDZlNlw3XGJc MlwyXHUwNmU2XHUwNmU3XDdcdTAwZmFcMlwyXHUwNmU3IikNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJcdTA2ZTlcNyFcMlwyXHUwNmU4XHUwNmU0XDNcMlwyXDJcdTA2ZThcdTA2ZTlcM1wyXDJc MiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA2ZTlcdTA2ZWFcM1wyXDJcMlx1MDZl YVx1MDZlYlw3aFwyXDJcdTA2ZWJcdTA2ZWNcNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcYlwyXDJcdTA2ZWNcdTA2ZWRcN1x1MDBmYVwyXDJcdTA2ZWRcdTA2ZWVcNyFcMlwyXHUwNmVl IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmVmXDdpXDJcMlx1MDZlZlx1MDZm MFw3XGJcMlwyXHUwNmYwXHUwNmYxXDdcdTAwZmEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDJcMlx1MDZmMVx1MDZmMlw3IVwyXDJcdTA2ZjJcdTA2ZjNcNVx1MDBiNFtcMlx1MDZmM1x1 MDZmNCIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlw3Z1wyXDJcdTA2ZjRcdTA2ZjVc Nw0KPiA+IFwyXDJcdTA2ZjVcdTAwZDdcM1wyXDJcMlx1MDZmNlx1MDZmYiIpDQo+ID4NCj4gPiAr DQo+IGJ1Zi53cml0ZSgiXDVcdTAwZGFuXDJcdTA2ZjdcdTA2ZjhcNyhcMlwyXHUwNmY4XHUwNmZh XDVcdTAwZGFuXDIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDZmOVx1MDZmN1wzXDJc MlwyXHUwNmZhXHUwNmZkXDNcMlwyXDJcdTA2ZmJcdTA2ZjlcMyIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcMlwyXDJcdTA2ZmJcdTA2ZmNcM1wyXDJcMlx1MDZmY1x1MDBkOVwzXDJc MlwyXHUwNmZkXHUwNmZiIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTA2ZmVcdTA3MDJcN1x1MDBmYVwyXDJcdTA2ZmZcdTA3MDJcN1wxM1wyXDIiKQ0KPiA+DQo+ID4g Kw0KPiBidWYud3JpdGUoIlx1MDcwMFx1MDcwMlw1VixcMlx1MDcwMVx1MDZmZVwzXDJcMlwyXHUw NzAxXHUwNmZmXDNcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwNzAxXHUw NzAwXDNcMlwyXDJcdTA3MDJcdTAwZGJcM1wyXDJcMlx1MDcwM1x1MDcwNCIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcN2RcMlwyXHUwNzA0XHUwNzA1XDVQKVwyXHUwNzA1XHUwNzBiXDch XDJcMlx1MDcwNlx1MDcwNyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN0BcMlwy XHUwNzA3XHUwNzA4XDdcYlwyXDJcdTA3MDhcdTA3MDlcNVx1MDBkZXBcMlx1MDcwOSIpDQo+ID4N Cj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzBhXDchXDJcMlx1MDcwYVx1MDcwY1wzXDJcMlwyXHUw NzBiXHUwNzA2XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNzBiXHUw NzBjXDNcMlwyXDJcdTA3MGNcdTA3MTFcM1wyXDJcMlx1MDcwZFx1MDcwZVw3IikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoInRcMlwyXHUwNzBlXHUwNzBmXDdcYlwyXDJcdTA3MGZcdTA3MTBc N1x1MDBmYVwyXDJcdTA3MTAiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDcxMlw3IVwy XDJcdTA3MTFcdTA3MGRcM1wyXDJcMlx1MDcxMVx1MDcxMlwzXDJcMlwyIikNCj4gPg0KPiA+ICsN Cj4gYnVmLndyaXRlKCJcdTA3MTJcdTA3MTNcM1wyXDJcMlx1MDcxM1x1MDcxNFw3aFwyXDJcdTA3 MTRcdTA3MTVcNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcYlwyXDJcdTA3MTVcdTA3 MTZcN1x1MDBmYVwyXDJcdTA3MTZcdTA3MTdcNyFcMlwyXHUwNzE3IikNCj4gPg0KPiA+ICsNCj4g YnVmLndyaXRlKCJcdTA3MThcN2lcMlwyXHUwNzE4XHUwNzE5XDdcYlwyXDJcdTA3MTlcdTA3MWFc N1x1MDBmYSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDcxYVx1MDcxZlw3IVwy XDJcdTA3MWJcdTA3MWNcN2pcMlwyXHUwNzFjXHUwNzFkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlw3XGJcMlwyXHUwNzFkXHUwNzFlXDdcdTAwZmFcMlwyXHUwNzFlXHUwNzIwXDch XDJcMlx1MDcxZiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3MWJcM1wyXDJcMlx1 MDcxZlx1MDcyMFwzXDJcMlwyXHUwNzIwXHUwNzIxXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwNzIxXHUwNzIyXDVcdTAwYjRbXDJcdTA3MjJcdTA3MjNcN2VcMlwyXHUw NzIzXHUwNzI0IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDcNCj4gPiBcMlwyXHUw NzI0XHUwMGRkXDNcMlwyXDJcdTA3MjVcdTA3MmFcNVx1MDBlMHFcMlx1MDcyNiIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcdTA3MjdcNyhcMlwyXHUwNzI3XHUwNzI5XDVcdTAwZTBxXDJc dTA3MjhcdTA3MjZcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTA3Mjlc dTA3MmNcM1wyXDJcMlx1MDcyYVx1MDcyOFwzXDJcMlwyXHUwNzJhXHUwNzJiIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNzJiXHUwMGRmXDNcMlwyXDJcdTA3MmNcdTA3 MmFcM1wyXDJcMlx1MDcyZCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3MzBcN1x1 MDBmYVwyXDJcdTA3MmVcdTA3MzBcNVYsXDJcdTA3MmZcdTA3MmRcM1wyXDIiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTA3MmZcdTA3MmVcM1wyXDJcMlx1MDczMFx1MDBlMVwzXDJc MlwyXHUwNzMxXHUwNzMyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3XDYzXDJc Mlx1MDczMlx1MDczM1w1UClcMlx1MDczM1x1MDczOFw3IVwyXDJcdTA3MzRcdTA3MzUiKQ0KPiA+ DQo+ID4gKw0KPiBidWYud3JpdGUoIlw3XDY0XDJcMlx1MDczNVx1MDczNlw3XGJcMlwyXHUwNzM2 XHUwNzM3XDdcdTAwZmFcMlwyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA3MzdcdTA3 MzlcNyFcMlwyXHUwNzM4XHUwNzM0XDNcMlwyXDJcdTA3MzhcdTA3MzlcMyIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA3MzlcdTA3M2ZcM1wyXDJcMlx1MDczYVx1MDcz Ylw3QFwyXDJcdTA3M2JcdTA3M2MiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcYlwy XDJcdTA3M2NcdTA3M2RcNVx1MDBlNHNcMlx1MDczZFx1MDczZVw3IVwyXDJcdTA3M2UiKQ0KPiA+ DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDc0MFwzXDJcMlwyXHUwNzNmXHUwNzNhXDNcMlwyXDJc dTA3M2ZcdTA3NDBcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3NDBc dTA3NDFcM1wyXDJcMlx1MDc0MVx1MDc0Mlw1XHUwMGI0W1wyXHUwNzQyXHUwNzQzIikNCj4gPg0K PiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdcNjVcMlwyXHUwNzQzXHUwNzQ0XDcNCj4gXDJcMlx1 MDc0NFx1MDBlM1wzXDJcMlwyXHUwNzQ1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1 MDc0YVw1XHUwMGU2dFwyXHUwNzQ2XHUwNzQ3XDcoXDJcMlx1MDc0N1x1MDc0OVw1XHUwMGU2IikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoInRcMlx1MDc0OFx1MDc0NlwzXDJcMlwyXHUwNzQ5 XHUwNzRjXDNcMlwyXDJcdTA3NGFcdTA3NDgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XDNcMlwyXDJcdTA3NGFcdTA3NGJcM1wyXDJcMlx1MDc0Ylx1MDBlNVwzXDJcMlwyXHUwNzRjIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDc0YVwzXDJcMlwyXHUwNzRkXHUwNzUy XDdcdTAwZmFcMlwyXHUwNzRlXHUwNzUyXDdcdTAwYzANCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDc0Zlx1MDc1Mlw3XHUwMGMxXDJcMlx1MDc1MFx1MDc1Mlw1 VixcMlx1MDc1MVx1MDc0ZCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1 MDc1MVx1MDc0ZVwzXDJcMlwyXHUwNzUxXHUwNzRmXDNcMlwyXDJcdTA3NTEiKQ0KPiA+DQo+ID4g Kw0KPiBidWYud3JpdGUoIlx1MDc1MFwzXDJcMlwyXHUwNzUyXHUwMGU3XDNcMlwyXDJcdTA3NTNc dTA3YWVcN0FcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDc1NFx1MDc1NVw1 UClcMlx1MDc1NVx1MDc1Ylw3IVwyXDJcdTA3NTZcdTA3NTdcN0BcMiIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcMlx1MDc1N1x1MDc1OFw3XGJcMlwyXHUwNzU4XHUwNzU5XDVcdTAw ZWN3XDJcdTA3NTlcdTA3NWENCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw3IVwy XDJcdTA3NWFcdTA3NWNcM1wyXDJcMlx1MDc1Ylx1MDc1NlwzXDJcMlwyXHUwNzViIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDc1Y1wzXDJcMlwyXHUwNzVjXHUwNzVkXDNcMlwyXDJc dTA3NWRcdTA3NWVcNVx1MDBiNCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJbXDJcdTA3 NWVcdTA3YWZcM1wyXDJcMlx1MDc1Zlx1MDc2MFw3Q1wyXDJcdTA3NjBcdTA3NjEiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcdTAwOGZcMlwyXHUwNzYxXHUwNzYyXDdcYlwyXDJcdTA3 NjJcdTA3NjNcN1x1MDBmYlwyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDc2M1x1 MDc2NFw3XDM0XDJcMlx1MDc2NFx1MDc2NVw3XHUwMGZiXDJcMlx1MDc2NSIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTA3NjZcNyFcMlwyXHUwNzY2XHUwNzY3XDdcNjJcMlwyXHUwNzY3 XHUwNzY4XDdcYlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzY4XHUw NzY5XDdcdTAwZWNcMlwyXHUwNzY5XHUwNzZhXDdcMzBcMlwyXHUwNzZhXHUwNzZiIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3XHUwMGZhXDJcMlx1MDc2Ylx1MDc2Y1w3XDMxXDJc Mlx1MDc2Y1x1MDc2ZFw3IVwyXDJcdTA3NmQiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1 MDc2ZVw3PVwyXDJcdTA3NmVcdTA3NmZcN1xiXDJcMlx1MDc2Zlx1MDc3MFw3XHUwMGVjIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTA3NzBcdTA3NzFcN1wzMFwyXDJcdTA3NzFc dTA3NzJcN1x1MDBmYVwyXDJcdTA3NzIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw NzczXDdcMzFcMlwyXHUwNzczXHUwNzc0XDchXDJcMlx1MDc3NFx1MDc3NVw1XHUwMGVhIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoInZcMlx1MDc3NVx1MDc3Nlw3RFwyXDJcdTA3NzZc dTA3NzdcN1x1MDA4ZlwyXDJcdTA3NzdcdTA3NzgNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiBidWYu d3JpdGUoIlw3XGJcMlwyXHUwNzc4XHUwNzc5XDdcdTAwZmJcMlwyXHUwNzc5XHUwNzdhXDdcMzRc MlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDc3YVx1MDc3Ylw3XHUwMGZiXDJc Mlx1MDc3Ylx1MDc3Y1w3IVwyXDJcdTA3N2NcdTA3N2QiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIlw3XDYyXDJcMlx1MDc3ZFx1MDc3ZVw3XGJcMlwyXHUwNzdlXHUwNzdmXDdcdTAwZWNcMlwy IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDc3Zlx1MDc4MFw3XDMwXDJcMlx1 MDc4MFx1MDc4MVw3XHUwMGZhXDJcMlx1MDc4MVx1MDc4MiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53 cml0ZSgiXDdcMzFcMlwyXHUwNzgyXHUwNzgzXDchXDJcMlx1MDc4M1x1MDc4NFw3PVwyXDJcdTA3 ODQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNzg1XDdcYlwyXDJcdTA3ODVcdTA3 ODZcN1x1MDBlY1wyXDJcdTA3ODZcdTA3ODdcN1wzMCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcMlwyXHUwNzg3XHUwNzg4XDdcdTAwZmFcMlwyXHUwNzg4XHUwNzg5XDdcMzFcMlwyXHUw Nzg5IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA3OGFcNyFcMlwyXHUwNzhhXHUwNzhi XDVcdTAwZWF2XDJcdTA3OGJcdTA3OGNcN0VcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcMlx1MDc4Y1x1MDc4ZFw3XHUwMDhmXDJcMlx1MDc4ZFx1MDc4ZVw3XGJcMlwyXHUwNzhl XHUwNzhmDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcN1x1MDBmYlwyXDJcdTA3 OGZcdTA3OTBcN1wzNFwyXDJcdTA3OTBcdTA3OTFcN1x1MDBmYiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcMlwyXHUwNzkxXHUwNzkyXDchXDJcMlx1MDc5Mlx1MDc5M1w3XDYyXDJcMlx1 MDc5M1x1MDc5NCIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA3OTRcdTA3 OTVcN1x1MDBlY1wyXDJcdTA3OTVcdTA3OTZcN1wzMFwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXHUwNzk2XHUwNzk3XDdcdTAwZmFcMlwyXHUwNzk3XHUwNzk4XDdcMzFcMlwy XHUwNzk4XHUwNzk5IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3IVwyXDJcdTA3 OTlcdTA3OWFcNz1cMlwyXHUwNzlhXHUwNzliXDdcYlwyXDJcdTA3OWJcdTA3OWMNCj4gPiAiKQ0K PiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw3XHUwMGVjXDJcMlx1MDc5Y1x1MDc5ZFw3XDMwXDJc Mlx1MDc5ZFx1MDc5ZVw3XHUwMGZhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJc dTA3OWVcdTA3OWZcN1wzMVwyXDJcdTA3OWZcdTA3YTBcNyFcMlwyXHUwN2EwXHUwN2E2IikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw1XHUwMGVhdlwyXHUwN2ExXHUwN2EyXDdAXDJc Mlx1MDdhMlx1MDdhM1w3XGJcMlwyXHUwN2EzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilx1MDdhNFw1XHUwMGVjd1wyXHUwN2E0XHUwN2E1XDchXDJcMlx1MDdhNVx1MDdhN1wzXDJcMiIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlx1MDdhNlx1MDdhMVwzXDJcMlwyXHUwN2E2 XHUwN2E3XDNcMlwyXDJcdTA3YTdcdTA3YWIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTA3YThcdTA3YWFcNVx1MDA4Y0dcMlx1MDdhOVx1MDdhOFwzXDJcMlwyXHUw N2FhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDdhZFwzXDJcMlwyXHUwN2FiXHUw N2E5XDNcMlwyXDJcdTA3YWJcdTA3YWNcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcdTA3YWNcdTA3YWZcM1wyXDJcMlx1MDdhZFx1MDdhYlwzXDJcMlwyXHUwN2FlXHUwNzU0 XDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwN2FlXHUwNzVmXDNc MlwyXDJcdTA3YWZcdTA3YjBcM1wyXDJcMlx1MDdiMFx1MDdiMSIpDQo+ID4NCj4gPiArICAgICAg ICBidWYud3JpdGUoIlw3QlwyXDJcdTA3YjFcdTA3YjJcNw0KPiA+IFwyXDJcdTA3YjJcdTAwZTlc M1wyXDJcMlx1MDdiM1x1MDdiNCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN2Bc MlwyXHUwN2I0XHUwN2I1XDdcYlwyXDJcdTA3YjVcdTA3YjZcN1x1MDBmYVwyXDJcdTA3YjYiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwN2I3XDchXDJcMlx1MDdiN1x1MDdiOFw3 YVwyXDJcdTA3YjhcdTA3YjlcN1xiXDJcMlx1MDdiOQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTA3YmFcN1x1MDBmYVwyXDJcdTA3YmFcdTA3YmZcNyFcMlwyXHUwN2JiXHUw N2JjXDdiXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcdTA3YmNcdTA3YmRc N1xiXDJcMlx1MDdiZFx1MDdiZVw3XHUwMGZhXDJcMlx1MDdiZVx1MDdjDQo+ID4gMCIpDQo+ID4N Cj4gPiArDQo+IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDdiZlx1MDdiYlwzXDJcMlwyXHUwN2JmXHUw N2MwXDNcMlwyXDJcdTA3YzAiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDdjNVwzXDJc MlwyXHUwN2MxXHUwN2MyXDdjXDJcMlx1MDdjMlx1MDdjM1w3XGJcMlwyIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlx1MDdjM1x1MDdjNFw3XHUwMGZhXDJcMlx1MDdjNFx1MDdjNlw3IVwy XDJcdTA3YzVcdTA3YzEiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwN2M1 XHUwN2M2XDNcMlwyXDJcdTA3YzZcdTAwZWJcM1wyXDJcMlx1MDdjNyIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTA3Y2NcNVx1MDBlZXhcMlx1MDdjOFx1MDdjOVw3KFwyXDJcdTA3Yzlc dTA3Y2JcNVx1MDBlZSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJ4XDJcdTA3Y2FcdTA3 YzhcM1wyXDJcMlx1MDdjYlx1MDdjZVwzXDJcMlwyXHUwN2NjXHUwN2NhIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwN2NjXHUwN2NkXDNcMlwyXDJcdTA3Y2RcdTAwZWRc M1wyXDJcMlx1MDdjZSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2NjXDNcMlwyXDJc dTA3Y2ZcdTA3ZDBcdFw2XDJcMlx1MDdkMFx1MDBlZlwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDdkMVx1MDgyY1w3RlwyXDJcdTA3ZDJcdTA3ZDNcNVApXDJcdTA3ZDNc dTA3ZDlcNyFcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlx1MDdkNFx1MDdkNVw3 QFwyXDJcdTA3ZDVcdTA3ZDZcN1xiXDJcMlx1MDdkNlx1MDdkNyIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcNVx1MDBmNHtcMlx1MDdkN1x1MDdkOFw3IVwyXDJcdTA3ZDhcdTA3ZGFcM1wy XDJcMlx1MDdkOSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3ZDRcM1wyXDJcMlx1 MDdkOVx1MDdkYVwzXDJcMlwyXHUwN2RhXHUwN2RiXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwN2RiXHUwN2RjXDVcdTAwYjRbXDJcdTA3ZGNcdTA4MmRcM1wyXDJcMlx1 MDdkZFx1MDdkZSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN0hcMlwyXHUwN2Rl XHUwN2RmXDdcdTAwOGZcMlwyXHUwN2RmXHUwN2UwXDdcYlwyXDJcdTA3ZTAiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwN2UxXDdcdTAwZmJcMlwyXHUwN2UxXHUwN2UyXDdcMzRcMlwy XHUwN2UyXHUwN2UzXDciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGZiXDJcMlx1 MDdlM1x1MDdlNFw3IVwyXDJcdTA3ZTRcdTA3ZTVcN1w2MlwyXDJcdTA3ZTUiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwN2U2XDdcYlwyXDJcdTA3ZTZcdTA3ZTdcN1x1MDBlY1wyXDJc dTA3ZTdcdTA3ZThcN1wzMCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwN2U4 XHUwN2U5XDdcdTAwZmFcMlwyXHUwN2U5XHUwN2VhXDdcMzFcMlwyXHUwN2VhIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDdlYlw3IVwyXDJcdTA3ZWJcdTA3ZWNcNz1cMlwyXHUw N2VjXHUwN2VkXDdcYlwyXDJcdTA3ZQ0KPiA+IGQiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUo Ilx1MDdlZVw3XHUwMGVjXDJcMlx1MDdlZVx1MDdlZlw3XDMwXDJcMlx1MDdlZlx1MDdmMFw3IikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDBmYVwyXDJcdTA3ZjBcdTA3ZjFcN1wzMVwy XDJcdTA3ZjFcdTA3ZjJcNyFcMlwyXHUwN2YyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilx1MDdmM1w1XHUwMGYyelwyXHUwN2YzXHUwN2Y0XDdJXDJcMlx1MDdmNFx1MDdmNVw3XHUwMDhm IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwN2Y1XHUwN2Y2XDdcYlwyXDJcdTA3 ZjZcdTA3ZjdcN1x1MDBmYlwyXDJcdTA3ZjciKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRl KCJcdTA3ZjhcN1wzNFwyXDJcdTA3ZjhcdTA3ZjlcN1x1MDBmYlwyXDJcdTA3ZjlcdTA3ZmFcNyIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCIhXDJcMlx1MDdmYVx1MDdmYlw3XDYyXDJcMlx1 MDdmYlx1MDdmY1w3XGJcMlwyXHUwN2ZjXHUwN2ZkIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRl KCJcN1x1MDBlY1wyXDJcdTA3ZmRcdTA3ZmVcN1wzMFwyXDJcdTA3ZmVcdTA3ZmZcN1x1MDBmYSIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwN2ZmXHUwODAwXDdcMzFcMlwyXHUw ODAwXHUwODAxXDchXDJcMlx1MDgwMVx1MDgwMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcNz1cMlwyXHUwODAyXHUwODAzXDdcYlwyXDJcdTA4MDNcdTA4MDRcN1x1MDBlY1wyXDJc dTA4MDQiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDgwNVw3XDMwXDJcMlx1MDgwNVx1 MDgwNlw3XHUwMGZhXDJcMlx1MDgwNlx1MDgwN1w3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlwzMVwyXDJcdTA4MDdcdTA4MDhcNyFcMlwyXHUwODA4XHUwODA5XDVcdTAwZjJ6XDJcdTA4 MDkiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDgwYVw3SlwyXDJcdTA4MGFcdTA4MGJc N1x1MDA4ZlwyXDJcdTA4MGJcdTA4MGNcN1xiIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwyXDJcdTA4MGNcdTA4MGRcN1x1MDBmYlwyXDJcdTA4MGRcdTA4MGVcN1wzNFwyXDJcdTA4MGUi KQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDgwZlw3XHUwMGZiXDJcMlx1MDgwZlx1MDgx MFw3IVwyXDJcdTA4MTBcdTA4MTFcN1w2MiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc MlwyXHUwODExXHUwODEyXDdcYlwyXDJcdTA4MTJcdTA4MTNcN1x1MDBlY1wyXDJcdTA4MTMiKQ0K PiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDgxNFw3XDMwXDJcMlx1MDgxNFx1MDgxNVw3XHUw MGZhXDJcMlx1MDgxNVx1MDgxNlw3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwz MVwyXDJcdTA4MTZcdTA4MTdcNyFcMlwyXHUwODE3XHUwODE4XDc9XDJcMlx1MDgxOFx1MDgxOSIp DQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA4MTlcdTA4MWFcN1x1MDBlY1wy XDJcdTA4MWFcdTA4MWJcN1wzMFwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwODFiXHUwODFjXDdcdTAwZmFcMlwyXHUwODFjXHUwODFkXDdcMzFcMlwyXHUwODFkXHUwODFl IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3IVwyXDJcdTA4MWVcdTA4MjRcNVx1MDBm MnpcMlx1MDgxZlx1MDgyMFw3QFwyXDJcdTA4MjAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXHUwODIxXDdcYlwyXDJcdTA4MjFcdTA4MjJcNVx1MDBmNHtcMlx1MDgyMlx1MDgyM1w3IVwy IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwODIzXHUwODI1XDNcMlwyXDJcdTA4 MjRcdTA4MWZcM1wyXDJcMlx1MDgyNFx1MDgyNSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcM1wyXDJcMlx1MDgyNVx1MDgyOVwzXDJcMlwyXHUwODI2XHUwODI4XDVcdTAwOGNHXDJc dTA4MjciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwODI2XDNcMlwyXDJcdTA4Mjhc dTA4MmJcM1wyXDJcMlx1MDgyOVx1MDgyN1wzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MDgyOVx1MDgyYVwzXDJcMlwyXHUwODJhXHUwODJkXDNcMlwyXDJcdTA4MmJcdTA4 MjlcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA4MmNcdTA3ZDJc M1wyXDJcMlx1MDgyY1x1MDdkZFwzXDJcMlwyXHUwODJkXHUwODJlDQo+ID4gIikNCj4gPg0KPiA+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA4MmVcdTA4MmZcN0dcMlwyXHUwODJmXHUw ODMwXDcNCj4gPiBcMlwyXHUwODMwXHUwMGYxIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJc M1wyXDJcMlx1MDgzMVx1MDgzMlw3YFwyXDJcdTA4MzJcdTA4MzNcN1xiXDJcMlx1MDgzMyIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA4MzRcN1x1MDBmYVwyXDJcdTA4MzRcdTA4MzVc NyFcMlwyXHUwODM1XHUwODM2XDdhXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XDJcdTA4MzZcdTA4MzdcN1xiXDJcMlx1MDgzN1x1MDgzOFw3XHUwMGZhXDJcMlx1MDgzOFx1MDgz ZA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcNyFcMlwyXHUwODM5XHUw ODNhXDdiXDJcMlx1MDgzYVx1MDgzYlw3XGJcMlwyXHUwODNiXHUwODNjDQo+ID4gIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3XHUwMGZhXDJcMlx1MDgzY1x1MDgzZVw3IVwyXDJc dTA4M2RcdTA4MzlcM1wyXDJcMlx1MDgzZCIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUw ODNlXDNcMlwyXDJcdTA4M2VcdTA4NDNcM1wyXDJcMlx1MDgzZlx1MDg0MFw3Y1wyXDIiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwODQwXHUwODQxXDdcYlwyXDJcdTA4NDFcdTA4NDJc N1x1MDBmYVwyXDJcdTA4NDJcdTA4NDQiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw3IVwy XDJcdTA4NDNcdTA4M2ZcM1wyXDJcMlx1MDg0M1x1MDg0NFwzXDJcMlwyXHUwODQ0IikNCj4gPg0K PiA+ICsNCj4gYnVmLndyaXRlKCJcdTAwZjNcM1wyXDJcMlx1MDg0NVx1MDg0YVw1XHUwMGY2fFwy XHUwODQ2XHUwODQ3XDcoXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcdTA4 NDdcdTA4NDlcNVx1MDBmNnxcMlx1MDg0OFx1MDg0NlwzXDJcMlwyXHUwODQ5XHUwODRjIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwODRhXHUwODQ4XDNcMlwyXDJcdTA4 NGFcdTA4NGJcM1wyXDJcMlx1MDg0YiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGY1 XDNcMlwyXDJcdTA4NGNcdTA4NGFcM1wyXDJcMlx1MDg0ZFx1MDg0ZVx0XDdcMlwyIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDg0ZVx1MDBmN1wzXDJcMlwyXHUwODRmXHUwODU0XDVc dTAxMDRcdTAwODNcMlx1MDg1MCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA4NTRc NVx1MDBmY1wxNzdcMlx1MDg1MVx1MDg1NFw1XHUwMGZlXHUwMDgwXDJcdTA4NTIiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwODU0XDVcdTAxMGVcdTAwODhcMlx1MDg1M1x1MDg0Zlwz XDJcMlwyXHUwODUzXHUwODUwIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwy XHUwODUzXHUwODUxXDNcMlwyXDJcdTA4NTNcdTA4NTJcM1wyXDJcMlx1MDg1NCIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcdTAwZjlcM1wyXDJcMlx1MDg1NVx1MDg1Nlw1XHUwMTA0XHUw MDgzXDJcdTA4NTZcdTA4NTciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDVcdTAx MGFcdTAwODZcMlx1MDg1N1x1MDg1OFw1XHUwMTBjXHUwMDg3XDJcdTA4NThcdTA4NTkiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDVcdTAxMGVcdTAwODhcMlx1MDg1OVx1MDBmYlwz XDJcMlwyXHUwODVhXHUwODViXDVcdTAxMGEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XHUwMDg2XDJcdTA4NWJcdTAwZmRcM1wyXDJcMlx1MDg1Y1x1MDg1ZFw1XHUwMTBjXHUwMDg3IikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwODVkXHUwMGZmXDNcMlwyXDJcdTA4NWVc dTA4NjVcNXA5XDJcdTA4NWZcdTA4NjVcNSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcdTAwODhFXDJcdTA4NjBcdTA4NjVcNVx1MDBmOH1cMlx1MDg2MVx1MDg2NVw1XHUwMTE4XHUw MDhkDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwODYyXHUwODY1XDVc dTAxMWNcdTAwOGZcMlx1MDg2M1x1MDg2NVw1XHUwMTEwXHUwMDg5IikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlwyXHUwODY0XHUwODVlXDNcMlwyXDJcdTA4NjRcdTA4NWZcM1wyXDJcMlx1 MDg2NFx1MDg2MCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDg2NFx1 MDg2MVwzXDJcMlwyXHUwODY0XHUwODYyXDNcMlwyXDJcdTA4NjQiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwODYzXDNcMlwyXDJcdTA4NjVcdTAxMDFcM1wyXDJcMlx1MDg2Nlx1 MDg2Ylw1cDlcMlx1MDg2Nw0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTA4NmJcNVx1MDA4OEVcMlx1MDg2OFx1MDg2Ylw1XHUwMTE4XHUwMDhkXDJcdTA4NjlcdTA4NmIN Cj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDVcdTAxMTBcdTAwODlcMlx1MDg2 YVx1MDg2NlwzXDJcMlwyXHUwODZhXHUwODY3XDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlwyXHUwODZhXHUwODY4XDNcMlwyXDJcdTA4NmFcdTA4NjlcM1wyXDJcMlx1MDg2Ylx1 MDEwMyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA4NmNcdTA4NmRcN2xc MlwyXHUwODZkXHUwODZlXDVcdTAxMjRcdTAwOTMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndy aXRlKCJcMlx1MDg2ZVx1MDg3Mlw3DQo+ID4gXDJcMlx1MDg2Zlx1MDg3MVw1XHUwMTAwXHUwMDgx XDJcdTA4NzAiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDg2ZlwzXDJcMlwyXHUwODcx XHUwODc0XDNcMlwyXDJcdTA4NzJcdTA4NzBcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcdTA4NzJcdTA4NzNcM1wyXDJcMlx1MDg3M1x1MDg3NVwzXDJcMlwyXHUwODc0XHUw ODcyXDMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA4NzVcdTA4NzZc N3NcMlwyXHUwODc2XHUwODc3XDcNCj4gPiBcMlwyXHUwODc3XHUwMTA1IikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwODc4XHUwODg1XDdrXDJcMlx1MDg3OVx1MDg3 YVw3QFwyXDJcdTA4N2FcdTA4Nw0KPiA+IGIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXDdcYlwyXDJcdTA4N2JcdTA4ODBcNVx1MDA5ZVBcMlx1MDg3Y1x1MDg3ZFw3KFwyXDJcdTA4 N2QiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDg3Zlw1XHUwMDllUFwyXHUwODdlXHUw ODdjXDNcMlwyXDJcdTA4N2ZcdTA4ODJcM1wyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwyXDJcdTA4ODBcdTA4N2VcM1wyXDJcMlx1MDg4MFx1MDg4MVwzXDJcMlwyXHUwODgxXHUwODgz IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDg4Mlx1MDg4MFwzXDJcMlwy XHUwODgzXHUwODg0XDchXDJcMlx1MDg4NCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTA4ODZcM1wyXDJcMlx1MDg4NVx1MDg3OVwzXDJcMlwyXHUwODg1XHUwODg2XDNcMlwyXDIiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwODg2XHUwODg3XDNcMlwyXDJcdTA4ODdcdTA4 ODhcNVx1MDEyNFx1MDA5M1wyXHUwODg4IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgi XHUwODg5XDcNCj4gPiBcMlwyXHUwODg5XHUwMTA3XDNcMlwyXDJcdTA4OGFcdTA4OTdcN0tcMlwy XHUwODhiIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDg4Y1w3QFwyXDJcdTA4OGNc dTA4OGRcN1xiXDJcMlx1MDg4ZFx1MDg5Mlw1XHUwMDllIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlBcMlx1MDg4ZVx1MDg4Zlw3KFwyXDJcdTA4OGZcdTA4OTFcNVx1MDA5ZVBcMlx1 MDg5MFx1MDg4ZSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDg5MVx1 MDg5NFwzXDJcMlwyXHUwODkyXHUwODkwXDNcMlwyXDJcdTA4OTIiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwODkzXDNcMlwyXDJcdTA4OTNcdTA4OTVcM1wyXDJcMlx1MDg5NFx1MDg5 MlwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA4OTVcdTA4OTZcNyFcMlwy XHUwODk2XHUwODk4XDNcMlwyXDJcdTA4OTdcdTA4OGJcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcMlwyXDJcdTA4OTdcdTA4OThcM1wyXDJcMlx1MDg5OFx1MDg5OVwzXDJcMlwy XHUwODk5XHUwODlhIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDVcdTAxMjRcdTAw OTNcMlx1MDg5YVx1MDg5Ylw3DQo+IFwyXDJcdTA4OWJcdTAxMDlcM1wyXDIiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTA4OWNcdTA4YTlcN2tcMlwyXHUwODlkXHUwODllXDdAXDJc Mlx1MDg5ZVx1MDg5Zlw3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlxiXDJcMlx1MDg5 Zlx1MDhhNFw1XHUwMDllUFwyXHUwOGEwXHUwOGExXDcoXDJcMlx1MDhhMSIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTA4YTNcNVx1MDA5ZVBcMlx1MDhhMlx1MDhhMFwzXDJcMlwyXHUw OGEzXHUwOGE2XDNcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwOGE0XHUw OGEyXDNcMlwyXDJcdTA4YTRcdTA4YTVcM1wyXDJcMlx1MDhhNVx1MDhhNyIpDQo+ID4NCj4gPiAr DQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA4YTZcdTA4YTRcM1wyXDJcMlx1MDhhN1x1MDhhOFw3 IVwyXDJcdTA4YTgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOGFhXDNcMlwyXDJc dTA4YTlcdTA4OWRcM1wyXDJcMlx1MDhhOVx1MDhhYVwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDhhYVx1MDhhYlwzXDJcMlwyXHUwOGFiXHUwOGFjXDVcdTAxMjRcdTAw OTNcMlx1MDhhYyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlx1MDhiMFw3DQo+IFwy XDJcdTA4YWRcdTA4YWZcNVx1MDEwMFx1MDA4MVwyXHUwOGFlXHUwOGFkIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwOGFmXHUwOGIyXDNcMlwyXDJcdTA4YjBcdTA4YWVc M1wyXDJcMlx1MDhiMCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA4YjFcM1wyXDJc Mlx1MDhiMVx1MDhiM1wzXDJcMlwyXHUwOGIyXHUwOGIwXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKyAg ICAgICAgYnVmLndyaXRlKCJcdTA4YjNcdTA4YjRcN3NcMlwyXHUwOGI0XHUwOGI1XDcNCj4gPiBc MlwyXHUwOGI1XHUwMTBiXDNcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUw OGI2XHUwOGMzXDdLXDJcMlx1MDhiN1x1MDhiOFw3QFwyXDJcdTA4YjhcdTA4YjkiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA4YjlcdTA4YmVcNVx1MDA5ZVBcMlx1 MDhiYVx1MDhiYlw3KFwyXDJcdTA4YmIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw OGJkXDVcdTAwOWVQXDJcdTA4YmNcdTA4YmFcM1wyXDJcMlx1MDhiZFx1MDhjMFwzXDIiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDhiZVx1MDhiY1wzXDJcMlwyXHUwOGJlXHUw OGJmXDNcMlwyXDJcdTA4YmZcdTA4YzEiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJc MlwyXHUwOGMwXHUwOGJlXDNcMlwyXDJcdTA4YzFcdTA4YzJcNyFcMlwyXHUwOGMyIikNCj4gPg0K PiA+ICsNCj4gYnVmLndyaXRlKCJcdTA4YzRcM1wyXDJcMlx1MDhjM1x1MDhiN1wzXDJcMlwyXHUw OGMzXHUwOGM0XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOGM0XHUw OGM1XDNcMlwyXDJcdTA4YzVcdTA4YzZcNVx1MDEyNFx1MDA5M1wyXHUwOGM2IikNCj4gPg0KPiA+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGNhXDcNCj4gXDJcMlx1MDhjN1x1MDhjOVw1XHUwMTAw XHUwMDgxXDJcdTA4YzhcdTA4YzciKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwy XHUwOGM5XHUwOGNjXDNcMlwyXDJcdTA4Y2FcdTA4YzhcM1wyXDJcMlx1MDhjYSIpDQo+ID4NCj4g PiArDQo+IGJ1Zi53cml0ZSgiXHUwOGNiXDNcMlwyXDJcdTA4Y2JcdTA4Y2RcM1wyXDJcMlx1MDhj Y1x1MDhjYVwzXDJcMlwyIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGNkXHUw OGNlXDdzXDJcMlx1MDhjZVx1MDhjZlw3DQo+IFwyXDJcdTA4Y2ZcdTAxMGRcM1wyIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcdTA4ZDBcdTA4ZDFcN3BcMlwyXHUwOGQxXHUw OGQyXDdcNjJcMlwyXHUwOGQyXHUwOGQzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3 XGJcMlwyXHUwOGQzXHUwOGQ0XDdcdTAwZWNcMlwyXHUwOGQ0XHUwOGQ1XDdcMzBcMlwyIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDhkNVx1MDhkNlw3XHUwMGZhXDJcMlx1MDhk Nlx1MDhkN1w3XDMxXDJcMlx1MDhkN1x1MDhlNCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcNyFcMlwyXHUwOGQ4XHUwOGQ5XDdAXDJcMlx1MDhkOVx1MDhkYVw3XGJcMlwyXHUwOGRh XHUwOGQNCj4gPiBmIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw1XHUwMDllUFwyXHUw OGRiXHUwOGRjXDcoXDJcMlx1MDhkY1x1MDhkZVw1XHUwMDllUFwyIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDhkZFx1MDhkYlwzXDJcMlwyXHUwOGRlXHUwOGUxXDNcMlwyXDJcdTA4 ZGZcdTA4ZGRcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA4ZGZc dTA4ZTBcM1wyXDJcMlx1MDhlMFx1MDhlMlwzXDJcMlwyXHUwOGUxXHUwOGRmDQo+ID4gIikNCj4g Pg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDhlMlx1MDhlM1w3IVwyXDJcdTA4ZTNc dTA4ZTVcM1wyXDJcMlx1MDhlNCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA4ZDhc M1wyXDJcMlx1MDhlNFx1MDhlNVwzXDJcMlwyXHUwOGU1XHUwOGU2XDNcMlwyXDIiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOGU2XHUwOGU3XDVcdTAxMjRcdTAwOTNcMlx1MDhlN1x1 MDhlOFw3c1wyXDJcdTA4ZTgiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA4ZTlc Nw0KPiBcMlwyXHUwOGU5XHUwMTBmXDNcMlwyXDJcdTA4ZWFcdTA4ZWVcNVx1MDExMiIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAwOGFcMlx1MDhlYlx1MDhlZVw1XHUwMTE0XHUw MDhiXDJcdTA4ZWNcdTA4ZWVcNVx1MDExNiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTAwOGNcMlx1MDhlZFx1MDhlYVwzXDJcMlwyXHUwOGVkXHUwOGViXDNcMlwyXDJcdTA4ZWQiKQ0K PiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDhlY1wzXDJcMlwyXHUwOGVlXHUwMTExXDNcMlwy XDJcdTA4ZWZcdTA4ZjBcN21cMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDhm MFx1MDhmMVw3XHUwMDk2XDJcMlx1MDhmMVx1MDhmMlw3XGJcMlwyXHUwOGYyXHUwOGYzIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XHUwMGZhXDJcMlx1MDhmM1x1MDhmNFw3IVwyXDJc dTA4ZjRcdTA4ZjVcN3RcMlwyXHUwOGY1IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgi XHUwOGY2XDdcYlwyXDJcdTA4ZjZcdTA4ZjdcN1x1MDBmYVwyXDJcdTA4ZjdcdTA4ZjhcNyAiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDhmOFx1MDExM1wzXDJcMlwyXHUwOGY5 XHUwOGZhXDdOXDJcMlx1MDhmYVx1MDhmYiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc Nz1cMlwyXHUwOGZiXHUwOGZjXDdcYlwyXDJcdTA4ZmNcdTA4ZmRcN1x1MDBlY1wyXDJcdTA4ZmQi KQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA4ZmVcN1wzMFwyXDJcdTA4ZmVcdTA4 ZmZcN1x1MDBmYVwyXDJcdTA4ZmZcdTA5MDBcNyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcMzFcMlwyXHUwOTAwXHUwOTAxXDchXDJcMlx1MDkwMVx1MDkwMlw3PlwyXDJcdTA5MDJc dTA5MDMiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw3XGJcMlwyXHUwOTAzXHUwOTA0XDdc dTAwZWNcMlwyXHUwOTA0XHUwOTA1XDdcMzBcMlwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlx1MDkwNVx1MDkwNlw3XHUwMGZhXDJcMlx1MDkwNlx1MDkwN1w3XDMxXDJcMlx1MDkw N1x1MDkwZSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcNyFcMlwyXHUwOTA4XHUw OTA5XDc+XDJcMlx1MDkwOVx1MDkwYVw3XGJcMlwyXHUwOTBhXHUwOTBiDQo+ID4gIikNCj4gPg0K PiA+ICsNCj4gYnVmLndyaXRlKCJcN1x1MDBlY1wyXDJcdTA5MGJcdTA5MGNcN1wzMFwyXDJcdTA5 MGNcdTA5MGRcN1x1MDBmYSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXHUw OTBkXHUwOTBmXDdcMzFcMlwyXHUwOTBlXHUwOTA4XDNcMlwyXDJcdTA5MGVcdTA5MGYiKQ0KPiA+ DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDkwZlx1MDkxMFwzXDJcMlwyXHUw OTEwXHUwOTExXDcNCj4gXDJcMlx1MDkxMSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTAxMTVcM1wyXDJcMlx1MDkxMlx1MDkxM1x0XGJcMlwyXHUwOTEzXHUwOTE0XDdcdTAwODciKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDkxNFx1MDkxNVw3IVwyXDJcdTA5MTVc dTA5MTZcNy9cMlwyXHUwOTE2XHUwOTE3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilw3XGJcMlwyXHUwOTE3XHUwOTE4XDdcdTAwZmFcMlwyXHUwOTE4XHUwOTE5XDchXDJcMlx1MDkx OSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA5MWFcN1w2MlwyXDJcdTA5MWFcdTA5 MWJcN1xiXDJcMlx1MDkxYlx1MDkxY1w3XHUwMGVjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlwyXDJcdTA5MWNcdTA5MWRcN1wzMFwyXDJcdTA5MWRcdTA5MWVcN1x1MDBmYVwyXDJcdTA5 MWUiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDkxZlw3XDMxXDJcMlx1MDkxZlx1MDky MFw3IVwyXDJcdTA5MjBcdTA5MjFcNz1cMlwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDkyMVx1MDkyMlw3XGJcMlwyXHUwOTIyXHUwOTIzXDdcdTAwZWNcMlwyXHUwOTIzXHUw OTI0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XDMwXDJcMlx1MDkyNFx1MDkyNVw3 XHUwMGZhXDJcMlx1MDkyNVx1MDkzMVw3XDMxXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcdTA5MjZcdTA5MjdcNyFcMlwyXHUwOTI3XHUwOTI4XDdAXDJcMlx1MDkyOFx1MDkyOVw3 XGIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDkyOVx1MDkyZVw1XHUw MDllUFwyXHUwOTJhXHUwOTJiXDcoXDJcMlx1MDkyYlx1MDkyDQo+ID4gZCIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcNVx1MDA5ZVBcMlx1MDkyY1x1MDkyYVwzXDJcMlwyXHUwOTJk XHUwOTMwXDNcMlwyXDJcdTA5MmUiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDkyY1wz XDJcMlwyXHUwOTJlXHUwOTJmXDNcMlwyXDJcdTA5MmZcdTA5MzJcM1wyXDJcMiIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcdTA5MzBcdTA5MmVcM1wyXDJcMlx1MDkzMVx1MDkyNlwzXDJc MlwyXHUwOTMxXHUwOTMyXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwy XHUwOTMyXHUwOTM3XDNcMlwyXDJcdTA5MzNcdTA5MzRcNyFcMlwyXHUwOTM0XHUwOTM1IikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3dFwyXDJcdTA5MzVcdTA5MzZcN1xiXDJcMlx1 MDkzNlx1MDkzOFw3XHUwMGZhXDJcMlx1MDkzNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTA5MzNcM1wyXDJcMlx1MDkzN1x1MDkzOFwzXDJcMlwyXHUwOTM4XHUwOTM5XDNcMlwyXDIi KQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA5MzlcdTA5M2FcNw0KPiBcMlwyXHUw OTNhXHUwMTE3XDNcMlwyXDJcdTA5M2JcdTA5M2NcNyIpDQo+ID4NCj4gPiArICAgICAgICBidWYu d3JpdGUoIkxcMlwyXHUwOTNjXHUwOTNkXDdcdTAwZmFcMlwyXHUwOTNkXHUwOTNlXDcNCj4gPiBc MlwyXHUwOTNlIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAxMTlcM1wyXDJcMlx1MDkz Zlx1MDk0MVw3XHUwMDg4XDJcMlx1MDk0MFx1MDk0Mlw3ISIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcMlwyXHUwOTQxXHUwOTQwXDNcMlwyXDJcdTA5NDFcdTA5NDJcM1wyXDJcMlx1MDk0 Mlx1MDk0MyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5NDNcdTA5NDRc Ny5cMlwyXHUwOTQ0XHUwOTQ1XDdcYlwyXDJcdTA5NDUiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIlx1MDk0Nlw3XHUwMGVjXDJcMlx1MDk0Nlx1MDk0N1w3XDMwXDJcMlx1MDk0N1x1MDk0OFw3 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDBmYVwyXDJcdTA5NDhcdTA5NDlcN1wz MVwyXDJcdTA5NDlcdTA5NTRcNyFcMlwyXHUwOTRhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MDk0Ylw3XHUwMDhkXDJcMlx1MDk0Ylx1MDk0Y1w3XHUwMGZhXDJcMlx1MDk0Y1x1MDk0 ZCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNyFcMlwyXHUwOTRkXHUwOTRlXDdcdTAw ODlcMlwyXHUwOTRlXHUwOTRmXHRcdFwyXDJcdTA5NGYiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVm LndyaXRlKCJcdTA5NTVcNw0KPiA+IFwyXDJcdTA5NTBcdTA5NTFcN01cMlwyXHUwOTUxXHUwOTUy XDdcYlwyXDJcdTA5NTIiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA5NTNcN1x1 MDBmYVwyXDJcdTA5NTNcdTA5NTVcNw0KPiBcMlwyXHUwOTU0XHUwOTRhXDNcMiIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwOTU0XHUwOTUwXDNcMlwyXDJcdTA5NTVcdTAxMWJc M1wyXDJcMlx1MDk1Nlx1MDk1NyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN1x1 MDBhN1wyXDJcdTA5NTdcdTA5NThcN1tcMlwyXHUwOTU4XHUwOTU5XDdcYlwyXDJcdTA5NTkiKQ0K PiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDlhMVw1TFwnXDJcdTA5NWFcdTA5NWJcNyFcMlwy XHUwOTViXHUwOTVjXDdcdTAwYTlcMiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTA5 NWNcdTA5OTlcN1xiXDJcMlx1MDk1ZFx1MDk2MVw3U1wyXDJcdTA5NWVcdTA5NWYiKQ0KPiA+DQo+ ID4gKw0KPiBidWYud3JpdGUoIlw3XDMyXDJcMlx1MDk1Zlx1MDk2MFw3XHUwMGZhXDJcMlx1MDk2 MFx1MDk2Mlw3XDMzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA5NjFcdTA5 NWVcM1wyXDJcMlx1MDk2MVx1MDk2MlwzXDJcMlwyXHUwOTYyXHUwOTlhXDMiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwOTYzXHUwOTY3XDdUXDJcMlx1MDk2NFx1MDk2 NVw3XDMyXDJcMlx1MDk2NVx1MDk2NiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDdcdTAw ZmFcMlwyXHUwOTY2XHUwOTY4XDdcMzNcMlwyXHUwOTY3XHUwOTY0XDNcMlwyXDIiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOTY3XHUwOTY4XDNcMlwyXDJcdTA5NjhcdTA5OWFcM1wy XDJcMlx1MDk2OVx1MDk2ZFw3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlVcMlwyXHUw OTZhXHUwOTZiXDdcMzJcMlwyXHUwOTZiXHUwOTZjXDdcdTAwZmFcMlwyXHUwOTZjIikNCj4gPg0K PiA+ICsNCj4gYnVmLndyaXRlKCJcdTA5NmVcN1wzM1wyXDJcdTA5NmRcdTA5NmFcM1wyXDJcMlx1 MDk2ZFx1MDk2ZVwzXDJcMiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTA5NmVcdTA5 OWFcM1wyXDJcMlx1MDk2Zlx1MDk3M1w3VlwyXDJcdTA5NzBcdTA5NzEiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDdcMzJcMlwyXHUwOTcxXHUwOTcyXDdcdTAwZmFcMlwyXHUwOTcyXHUw OTc0XDdcMzNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDk3M1x1MDk3MFwz XDJcMlwyXHUwOTczXHUwOTc0XDNcMlwyXDJcdTA5NzRcdTA5OWFcMyIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA5NzVcdTA5NzlcN1JcMlwyXHUwOTc2XHUwOTc3XDdc MzJcMlwyXHUwOTc3XHUwOTc4DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcN1x1 MDBmYVwyXDJcdTA5NzhcdTA5N2FcN1wzM1wyXDJcdTA5NzlcdTA5NzZcM1wyXDJcMiIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA5NzlcdTA5N2FcM1wyXDJcMlx1MDk3YVx1MDk5YVwz XDJcMlwyXHUwOTdiXHUwOTdmXDciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiV1wy XDJcdTA5N2NcdTA5N2RcN1wzMlwyXDJcdTA5N2RcdTA5N2VcN1x1MDBmYVwyXDJcdTA5N2UiKQ0K PiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDk4MFw3XDMzXDJcMlx1MDk3Zlx1MDk3Y1wzXDJc MlwyXHUwOTdmXHUwOTgwXDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDk4 MFx1MDk5YVwzXDJcMlwyXHUwOTgxXHUwOTg1XDdYXDJcMlx1MDk4Mlx1MDk4MyIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcN1wzMlwyXDJcdTA5ODNcdTA5ODRcN1x1MDBmYVwyXDJcdTA5 ODRcdTA5ODZcN1wzM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOTg1XHUw OTgyXDNcMlwyXDJcdTA5ODVcdTA5ODZcM1wyXDJcMlx1MDk4Nlx1MDk5YVwzIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDk4N1x1MDk4Ylw3WVwyXDJcdTA5ODhcdTA5 ODlcN1wzMlwyXDJcdTA5ODlcdTA5OGENCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUo Ilw3XHUwMGZhXDJcMlx1MDk4YVx1MDk4Y1w3XDMzXDJcMlx1MDk4Ylx1MDk4OFwzXDJcMlwyIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDk4Ylx1MDk4Y1wzXDJcMlwyXHUwOThjXHUw OTlhXDNcMlwyXDJcdTA5OGRcdTA5OTFcNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJa XDJcMlx1MDk4ZVx1MDk4Zlw3XDMyXDJcMlx1MDk4Zlx1MDk5MFw3XHUwMGZhXDJcMlx1MDk5MCIp DQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwOTkyXDdcMzNcMlwyXHUwOTkxXHUwOThlXDNc MlwyXDJcdTA5OTFcdTA5OTJcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XDJcdTA5OTJcdTA5OWFcM1wyXDJcMlx1MDk5M1x1MDk5N1w3XHUwMGZiXDJcMlx1MDk5NFx1MDk5 NQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN1wzMlwyXDJcdTA5OTVcdTA5 OTZcN1x1MDBmYVwyXDJcdTA5OTZcdTA5OThcN1wzM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwOTk3XHUwOTk0XDNcMlwyXDJcdTA5OTdcdTA5OThcM1wyXDJcMlx1MDk5OFx1 MDk5YVwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDk5OVx1MDk1 ZFwzXDJcMlwyXHUwOTk5XHUwOTYzXDNcMlwyXDJcdTA5OTlcdTA5NjkiKQ0KPiA+DQo+ID4gKw0K PiBidWYud3JpdGUoIlwzXDJcMlwyXHUwOTk5XHUwOTZmXDNcMlwyXDJcdTA5OTlcdTA5NzVcM1wy XDJcMlx1MDk5OSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA5N2JcM1wyXDJcMlx1 MDk5OVx1MDk4MVwzXDJcMlwyXHUwOTk5XHUwOTg3XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwOTk5XHUwOThkXDNcMlwyXDJcdTA5OTlcdTA5OTNcM1wyXDJcMlx1MDk5 YVx1MDk5ZVwzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcMlx1MDk5Ylx1MDk5 ZFw1XHUwMTFlXHUwMDkwXDJcdTA5OWNcdTA5OWJcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTA5OWRcdTA5YTBcM1wyXDJcMlx1MDk5ZVx1MDk5Y1wzXDJcMlwyXHUwOTll XHUwOTlmXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwOTlmXHUw OWEyXDNcMlwyXDJcdTA5YTBcdTA5OWVcM1wyXDJcMlx1MDlhMVx1MDk1YSIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDlhMVx1MDlhMlwzXDJcMlwyXHUwOWEyXHUwOWFi XDNcMlwyXDJcdTA5YTMiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDlhN1w3IVwyXDJc dTA5YTRcdTA5YTZcNVx1MDExY1x1MDA4ZlwyXHUwOWE1XHUwOWE0IikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlwzXDJcMlwyXHUwOWE2XHUwOWE5XDNcMlwyXDJcdTA5YTdcdTA5YTVcM1wy XDJcMlx1MDlhNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA5YThcM1wyXDJcMlx1 MDlhOFx1MDlhYVwzXDJcMlwyXHUwOWE5XHUwOWE3XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwOWFhXHUwOWFjXDdcdTAwYThcMlwyXHUwOWFiXHUwOWEzXDNcMlwyXDJc dTA5YWJcdTA5YWMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDlh Y1x1MDlhZFwzXDJcMlwyXHUwOWFkXHUwOWFlXDcNCj4gXDJcMlx1MDlhZSIpDQo+ID4NCj4gPiAr DQo+IGJ1Zi53cml0ZSgiXHUwMTFkXDNcMlwyXDJcdTA5YWZcdTA5YjBcNyFcMlwyXHUwOWIwXHUw OWI0XDdcdTAwYWEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDliMVx1MDli Mlw3XDMyXDJcMlx1MDliMlx1MDliM1w3XHUwMGZhXDJcMlx1MDliMyIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTA5YjVcN1wzM1wyXDJcdTA5YjRcdTA5YjFcM1wyXDJcMlx1MDliNFx1 MDliNVwzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlx1MDliNVx1MDliYVwz XDJcMlwyXHUwOWI2XHUwOWI3XDdcMzRcMlwyXHUwOWI3XHUwOWI5IikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlw1XHUwMTVjXHUwMGFmXDJcdTA5YjhcdTA5YjZcM1wyXDJcMlx1MDliOVx1 MDliY1wzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlx1MDliYVx1MDliOFwz XDJcMlwyXHUwOWJhXHUwOWJiXDNcMlwyXDJcdTA5YmJcdTA5YmQiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5YmNcdTA5YmFcM1wyXDJcMlx1MDliZFx1MDliZVw3XGJc MlwyXHUwOWJlIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDliZlw3XHUwMGZh XDJcMlx1MDliZlx1MDExZlwzXDJcMlwyXHUwOWMwXHUwOWMxXDVcdTAxMjIiKQ0KPiA+DQo+ID4g KyAgICAgICAgYnVmLndyaXRlKCJcdTAwOTJcMlx1MDljMVx1MDljMlw3DQo+IFwyXDJcdTA5YzJc dTAxMjFcM1wyXDJcMlx1MDljMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA5 YzRcN1x1MDBhYlwyXDJcdTA5YzRcdTAxMjNcM1wyXDJcMlx1MDljNVx1MDljYVw1XHUwMTI4IikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDA5NVwyXHUwOWM2XHUwOWM3XDdcdTAw ZGNcMlwyXHUwOWM3XHUwOWM5XDVcdTAxMjhcdTAwOTUNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiBi dWYud3JpdGUoIlwyXHUwOWM4XHUwOWM2XDNcMlwyXDJcdTA5YzlcdTA5Y2NcM1wyXDJcMlx1MDlj YVx1MDljOCIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5Y2FcdTA5Y2Jc M1wyXDJcMlx1MDljYlx1MDEyNVwzXDJcMlwyXHUwOWNjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MDljYVwzXDJcMlwyXHUwOWNkXHUwOWQyXDVcdTAxMjhcdTAwOTVcMlx1MDljZVx1 MDljZiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN1x1MDBkY1wyXDJcdTA5Y2ZcdTA5 ZDFcNVx1MDEyOFx1MDA5NVwyXHUwOWQwXHUwOWNlXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDJcMlwyXHUwOWQxXHUwOWQ0XDNcMlwyXDJcdTA5ZDJcdTA5ZDBcM1wyXDJcMlx1 MDlkMlx1MDlkMw0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1 MDlkM1x1MDEyN1wzXDJcMlwyXHUwOWQ0XHUwOWQyXDNcMlwyXDJcdTA5ZDUiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOWRhXDVcdTAxMmFcdTAwOTZcMlx1MDlkNlx1MDlkN1w3 XHUwMGRiXDJcMlx1MDlkN1x1MDlkDQo+ID4gOSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcNVx1MDEyYVx1MDA5NlwyXHUwOWQ4XHUwOWQ2XDNcMlwyXDJcdTA5ZDlcdTA5ZGNcM1wyXDIi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTA5ZGFcdTA5ZDhcM1wyXDJcMlx1MDlk YVx1MDlkYlwzXDJcMlwyXHUwOWRiXHUwMTI5IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwzXDJcMlwyXHUwOWRjXHUwOWRhXDNcMlwyXDJcdTA5ZGRcdTA5ZTJcNVx1MDEyY1x1MDA5NyIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlx1MDlkZVx1MDlkZlw3KFwyXDJcdTA5ZGZc dTA5ZTFcNVx1MDEyY1x1MDA5N1wyXHUwOWUwIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilx1MDlkZVwzXDJcMlwyXHUwOWUxXHUwOWU0XDNcMlwyXDJcdTA5ZTJcdTA5ZTBcM1wyXDJcMiIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA5ZTJcdTA5ZTNcM1wyXDJcMlx1MDllM1x1 MDEyYlwzXDJcMlwyXHUwOWU0XHUwOWUyXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XDJcMlwyXHUwOWU1XHUwOWVhXDVcdTAxMmVcdTAwOThcMlx1MDllNlx1MDllN1w3KVwyXDIiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOWU3XHUwOWU5XDVcdTAxMmVcdTAwOThcMlx1 MDllOFx1MDllNlwzXDJcMlwyXHUwOWU5IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1 MDllY1wzXDJcMlwyXHUwOWVhXHUwOWU4XDNcMlwyXDJcdTA5ZWFcdTA5ZWJcM1wyXDJcMiIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA5ZWJcdTAxMmRcM1wyXDJcMlx1MDllY1x1MDll YVwzXDJcMlwyXHUwOWVkXHUwOWYxXDUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw MTMyXHUwMDlhXDJcdTA5ZWVcdTA5ZjBcNVx1MDEzMFx1MDA5OVwyXHUwOWVmXHUwOWVlIikNCj4g Pg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDlmMFx1MDlmM1wzXDJcMlwyXHUwOWYx XHUwOWVmXDNcMlwyXDJcdTA5ZjEiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDlmMlwz XDJcMlwyXHUwOWYyXHUwMTJmXDNcMlwyXDJcdTA5ZjNcdTA5ZjFcM1wyXDJcMiIpDQo+ID4NCj4g PiArDQo+IGJ1Zi53cml0ZSgiXHUwOWY0XHUwOWY1XDdcIlwyXDJcdTA5ZjVcdTA5ZjlcNVx1MDEz Mlx1MDA5YVwyXHUwOWY2IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA5ZjdcNyNcMlwy XHUwOWY3XHUwOWY5XDVcdTAxMzJcdTAwOWFcMlx1MDlmOFx1MDlmNCIpDQo+ID4NCj4gPiArDQo+ IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5ZjhcdTA5ZjZcM1wyXDJcMlx1MDlmOVx1MDEzMVwzXDJc MlwyXHUwOWZhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDlmZVw1XHUwMTM2XHUw MDljXDJcdTA5ZmJcdTA5ZmRcNVx1MDEzNFx1MDA5YlwyXHUwOWZjIikNCj4gPg0KPiA+ICsNCj4g YnVmLndyaXRlKCJcdTA5ZmJcM1wyXDJcMlx1MDlmZFx1MGEwMFwzXDJcMlwyXHUwOWZlXHUwOWZj XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDlmZVx1MDlmZlwzXDJcMlwy XHUwOWZmXHUwMTMzXDNcMlwyXDJcdTBhMDBcdTA5ZmVcMyIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcMlwyXDJcdTBhMDFcdTBhMDJcNyVcMlwyXHUwYTAyXHUwYTBhXDVcdTAxMzZcdTAw OWNcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhMDNcdTBhMDRcNyRcMlwyXHUw YTA0XHUwYTBhXDVcdTAxMzZcdTAwOWNcMlx1MGEwNSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcdTBhMDZcN1wnXDJcMlx1MGEwNlx1MGEwYVw1XHUwMTM2XHUwMDljXDJcdTBhMDdcdTBh MDgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDcmXDJcMlx1MGEwOFx1MGEwYVw1XHUw MTM2XHUwMDljXDJcdTBhMDlcdTBhMDFcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDJcdTBhMDlcdTBhMDNcM1wyXDJcMlx1MGEwOVx1MGEwNVwzXDJcMlwyXHUwYTA5XHUwYTA3 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwYTBhXHUwMTM1XDNcMlwy XDJcdTBhMGJcdTBhMGZcNVx1MDEzYVx1MDA5ZSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcMlx1MGEwY1x1MGEwZVw1XHUwMTM4XHUwMDlkXDJcdTBhMGRcdTBhMGNcM1wyXDJcMlx1 MGEwZSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTExXDNcMlwyXDJcdTBhMGZcdTBh MGRcM1wyXDJcMlx1MGEwZlx1MGExMFwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MGExMFx1MDEzN1wzXDJcMlwyXHUwYTExXHUwYTBmXDNcMlwyXDJcdTBhMTJcdTBhMTNc NyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcZlwyXDJcdTBhMTNcdTBhMTdcNVx1MDEz YVx1MDA5ZVwyXHUwYTE0XHUwYTE1XDdcclwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXHUwYTE1XHUwYTE3XDVcdTAxM2FcdTAwOWVcMlx1MGExNlx1MGExMlwzXDJcMlwyXHUwYTE2 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGExNFwzXDJcMlwyXHUwYTE3XHUwMTM5 XDNcMlwyXDJcdTBhMThcdTBhMWNcNVx1MDEzZSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTAwYTBcMlx1MGExOVx1MGExYlw1XHUwMTNjXHUwMDlmXDJcdTBhMWFcdTBhMTlcM1wyXDIi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTBhMWJcdTBhMWVcM1wyXDJcMlx1MGEx Y1x1MGExYVwzXDJcMlwyXHUwYTFjXHUwYTFkIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwzXDJcMlwyXHUwYTFkXHUwMTNiXDNcMlwyXDJcdTBhMWVcdTBhMWNcM1wyXDJcMlx1MGExZiIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhMjBcN1wxNlwyXDJcdTBhMjBcdTBhMjRc NVx1MDEzZVx1MDBhMFwyXHUwYTIxXHUwYTIyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJc N1wzNVwyXDJcdTBhMjJcdTBhMjRcNVx1MDEzZVx1MDBhMFwyXHUwYTIzXHUwYTFmXDNcMiIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwYTIzXHUwYTIxXDNcMlwyXDJcdTBhMjRc dTAxM2RcM1wyXDJcMlx1MGEyNVx1MGEyOSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcNVx1MDE0Mlx1MDBhMlwyXHUwYTI2XHUwYTI4XDVcdTAxNDBcdTAwYTFcMlx1MGEyN1x1MGEy NiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MGEyOFx1MGEyYlwzXDJc MlwyXHUwYTI5XHUwYTI3XDNcMlwyXDJcdTBhMjkiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXHUwYTJhXDNcMlwyXDJcdTBhMmFcdTAxM2ZcM1wyXDJcMlx1MGEyYlx1MGEyOVwzXDJcMlwy IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGEyY1x1MGEyZFw3XDE3XDJcMlx1MGEy ZFx1MGEzM1w1XHUwMTQyXHUwMGEyXDJcdTBhMmUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXHUwYTJmXDdcMzdcMlwyXHUwYTJmXHUwYTMzXDVcdTAxNDJcdTAwYTJcMlx1MGEzMFx1MGEz MSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDdcMjBcMlwyXHUwYTMxXHUwYTMzXDVcdTAx NDJcdTAwYTJcMlx1MGEzMlx1MGEyY1wzXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XDJcMlx1MGEzMlx1MGEyZVwzXDJcMlwyXHUwYTMyXHUwYTMwXDNcMlwyXDJcdTBhMzNcdTAxNDEi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhMzRcdTBhMzVcN1wzMFwy XDJcdTBhMzVcdTBhMzZcdFxuXDJcMlx1MGEzNiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgi XHUwYTM4XDdcMzFcMlwyXHUwYTM3XHUwYTM0XDNcMlwyXDJcdTBhMzhcdTBhM2JcM1wyXDIiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTBhMzlcdTBhMzdcM1wyXDJcMlx1MGEzOVx1 MGEzYVwzXDJcMlwyXHUwYTNhXHUwYTNjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwz XDJcMlwyXHUwYTNiXHUwYTM5XDNcMlwyXDJcdTBhM2NcdTBhM2RcNVx1MDE0NFx1MDBhMyIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlx1MGEzZFx1MDE0M1wzXDJcMlwyXHUwYTNl XHUwYTRiXDVcdTAxNDZcdTAwYTRcMlx1MGEzZiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTBhNGJcNVx1MDE0OFx1MDBhNVwyXHUwYTQwXHUwYTRiXDVcdTAxNGFcdTAwYTZcMlx1 MGE0MSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTBhNGJcNVx1MDE0Y1x1MDBh N1wyXHUwYTQyXHUwYTRiXDVcdTAxNGVcdTAwYThcMlx1MGE0MyIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcdTBhNGJcNVx1MDE2Y1x1MDBiN1wyXHUwYTQ0XHUwYTRiXDVcdTAxNmVc dTAwYjhcMlx1MGE0NSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTBhNGJcNVx1 MDE4NFx1MDBjM1wyXHUwYTQ2XHUwYTRiXDVcdTAxOTRcdTAwY2JcMlx1MGE0NyIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTBhNDhcN1x1MDBkZFwyXDJcdTBhNDhcdTBhNGJcNVx1 MDE0NFx1MDBhM1wyXHUwYTQ5XHUwYTQNCj4gPiBiIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlw1XHUwMTRhXHUwMGE2XDJcdTBhNGFcdTBhM2VcM1wyXDJcMlx1MGE0YVx1MGEzZlwzXDJc MiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlx1MGE0YVx1MGE0MFwzXDJcMlwyXHUw YTRhXHUwYTQxXDNcMlwyXDJcdTBhNGFcdTBhNDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTBhNGFcdTBhNDNcM1wyXDJcMlx1MGE0YVx1MGE0NFwzXDJcMlwyXHUwYTRh IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGE0NVwzXDJcMlwyXHUwYTRhXHUwYTQ2 XDNcMlwyXDJcdTBhNGFcdTBhNDdcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTBhNGFcdTBhNDlcM1wyXDJcMlx1MGE0Ylx1MDE0NVwzXDJcMlwyXHUwYTRjXHUwYTRkXDci KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMGU3XDJcMlx1MGE0ZFx1MGE0ZVw3 XDMwXDJcMlx1MGE0ZVx1MGE0Zlw1XHUwMTI2XHUwMDk0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlwyXHUwYTRmXHUwYTUwXDchXDJcMlx1MGE1MFx1MGE1MVw1XHUwMTI2XHUwMDk0XDJc dTBhNTEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYTUyXDdcMzFcMlwyXHUwYTUy XHUwMTQ3XDNcMlwyXDJcdTBhNTNcdTBhNTRcN1x1MDBlNSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53 cml0ZSgiXDJcMlx1MGE1NFx1MGE1NVw3XDMwXDJcMlx1MGE1NVx1MGE1Nlw1XHUwMTI2XHUwMDk0 XDIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MGE1Nlx1MGE1N1w3IVwyXDJcdTBhNTdc dTBhNThcNVx1MDEyNlx1MDA5NFwyXHUwYTU4IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilx1MGE1OVw3XDMxXDJcMlx1MGE1OVx1MDE0OVwzXDJcMlwyXHUwYTVhXHUwYTViXDdcdTAwZTYi KQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTBhNWJcdTBhNWNcN1wzMFwyXDJcdTBh NWNcdTBhNWRcNVx1MDEyNlx1MDA5NFwyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTBh NWRcdTBhNWVcNyFcMlwyXHUwYTVlXHUwYTVmXDVcdTAxMjZcdTAwOTRcMlx1MGE1ZiIpDQo+ID4N Cj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTYwXDchXDJcMlx1MGE2MFx1MGE2MVw1TFwnXDJcdTBh NjFcdTBhNjJcN1wzMVwyXDIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MGE2Mlx1MDE0 YlwzXDJcMlwyXHUwYTYzXHUwYTY0XDdcMzBcMlwyXHUwYTY0XHUwYTY1IikNCj4gPg0KPiA+ICsN Cj4gYnVmLndyaXRlKCJcNVx1MDEyNlx1MDA5NFwyXHUwYTY1XHUwYTY2XDdcMzFcMlwyXHUwYTY2 XHUwMTRkXDNcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXHUwYTY3XHUw YTczXDVcdTAxNTBcdTAwYTlcMlx1MGE2OFx1MGE3M1w1XHUwMTUyXHUwMGFhDQo+ID4gIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXHUwYTY5XHUwYTczXDVcdTAxNTRcdTAwYWJc Mlx1MGE2YVx1MGE3M1w1XHUwMTU2XHUwMGFjIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlwyXHUwYTZiXHUwYTczXDVcdTAxNThcdTAwYWRcMlx1MGE2Y1x1MGE3M1w1XHUwMTVlXHUw MGIwIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXHUwYTZkXHUwYTczXDVcdTAx NjBcdTAwYjFcMlx1MGE2ZVx1MGE3M1w1XHUwMTYyXHUwMGIyIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlwyXHUwYTZmXHUwYTczXDVcdTAxNjRcdTAwYjNcMlx1MGE3MFx1MGE3M1w1 XHUwMTY2XHUwMGI0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXHUwYTcxXHUw YTczXDVcdTAxNmFcdTAwYjZcMlx1MGE3Mlx1MGE2N1wzXDJcMlwyXHUwYTcyIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlx1MGE2OFwzXDJcMlwyXHUwYTcyXHUwYTY5XDNcMlwyXDJcdTBh NzJcdTBhNmFcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhNzJcdTBh NmJcM1wyXDJcMlx1MGE3Mlx1MGE2Y1wzXDJcMlwyXHUwYTcyXHUwYTZkXDMiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwYTcyXHUwYTZlXDNcMlwyXDJcdTBhNzJcdTBh NmZcM1wyXDJcMlx1MGE3Mlx1MGE3MCIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwy XDJcdTBhNzJcdTBhNzFcM1wyXDJcMlx1MGE3M1x1MDE0ZlwzXDJcMlwyXHUwYTc0IikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MGE3NVw3XHUwMGM3XDJcMlx1MGE3NVx1MDE1MVwz XDJcMlwyXHUwYTc2XHUwYTc3XDdcdTAwYzgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XDJcMlx1MGE3N1x1MGE3OFw3XHUwMGM5XDJcMlx1MGE3OFx1MGE3OVw3XDMwXDJcMlx1MGE3OSIp DQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTdhXDdcdTAwZmFcMlwyXHUwYTdhXHUwYTg1 XDdcMzFcMlwyXHUwYTdiXHUwYTdjXDciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXCJc MlwyXHUwYTdjXHUwYTg2XDdcdTAwZmFcMlwyXHUwYTdkXHUwYTdlXDckXDJcMlx1MGE3ZSIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTBhODZcN1x1MDBmYVwyXDJcdTBhN2ZcdTBh ODBcNyVcMlwyXHUwYTgwXHUwYTg2XDdcdTAwZmEiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUo IlwyXDJcdTBhODFcdTBhODJcNyZcMlwyXHUwYTgyXHUwYTg2XDdcdTAwZmFcMlwyXHUwYTgzIikN Cj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTBhODRcN1wnXDJcMlx1MGE4NFx1MGE4Nlw3XHUw MGZhXDJcMlx1MGE4NVx1MGE3YlwzXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJc Mlx1MGE4NVx1MGE3ZFwzXDJcMlwyXHUwYTg1XHUwYTdmXDNcMlwyXDJcdTBhODVcdTBhODEiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhODVcdTBhODNcM1wyXDJcMlx1 MGE4Nlx1MDE1M1wzXDJcMlwyXHUwYTg3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilx1MGE4OFw3XHUwMGNhXDJcMlx1MGE4OFx1MGE5M1w1XHUwMTVhXHUwMGFlXDJcdTBhODlcdTBh OGENCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcIlwyXDJcdTBhOGFcdTBh OTRcN1x1MDBmYVwyXDJcdTBhOGJcdTBhOGNcNyRcMlwyXHUwYThjIikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlx1MGE5NFw3XHUwMGZhXDJcMlx1MGE4ZFx1MGE4ZVw3JVwyXDJcdTBh OGVcdTBhOTRcN1x1MDBmYSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MGE4Zlx1 MGE5MFw3JlwyXDJcdTBhOTBcdTBhOTRcN1x1MDBmYVwyXDJcdTBhOTEiKQ0KPiA+DQo+ID4gKw0K PiBidWYud3JpdGUoIlx1MGE5Mlw3XCdcMlwyXHUwYTkyXHUwYTk0XDdcdTAwZmFcMlwyXHUwYTkz XHUwYTg5XDNcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwYTkzXHUwYThi XDNcMlwyXDJcdTBhOTNcdTBhOGRcM1wyXDJcMlx1MGE5M1x1MGE4ZiIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MGE5M1x1MGE5MVwzXDJcMlwyXHUwYTk0XHUwMTU1XDNc MlwyXDJcdTBhOTUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwYTk2XDdcdTAw Y2JcMlwyXHUwYTk2XHUwYWExXDVcdTAxNWFcdTAwYWVcMlx1MGE5N1x1MGE5OA0KPiA+ICIpDQo+ ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDdcIlwyXDJcdTBhOThcdTBhYTJcNVx1MDE1YVx1MDBh ZVwyXHUwYTk5XHUwYTlhXDckXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTBh OWFcdTBhYTJcNVx1MDE1YVx1MDBhZVwyXHUwYTliXHUwYTljXDclXDJcMlx1MGE5YyIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhYTJcNVx1MDE1YVx1MDBhZVwyXHUwYTlkXHUwYTll XDcmXDJcMlx1MGE5ZVx1MGFhMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNVx1MDE1 YVx1MDBhZVwyXHUwYTlmXHUwYWEwXDdcJ1wyXDJcdTBhYTBcdTBhYTJcNVx1MDE1YSIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAwYWVcMlx1MGFhMVx1MGE5N1wzXDJcMlwyXHUwYWEx XHUwYTk5XDNcMlwyXDJcdTBhYTEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYTli XDNcMlwyXDJcdTBhYTFcdTBhOWRcM1wyXDJcMlx1MGFhMVx1MGE5ZlwzXDJcMlwyIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGFhMlx1MDE1N1wzXDJcMlwyXHUwYWEzXHUwYWE0XDdc dTAwY2NcMlwyXHUwYWE0XHUwYWE1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw1XHUw MTVhXHUwMGFlXDJcdTBhYTVcdTBhYTdcN1wiXDJcMlx1MGFhNlx1MGFhOFw3XHUwMGZhIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTBhYTdcdTBhYTZcM1wyXDJcMlx1MGFhOFx1 MGFhOVwzXDJcMlwyXHUwYWE5XHUwYWE3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwz XDJcMlwyXHUwYWE5XHUwYWFhXDNcMlwyXDJcdTBhYWFcdTAxNTlcM1wyXDJcMlx1MGFhYiIpDQo+ ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwYWFjXDdcdTAwZmJcMlwyXHUwYWFjXHUwYWFkXDdc MzJcMlwyXHUwYWFkXHUwYWFlXDciKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDBmYVwy XDJcdTBhYWVcdTBhYjhcN1wzM1wyXDJcdTBhYWZcdTBhYjRcN1x1MDBmYlwyIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXHUwYWIwXHUwYWIxXDdcMzRcMlwyXHUwYWIxXHUwYWIz XDVcdTAxNWNcdTAwYWZcMlx1MGFiMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBh YjBcM1wyXDJcMlx1MGFiM1x1MGFiNlwzXDJcMlwyXHUwYWI0XHUwYWIyXDNcMlwyXDIiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYWI0XHUwYWI1XDNcMlwyXDJcdTBhYjVcdTBhYjhc M1wyXDJcMlx1MGFiNlx1MGFiNFwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwy XDJcMlx1MGFiN1x1MGFhYlwzXDJcMlwyXHUwYWI3XHUwYWFmXDNcMlwyXDJcdTBhYjhcdTAxNWIN Cj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhYjlcdTBhYmRc N1x1MDBmYlwyXDJcdTBhYmFcdTBhYmJcN1wzMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwYWJiXHUwYWJjXDdcdTAwZmFcMlwyXHUwYWJjXHUwYWJlXDdcMzNcMlwyXHUw YWJkXHUwYWJhDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUw YWJkXHUwYWJlXDNcMlwyXDJcdTBhYmVcdTAxNWRcM1wyXDJcMlx1MGFiZiIpDQo+ID4NCj4gPiAr DQo+IGJ1Zi53cml0ZSgiXHUwYWMwXDdcdTAwY2RcMlwyXHUwYWMwXHUwYWMxXDdcMzBcMlwyXHUw YWMxXHUwYWMyXHQiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwxM1wyXDJcdTBhYzJcdTBh YzNcN1wzMVwyXDJcdTBhYzNcdTAxNWZcM1wyXDJcMlx1MGFjNCIpDQo+ID4NCj4gPiArDQo+IGJ1 Zi53cml0ZSgiXHUwYWM1XDdcdTAwY2VcMlwyXHUwYWM1XHUwYWM2XDdcMzBcMlwyXHUwYWM2XHUw YWM3XDciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGZiXDJcMlx1MGFjN1x1MGFj OFw3XDMxXDJcMlx1MGFjOFx1MDE2MVwzXDJcMlwyXHUwYWM5IikNCj4gPg0KPiA+ICsNCj4gYnVm LndyaXRlKCJcdTBhY2FcN1x1MDBjZlwyXDJcdTBhY2FcdTBhZDBcN1wzMFwyXDJcdTBhY2JcdTBh Y2NcNyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGVjXDJcMlx1MGFjY1x1MGFjZFw3 XDMwXDJcMlx1MGFjZFx1MGFjZVw3XHUwMGZhXDIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUo IlwyXHUwYWNlXHUwYWQxXDdcMzFcMlwyXHUwYWNmXHUwYWQxXDdcdTAwZmFcMlwyXHUwYWQwIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGFjYlwzXDJcMlwyXHUwYWQwXHUwYWNmXDNc MlwyXDJcdTBhZDFcdTBhZDJcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTBhZDJcdTBhZDNcN1wzMVwyXDJcdTBhZDNcdTAxNjNcM1wyXDJcMlx1MGFkNFx1MGFkNSIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN1x1MDBkMFwyXDJcdTBhZDVcdTAxNjVcM1wyXDJc Mlx1MGFkNlx1MGFkN1w3XHUwMGQxXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJc dTBhZDdcdTBhZDhcN1wzMFwyXDJcdTBhZDhcdTBhZDlcNUxcJ1wyXHUwYWQ5XHUwYWRhIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XDMxXDJcMlx1MGFkYVx1MDE2N1wzXDJcMlwyXHUw YWRiXHUwYWRjXHRcZlwyXDJcdTBhZGMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw MTY5XDNcMlwyXDJcdTBhZGRcdTBhZGVcN1x1MDBkMlwyXDJcdTBhZGVcdTBhZGZcN1wzMCIpDQo+ ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwyXDJcdTBhZGZcdTBhZTRcNVgtDQo+ID4gXDJc dTBhZTBcdTBhZTFcNyhcMlwyXHUwYWUxXHUwYWUyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlw3QFwyXDJcdTBhZTJcdTBhZTNcN1xiXDJcMlx1MGFlM1x1MGFlNVw1XHUwMTY4XHUwMGI1 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwYWU0XHUwYWUwXDNcMlwyXDJcdTBh ZTRcdTBhZTVcM1wyXDJcMlx1MGFlNVx1MGFlNiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcM1wyXDJcMlx1MGFlNlx1MGFlN1w3XDMxXDJcMlx1MGFlN1x1MDE2YlwzXDJcMlwyXHUwYWU4 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGFlOVx0XHJcMlwyXHUwYWU5XHUwMTZk XDNcMlwyXDJcdTBhZWFcdTBhZjVcNVx1MDE3MCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTAwYjlcMlx1MGFlYlx1MGFmNVw1XHUwMTcyXHUwMGJhXDJcdTBhZWNcdTBhZjVcNVx1 MDE3NCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAwYmJcMlx1MGFlZFx1MGFm NVw1XHUwMTc2XHUwMGJjXDJcdTBhZWVcdTBhZjVcNVx1MDE3OCIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTAwYmRcMlx1MGFlZlx1MGFmNVw1XHUwMTdhXHUwMGJlXDJcdTBhZjBcdTBh ZjVcNVx1MDE3YyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAwYmZcMlx1MGFmMVx1 MGFmNVw1XHUwMTdlXHUwMGMwXDJcdTBhZjJcdTBhZjVcNVx1MDE4MCIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTAwYzFcMlx1MGFmM1x1MGFmNVw1XHUwMTgyXHUwMGMyXDJcdTBhZjRc dTBhZWFcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTBhZjRcdTBhZWJc M1wyXDJcMlx1MGFmNFx1MGFlY1wzXDJcMlwyXHUwYWY0XHUwYWVkIikNCj4gPg0KPiA+ICsNCj4g YnVmLndyaXRlKCJcM1wyXDJcMlx1MGFmNFx1MGFlZVwzXDJcMlwyXHUwYWY0XHUwYWVmXDNcMlwy XDJcdTBhZjQiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MGFmMFwzXDJcMlwyXHUwYWY0 XHUwYWYxXDNcMlwyXDJcdTBhZjRcdTBhZjJcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53 cml0ZSgiXHUwYWY0XHUwYWYzXDNcMlwyXDJcdTBhZjVcdTAxNmZcM1wyXDJcMlx1MGFmNlx1MGFm N1w3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDBkYVwyXDJcdTBhZjdcdTBhZjhc N1wzMFwyXDJcdTBhZjhcdTBhZjlcNVx1MDEyNlx1MDA5NCIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcMlx1MGFmOVx1MGFmYVw3XDMxXDJcMlx1MGFmYVx1MDE3MVwzXDJcMlwyXHUwYWZi XHUwYWZjIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcN1x1MDBkZlwyXDJcdTBhZmNcdTBh ZmRcN1wzMFwyXDJcdTBhZmRcdTBhZmVcNVx1MDEyNiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcdTAwOTRcMlx1MGFmZVx1MGFmZlw3XDMxXDJcMlx1MGFmZlx1MDE3M1wzXDJcMlwyXHUw YjAwIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGIwMVw3XHUwMGU4XDJcMlx1MGIw MVx1MGIwOVw3XDMwXDJcMlx1MGIwMlx1MGIwM1w3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIipcMlwyXHUwYjAzXHUwYjA0XDdcYlwyXDJcdTBiMDRcdTBiMDVcN1x1MDBlY1wyXDJcdTBi MDUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYjA2XDdcMzBcMlwyXHUwYjA2XHUw YjA3XDdcdTAwZmFcMlwyXHUwYjA3XHUwYjA4XDciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXDMxXDJcMlx1MGIwOFx1MGIwYVw3IVwyXDJcdTBiMDlcdTBiMDJcM1wyXDJcMlx1MGIw OVx1MGIwYQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBiMGFc dTBiMTBcM1wyXDJcMlx1MGIwYlx1MGIwY1w3W1wyXDJcdTBiMGMiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwYjBkXDdcYlwyXDJcdTBiMGRcdTBiMGVcNUxcJ1wyXHUwYjBlXHUw YjBmXDchXDJcMlx1MGIwZiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBiMTFcM1wy XDJcMlx1MGIxMFx1MGIwYlwzXDJcMlwyXHUwYjEwXHUwYjExXDNcMlwyXDIiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwYjExXHUwYjEyXDNcMlwyXDJcdTBiMTJcdTBiMTNcNVx1MDEy Nlx1MDA5NFwyXHUwYjEzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGIxNFw3XDMx XDJcMlx1MGIxNFx1MDE3NVwzXDJcMlwyXHUwYjE1XHUwYjE2XDdcdTAwZTkiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MGIxNlx1MGIxN1w3XDMwXDJcMlx1MGIxN1x1MGIxOFw1 XHUwMTI2XHUwMDk0XDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYjE4XHUwYjE5 XDdcMzFcMlwyXHUwYjE5XHUwMTc3XDNcMlwyXDJcdTBiMWFcdTBiMWIiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDdcdTAwZTBcMlwyXHUwYjFiXHUwYjFjXDdcMzBcMlwyXHUwYjFjXHUw YjFkXDVcdTAxMjYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMDk0XDJcdTBiMWRc dTBiMWVcN1wzMVwyXDJcdTBiMWVcdTAxNzlcM1wyXDJcMlx1MGIxZiIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTBiMjRcN1x1MDBlMVwyXDJcdTBiMjBcdTBiMjFcN1wyMVwyXDJcdTBi MjFcdTBiMjJcNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcYlwyXDJcdTBiMjJcdTBi MjNcN1x1MDBmYVwyXDJcdTBiMjNcdTBiMjVcNyFcMlwyXHUwYjI0IikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MGIyMFwzXDJcMlwyXHUwYjI0XHUwYjI1XDNcMlwyXDJcdTBiMjVcdTBi MjZcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBiMjZcdTBiMjdcN1wz MFwyXDJcdTBiMjdcdTBiMjhcNVx1MDEyNlx1MDA5NFwyXHUwYjI4IikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MGIyOVw3XDMxXDJcMlx1MGIyOVx1MDE3YlwzXDJcMlwyXHUwYjJhXHUw YjJiXDdcdTAwZTIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MGIyYlx1MGIy Y1w3XDMwXDJcMlx1MGIyY1x1MGIyZFw1XHUwMTI2XHUwMDk0XDIiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwYjJkXHUwYjJlXDdcMzFcMlwyXHUwYjJlXHUwMTdkXDNcMlwyXDJcdTBi MmZcdTBiMzAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcdTAwZTNcMlwyXHUwYjMw XHUwYjMxXDdcMzBcMlwyXHUwYjMxXHUwYjMyXDVcdTAxMjYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwMDk0XDJcdTBiMzJcdTBiMzNcN1wzMVwyXDJcdTBiMzNcdTAxN2ZcM1wyXDJc Mlx1MGIzNCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBiMzVcN1x1MDBlNFwyXDJc dTBiMzVcdTBiMzZcN1wzMFwyXDJcdTBiMzZcdTBiMzdcNSIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcdTAxMjZcdTAwOTRcMlx1MGIzN1x1MGIzOFw3XDMxXDJcMlx1MGIzOFx1MDE4MVwz XDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlx1MGIzOVx1MGIzYVw3XHUwMGRl XDJcMlx1MGIzYVx1MGIzYlw3XDMwXDJcMlx1MGIzYiIpDQo+ID4NCj4gPiArICAgICAgICBidWYu d3JpdGUoIlx1MGI0MFw1WC0NCj4gPiBcMlx1MGIzY1x1MGIzZFw3KFwyXDJcdTBiM2RcdTBiM2Vc N0BcMlwyXHUwYjNlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGIzZlw3XGJcMlwy XHUwYjNmXHUwYjQxXDVcdTAxNjhcdTAwYjVcMlx1MGI0MFx1MGIzYyIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MGI0MFx1MGI0MVwzXDJcMlwyXHUwYjQxXHUwYjQyXDNc MlwyXDJcdTBiNDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYjQzXDchXDJcMlx1 MGI0M1x1MGI0NFw1XHUwMTI2XHUwMDk0XDJcdTBiNDRcdTBiNDUiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXDdcMzFcMlwyXHUwYjQ1XHUwMTgzXDNcMlwyXDJcdTBiNDZcdTBiNGNcNVx1 MDE4Nlx1MDBjNCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlx1MGI0N1x1MGI0 Y1w1XHUwMTg4XHUwMGM1XDJcdTBiNDhcdTBiNGNcNVx1MDE4Y1x1MDBjNyIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcMlx1MGI0OVx1MGI0Y1w1XHUwMThlXHUwMGM4XDJcdTBiNGFc dTBiNGNcNVx1MDE5MFx1MDBjOSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlx1MGI0 Ylx1MGI0NlwzXDJcMlwyXHUwYjRiXHUwYjQ3XDNcMlwyXDJcdTBiNGJcdTBiNDgiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBiNGJcdTBiNDlcM1wyXDJcMlx1MGI0Ylx1 MGI0YVwzXDJcMlwyXHUwYjRjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDE4NVwz XDJcMlwyXHUwYjRkXHUwYjRlXDdcdTAwYzJcMlwyXHUwYjRlXHUwYjRmXDdcMzAiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MGI0Zlx1MGI1MFw1XHUwMTI2XHUwMDk0XDJcdTBi NTBcdTBiNTFcN1wyMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYjUxXHUw YjUyXDVcdTAxMjZcdTAwOTRcMlx1MGI1Mlx1MGI1M1w3XDM2XDJcMlx1MGI1MyIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcdTBiNTRcNVx1MDEyNlx1MDA5NFwyXHUwYjU0XHUwYjU1XDdc MzFcMlwyXHUwYjU1XHUwMTg3IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1 MGI1Nlx1MGI1N1w3XHUwMGMzXDJcMlx1MGI1N1x1MGI1OFw3XDMwXDJcMiIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTBiNThcdTBiNWRcNVx1MDE4YVx1MDBjNlwyXHUwYjU5XHUwYjVh XDcoXDJcMlx1MGI1YSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBiNWNcNVx1MDE4 YVx1MDBjNlwyXHUwYjViXHUwYjU5XDNcMlwyXDJcdTBiNWNcdTBiNWYiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBiNWRcdTBiNWJcM1wyXDJcMlx1MGI1ZFx1MGI1ZVwz XDJcMlwyXHUwYjVlIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTBiNjBcM1wyXDJcMlx1 MGI1Zlx1MGI1ZFwzXDJcMlwyXHUwYjYwXHUwYjYxXDchXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTBiNjFcdTBiNjJcNVx1MDEyNlx1MDA5NFwyXHUwYjYyXHUwYjYzXDchXDJc Mlx1MGI2MyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBiNjRcNVx1MDEyNlx1MDA5 NFwyXHUwYjY0XHUwYjY1XDchXDJcMlx1MGI2NVx1MGI2NiIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcNVx1MDEyNlx1MDA5NFwyXHUwYjY2XHUwYjY3XDdcMzFcMlwyXHUwYjY3XHUwMTg5 XDNcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXHUwYjY4XHUwYjY5XHRc MTZcMlwyXHUwYjY5XHUwMThiXDNcMlwyXDJcdTBiNmFcdTBiNmIiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXDdcdTAwYzRcMlwyXHUwYjZiXHUwYjZjXDdcMzBcMlwyXHUwYjZjXHUwYjZk XDVcdTAxMjYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMDk0XDJcdTBiNmRcdTBi NmVcNyFcMlwyXHUwYjZlXHUwYjZmXDVcdTAxMjZcdTAwOTQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDJcdTBiNmZcdTBiNzBcNyFcMlwyXHUwYjcwXHUwYjcxXDVcdTAxMjZcdTAwOTRc Mlx1MGI3MSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBiNzJcN1wzMVwyXDJcdTBi NzJcdTAxOGRcM1wyXDJcMlx1MGI3M1x1MGI3NFw3XHUwMGM1IikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlwyXDJcdTBiNzRcdTBiNzVcN1wzMFwyXDJcdTBiNzVcdTBiNzZcNVx1MDEyNlx1 MDA5NFwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGI3Nlx1MGI3N1w3IVwyXDJc dTBiNzdcdTBiNzhcNVx1MDEyNlx1MDA5NFwyXHUwYjc4IikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MGI3OVw3IVwyXDJcdTBiNzlcdTBiN2FcNVx1MDEyNlx1MDA5NFwyXHUwYjdhXHUw YjdiIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcN1wzMVwyXDJcdTBiN2JcdTAxOGZcM1wy XDJcMlx1MGI3Y1x1MGI3ZFw3XHUwMGM2XDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTBiN2RcdTBiN2VcN1wzMFwyXDJcdTBiN2VcdTBiN2ZcN0BcMlwyXHUwYjdmXHUwYjgwXDci KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXGJcMlwyXHUwYjgwXHUwYjg1XDVcdTAxOTJc dTAwY2FcMlx1MGI4MVx1MGI4Mlw3KFwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XHUwYjgyXHUwYjg0XDVcdTAxOTJcdTAwY2FcMlx1MGI4M1x1MGI4MVwzXDJcMlwyXHUwYjg0IikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGI4N1wzXDJcMlwyXHUwYjg1XHUwYjgzXDNc MlwyXDJcdTBiODVcdTBiODZcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTBiODZcdTBiODhcM1wyXDJcMlx1MGI4N1x1MGI4NVwzXDJcMlwyXHUwYjg4XHUwYjg5XDciKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiIVwyXDJcdTBiODlcdTBiOGFcNVx1MDEyNlx1 MDA5NFwyXHUwYjhhXHUwYjhiXDchXDJcMlx1MGI4Yg0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTBiOGNcNVx1MDEyNlx1MDA5NFwyXHUwYjhjXHUwYjhkXDchXDJcMlx1MGI4 ZFx1MGI4ZSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDVcdTAxMjZcdTAwOTRcMlx1MGI4 ZVx1MGI4Zlw3XDMxXDJcMlx1MGI4Zlx1MDE5MVwzXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDJcMlx1MGI5MFx1MGI5MVx0XDE3XDJcMlx1MGI5MVx1MDE5M1wzXDJcMlwyXHUw YjkyXHUwYjkzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XHUwMGVhXDJcMlx1MGI5 M1x1MGI5NFw3XDMwXDJcMlx1MGI5NFx1MGI5NVw1XHUwMTI2IikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlx1MDA5NFwyXHUwYjk1XHUwYjlkXDdcMzZcMlwyXHUwYjk2XHUwYjk3XDVcdTAx MjRcdTAwOTMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTBiOTdcdTBiOThcNyFc MlwyXHUwYjk4XHUwYjk5XDVcdTAxMjRcdTAwOTNcMlx1MGI5OSIpDQo+ID4NCj4gPiArICAgICAg ICBidWYud3JpdGUoIlx1MGI5YVw3DQo+IFwyXDJcdTBiOWFcdTBiOWNcM1wyXDJcMlx1MGI5Ylx1 MGI5NlwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGI5Y1x1MGI5Zlwz XDJcMlwyXHUwYjlkXHUwYjliXDNcMlwyXDJcdTBiOWRcdTBiOWVcMyIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTBiOWVcdTBiYTBcM1wyXDJcMlx1MGI5Zlx1MGI5ZFwz XDJcMlwyXHUwYmEwXHUwYmExDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcN1wz MVwyXDJcdTBiYTFcdTAxOTVcM1wyXDJcMlx1MDBmMFx1MDE5OVx1MDE5Ylx1MDFhNSIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxYTlcdTAxYWNcdTAxYjRcdTAxYjlcdTAxYmRcdTAx YzBcdTAxYzZcdTAxY2JcdTAxY2YiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMWQy XHUwMWQ4XHUwMWVhXHUwMWVjXHUwMWY0XHUwMWZkXHUwMjA2XHUwMjBmXHUwMjE4IikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDIyMVx1MDIyYVx1MDIzM1x1MDIzY1x1MDI0NVx1MDI0 Ylx1MDI1M1x1MDI1Ylx1MDI2MyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAyODFc dTAyODhcdTAyOGZcdTAyOThcdTAyOWNcdTAyYTBcdTAyYTdcdTAyYjFcdTAyYmUiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMmNkXHUwMmUyXHUwMmU4XHUwMzA0XHUwMzBhXHUwMzEz XHUwMzI2XHUwMzM2XHUwMzQxIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDM3Mlx1 MDM4Mlx1MDM4OVx1MDM4Zlx1MDNhN1x1MDNiMlx1MDNiNVx1MDNiOFx1MDNkZiIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcdTAzZTNcdTAzZjBcdTAzZjdcdTA0MDlcdTA0MWVcdTA0MzNc dTA0MzlcdTA0NGZcdTA0NWMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNDYwXHUw NDY1XHUwNDZiXHUwNDZlXHUwNDcyXHUwNDc2XHUwNDdkXHUwNDk3XHUwNGExIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlx1MDRhOVx1MDRhZFx1MDRiM1x1MDRiN1x1MDRlNVx1MDRlOVx1 MDRmMFx1MDRmNlx1MDRmYSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1MDNcdTA1 MDhcdTA1MTRcdTA1MWZcdTA1MmNcdTA1M2RcdTA1NDJcdTA1NDdcdTA1NTgiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwNTVkXHUwNTYyXHUwNTZhXHUwNThhXHUwNThmXHUwNTk0XHUw NTllXHUwNWE4XHUwNWI0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDViOVx1MDVi ZVx1MDVjYVx1MDVjZlx1MDVkNFx1MDVkZVx1MDVlNFx1MDVmZlx1MDYwNSIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTA2MGZcdTA2MWRcdTA2MmFcdTA2MmZcdTA2MzNcdTA2M2VcdTA2 NDRcdTA2NGZcdTA2NTgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNjYyXHUwNjc0 XHUwNjc5XHUwNjdkXHUwNjg4XHUwNjhlXHUwNjk4XHUwNjlmXHUwNmE3IikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlx1MDZhZVx1MDZiYVx1MDZjNVx1MDZjOFx1MDZkM1x1MDZkOFx1MDZl Mlx1MDZlOFx1MDZmYiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3MDFcdTA3MGJc dTA3MTFcdTA3MWZcdTA3MmFcdTA3MmZcdTA3MzhcdTA3M2ZcdTA3NGEiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXHUwNzUxXHUwNzViXHUwN2E2XHUwN2FiXHUwN2FlXHUwN2JmXHUwN2M1 XHUwN2NjXHUwN2Q5IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDgyNFx1MDgyOVx1 MDgyY1x1MDgzZFx1MDg0M1x1MDg0YVx1MDg1M1x1MDg2NFx1MDg2YSIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTA4NzJcdTA4ODBcdTA4ODVcdTA4OTJcdTA4OTdcdTA4YTRcdTA4YTlc dTA4YjBcdTA4YmUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOGMzXHUwOGNhXHUw OGRmXHUwOGU0XHUwOGVkXHUwOTBlXHUwOTJlXHUwOTMxXHUwOTM3IikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDk0MVx1MDk1NFx1MDk2MVx1MDk2N1x1MDk2ZFx1MDk3M1x1MDk3OVx1 MDk3Zlx1MDk4NSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA5OGJcdTA5OTFcdTA5 OTdcdTA5OTlcdTA5OWVcdTA5YTFcdTA5YTdcdTA5YWJcdTA5YjQiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwOWJhXHUwOWNhXHUwOWQyXHUwOWRhXHUwOWUyXHUwOWVhXHUwOWYxXHUw OWY4XHUwOWZlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGEwOVx1MGEwZlx1MGEx Nlx1MGExY1x1MGEyM1x1MGEyOVx1MGEzMlx1MGEzOVx1MGE0YSIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTBhNzJcdTBhODVcdTBhOTNcdTBhYTFcdTBhYTlcdTBhYjRcdTBhYjdcdTBh YmRcdTBhZDAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwYWU0XHUwYWY0XHUw YjA5XHUwYjEwXHUwYjI0XHUwYjQwXHUwYjRiXHUwYjVkXHUwYjg1IikNCj4gPg0KPiA+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXHUwYjlkIikNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBidWYuZ2V0 dmFsdWUoKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIFZmclN5bnRh eFBhcnNlciAoIFBhcnNlciApOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBncmFtbWFyRmls ZU5hbWUgPSAiVmZyU3ludGF4Lmc0Ig0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBhdG4gPSBB VE5EZXNlcmlhbGl6ZXIoKS5kZXNlcmlhbGl6ZShzZXJpYWxpemVkQVROKCkpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlY2lzaW9uc1RvREZBID0gWyBERkEoZHMsIGkpIGZvciBpLCBkcyBp bg0KPiBlbnVtZXJhdGUoYXRuLmRlY2lzaW9uVG9TdGF0ZSkgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBzaGFyZWRDb250ZXh0Q2FjaGUgPSBQcmVkaWN0aW9uQ29udGV4dENhY2hlKCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgbGl0ZXJhbE5hbWVzID0gWyAiPElOVkFMSUQ+IiwgIidz aG93JyIsICIncHVzaCciLCAiJ3BvcCciLCAiJyNwcmFnbWEnIiwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAiJ3BhY2snIiwgIic9JyIsICInSU1BR0VfVE9LRU4nIiwgIidIT1JJWk9O VEFMJyIsDQo+ID4gIidNVUxUSV9MSU5FJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgIic8PCciLCAiJz4+JyIsICInKyciLCAiJyonIiwgIiclJyIsICInZm9ybWF0JyIsICInPyci LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInI2RlZmluZSciLCAiJyNpbmNsdWRl JyIsICInZm9ybXBrZ3R5cGUnIiwgIid7JyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgIid9JyIsICInKCciLCAiJyknIiwgIidbJyIsICInXSciLCAiJy4nIiwgIictJyIsICInOici LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInLyciLCAiJzsnIiwgIicsJyIsICIn PT0nIiwgIichPSciLCAiJzw9JyIsICInPCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICInPj0nIiwgIic+JyIsICInfCciLCAiJyYnIiwgIidkZXZpY2VwYXRoJyIsICInZm9ybXNl dCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInZm9ybXNldGlkJyIsICInZW5k Zm9ybXNldCciLCAiJ3RpdGxlJyIsICInZm9ybWlkJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgIidvbmVvZiciLCAiJ2VuZG9uZW9mJyIsICIncHJvbXB0JyIsICInb3JkZXJlZGxp c3QnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ21heGNvbnRhaW5lcnMnIiwg IidlbmRsaXN0JyIsICInZW5kZm9ybSciLCAiJ2Zvcm0nIiwNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAiJ2Zvcm1tYXAnIiwgIidtYXB0aXRsZSciLCAiJ21hcGd1aWQnIiwgIidzdWJ0 aXRsZSciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInZW5kc3VidGl0bGUnIiwg IidoZWxwJyIsICIndGV4dCciLCAiJ29wdGlvbiciLCAiJ2ZsYWdzJyIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgIidkYXRlJyIsICInZW5kZGF0ZSciLCAiJ3llYXInIiwgIidtb250 aCciLCAiJ2RheSciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICIndGltZSciLCAi J2VuZHRpbWUnIiwgIidob3VyJyIsICInbWludXRlJyIsICInc2Vjb25kJyIsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgIidncmF5b3V0aWYnIiwgIidsYWJlbCciLCAiJ3RpbWVvdXQn IiwgIidpbnZlbnRvcnknIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ19OT05f TlZfREFUQV9NQVAnIiwgIidzdHJ1Y3QnIiwgIid1bmlvbiciLCAiJ0JPT0xFQU4nIiwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ1VJTlQ2NCciLCAiJ1VJTlQzMiciLCAiJ1VJTlQx NiciLCAiJ1VJTlQ4JyIsICInRUZJX1NUUklOR19JRCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICInRUZJX0hJSV9EQVRFJyIsICInRUZJX0hJSV9USU1FJyIsICInRUZJX0hJSV9S RUYnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ2d1aWQnIiwgIidjaGVja2Jv eCciLCAiJ2VuZGNoZWNrYm94JyIsICInbnVtZXJpYyciLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICInZW5kbnVtZXJpYyciLCAiJ21pbmltdW0nIiwgIidtYXhpbXVtJyIsICInc3Rl cCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInZGVmYXVsdCciLCAiJ3Bhc3N3 b3JkJyIsICInZW5kcGFzc3dvcmQnIiwgIidzdHJpbmcnIiwNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAiJ2VuZHN0cmluZyciLCAiJ21pbnNpemUnIiwgIidtYXhzaXplJyIsICInZW5j b2RpbmcnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ3N1cHByZXNzaWYnIiwg IidkaXNhYmxlaWYnIiwgIidoaWRkZW4nIiwgIidnb3RvJyIsDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgIidmb3Jtc2V0Z3VpZCciLCAiJ2luY29uc2lzdGVudGlmJyIsICInd2Fybmlu Z2lmJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIidub3N1Ym1pdGlmJyIsICIn ZW5kaWYnIiwgIidrZXknIiwgIidERUZBVUxUJyIsDQo+ID4gIidNQU5VRkFDVFVSSU5HJyIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIidDSEVDS0JPWF9ERUZBVUxUJyIsICInQ0hF Q0tCT1hfREVGQVVMVF9NRkcnIiwNCj4gPiAiJ0lOVEVSQUNUSVZFJyIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgIidOVl9BQ0NFU1MnIiwgIidSRVNFVF9SRVFVSVJFRCciLA0KPiAi J1JFQ09OTkVDVF9SRVFVSVJFRCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICIn TEFURV9DSEVDSyciLCAiJ1JFQURfT05MWSciLCAiJ09QVElPTlNfT05MWSciLA0KPiA+ICInUkVT VF9TVFlMRSciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInY2xhc3MnIiwgIidz dWJjbGFzcyciLCAiJ2NsYXNzZ3VpZCciLCAiJ3R5cGVkZWYnIiwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAiJ3Jlc3RvcmUnIiwgIidzYXZlJyIsICInZGVmYXVsdHMnIiwgIidiYW5u ZXInIiwgIidhbGlnbiciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInbGVmdCci LCAiJ3JpZ2h0JyIsICInY2VudGVyJyIsICInbGluZSciLCAiJ25hbWUnIiwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAiJ3ZhcmlkJyIsICIncXVlc3Rpb24nIiwgIidxdWVzdGlvbmlk JyIsICInaW1hZ2UnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ2xvY2tlZCci LCAiJ3J1bGUnIiwgIidlbmRydWxlJyIsICIndmFsdWUnIiwgIidyZWFkJyIsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgIid3cml0ZSciLCAiJ3Jlc2V0YnV0dG9uJyIsICInZW5kcmVz ZXRidXR0b24nIiwgIidkZWZhdWx0c3RvcmUnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAiJ2F0dHJpYnV0ZSciLCAiJ3ZhcnN0b3JlJyIsICInZWZpdmFyc3RvcmUnIiwgIid2YXJz aXplJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIiduYW1ldmFsdWV2YXJzdG9y ZSciLCAiJ2FjdGlvbiciLCAiJ2NvbmZpZyciLCAiJ2VuZGFjdGlvbiciLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICIncmVmcmVzaCciLCAiJ2ludGVydmFsJyIsICIndmFyc3RvcmVk ZXZpY2UnIiwgIidndWlkb3AnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ2Vu ZGd1aWRvcCciLCAiJ2RhdGF0eXBlJyIsICInZGF0YSciLCAiJ21vZGFsJyIsICInTk9OX0RFVklD RSciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInRElTS19ERVZJQ0UnIiwgIidW SURFT19ERVZJQ0UnIiwgIidORVRXT1JLX0RFVklDRSciLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICInSU5QVVRfREVWSUNFJyIsICInT05CT0FSRF9ERVZJQ0UnIiwgIidPVEhFUl9E RVZJQ0UnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ1NFVFVQX0FQUExJQ0FU SU9OJyIsICInR0VORVJBTF9BUFBMSUNBVElPTiciLA0KPiA+ICInRlJPTlRfUEFHRSciLA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInU0lOR0xFX1VTRSciLCAiJ1lFQVJfU1VQUFJF U1MnIiwgIidNT05USF9TVVBQUkVTUyciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICInREFZX1NVUFBSRVNTJyIsICInSE9VUl9TVVBQUkVTUyciLA0KPiAiJ01JTlVURV9TVVBQUkVT UyciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInU0VDT05EX1NVUFBSRVNTJyIs ICInU1RPUkFHRV9OT1JNQUwnIiwNCj4gPiAiJ1NUT1JBR0VfVElNRSciLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICInU1RPUkFHRV9XQUtFVVAnIiwgIidVTklRVUUnIiwgIidOT0VN UFRZJyIsICInY29uZCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInZmluZCci LCAiJ21pZCciLCAiJ3Rva2VuJyIsICInc3BhbiciLCAiJ2R1cCciLCAiJ3ZhcmVxdmFsJyIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIid2YXInIiwgIidpZGVxdmFsJyIsICInaWRl cWlkJyIsICInaWRlcXZhbGxpc3QnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAi J3F1ZXN0aW9ucmVmJyIsICIncnVsZXJlZiciLCAiJ3N0cmluZ3JlZiciLCAiJ3B1c2h0aGlzJyIs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIidzZWN1cml0eSciLCAiJ2dldCciLCAi J1RSVUUnIiwgIidGQUxTRSciLCAiJ09ORSciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICInT05FUyciLCAiJ1pFUk8nIiwgIidVTkRFRklORUQnIiwgIidWRVJTSU9OJyIsICInbGVu Z3RoJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIidBTkQnIiwgIidPUiciLCAi J05PVCciLCAiJ3NldCciLCAiJ34nIiwgIidib29sdmFsJyIsDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgIidzdHJpbmd2YWwnIiwgIid1bmludHZhbCciLCAiJ3RvdXBwZXInIiwgIid0 b2xvd2VyJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIidtYXRjaCciLCAiJ21h dGNoMiciLCAiJ2NhdGVuYXRlJyIsICIncXVlc3Rpb25yZWZ2YWwnIiwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAiJ3N0cmluZ3JlZnZhbCciLCAiJ21hcCciLCAiJ3JlZnJlc2hndWlk JyIsICInU1RSSU5HX1RPS0VOJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIidP UFRJT05fREVGQVVMVCciLCAiJ09QVElPTl9ERUZBVUxUX01GRyciLA0KPiA+ICInTlVNRVJJQ19T SVpFXzEnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ05VTUVSSUNfU0laRV8y JyIsICInTlVNRVJJQ19TSVpFXzQnIiwNCj4gIidOVU1FUklDX1NJWkVfOCciLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICInRElTUExBWV9JTlRfREVDJyIsICInRElTUExBWV9VSU5U X0RFQyciLA0KPiA+ICInRElTUExBWV9VSU5UX0hFWCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICInSU5TRU5TSVRJVkUnIiwgIidTRU5TSVRJVkUnIiwgIidMQVNUX05PTl9NQVRD SCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInRklSU1RfTk9OX01BVENIJyIg XQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBzeW1ib2xpY05hbWVzID0gWyAiPElOVkFMSUQ+ IiwgIjxJTlZBTElEPiIsICI8SU5WQUxJRD4iLA0KPiA+ICI8SU5WQUxJRD4iLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAiPElOVkFMSUQ+IiwgIjxJTlZBTElEPiIsICI8SU5WQUxJ RD4iLCAiPElOVkFMSUQ+IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIjxJTlZB TElEPiIsICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+IiwgIjxJTlZBTElEPiIsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+IiwgIjxJTlZBTElE PiIsICI8SU5WQUxJRD4iLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAiPElOVkFM SUQ+IiwgIkRlZmluZSIsICJJbmNsdWRlIiwgIkZvcm1Qa2dUeXBlIiwNCj4gIk9wZW5CcmFjZSIs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJDbG9zZUJyYWNlIiwgIk9wZW5QYXJl biIsICJDbG9zZVBhcmVuIiwgIk9wZW5CcmFja2V0IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIkNsb3NlQnJhY2tldCIsICJEb3QiLCAiTmVnYXRpdmUiLCAiQ29sb24iLCAiU2xh c2giLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAiU2VtaWNvbG9uIiwgIkNvbW1h IiwgIkVxdWFsIiwgIk5vdEVxdWFsIiwgIkxlc3NFcXVhbCIsDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICJMZXNzIiwgIkdyZWF0ZXJFcXVhbCIsICJHcmVhdGVyIiwgIkJpdFdpc2VP ciIsICJCaXRXaXNlQW5kIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIkRldmlj ZVBhdGgiLCAiRm9ybVNldCIsICJGb3JtU2V0SWQiLCAiRW5kRm9ybVNldCIsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICJUaXRsZSIsICJGb3JtSWQiLCAiT25lT2YiLCAiRW5kT25l T2YiLCAiUHJvbXB0IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIk9yZGVyZWRM aXN0IiwgIk1heENvbnRhaW5lcnMiLCAiRW5kTGlzdCIsICJFbmRGb3JtIiwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIkZvcm0iLCAiRm9ybU1hcCIsICJNYXBUaXRsZSIsICJNYXBH dWlkIiwgIlN1YnRpdGxlIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIkVuZFN1 YnRpdGxlIiwgIkhlbHAiLCAiVGV4dCIsICJPcHRpb24iLCAiRkxBR1MiLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAiRGF0ZSIsICJFbmREYXRlIiwgIlllYXIiLCAiTW9udGgiLCAi RGF5IiwgIlRpbWUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAiRW5kVGltZSIs ICJIb3VyIiwgIk1pbnV0ZSIsICJTZWNvbmQiLCAiR3JheU91dElmIiwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIkxhYmVsIiwgIlRpbWVvdXQiLCAiSW52ZW50b3J5IiwgIk5vbk52 RGF0YU1hcCIsICJTdHJ1Y3QiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAiVW5p b24iLCAiQm9vbGVhbiIsICJVaW50NjQiLCAiVWludDMyIiwgIlVpbnQxNiIsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICJVaW50OCIsICJFRklfU1RSSU5HX0lEIiwgIkVGSV9ISUlf REFURSIsICJFRklfSElJX1RJTUUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAi RUZJX0hJSV9SRUYiLCAiVXVpZCIsICJDaGVja0JveCIsICJFbmRDaGVja0JveCIsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICJOdW1lcmljIiwgIkVuZE51bWVyaWMiLCAiTWluaW11 bSIsICJNYXhpbXVtIiwgIlN0ZXAiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAi RGVmYXVsdCIsICJQYXNzd29yZCIsICJFbmRQYXNzd29yZCIsICJTdHJpbmciLCAiRW5kU3RyaW5n IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIk1pblNpemUiLCAiTWF4U2l6ZSIs ICJFbmNvZGluZyIsICJTdXBwcmVzc0lmIiwgIkRpc2FibGVJZiIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICJIaWRkZW4iLCAiR290byIsICJGb3JtU2V0R3VpZCIsICJJbmNvbnNp c3RlbnRJZiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJXYXJuaW5nSWYiLCAi Tm9TdWJtaXRJZiIsICJFbmRJZiIsICJLZXkiLCAiRGVmYXVsdEZsYWciLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAiTWFudWZhY3R1cmluZ0ZsYWciLCAiQ2hlY2tCb3hEZWZhdWx0 RmxhZyIsDQo+ID4gIkNoZWNrQm94RGVmYXVsdE1mZ0ZsYWciLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAiSW50ZXJhY3RpdmVGbGFnIiwgIk5WQWNjZXNzRmxhZyIsICJSZXNldFJl cXVpcmVkRmxhZyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJSZWNvbm5lY3RS ZXF1aXJlZEZsYWciLCAiTGF0ZUNoZWNrRmxhZyIsICJSZWFkT25seUZsYWciLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAiT3B0aW9uT25seUZsYWciLCAiUmVzdFN0eWxlRmxhZyIs ICJDbGFzcyIsICJTdWJjbGFzcyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJD bGFzc0d1aWQiLCAiVHlwZURlZiIsICJSZXN0b3JlIiwgIlNhdmUiLCAiRGVmYXVsdHMiLA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAiQmFubmVyIiwgIkFsaWduIiwgIkxlZnQiLCAi UmlnaHQiLCAiQ2VudGVyIiwgIkxpbmUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAiTmFtZSIsICJWYXJJZCIsICJRdWVzdGlvbiIsICJRdWVzdGlvbklkIiwgIkltYWdlIiwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIkxvY2tlZCIsICJSdWxlIiwgIkVuZFJ1bGUi LCAiVmFsdWUiLCAiUmVhZCIsICJXcml0ZSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICJSZXNldEJ1dHRvbiIsICJFbmRSZXNldEJ1dHRvbiIsICJEZWZhdWx0U3RvcmUiLCAiQXR0 cmlidXRlIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIlZhcnN0b3JlIiwgIkVm aXZhcnN0b3JlIiwgIlZhclNpemUiLCAiTmFtZVZhbHVlVmFyU3RvcmUiLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAiQWN0aW9uIiwgIkNvbmZpZyIsICJFbmRBY3Rpb24iLCAiUmVm cmVzaCIsICJJbnRlcnZhbCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJWYXJz dG9yZURldmljZSIsICJHdWlkT3AiLCAiRW5kR3VpZE9wIiwgIkRhdGFUeXBlIiwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIkRhdGEiLCAiTW9kYWwiLCAiQ2xhc3NOb25EZXZpY2Ui LCAiQ2xhc3NEaXNrRGV2aWNlIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIkNs YXNzVmlkZW9EZXZpY2UiLCAiQ2xhc3NOZXR3b3JrRGV2aWNlIiwNCj4gIkNsYXNzSW5wdXREZXZp Y2UiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAiQ2xhc3NPbkJvYXJkRGV2aWNl IiwgIkNsYXNzT3RoZXJEZXZpY2UiLA0KPiA+ICJTdWJjbGFzc1NldHVwQXBwbGljYXRpb24iLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAiU3ViY2xhc3NHZW5lcmFsQXBwbGljYXRp b24iLCAiU3ViY2xhc3NGcm9udFBhZ2UiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAiU3ViY2xhc3NTaW5nbGVVc2UiLCAiWWVhclN1cHBwcmVzc0ZsYWciLA0KPiA+ICJNb250aFN1 cHByZXNzRmxhZyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJEYXlTdXBwcmVz c0ZsYWciLCAiSG91clN1cHBwcmVzc0ZsYWciLA0KPiAiTWludXRlU3VwcHJlc3NGbGFnIiwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIlNlY29uZFN1cHByZXNzRmxhZyIsICJTdG9y YWdlTm9ybWFsRmxhZyIsDQo+ICJTdG9yYWdlVGltZUZsYWciLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAiU3RvcmFnZVdha2VVcEZsYWciLCAiVW5pUXVlRmxhZyIsICJOb0VtcHR5 RmxhZyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJDb25kIiwgIkZpbmQiLCAi TWlkIiwgIlRvayIsICJTcGFuIiwgIkR1cCIsICJWYXJFcVZhbCIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICJWYXIiLCAiSWRFcVZhbCIsICJJZEVxSWQiLCAiSWRFcVZhbExpc3Qi LCAiUXVlc3Rpb25SZWYiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAiUnVsZVJl ZiIsICJTdHJpbmdSZWYiLCAiUHVzaFRoaXMiLCAiU2VjdXJpdHkiLCAiR2V0IiwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIlRydWVTeW1ib2wiLCAiRmFsc2VTeW1ib2wiLCAiT25l IiwgIk9uZXMiLCAiWmVybyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJVbmRl ZmluZWQiLCAiVmVyc2lvbiIsICJMZW5ndGgiLCAiQU5EIiwgIk9SIiwgIk5PVCIsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICJTZXQiLCAiQml0V2lzZU5vdCIsICJCb29sVmFsIiwg IlN0cmluZ1ZhbCIsICJVbkludFZhbCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICJUb1VwcGVyIiwgIlRvTG93ZXIiLCAiTWF0Y2giLCAiTWF0Y2gyIiwgIkNhdGVuYXRlIiwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIlF1ZXN0aW9uUmVmVmFsIiwgIlN0cmluZ1Jl ZlZhbCIsICJNYXAiLCAiUmVmcmVzaEd1aWQiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAiU3RyaW5nVG9rZW4iLCAiT3B0aW9uRGVmYXVsdCIsICJPcHRpb25EZWZhdWx0TWZnIiwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIk51bWVyaWNTaXplT25lIiwgIk51bWVy aWNTaXplVHdvIiwgIk51bWVyaWNTaXplRm91ciIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICJOdW1lcmljU2l6ZUVpZ2h0IiwgIkRpc1BsYXlJbnREZWMiLCAiRGlzUGxheVVJbnRE ZWMiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAiRGlzUGxheVVJbnRIZXgiLCAi SW5zZW5zaXRpdmUiLCAiU2Vuc2l0aXZlIiwgIkxhc3ROb25NYXRjaCIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICJGaXJzdE5vbk1hdGNoIiwgIk51bWJlciIsICJTdHJpbmdJZGVu dGlmaWVyIiwNCj4gPiAiQ29tcGxleERlZmluZSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICJMaW5lRGVmaW5pdGlvbiIsICJJbmNsdWRlRGVmaW5pdGlvbiIsICJXaGl0ZXNwYWNl IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIk5ld2xpbmUiLCAiTGluZUNvbW1l bnQiLCAiRXh0ZXJuIiBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyUHJvZ3Jh bSA9IDANCj4gPg0KPiA+ICsgICAgUlVMRV9wcmFnbWFQYWNrU2hvd0RlZiA9IDENCj4gPg0KPiA+ ICsgICAgUlVMRV9wcmFnbWFQYWNrU3RhY2tEZWYgPSAyDQo+ID4NCj4gPiArICAgIFJVTEVfcHJh Z21hUGFja051bWJlciA9IDMNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJQcmFnbWFQYWNrRGVmaW5p dGlvbiA9IDQNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJEYXRhU3RydWN0RGVmaW5pdGlvbiA9IDUN Cj4gPg0KPiA+ICsgICAgUlVMRV92ZnJEYXRhVW5pb25EZWZpbml0aW9uID0gNg0KPiA+DQo+ID4g KyAgICBSVUxFX3ZmckRhdGFTdHJ1Y3RGaWVsZHMgPSA3DQo+ID4NCj4gPiArICAgIFJVTEVfZGF0 YVN0cnVjdEZpZWxkNjQgPSA4DQo+ID4NCj4gPiArICAgIFJVTEVfZGF0YVN0cnVjdEZpZWxkMzIg PSA5DQo+ID4NCj4gPiArICAgIFJVTEVfZGF0YVN0cnVjdEZpZWxkMTYgPSAxMA0KPiA+DQo+ID4g KyAgICBSVUxFX2RhdGFTdHJ1Y3RGaWVsZDggPSAxMQ0KPiA+DQo+ID4gKyAgICBSVUxFX2RhdGFT dHJ1Y3RGaWVsZEJvb2wgPSAxMg0KPiA+DQo+ID4gKyAgICBSVUxFX2RhdGFTdHJ1Y3RGaWVsZFN0 cmluZyA9IDEzDQo+ID4NCj4gPiArICAgIFJVTEVfZGF0YVN0cnVjdEZpZWxkRGF0ZSA9IDE0DQo+ ID4NCj4gPiArICAgIFJVTEVfZGF0YVN0cnVjdEZpZWxkVGltZSA9IDE1DQo+ID4NCj4gPiArICAg IFJVTEVfZGF0YVN0cnVjdEZpZWxkUmVmID0gMTYNCj4gPg0KPiA+ICsgICAgUlVMRV9kYXRhU3Ry dWN0RmllbGRVc2VyID0gMTcNCj4gPg0KPiA+ICsgICAgUlVMRV9kYXRhU3RydWN0Qml0RmllbGQ2 NCA9IDE4DQo+ID4NCj4gPiArICAgIFJVTEVfZGF0YVN0cnVjdEJpdEZpZWxkMzIgPSAxOQ0KPiA+ DQo+ID4gKyAgICBSVUxFX2RhdGFTdHJ1Y3RCaXRGaWVsZDE2ID0gMjANCj4gPg0KPiA+ICsgICAg UlVMRV9kYXRhU3RydWN0Qml0RmllbGQ4ID0gMjENCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJGb3Jt U2V0RGVmaW5pdGlvbiA9IDIyDQo+ID4NCj4gPiArICAgIFJVTEVfY2xhc3NndWlkRGVmaW5pdGlv biA9IDIzDQo+ID4NCj4gPiArICAgIFJVTEVfY2xhc3NEZWZpbml0aW9uID0gMjQNCj4gPg0KPiA+ ICsgICAgUlVMRV92YWxpZENsYXNzTmFtZXMgPSAyNQ0KPiA+DQo+ID4gKyAgICBSVUxFX3N1YmNs YXNzRGVmaW5pdGlvbiA9IDI2DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyRm9ybVNldExpc3QgPSAy Nw0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmckZvcm1TZXQgPSAyOA0KPiA+DQo+ID4gKyAgICBSVUxF X3ZmclN0YXRlbWVudERlZmF1bHRTdG9yZSA9IDI5DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3Rh dGVtZW50VmFyU3RvcmVMaW5lYXIgPSAzMA0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVu dFZhclN0b3JlRWZpID0gMzENCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJWYXJTdG9yZUVmaUF0dHIg PSAzMg0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFZhclN0b3JlTmFtZVZhbHVlID0g MzMNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0ID0gMzQN Cj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldCA9IDM1DQo+ ID4NCj4gPiArICAgIFJVTEVfZ3VpZFN1YkRlZmluaXRpb24gPSAzNg0KPiA+DQo+ID4gKyAgICBS VUxFX2d1aWREZWZpbml0aW9uID0gMzcNCj4gPg0KPiA+ICsgICAgUlVMRV9nZXRTdHJpbmdJZCA9 IDM4DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyUXVlc3Rpb25IZWFkZXIgPSAzOQ0KPiA+DQo+ID4g KyAgICBSVUxFX3ZmclF1ZXN0aW9uQmFzZUluZm8gPSA0MA0KPiA+DQo+ID4gKyAgICBSVUxFX3Zm clN0YXRlbWVudEhlYWRlciA9IDQxDQo+ID4NCj4gPiArICAgIFJVTEVfcXVlc3Rpb25oZWFkZXJG bGFnc0ZpZWxkID0gNDINCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdG9yYWdlVmFySWQgPSA0Mw0K PiA+DQo+ID4gKyAgICBSVUxFX3ZmckNvbnN0YW50VmFsdWVGaWVsZCA9IDQ0DQo+ID4NCj4gPiAr ICAgIFJVTEVfdmZySW1hZ2VUYWcgPSA0NQ0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmckxvY2tlZFRh ZyA9IDQ2DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50U3RhdFRhZyA9IDQ3DQo+ID4N Cj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50U3RhdFRhZ0xpc3QgPSA0OA0KPiA+DQo+ID4gKyAg ICBSVUxFX3ZmckZvcm1EZWZpbml0aW9uID0gNDkNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJGb3Jt ID0gNTANCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJGb3JtTWFwRGVmaW5pdGlvbiA9IDUxDQo+ID4N Cj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50SW1hZ2UgPSA1Mg0KPiA+DQo+ID4gKyAgICBSVUxF X3ZmclN0YXRlbWVudExvY2tlZCA9IDUzDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50 UnVsZXMgPSA1NA0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFN0YXQgPSA1NQ0KPiA+ DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFN1YlRpdGxlID0gNTYNCj4gPg0KPiA+ICsgICAg UlVMRV92ZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudCA9IDU3DQo+ID4NCj4gPiArICAgIFJV TEVfdmZyU3VidGl0bGVGbGFncyA9IDU4DQo+ID4NCj4gPiArICAgIFJVTEVfc3VidGl0bGVGbGFn c0ZpZWxkID0gNTkNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRTdGF0aWNUZXh0ID0g NjANCj4gPg0KPiA+ICsgICAgUlVMRV9zdGF0aWNUZXh0RmxhZ3NGaWVsZCA9IDYxDQo+ID4NCj4g PiArICAgIFJVTEVfdmZyU3RhdGVtZW50Q3Jvc3NSZWZlcmVuY2UgPSA2Mg0KPiA+DQo+ID4gKyAg ICBSVUxFX3ZmclN0YXRlbWVudEdvdG8gPSA2Mw0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmckdvdG9G bGFncyA9IDY0DQo+ID4NCj4gPiArICAgIFJVTEVfZ290b0ZsYWdzRmllbGQgPSA2NQ0KPiA+DQo+ ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFJlc2V0QnV0dG9uID0gNjYNCj4gPg0KPiA+ICsgICAg UlVMRV92ZnJTdGF0ZW1lbnRRdWVzdGlvbnMgPSA2Nw0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0 YXRlbWVudFF1ZXN0aW9uVGFnID0gNjgNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRJ bmNvbnNpc3RlbnRJZiA9IDY5DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50Tm9TdWJt aXRJZiA9IDcwDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3Qg PSA3MQ0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFJlZnJlc2ggPSA3Mg0KPiA+DQo+ ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlID0gNzMNCj4gPg0KPiA+ICsg ICAgUlVMRV92ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQgPSA3NA0KPiA+DQo+ID4gKyAgICBSVUxF X3ZmclN0YXRlbWVudFdhcm5pbmdJZiA9IDc1DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVt ZW50UXVlc3Rpb25UYWdMaXN0ID0gNzYNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRR dWVzdGlvbk9wdGlvblRhZyA9IDc3DQo+ID4NCj4gPiArICAgIFJVTEVfZmxhZ3NGaWVsZCA9IDc4 DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0ID0gNzkNCj4g Pg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRHcmF5T3V0SWZRdWVzdCA9IDgwDQo+ID4NCj4g PiArICAgIFJVTEVfdmZyU3RhdGVtZW50RGVmYXVsdCA9IDgxDQo+ID4NCj4gPiArICAgIFJVTEVf dmZyU3RhdGVtZW50VmFsdWUgPSA4Mg0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudE9w dGlvbnMgPSA4Mw0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudE9uZU9mT3B0aW9uID0g ODQNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJPbmVPZk9wdGlvbkZsYWdzID0gODUNCj4gPg0KPiA+ ICsgICAgUlVMRV9vbmVvZm9wdGlvbkZsYWdzRmllbGQgPSA4Ng0KPiA+DQo+ID4gKyAgICBSVUxF X3ZmclN0YXRlbWVudFJlYWQgPSA4Nw0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFdy aXRlID0gODgNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxp c3QgPSA4OQ0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uID0g OTANCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZSA9IDkxDQo+ID4N Cj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50Q2hlY2tCb3ggPSA5Mg0KPiA+DQo+ID4gKyAgICBS VUxFX3ZmckNoZWNrQm94RmxhZ3MgPSA5Mw0KPiA+DQo+ID4gKyAgICBSVUxFX2NoZWNrYm94Rmxh Z3NGaWVsZCA9IDk0DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50QWN0aW9uID0gOTUN Cj4gPg0KPiA+ICsgICAgUlVMRV92ZnJBY3Rpb25GbGFncyA9IDk2DQo+ID4NCj4gPiArICAgIFJV TEVfYWN0aW9uRmxhZ3NGaWVsZCA9IDk3DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50 TnVtZXJpY1R5cGUgPSA5OA0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudE51bWVyaWMg PSA5OQ0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclNldE1pbk1heFN0ZXAgPSAxMDANCj4gPg0KPiA+ ICsgICAgUlVMRV92ZnJOdW1lcmljRmxhZ3MgPSAxMDENCj4gPg0KPiA+ICsgICAgUlVMRV9udW1l cmljRmxhZ3NGaWVsZCA9IDEwMg0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudE9uZU9m ID0gMTAzDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyT25lb2ZGbGFnc0ZpZWxkID0gMTA0DQo+ID4N Cj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50U3RyaW5nVHlwZSA9IDEwNQ0KPiA+DQo+ID4gKyAg ICBSVUxFX3ZmclN0YXRlbWVudFN0cmluZyA9IDEwNg0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0 cmluZ0ZsYWdzRmllbGQgPSAxMDcNCj4gPg0KPiA+ICsgICAgUlVMRV9zdHJpbmdGbGFnc0ZpZWxk ID0gMTA4DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50UGFzc3dvcmQgPSAxMDkNCj4g Pg0KPiA+ICsgICAgUlVMRV92ZnJQYXNzd29yZEZsYWdzRmllbGQgPSAxMTANCj4gPg0KPiA+ICsg ICAgUlVMRV9wYXNzd29yZEZsYWdzRmllbGQgPSAxMTENCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJT dGF0ZW1lbnRPcmRlcmVkTGlzdCA9IDExMg0KPiA+DQo+ID4gKyAgICBSVUxFX3Zmck9yZGVyZWRM aXN0RmxhZ3MgPSAxMTMNCj4gPg0KPiA+ICsgICAgUlVMRV9vcmRlcmVkbGlzdEZsYWdzRmllbGQg PSAxMTQNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnREYXRlID0gMTE1DQo+ID4NCj4g PiArICAgIFJVTEVfbWluTWF4RGF0ZVN0ZXBEZWZhdWx0ID0gMTE2DQo+ID4NCj4gPiArICAgIFJV TEVfdmZyRGF0ZUZsYWdzID0gMTE3DQo+ID4NCj4gPiArICAgIFJVTEVfZGF0ZUZsYWdzRmllbGQg PSAxMTgNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRUaW1lID0gMTE5DQo+ID4NCj4g PiArICAgIFJVTEVfbWluTWF4VGltZVN0ZXBEZWZhdWx0ID0gMTIwDQo+ID4NCj4gPiArICAgIFJV TEVfdmZyVGltZUZsYWdzID0gMTIxDQo+ID4NCj4gPiArICAgIFJVTEVfdGltZUZsYWdzRmllbGQg PSAxMjINCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRDb25kaXRpb25hbCA9IDEyMw0K PiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudENvbmRpdGlvbmFsTmV3ID0gMTI0DQo+ID4N Cj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXQgPSAxMjUNCj4gPg0KPiA+ ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0ID0gMTI2DQo+ID4NCj4gPiArICAg IFJVTEVfdmZyU3RhdGVtZW50U3RhdExpc3QgPSAxMjcNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJT dGF0ZW1lbnRTdGF0TGlzdE9sZCA9IDEyOA0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVu dERpc2FibGVJZlN0YXQgPSAxMjkNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRncmF5 b3V0SWZTdXBwcmVzc0lmID0gMTMwDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50c3Vw cHJlc3NJZkdyYXlPdXRJZiA9IDEzMQ0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFN1 cHByZXNzSWZTdGF0TmV3ID0gMTMyDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50R3Jh eU91dElmU3RhdE5ldyA9IDEzMw0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudEluY29u c2lzdGVudElmU3RhdCA9IDEzNA0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudEludmFs aWQgPSAxMzUNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuID0g MTM2DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50SW52YWxpZEludmVudG9yeSA9IDEz Nw0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1 bHRzID0gMTM4DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50TGFiZWwgPSAxMzkNCj4g Pg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRCYW5uZXIgPSAxNDANCj4gPg0KPiA+ICsgICAg UlVMRV92ZnJTdGF0ZW1lbnRFeHRlbnNpb24gPSAxNDENCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJF eHRlbnNpb25EYXRhID0gMTQyDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50TW9kYWwg PSAxNDMNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJNb2RhbFRhZyA9IDE0NA0KPiA+DQo+ID4gKyAg ICBSVUxFX3ZmclN0YXRlbWVudEV4cHJlc3Npb24gPSAxNDUNCj4gPg0KPiA+ICsgICAgUlVMRV92 ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViID0gMTQ2DQo+ID4NCj4gPiArICAgIFJVTEVfYW5kVGVy bSA9IDE0Nw0KPiA+DQo+ID4gKyAgICBSVUxFX2JpdHdpc2VvclRlcm0gPSAxNDgNCj4gPg0KPiA+ ICsgICAgUlVMRV9iaXR3aXNlYW5kVGVybSA9IDE0OQ0KPiA+DQo+ID4gKyAgICBSVUxFX2VxdWFs VGVybSA9IDE1MA0KPiA+DQo+ID4gKyAgICBSVUxFX2VxdWFsVGVybVN1cHBsZW1lbnRhcnkgPSAx NTENCj4gPg0KPiA+ICsgICAgUlVMRV9jb21wYXJlVGVybSA9IDE1Mg0KPiA+DQo+ID4gKyAgICBS VUxFX2NvbXBhcmVUZXJtU3VwcGxlbWVudGFyeSA9IDE1Mw0KPiA+DQo+ID4gKyAgICBSVUxFX3No aWZ0VGVybSA9IDE1NA0KPiA+DQo+ID4gKyAgICBSVUxFX3NoaWZ0VGVybVN1cHBsZW1lbnRhcnkg PSAxNTUNCj4gPg0KPiA+ICsgICAgUlVMRV9hZGRNaW51c1Rlcm0gPSAxNTYNCj4gPg0KPiA+ICsg ICAgUlVMRV9hZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5ID0gMTU3DQo+ID4NCj4gPiArICAgIFJV TEVfbXVsdGRpdm1vZFRlcm0gPSAxNTgNCj4gPg0KPiA+ICsgICAgUlVMRV9tdWx0ZGl2bW9kVGVy bVN1cHBsZW1lbnRhcnkgPSAxNTkNCj4gPg0KPiA+ICsgICAgUlVMRV9jYXN0VGVybSA9IDE2MA0K PiA+DQo+ID4gKyAgICBSVUxFX2F0b21UZXJtID0gMTYxDQo+ID4NCj4gPiArICAgIFJVTEVfdmZy RXhwcmVzc2lvbkNhdGVuYXRlID0gMTYyDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyRXhwcmVzc2lv bk1hdGNoID0gMTYzDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyRXhwcmVzc2lvbk1hdGNoMiA9IDE2 NA0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmckV4cHJlc3Npb25QYXJlbiA9IDE2NQ0KPiA+DQo+ID4g KyAgICBSVUxFX3ZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb24gPSAxNjYNCj4gPg0KPiA+ICsg ICAgUlVMRV9kdXBFeHAgPSAxNjcNCj4gPg0KPiA+ICsgICAgUlVMRV92YXJlcXZhbEV4cCA9IDE2 OA0KPiA+DQo+ID4gKyAgICBSVUxFX2lkZXF2YWxFeHAgPSAxNjkNCj4gPg0KPiA+ICsgICAgUlVM RV9pZGVxaWRFeHAgPSAxNzANCj4gPg0KPiA+ICsgICAgUlVMRV9pZGVxdmFsbGlzdEV4cCA9IDE3 MQ0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSA9IDE3Mg0KPiA+ DQo+ID4gKyAgICBSVUxFX2FycmF5TmFtZSA9IDE3Mw0KPiA+DQo+ID4gKyAgICBSVUxFX3F1ZXN0 aW9ucmVmMUV4cCA9IDE3NA0KPiA+DQo+ID4gKyAgICBSVUxFX3J1bGVyZWZFeHAgPSAxNzUNCj4g Pg0KPiA+ICsgICAgUlVMRV9zdHJpbmdyZWYxRXhwID0gMTc2DQo+ID4NCj4gPiArICAgIFJVTEVf cHVzaHRoaXNFeHAgPSAxNzcNCj4gPg0KPiA+ICsgICAgUlVMRV9zZWN1cml0eUV4cCA9IDE3OA0K PiA+DQo+ID4gKyAgICBSVUxFX251bWVyaWNWYXJTdG9yZVR5cGUgPSAxNzkNCj4gPg0KPiA+ICsg ICAgUlVMRV9nZXRFeHAgPSAxODANCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJFeHByZXNzaW9uQ29u c3RhbnQgPSAxODENCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJFeHByZXNzaW9uVW5hcnlPcCA9IDE4 Mg0KPiA+DQo+ID4gKyAgICBSVUxFX2xlbmd0aEV4cCA9IDE4Mw0KPiA+DQo+ID4gKyAgICBSVUxF X2JpdHdpc2Vub3RFeHAgPSAxODQNCj4gPg0KPiA+ICsgICAgUlVMRV9xdWVzdGlvbjIzcmVmRXhw ID0gMTg1DQo+ID4NCj4gPiArICAgIFJVTEVfc3RyaW5ncmVmMkV4cCA9IDE4Ng0KPiA+DQo+ID4g KyAgICBSVUxFX3RvYm9vbEV4cCA9IDE4Nw0KPiA+DQo+ID4gKyAgICBSVUxFX3Rvc3RyaW5nRXhw ID0gMTg4DQo+ID4NCj4gPiArICAgIFJVTEVfdW5pbnRFeHAgPSAxODkNCj4gPg0KPiA+ICsgICAg UlVMRV90b3VwcGVyRXhwID0gMTkwDQo+ID4NCj4gPiArICAgIFJVTEVfdG9sd2VyRXhwID0gMTkx DQo+ID4NCj4gPiArICAgIFJVTEVfc2V0RXhwID0gMTkyDQo+ID4NCj4gPiArICAgIFJVTEVfdmZy RXhwcmVzc2lvblRlcm5hcnlPcCA9IDE5Mw0KPiA+DQo+ID4gKyAgICBSVUxFX2NvbmRpdGlvbmFs RXhwID0gMTk0DQo+ID4NCj4gPiArICAgIFJVTEVfZmluZEV4cCA9IDE5NQ0KPiA+DQo+ID4gKyAg ICBSVUxFX2ZpbmRGb3JtYXQgPSAxOTYNCj4gPg0KPiA+ICsgICAgUlVMRV9taWRFeHAgPSAxOTcN Cj4gPg0KPiA+ICsgICAgUlVMRV90b2tlbkV4cCA9IDE5OA0KPiA+DQo+ID4gKyAgICBSVUxFX3Nw YW5FeHAgPSAxOTkNCj4gPg0KPiA+ICsgICAgUlVMRV9zcGFuRmxhZ3MgPSAyMDANCj4gPg0KPiA+ ICsgICAgUlVMRV92ZnJFeHByZXNzaW9uTWFwID0gMjAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIHJ1bGVOYW1lcyA9ICBbICJ2ZnJQcm9ncmFtIiwgInByYWdtYVBhY2tTaG93RGVmIiwNCj4g PiAicHJhZ21hUGFja1N0YWNrRGVmIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgInBy YWdtYVBhY2tOdW1iZXIiLCAidmZyUHJhZ21hUGFja0RlZmluaXRpb24iLA0KPiA+ICJ2ZnJEYXRh U3RydWN0RGVmaW5pdGlvbiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJEYXRh VW5pb25EZWZpbml0aW9uIiwgInZmckRhdGFTdHJ1Y3RGaWVsZHMiLA0KPiA+ICJkYXRhU3RydWN0 RmllbGQ2NCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJkYXRhU3RydWN0RmllbGQz MiIsICJkYXRhU3RydWN0RmllbGQxNiIsICJkYXRhU3RydWN0RmllbGQ4IiwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgImRhdGFTdHJ1Y3RGaWVsZEJvb2wiLCAiZGF0YVN0cnVjdEZpZWxk U3RyaW5nIiwNCj4gPiAiZGF0YVN0cnVjdEZpZWxkRGF0ZSIsDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICJkYXRhU3RydWN0RmllbGRUaW1lIiwgImRhdGFTdHJ1Y3RGaWVsZFJlZiIsDQo+ ID4gImRhdGFTdHJ1Y3RGaWVsZFVzZXIiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAi ZGF0YVN0cnVjdEJpdEZpZWxkNjQiLCAiZGF0YVN0cnVjdEJpdEZpZWxkMzIiLA0KPiA+ICJkYXRh U3RydWN0Qml0RmllbGQxNiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJkYXRhU3Ry dWN0Qml0RmllbGQ4IiwgInZmckZvcm1TZXREZWZpbml0aW9uIiwNCj4gPiAiY2xhc3NndWlkRGVm aW5pdGlvbiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJjbGFzc0RlZmluaXRpb24i LCAidmFsaWRDbGFzc05hbWVzIiwgInN1YmNsYXNzRGVmaW5pdGlvbiIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICJ2ZnJGb3JtU2V0TGlzdCIsICJ2ZnJGb3JtU2V0IiwgInZmclN0YXRl bWVudERlZmF1bHRTdG9yZSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0 ZW1lbnRWYXJTdG9yZUxpbmVhciIsICJ2ZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaSIsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICJ2ZnJWYXJTdG9yZUVmaUF0dHIiLCAidmZyU3RhdGVtZW50 VmFyU3RvcmVOYW1lVmFsdWUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAidmZyU3Rh dGVtZW50RGlzYWJsZUlmRm9ybVNldCIsDQo+ID4gInZmclN0YXRlbWVudFN1cHByZXNzSWZGb3Jt U2V0IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgImd1aWRTdWJEZWZpbml0aW9uIiwg Imd1aWREZWZpbml0aW9uIiwgImdldFN0cmluZ0lkIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgInZmclF1ZXN0aW9uSGVhZGVyIiwgInZmclF1ZXN0aW9uQmFzZUluZm8iLA0KPiA+ICJ2 ZnJTdGF0ZW1lbnRIZWFkZXIiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAicXVlc3Rp b25oZWFkZXJGbGFnc0ZpZWxkIiwgInZmclN0b3JhZ2VWYXJJZCIsDQo+ID4gInZmckNvbnN0YW50 VmFsdWVGaWVsZCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJJbWFnZVRhZyIs ICJ2ZnJMb2NrZWRUYWciLCAidmZyU3RhdGVtZW50U3RhdFRhZyIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdCIsICJ2ZnJGb3JtRGVmaW5pdGlv biIsICJ2ZnJGb3JtIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgInZmckZvcm1NYXBE ZWZpbml0aW9uIiwgInZmclN0YXRlbWVudEltYWdlIiwNCj4gPiAidmZyU3RhdGVtZW50TG9ja2Vk IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVudFJ1bGVzIiwgInZm clN0YXRlbWVudFN0YXQiLA0KPiAidmZyU3RhdGVtZW50U3ViVGl0bGUiLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQiLCAidmZyU3Vi dGl0bGVGbGFncyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJzdWJ0aXRsZUZsYWdz RmllbGQiLCAidmZyU3RhdGVtZW50U3RhdGljVGV4dCIsDQo+ID4gInN0YXRpY1RleHRGbGFnc0Zp ZWxkIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVudENyb3NzUmVm ZXJlbmNlIiwgInZmclN0YXRlbWVudEdvdG8iLA0KPiA+ICJ2ZnJHb3RvRmxhZ3MiLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAiZ290b0ZsYWdzRmllbGQiLCAidmZyU3RhdGVtZW50UmVz ZXRCdXR0b24iLA0KPiA+ICJ2ZnJTdGF0ZW1lbnRRdWVzdGlvbnMiLA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAidmZyU3RhdGVtZW50UXVlc3Rpb25UYWciLCAidmZyU3RhdGVtZW50SW5j b25zaXN0ZW50SWYiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50 Tm9TdWJtaXRJZiIsICJ2ZnJTdGF0ZW1lbnREaXNhYmxlSWZRdWVzdCIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRSZWZyZXNoIiwgInZmclN0YXRlbWVudFZhcnN0 b3JlRGV2aWNlIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVudFJl ZnJlc2hFdmVudCIsICJ2ZnJTdGF0ZW1lbnRXYXJuaW5nSWYiLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAidmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0IiwNCj4gPiAidmZyU3RhdGVt ZW50UXVlc3Rpb25PcHRpb25UYWciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAiZmxh Z3NGaWVsZCIsICJ2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3QiLA0KPiA+ICJ2ZnJTdGF0ZW1l bnRHcmF5T3V0SWZRdWVzdCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0 ZW1lbnREZWZhdWx0IiwgInZmclN0YXRlbWVudFZhbHVlIiwNCj4gPiAidmZyU3RhdGVtZW50T3B0 aW9ucyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRPbmVPZk9w dGlvbiIsICJ2ZnJPbmVPZk9wdGlvbkZsYWdzIiwNCj4gPiAib25lb2ZvcHRpb25GbGFnc0ZpZWxk IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVudFJlYWQiLCAidmZy U3RhdGVtZW50V3JpdGUiLA0KPiA+ICJ2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QiLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb24i LCAidmZyU3RhdGVtZW50Qm9vbGVhblR5cGUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAidmZyU3RhdGVtZW50Q2hlY2tCb3giLCAidmZyQ2hlY2tCb3hGbGFncyIsDQo+ID4gImNoZWNr Ym94RmxhZ3NGaWVsZCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1l bnRBY3Rpb24iLCAidmZyQWN0aW9uRmxhZ3MiLCAiYWN0aW9uRmxhZ3NGaWVsZCIsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnROdW1lcmljVHlwZSIsICJ2ZnJTdGF0 ZW1lbnROdW1lcmljIiwNCj4gPiAidmZyU2V0TWluTWF4U3RlcCIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICJ2ZnJOdW1lcmljRmxhZ3MiLCAibnVtZXJpY0ZsYWdzRmllbGQiLCAidmZy U3RhdGVtZW50T25lT2YiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAidmZyT25lb2ZG bGFnc0ZpZWxkIiwgInZmclN0YXRlbWVudFN0cmluZ1R5cGUiLA0KPiA+ICJ2ZnJTdGF0ZW1lbnRT dHJpbmciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RyaW5nRmxhZ3NGaWVs ZCIsICJzdHJpbmdGbGFnc0ZpZWxkIiwNCj4gInZmclN0YXRlbWVudFBhc3N3b3JkIiwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgInZmclBhc3N3b3JkRmxhZ3NGaWVsZCIsICJwYXNzd29y ZEZsYWdzRmllbGQiLA0KPiA+ICJ2ZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdCIsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICJ2ZnJPcmRlcmVkTGlzdEZsYWdzIiwgIm9yZGVyZWRsaXN0Rmxh Z3NGaWVsZCIsDQo+ID4gInZmclN0YXRlbWVudERhdGUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAibWluTWF4RGF0ZVN0ZXBEZWZhdWx0IiwgInZmckRhdGVGbGFncyIsICJkYXRlRmxh Z3NGaWVsZCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRUaW1l IiwgIm1pbk1heFRpbWVTdGVwRGVmYXVsdCIsICJ2ZnJUaW1lRmxhZ3MiLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAidGltZUZsYWdzRmllbGQiLCAidmZyU3RhdGVtZW50Q29uZGl0aW9u YWwiLA0KPiA+ICJ2ZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ldyIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdCIsICJ2ZnJTdGF0ZW1lbnRH cmF5T3V0SWZTdGF0IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVu dFN0YXRMaXN0IiwgInZmclN0YXRlbWVudFN0YXRMaXN0T2xkIiwNCj4gPiAidmZyU3RhdGVtZW50 RGlzYWJsZUlmU3RhdCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1l bnRncmF5b3V0SWZTdXBwcmVzc0lmIiwNCj4gPiAidmZyU3RhdGVtZW50c3VwcHJlc3NJZkdyYXlP dXRJZiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRTdXBwcmVz c0lmU3RhdE5ldyIsDQo+ID4gInZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXciLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0Iiwg InZmclN0YXRlbWVudEludmFsaWQiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAidmZy U3RhdGVtZW50SW52YWxpZEhpZGRlbiIsICJ2ZnJTdGF0ZW1lbnRJbnZhbGlkSW52ZW50b3J5IiwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVudEludmFsaWRTYXZlUmVz dG9yZURlZmF1bHRzIiwNCj4gInZmclN0YXRlbWVudExhYmVsIiwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgInZmclN0YXRlbWVudEJhbm5lciIsICJ2ZnJTdGF0ZW1lbnRFeHRlbnNpb24i LA0KPiA+ICJ2ZnJFeHRlbnNpb25EYXRhIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg InZmclN0YXRlbWVudE1vZGFsIiwgInZmck1vZGFsVGFnIiwNCj4gInZmclN0YXRlbWVudEV4cHJl c3Npb24iLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50RXhwcmVz c2lvblN1YiIsICJhbmRUZXJtIiwgImJpdHdpc2VvclRlcm0iLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAiYml0d2lzZWFuZFRlcm0iLCAiZXF1YWxUZXJtIiwgImVxdWFsVGVybVN1cHBs ZW1lbnRhcnkiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAiY29tcGFyZVRlcm0iLCAi Y29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5IiwgInNoaWZ0VGVybSIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICJzaGlmdFRlcm1TdXBwbGVtZW50YXJ5IiwgImFkZE1pbnVzVGVybSIsDQo+ ID4gImFkZE1pbnVzVGVybVN1cHBsZW1lbnRhcnkiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAibXVsdGRpdm1vZFRlcm0iLCAibXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5IiwNCj4g PiAiY2FzdFRlcm0iLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAiYXRvbVRlcm0iLCAi dmZyRXhwcmVzc2lvbkNhdGVuYXRlIiwgInZmckV4cHJlc3Npb25NYXRjaCIsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICJ2ZnJFeHByZXNzaW9uTWF0Y2gyIiwgInZmckV4cHJlc3Npb25Q YXJlbiIsDQo+ID4gInZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb24iLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAiZHVwRXhwIiwgInZhcmVxdmFsRXhwIiwgImlkZXF2YWxFeHAiLCAi aWRlcWlkRXhwIiwNCj4gPiAiaWRlcXZhbGxpc3RFeHAiLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAidmZyUXVlc3Rpb25EYXRhRmllbGROYW1lIiwgImFycmF5TmFtZSIsICJxdWVzdGlv bnJlZjFFeHAiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAicnVsZXJlZkV4cCIsICJz dHJpbmdyZWYxRXhwIiwgInB1c2h0aGlzRXhwIiwgInNlY3VyaXR5RXhwIiwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIm51bWVyaWNWYXJTdG9yZVR5cGUiLCAiZ2V0RXhwIiwgInZmckV4 cHJlc3Npb25Db25zdGFudCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJFeHBy ZXNzaW9uVW5hcnlPcCIsICJsZW5ndGhFeHAiLCAiYml0d2lzZW5vdEV4cCIsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICJxdWVzdGlvbjIzcmVmRXhwIiwgInN0cmluZ3JlZjJFeHAiLCAi dG9ib29sRXhwIiwgInRvc3RyaW5nRXhwIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg InVuaW50RXhwIiwgInRvdXBwZXJFeHAiLCAidG9sd2VyRXhwIiwgInNldEV4cCIsDQo+ID4gInZm ckV4cHJlc3Npb25UZXJuYXJ5T3AiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAiY29u ZGl0aW9uYWxFeHAiLCAiZmluZEV4cCIsICJmaW5kRm9ybWF0IiwgIm1pZEV4cCIsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICJ0b2tlbkV4cCIsICJzcGFuRXhwIiwgInNwYW5GbGFncyIs ICJ2ZnJFeHByZXNzaW9uTWFwIiBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIEVPRiA9IFRv a2VuLkVPRg0KPiA+DQo+ID4gKyAgICBUX18wPTENCj4gPg0KPiA+ICsgICAgVF9fMT0yDQo+ID4N Cj4gPiArICAgIFRfXzI9Mw0KPiA+DQo+ID4gKyAgICBUX18zPTQNCj4gPg0KPiA+ICsgICAgVF9f ND01DQo+ID4NCj4gPiArICAgIFRfXzU9Ng0KPiA+DQo+ID4gKyAgICBUX182PTcNCj4gPg0KPiA+ ICsgICAgVF9fNz04DQo+ID4NCj4gPiArICAgIFRfXzg9OQ0KPiA+DQo+ID4gKyAgICBUX185PTEw DQo+ID4NCj4gPiArICAgIFRfXzEwPTExDQo+ID4NCj4gPiArICAgIFRfXzExPTEyDQo+ID4NCj4g PiArICAgIFRfXzEyPTEzDQo+ID4NCj4gPiArICAgIFRfXzEzPTE0DQo+ID4NCj4gPiArICAgIFRf XzE0PTE1DQo+ID4NCj4gPiArICAgIFRfXzE1PTE2DQo+ID4NCj4gPiArICAgIERlZmluZT0xNw0K PiA+DQo+ID4gKyAgICBJbmNsdWRlPTE4DQo+ID4NCj4gPiArICAgIEZvcm1Qa2dUeXBlPTE5DQo+ ID4NCj4gPiArICAgIE9wZW5CcmFjZT0yMA0KPiA+DQo+ID4gKyAgICBDbG9zZUJyYWNlPTIxDQo+ ID4NCj4gPiArICAgIE9wZW5QYXJlbj0yMg0KPiA+DQo+ID4gKyAgICBDbG9zZVBhcmVuPTIzDQo+ ID4NCj4gPiArICAgIE9wZW5CcmFja2V0PTI0DQo+ID4NCj4gPiArICAgIENsb3NlQnJhY2tldD0y NQ0KPiA+DQo+ID4gKyAgICBEb3Q9MjYNCj4gPg0KPiA+ICsgICAgTmVnYXRpdmU9MjcNCj4gPg0K PiA+ICsgICAgQ29sb249MjgNCj4gPg0KPiA+ICsgICAgU2xhc2g9MjkNCj4gPg0KPiA+ICsgICAg U2VtaWNvbG9uPTMwDQo+ID4NCj4gPiArICAgIENvbW1hPTMxDQo+ID4NCj4gPiArICAgIEVxdWFs PTMyDQo+ID4NCj4gPiArICAgIE5vdEVxdWFsPTMzDQo+ID4NCj4gPiArICAgIExlc3NFcXVhbD0z NA0KPiA+DQo+ID4gKyAgICBMZXNzPTM1DQo+ID4NCj4gPiArICAgIEdyZWF0ZXJFcXVhbD0zNg0K PiA+DQo+ID4gKyAgICBHcmVhdGVyPTM3DQo+ID4NCj4gPiArICAgIEJpdFdpc2VPcj0zOA0KPiA+ DQo+ID4gKyAgICBCaXRXaXNlQW5kPTM5DQo+ID4NCj4gPiArICAgIERldmljZVBhdGg9NDANCj4g Pg0KPiA+ICsgICAgRm9ybVNldD00MQ0KPiA+DQo+ID4gKyAgICBGb3JtU2V0SWQ9NDINCj4gPg0K PiA+ICsgICAgRW5kRm9ybVNldD00Mw0KPiA+DQo+ID4gKyAgICBUaXRsZT00NA0KPiA+DQo+ID4g KyAgICBGb3JtSWQ9NDUNCj4gPg0KPiA+ICsgICAgT25lT2Y9NDYNCj4gPg0KPiA+ICsgICAgRW5k T25lT2Y9NDcNCj4gPg0KPiA+ICsgICAgUHJvbXB0PTQ4DQo+ID4NCj4gPiArICAgIE9yZGVyZWRM aXN0PTQ5DQo+ID4NCj4gPiArICAgIE1heENvbnRhaW5lcnM9NTANCj4gPg0KPiA+ICsgICAgRW5k TGlzdD01MQ0KPiA+DQo+ID4gKyAgICBFbmRGb3JtPTUyDQo+ID4NCj4gPiArICAgIEZvcm09NTMN Cj4gPg0KPiA+ICsgICAgRm9ybU1hcD01NA0KPiA+DQo+ID4gKyAgICBNYXBUaXRsZT01NQ0KPiA+ DQo+ID4gKyAgICBNYXBHdWlkPTU2DQo+ID4NCj4gPiArICAgIFN1YnRpdGxlPTU3DQo+ID4NCj4g PiArICAgIEVuZFN1YnRpdGxlPTU4DQo+ID4NCj4gPiArICAgIEhlbHA9NTkNCj4gPg0KPiA+ICsg ICAgVGV4dD02MA0KPiA+DQo+ID4gKyAgICBPcHRpb249NjENCj4gPg0KPiA+ICsgICAgRkxBR1M9 NjINCj4gPg0KPiA+ICsgICAgRGF0ZT02Mw0KPiA+DQo+ID4gKyAgICBFbmREYXRlPTY0DQo+ID4N Cj4gPiArICAgIFllYXI9NjUNCj4gPg0KPiA+ICsgICAgTW9udGg9NjYNCj4gPg0KPiA+ICsgICAg RGF5PTY3DQo+ID4NCj4gPiArICAgIFRpbWU9NjgNCj4gPg0KPiA+ICsgICAgRW5kVGltZT02OQ0K PiA+DQo+ID4gKyAgICBIb3VyPTcwDQo+ID4NCj4gPiArICAgIE1pbnV0ZT03MQ0KPiA+DQo+ID4g KyAgICBTZWNvbmQ9NzINCj4gPg0KPiA+ICsgICAgR3JheU91dElmPTczDQo+ID4NCj4gPiArICAg IExhYmVsPTc0DQo+ID4NCj4gPiArICAgIFRpbWVvdXQ9NzUNCj4gPg0KPiA+ICsgICAgSW52ZW50 b3J5PTc2DQo+ID4NCj4gPiArICAgIE5vbk52RGF0YU1hcD03Nw0KPiA+DQo+ID4gKyAgICBTdHJ1 Y3Q9NzgNCj4gPg0KPiA+ICsgICAgVW5pb249NzkNCj4gPg0KPiA+ICsgICAgQm9vbGVhbj04MA0K PiA+DQo+ID4gKyAgICBVaW50NjQ9ODENCj4gPg0KPiA+ICsgICAgVWludDMyPTgyDQo+ID4NCj4g PiArICAgIFVpbnQxNj04Mw0KPiA+DQo+ID4gKyAgICBVaW50OD04NA0KPiA+DQo+ID4gKyAgICBF RklfU1RSSU5HX0lEPTg1DQo+ID4NCj4gPiArICAgIEVGSV9ISUlfREFURT04Ng0KPiA+DQo+ID4g KyAgICBFRklfSElJX1RJTUU9ODcNCj4gPg0KPiA+ICsgICAgRUZJX0hJSV9SRUY9ODgNCj4gPg0K PiA+ICsgICAgVXVpZD04OQ0KPiA+DQo+ID4gKyAgICBDaGVja0JveD05MA0KPiA+DQo+ID4gKyAg ICBFbmRDaGVja0JveD05MQ0KPiA+DQo+ID4gKyAgICBOdW1lcmljPTkyDQo+ID4NCj4gPiArICAg IEVuZE51bWVyaWM9OTMNCj4gPg0KPiA+ICsgICAgTWluaW11bT05NA0KPiA+DQo+ID4gKyAgICBN YXhpbXVtPTk1DQo+ID4NCj4gPiArICAgIFN0ZXA9OTYNCj4gPg0KPiA+ICsgICAgRGVmYXVsdD05 Nw0KPiA+DQo+ID4gKyAgICBQYXNzd29yZD05OA0KPiA+DQo+ID4gKyAgICBFbmRQYXNzd29yZD05 OQ0KPiA+DQo+ID4gKyAgICBTdHJpbmc9MTAwDQo+ID4NCj4gPiArICAgIEVuZFN0cmluZz0xMDEN Cj4gPg0KPiA+ICsgICAgTWluU2l6ZT0xMDINCj4gPg0KPiA+ICsgICAgTWF4U2l6ZT0xMDMNCj4g Pg0KPiA+ICsgICAgRW5jb2Rpbmc9MTA0DQo+ID4NCj4gPiArICAgIFN1cHByZXNzSWY9MTA1DQo+ ID4NCj4gPiArICAgIERpc2FibGVJZj0xMDYNCj4gPg0KPiA+ICsgICAgSGlkZGVuPTEwNw0KPiA+ DQo+ID4gKyAgICBHb3RvPTEwOA0KPiA+DQo+ID4gKyAgICBGb3JtU2V0R3VpZD0xMDkNCj4gPg0K PiA+ICsgICAgSW5jb25zaXN0ZW50SWY9MTEwDQo+ID4NCj4gPiArICAgIFdhcm5pbmdJZj0xMTEN Cj4gPg0KPiA+ICsgICAgTm9TdWJtaXRJZj0xMTINCj4gPg0KPiA+ICsgICAgRW5kSWY9MTEzDQo+ ID4NCj4gPiArICAgIEtleT0xMTQNCj4gPg0KPiA+ICsgICAgRGVmYXVsdEZsYWc9MTE1DQo+ID4N Cj4gPiArICAgIE1hbnVmYWN0dXJpbmdGbGFnPTExNg0KPiA+DQo+ID4gKyAgICBDaGVja0JveERl ZmF1bHRGbGFnPTExNw0KPiA+DQo+ID4gKyAgICBDaGVja0JveERlZmF1bHRNZmdGbGFnPTExOA0K PiA+DQo+ID4gKyAgICBJbnRlcmFjdGl2ZUZsYWc9MTE5DQo+ID4NCj4gPiArICAgIE5WQWNjZXNz RmxhZz0xMjANCj4gPg0KPiA+ICsgICAgUmVzZXRSZXF1aXJlZEZsYWc9MTIxDQo+ID4NCj4gPiAr ICAgIFJlY29ubmVjdFJlcXVpcmVkRmxhZz0xMjINCj4gPg0KPiA+ICsgICAgTGF0ZUNoZWNrRmxh Zz0xMjMNCj4gPg0KPiA+ICsgICAgUmVhZE9ubHlGbGFnPTEyNA0KPiA+DQo+ID4gKyAgICBPcHRp b25Pbmx5RmxhZz0xMjUNCj4gPg0KPiA+ICsgICAgUmVzdFN0eWxlRmxhZz0xMjYNCj4gPg0KPiA+ ICsgICAgQ2xhc3M9MTI3DQo+ID4NCj4gPiArICAgIFN1YmNsYXNzPTEyOA0KPiA+DQo+ID4gKyAg ICBDbGFzc0d1aWQ9MTI5DQo+ID4NCj4gPiArICAgIFR5cGVEZWY9MTMwDQo+ID4NCj4gPiArICAg IFJlc3RvcmU9MTMxDQo+ID4NCj4gPiArICAgIFNhdmU9MTMyDQo+ID4NCj4gPiArICAgIERlZmF1 bHRzPTEzMw0KPiA+DQo+ID4gKyAgICBCYW5uZXI9MTM0DQo+ID4NCj4gPiArICAgIEFsaWduPTEz NQ0KPiA+DQo+ID4gKyAgICBMZWZ0PTEzNg0KPiA+DQo+ID4gKyAgICBSaWdodD0xMzcNCj4gPg0K PiA+ICsgICAgQ2VudGVyPTEzOA0KPiA+DQo+ID4gKyAgICBMaW5lPTEzOQ0KPiA+DQo+ID4gKyAg ICBOYW1lPTE0MA0KPiA+DQo+ID4gKyAgICBWYXJJZD0xNDENCj4gPg0KPiA+ICsgICAgUXVlc3Rp b249MTQyDQo+ID4NCj4gPiArICAgIFF1ZXN0aW9uSWQ9MTQzDQo+ID4NCj4gPiArICAgIEltYWdl PTE0NA0KPiA+DQo+ID4gKyAgICBMb2NrZWQ9MTQ1DQo+ID4NCj4gPiArICAgIFJ1bGU9MTQ2DQo+ ID4NCj4gPiArICAgIEVuZFJ1bGU9MTQ3DQo+ID4NCj4gPiArICAgIFZhbHVlPTE0OA0KPiA+DQo+ ID4gKyAgICBSZWFkPTE0OQ0KPiA+DQo+ID4gKyAgICBXcml0ZT0xNTANCj4gPg0KPiA+ICsgICAg UmVzZXRCdXR0b249MTUxDQo+ID4NCj4gPiArICAgIEVuZFJlc2V0QnV0dG9uPTE1Mg0KPiA+DQo+ ID4gKyAgICBEZWZhdWx0U3RvcmU9MTUzDQo+ID4NCj4gPiArICAgIEF0dHJpYnV0ZT0xNTQNCj4g Pg0KPiA+ICsgICAgVmFyc3RvcmU9MTU1DQo+ID4NCj4gPiArICAgIEVmaXZhcnN0b3JlPTE1Ng0K PiA+DQo+ID4gKyAgICBWYXJTaXplPTE1Nw0KPiA+DQo+ID4gKyAgICBOYW1lVmFsdWVWYXJTdG9y ZT0xNTgNCj4gPg0KPiA+ICsgICAgQWN0aW9uPTE1OQ0KPiA+DQo+ID4gKyAgICBDb25maWc9MTYw DQo+ID4NCj4gPiArICAgIEVuZEFjdGlvbj0xNjENCj4gPg0KPiA+ICsgICAgUmVmcmVzaD0xNjIN Cj4gPg0KPiA+ICsgICAgSW50ZXJ2YWw9MTYzDQo+ID4NCj4gPiArICAgIFZhcnN0b3JlRGV2aWNl PTE2NA0KPiA+DQo+ID4gKyAgICBHdWlkT3A9MTY1DQo+ID4NCj4gPiArICAgIEVuZEd1aWRPcD0x NjYNCj4gPg0KPiA+ICsgICAgRGF0YVR5cGU9MTY3DQo+ID4NCj4gPiArICAgIERhdGE9MTY4DQo+ ID4NCj4gPiArICAgIE1vZGFsPTE2OQ0KPiA+DQo+ID4gKyAgICBDbGFzc05vbkRldmljZT0xNzAN Cj4gPg0KPiA+ICsgICAgQ2xhc3NEaXNrRGV2aWNlPTE3MQ0KPiA+DQo+ID4gKyAgICBDbGFzc1Zp ZGVvRGV2aWNlPTE3Mg0KPiA+DQo+ID4gKyAgICBDbGFzc05ldHdvcmtEZXZpY2U9MTczDQo+ID4N Cj4gPiArICAgIENsYXNzSW5wdXREZXZpY2U9MTc0DQo+ID4NCj4gPiArICAgIENsYXNzT25Cb2Fy ZERldmljZT0xNzUNCj4gPg0KPiA+ICsgICAgQ2xhc3NPdGhlckRldmljZT0xNzYNCj4gPg0KPiA+ ICsgICAgU3ViY2xhc3NTZXR1cEFwcGxpY2F0aW9uPTE3Nw0KPiA+DQo+ID4gKyAgICBTdWJjbGFz c0dlbmVyYWxBcHBsaWNhdGlvbj0xNzgNCj4gPg0KPiA+ICsgICAgU3ViY2xhc3NGcm9udFBhZ2U9 MTc5DQo+ID4NCj4gPiArICAgIFN1YmNsYXNzU2luZ2xlVXNlPTE4MA0KPiA+DQo+ID4gKyAgICBZ ZWFyU3VwcHByZXNzRmxhZz0xODENCj4gPg0KPiA+ICsgICAgTW9udGhTdXBwcmVzc0ZsYWc9MTgy DQo+ID4NCj4gPiArICAgIERheVN1cHByZXNzRmxhZz0xODMNCj4gPg0KPiA+ICsgICAgSG91clN1 cHBwcmVzc0ZsYWc9MTg0DQo+ID4NCj4gPiArICAgIE1pbnV0ZVN1cHByZXNzRmxhZz0xODUNCj4g Pg0KPiA+ICsgICAgU2Vjb25kU3VwcHJlc3NGbGFnPTE4Ng0KPiA+DQo+ID4gKyAgICBTdG9yYWdl Tm9ybWFsRmxhZz0xODcNCj4gPg0KPiA+ICsgICAgU3RvcmFnZVRpbWVGbGFnPTE4OA0KPiA+DQo+ ID4gKyAgICBTdG9yYWdlV2FrZVVwRmxhZz0xODkNCj4gPg0KPiA+ICsgICAgVW5pUXVlRmxhZz0x OTANCj4gPg0KPiA+ICsgICAgTm9FbXB0eUZsYWc9MTkxDQo+ID4NCj4gPiArICAgIENvbmQ9MTky DQo+ID4NCj4gPiArICAgIEZpbmQ9MTkzDQo+ID4NCj4gPiArICAgIE1pZD0xOTQNCj4gPg0KPiA+ ICsgICAgVG9rPTE5NQ0KPiA+DQo+ID4gKyAgICBTcGFuPTE5Ng0KPiA+DQo+ID4gKyAgICBEdXA9 MTk3DQo+ID4NCj4gPiArICAgIFZhckVxVmFsPTE5OA0KPiA+DQo+ID4gKyAgICBWYXI9MTk5DQo+ ID4NCj4gPiArICAgIElkRXFWYWw9MjAwDQo+ID4NCj4gPiArICAgIElkRXFJZD0yMDENCj4gPg0K PiA+ICsgICAgSWRFcVZhbExpc3Q9MjAyDQo+ID4NCj4gPiArICAgIFF1ZXN0aW9uUmVmPTIwMw0K PiA+DQo+ID4gKyAgICBSdWxlUmVmPTIwNA0KPiA+DQo+ID4gKyAgICBTdHJpbmdSZWY9MjA1DQo+ ID4NCj4gPiArICAgIFB1c2hUaGlzPTIwNg0KPiA+DQo+ID4gKyAgICBTZWN1cml0eT0yMDcNCj4g Pg0KPiA+ICsgICAgR2V0PTIwOA0KPiA+DQo+ID4gKyAgICBUcnVlU3ltYm9sPTIwOQ0KPiA+DQo+ ID4gKyAgICBGYWxzZVN5bWJvbD0yMTANCj4gPg0KPiA+ICsgICAgT25lPTIxMQ0KPiA+DQo+ID4g KyAgICBPbmVzPTIxMg0KPiA+DQo+ID4gKyAgICBaZXJvPTIxMw0KPiA+DQo+ID4gKyAgICBVbmRl ZmluZWQ9MjE0DQo+ID4NCj4gPiArICAgIFZlcnNpb249MjE1DQo+ID4NCj4gPiArICAgIExlbmd0 aD0yMTYNCj4gPg0KPiA+ICsgICAgQU5EPTIxNw0KPiA+DQo+ID4gKyAgICBPUj0yMTgNCj4gPg0K PiA+ICsgICAgTk9UPTIxOQ0KPiA+DQo+ID4gKyAgICBTZXQ9MjIwDQo+ID4NCj4gPiArICAgIEJp dFdpc2VOb3Q9MjIxDQo+ID4NCj4gPiArICAgIEJvb2xWYWw9MjIyDQo+ID4NCj4gPiArICAgIFN0 cmluZ1ZhbD0yMjMNCj4gPg0KPiA+ICsgICAgVW5JbnRWYWw9MjI0DQo+ID4NCj4gPiArICAgIFRv VXBwZXI9MjI1DQo+ID4NCj4gPiArICAgIFRvTG93ZXI9MjI2DQo+ID4NCj4gPiArICAgIE1hdGNo PTIyNw0KPiA+DQo+ID4gKyAgICBNYXRjaDI9MjI4DQo+ID4NCj4gPiArICAgIENhdGVuYXRlPTIy OQ0KPiA+DQo+ID4gKyAgICBRdWVzdGlvblJlZlZhbD0yMzANCj4gPg0KPiA+ICsgICAgU3RyaW5n UmVmVmFsPTIzMQ0KPiA+DQo+ID4gKyAgICBNYXA9MjMyDQo+ID4NCj4gPiArICAgIFJlZnJlc2hH dWlkPTIzMw0KPiA+DQo+ID4gKyAgICBTdHJpbmdUb2tlbj0yMzQNCj4gPg0KPiA+ICsgICAgT3B0 aW9uRGVmYXVsdD0yMzUNCj4gPg0KPiA+ICsgICAgT3B0aW9uRGVmYXVsdE1mZz0yMzYNCj4gPg0K PiA+ICsgICAgTnVtZXJpY1NpemVPbmU9MjM3DQo+ID4NCj4gPiArICAgIE51bWVyaWNTaXplVHdv PTIzOA0KPiA+DQo+ID4gKyAgICBOdW1lcmljU2l6ZUZvdXI9MjM5DQo+ID4NCj4gPiArICAgIE51 bWVyaWNTaXplRWlnaHQ9MjQwDQo+ID4NCj4gPiArICAgIERpc1BsYXlJbnREZWM9MjQxDQo+ID4N Cj4gPiArICAgIERpc1BsYXlVSW50RGVjPTI0Mg0KPiA+DQo+ID4gKyAgICBEaXNQbGF5VUludEhl eD0yNDMNCj4gPg0KPiA+ICsgICAgSW5zZW5zaXRpdmU9MjQ0DQo+ID4NCj4gPiArICAgIFNlbnNp dGl2ZT0yNDUNCj4gPg0KPiA+ICsgICAgTGFzdE5vbk1hdGNoPTI0Ng0KPiA+DQo+ID4gKyAgICBG aXJzdE5vbk1hdGNoPTI0Nw0KPiA+DQo+ID4gKyAgICBOdW1iZXI9MjQ4DQo+ID4NCj4gPiArICAg IFN0cmluZ0lkZW50aWZpZXI9MjQ5DQo+ID4NCj4gPiArICAgIENvbXBsZXhEZWZpbmU9MjUwDQo+ ID4NCj4gPiArICAgIExpbmVEZWZpbml0aW9uPTI1MQ0KPiA+DQo+ID4gKyAgICBJbmNsdWRlRGVm aW5pdGlvbj0yNTINCj4gPg0KPiA+ICsgICAgV2hpdGVzcGFjZT0yNTMNCj4gPg0KPiA+ICsgICAg TmV3bGluZT0yNTQNCj4gPg0KPiA+ICsgICAgTGluZUNvbW1lbnQ9MjU1DQo+ID4NCj4gPiArICAg IEV4dGVybj0yNTYNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYs IGlucHV0OlRva2VuU3RyZWFtLCBvdXRwdXQ6VGV4dElPID0gc3lzLnN0ZG91dCk6DQo+ID4NCj4g PiArICAgICAgICBzdXBlcigpLl9faW5pdF9fKGlucHV0LCBvdXRwdXQpDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLmNoZWNrVmVyc2lvbigiNC43LjIiKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5f aW50ZXJwID0gUGFyc2VyQVROU2ltdWxhdG9yKHNlbGYsIHNlbGYuYXRuLCBzZWxmLmRlY2lzaW9u c1RvREZBLA0KPiA+IHNlbGYuc2hhcmVkQ29udGV4dENhY2hlKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5fcHJlZGljYXRlcyA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyUHJvZ3JhbUNvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52 b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyRm9ybVNl dERlZmluaXRpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJGb3JtU2V0RGVmaW5pdGlv bkNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiB2ZnJQcmFnbWFQYWNrRGVmaW5pdGlvbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy bg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclBy YWdtYVBhY2tEZWZpbml0aW9uQ29udGUNCj4gPiB4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclByYWdtYVBhY2tEZWZpbml0aW9uQ29u dGV4dA0KPiA+ICxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIHZmckRhdGFTdHJ1Y3REZWZpbml0aW9uKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZy RGF0YVN0cnVjdERlZmluaXRpb25Db250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRGF0YVN0cnVjdERlZmluaXRpb25Db250ZXh0 LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyRGF0 YVVuaW9uRGVmaW5pdGlvbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmckRhdGFVbmlvbkRl ZmluaXRpb25Db250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyRGF0YVVuaW9uRGVmaW5pdGlvbkNvbnRleHQsaSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclBy b2dyYW0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRWZnJQcm9ncmFtIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdFZmclByb2dyYW0oc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJQcm9ncmFtKHNlbGYpOg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyUHJvZ3JhbUNv bnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDAsIHNlbGYuUlVMRV92ZnJQcm9ncmFtKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAg dHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDA5DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICB3aGlsZSBf bGE9PVZmclN5bnRheFBhcnNlci5UX18zIG9yICgoKChfbGEgLSA3OCkpICYgfjB4M2YpID09IDAg YW5kDQo+ICgoMQ0KPiA+IDw8IChfbGEgLSA3OCkpICYgKCgxIDw8IChWZnJTeW50YXhQYXJzZXIu U3RydWN0IC0gNzgpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5VbmlvbiAtIDc4KSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlR5cGVEZWYgLSA3OCkpKSkgIT0NCj4gMCk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MDcNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsMCxz ZWxmLl9jdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQwNA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi52ZnJQcmFnbWFQYWNrRGVmaW5pdGlvbigpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGVsaWYgbGFfID09IDI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gNDA1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnZmckRhdGFT dHJ1Y3REZWZpbml0aW9uKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZWxpZiBsYV8gPT0gMzoNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MDYNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYudmZyRGF0YVVuaW9uRGVmaW5pdGlvbigpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MTENCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDQxMg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyRm9y bVNldERlZmluaXRpb24oKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFByYWdtYVBhY2tTaG93 RGVmQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ByYWdtYVBhY2tTaG93RGVmDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0UHJhZ21hUGFja1Nob3dEZWYiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0UHJhZ21hUGFja1Nob3dEZWYoc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBwcmFnbWFQYWNrU2hvd0RlZihzZWxmKToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlByYWdt YVBhY2tTaG93RGVmQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyLCBzZWxmLlJVTEVfcHJh Z21hUGFja1Nob3dEZWYpDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA0MTQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5UX18wKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlv biA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJv cihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292 ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFByYWdtYVBhY2tT dGFja0RlZkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250 ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5Db21tYSwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJp bmdJZGVudGlmaWVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfcHJhZ21hUGFja1N0YWNr RGVmDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0UHJhZ21hUGFja1N0YWNrRGVmIiApOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFByYWdtYVBhY2tTdGFja0RlZihzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHByYWdtYVBhY2tTdGFja0Rl ZihzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlByYWdtYVBhY2tTdGFja0RlZkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+ IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg NCwgc2VsZi5SVUxFX3ByYWdtYVBhY2tTdGFja0RlZikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu X2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDQxNg0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgbm90KF9sYT09VmZyU3lu dGF4UGFyc2VyLlRfXzEgb3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuVF9fMik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcklubGluZShzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5jb25zdW1lKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDE5DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9p bnB1dCwyLHNlbGYuX2N0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQxNw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQxOA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MjMNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkNvbW1hOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNDIxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gNDIyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmlu YWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsg ICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBjbGFzcyBQcmFnbWFQYWNrTnVtYmVyQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ByYWdtYVBh Y2tOdW1iZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRQcmFnbWFQYWNrTnVtYmVyIiApOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFByYWdtYVBhY2tOdW1iZXIoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBwcmFnbWFQYWNrTnVtYmVy KHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuUHJhZ21hUGFja051bWJlckNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNl bGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNiwg c2VsZi5SVUxFX3ByYWdtYVBhY2tOdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9 IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA0MjYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk51bWJl cjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQyNQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25F eGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9u ID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9y KHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zl cihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyUHJhZ21hUGFj a0RlZmluaXRpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4s IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgcHJhZ21hUGFja1Nob3dEZWYo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5QcmFnbWFQYWNrU2hvd0RlZkNvbnRleHQsMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBwcmFnbWFQYWNrU3Rh Y2tEZWYoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5QcmFnbWFQYWNrU3RhY2tEZWZDb250ZXh0 LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgcHJhZ21h UGFja051bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlByYWdtYVBhY2tOdW1iZXJDb250 ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV92ZnJQcmFnbWFQYWNrRGVmaW5pdGlvbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclByYWdtYVBh Y2tEZWZpbml0aW9uIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdFZmclByYWdtYVBhY2tEZWZpbml0aW9uKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD aGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyUHJhZ21hUGFja0RlZmluaXRpb24oc2VsZik6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5W ZnJQcmFnbWFQYWNrRGVmaW5pdGlvbkNvbnRleHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYu c3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgOCwgc2Vs Zi5SVUxFX3ZmclByYWdtYVBhY2tEZWZpbml0aW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDI4DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fMykNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNDI5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVF9fNCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDMw DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBh cmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MzQNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDUsc2Vs Zi5fY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDMxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYucHJhZ21hUGFja1Nob3dEZWYoKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsaWYgbGFfID09IDI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA0MzINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5wcmFnbWFQYWNrU3RhY2tEZWYo KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgbGFfID09IDM6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MzMNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5wcmFnbWFQYWNrTnVtYmVyKCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDM2DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAg ZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBjbGFzcyBWZnJEYXRhU3RydWN0RGVmaW5pdGlvbkNvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0 ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5OMSA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuTjIgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBTdHJ1Y3Qoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cnVjdCwgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuQnJhY2Uoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZSwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJEYXRhU3RydWN0RmllbGRzKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRGF0YVN0cnVjdEZpZWxkc0NvbnRleHQsMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZUJyYWNlKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5DbG9zZUJyYWNlLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIFR5cGVEZWYoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlR5cGVEZWYsIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgTm9uTnZEYXRhTWFwKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Ob25OdkRhdGFNYXAs IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihz ZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQ YXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuU3RyaW5nSWRlbnRpZmllciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5 bnRheFBhcnNlci5SVUxFX3ZmckRhdGFTdHJ1Y3REZWZpbml0aW9uDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRGF0 YVN0cnVjdERlZmluaXRpb24iICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0VmZyRGF0YVN0cnVjdERlZmluaXRpb24oc2VsZikNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJEYXRhU3RydWN0RGVmaW5pdGlvbihzZWxm KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmckRhdGFTdHJ1Y3REZWZpbml0aW9uQ29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0eCwg c2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAx MCwgc2VsZi5SVUxFX3ZmckRhdGFTdHJ1Y3REZWZpbml0aW9uKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDM5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2Vs Zi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBh cnNlci5UeXBlRGVmOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDM4 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlR5 cGVEZWYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDQ0MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlN0cnVjdCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDQzDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5Ob25OdkRhdGFNYXA6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NDINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTm9uTnZEYXRhTWFwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NDYNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IF9sYT09VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXI6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NDUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9j YWxjdHguTjEgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA0NDgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5P cGVuQnJhY2UpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ0OQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYudmZyRGF0YVN0cnVjdEZpZWxkcyhGYWxzZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDUwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFjZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNDUyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEo MSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5TdHJpbmdJ ZGVudGlmaWVyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDUxDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4yID0gc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDU0DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAg ICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGNsYXNzIFZmckRhdGFVbmlvbkRlZmluaXRpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0x KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tp bmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTjEgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLk4yID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgVW5pb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVuaW9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIE9wZW5CcmFjZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNlLCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmckRhdGFTdHJ1Y3RGaWVsZHMoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJEYXRhU3RydWN0RmllbGRzQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlQnJhY2Uoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNs b3NlQnJhY2UsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9u KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgVHlwZURlZihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuVHlwZURlZiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBOb25OdkRhdGFNYXAoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5vbk52RGF0YU1hcCwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TdHJp bmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJ ZGVudGlmaWVyLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2Vy LlJVTEVfdmZyRGF0YVVuaW9uRGVmaW5pdGlvbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckRhdGFVbmlvbkRlZmlu aXRpb24iICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 VmZyRGF0YVVuaW9uRGVmaW5pdGlvbihzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIHZmckRhdGFVbmlvbkRlZmluaXRpb24oc2VsZik6DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJEYXRhVW5p b25EZWZpbml0aW9uQ29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxMiwgc2VsZi5SVUxFX3Zm ckRhdGFVbmlvbkRlZmluaXRpb24pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBU b2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA0NTcNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlR5cGVEZWY6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NTYNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVHlwZURlZikNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDU5DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVW5pb24pDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ2MQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJT eW50YXhQYXJzZXIuTm9uTnZEYXRhTWFwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gNDYwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk5vbk52RGF0YU1hcCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDY0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2Vs Zi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBh cnNlci5TdHJpbmdJZGVudGlmaWVyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNDYzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4xID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDY2DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNlKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NjcNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnZmckRhdGFTdHJ1Y3RGaWVsZHMoVHJ1ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gNDY4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ2xvc2VCcmFjZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDcw DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4N Cj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDY5DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGxvY2FsY3R4Lk4yID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRl bnRpZmllcikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNDcyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlv biA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJv cihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292 ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmckRhdGFTdHJ1 Y3RGaWVsZHNDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29u dGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IE5vbmUNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZDY0KHNlbGYsIGk6aW50PU5vbmUpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJz ZXIuRGF0YVN0cnVjdEZpZWxkNjRDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkNjRDb250ZXh0LGkpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZGF0YVN0cnVjdEZpZWxk MzIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGQzMkNvbnRleHQpDQo+ID4N Cj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu DQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0 RmllbGQzMkNvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBkYXRhU3RydWN0RmllbGQxNihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy bg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1 Y3RGaWVsZDE2Q29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZDE2Q29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZDgoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZm clN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGQ4Q29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZDhDb250ZXh0 LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZGF0YVN0 cnVjdEZpZWxkQm9vbChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZEJvb2xD b250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuRGF0YVN0cnVjdEZpZWxkQm9vbENvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBkYXRhU3RydWN0RmllbGRTdHJpbmcoc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5 bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGRTdHJpbmdDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkU3RyaW5n Q29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGRhdGFTdHJ1Y3RGaWVsZERhdGUoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4g PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Rmll bGREYXRlQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZERhdGVDb250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZGF0YVN0cnVjdEZpZWxkVGltZShzZWxmLCBp OmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMo VmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFRpbWVDb250ZXh0KQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkVGlt ZUNvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBkYXRhU3RydWN0RmllbGRSZWYoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4g PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Rmll bGRSZWZDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkUmVmQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZFVzZXIoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZm clN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGRVc2VyQ29udGV4dCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFVzZXJD b250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg ZGF0YVN0cnVjdEJpdEZpZWxkNjQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4g PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0 RmllbGQ2NENvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQ2NENvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBkYXRhU3RydWN0Qml0RmllbGQzMihzZWxm LCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDMyQ29udGV4dCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4g PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRG aWVsZDMyQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIGRhdGFTdHJ1Y3RCaXRGaWVsZDE2KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRGF0YVN0 cnVjdEJpdEZpZWxkMTZDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEJpdEZpZWxkMTZDb250ZXh0LGkpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZGF0YVN0cnVjdEJpdEZpZWxk OChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDhDb250ZXh0KQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy bg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVj dEJpdEZpZWxkOENvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckRhdGFTdHJ1Y3RGaWVsZHMNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRW ZnJEYXRhU3RydWN0RmllbGRzIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdFZmckRhdGFTdHJ1Y3RGaWVsZHMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJEYXRhU3RydWN0RmllbGRzKHNlbGYsIEZpZWxk SW5Vbmlvbik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJEYXRhU3RydWN0RmllbGRzQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ ID4gc2VsZi5zdGF0ZSwgRmllbGRJblVuaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDE0LCBzZWxmLlJVTEVfdmZyRGF0YVN0cnVjdEZpZWxkcykNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAg IHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ5MA0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUg KCgoKF9sYSAtIDgwKSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSA4MCkpICYgKCgx IDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5Cb29sZWFuIC0gODApKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuVWludDY0IC0gODApKSB8ICgxDQo+IDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5V aW50MzIgLSA4MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5VaW50MTYgLSA4MCkpIHwgKDEg PDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLlVpbnQ4IC0gODApKSB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuRUZJX1NUUklOR19JRCAtIDgwKSkNCj4gfA0KPiA+ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuRUZJX0hJSV9EQVRFIC0gODApKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5FRklf SElJX1RJTUUgLSA4MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5FRklfSElJX1JFRg0KPiAt DQo+ID4gODApKSkpICE9IDApIG9yIF9sYT09VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZp ZXI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0ODgNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5f aW5wdXQsMTQsc2VsZi5fY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBsYV8gPT0g MToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NzQNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YVN0cnVjdEZpZWxkNjQoRmllbGRJblVu aW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9PSAyOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ3NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5kYXRhU3RydWN0RmllbGQzMihGaWVsZEluVW5pb24pDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGVsaWYgbGFfID09IDM6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNDc2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFTdHJ1Y3RGaWVs ZDE2KEZpZWxkSW5VbmlvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZWxpZiBsYV8gPT0gNDoNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NzcNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYuZGF0YVN0cnVjdEZpZWxkOChGaWVsZEluVW5pb24pDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIGVsaWYgbGFfID09IDU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNDc4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmRh dGFTdHJ1Y3RGaWVsZEJvb2woRmllbGRJblVuaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgcGFzcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBlbGlmIGxh XyA9PSA2Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ3OQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhU3RydWN0RmllbGRTdHJpbmco RmllbGRJblVuaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9PSA3Og0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ4MA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5kYXRhU3RydWN0RmllbGREYXRlKEZpZWxkSW5VbmlvbikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgZWxpZiBsYV8gPT0gODoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA0ODENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0 YVN0cnVjdEZpZWxkVGltZShGaWVsZEluVW5pb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBwYXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsaWYgbGFf ID09IDk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDgyDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFTdHJ1Y3RGaWVsZFJlZihGaWVs ZEluVW5pb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDEwOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ4Mw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5kYXRhU3RydWN0RmllbGRVc2VyKEZpZWxkSW5VbmlvbikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgZWxpZiBsYV8gPT0gMTE6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNDg0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFT dHJ1Y3RCaXRGaWVsZDY0KEZpZWxkSW5VbmlvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZWxpZiBsYV8g PT0gMTI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDg1DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFTdHJ1Y3RCaXRGaWVsZDMyKEZp ZWxkSW5VbmlvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZWxpZiBsYV8gPT0gMTM6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDg2DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLmRhdGFTdHJ1Y3RCaXRGaWVsZDE2KEZpZWxkSW5VbmlvbikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgZWxpZiBsYV8gPT0gMTQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNDg3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmRh dGFTdHJ1Y3RCaXRGaWVsZDgoRmllbGRJblVuaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgcGFzcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNDkyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxv Y2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIERhdGFT dHJ1Y3RGaWVsZDY0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRmllbGRJblVuaW9uPU5v bmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBOb25lDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5GaWVsZEluVW5pb24gPSBGaWVsZEluVW5pb24NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBVaW50NjQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQ2NCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5T dHJpbmdJZGVudGlmaWVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9w ZW5CcmFja2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGFT dHJ1Y3RGaWVsZDY0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEZpZWxkNjQiICk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RGF0YVN0cnVjdEZpZWxkNjQoc2Vs ZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBkYXRhU3RydWN0 RmllbGQ2NChzZWxmLCBGaWVsZEluVW5pb24pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkNjRDb250ZXh0KHNl bGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTYsIHNlbGYuUlVMRV9kYXRhU3RydWN0 RmllbGQ2NCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4g Pg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ5 Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQ2 NCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDk0DQo+ID4NCj4gPiArICAg ICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lk ZW50aWZpZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ5OA0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA0OTUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA0OTYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gNDk3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTAwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNs YXNzIERhdGFTdHJ1Y3RGaWVsZDMyQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRmllbGRJ blVuaW9uPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy ZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0g cGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBOb25lDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBGaWVsZEluVW5pb24NCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBVaW50MzIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQzMiwgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIE9wZW5CcmFja2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3Nl QnJhY2tldCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5k ZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX2RhdGFTdHJ1Y3RGaWVsZDMyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEZpZWxkMzIiICk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RGF0YVN0cnVjdEZp ZWxkMzIoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBk YXRhU3RydWN0RmllbGQzMihzZWxmLCBGaWVsZEluVW5pb24pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkMzJD b250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTgsIHNlbGYuUlVMRV9k YXRhU3RydWN0RmllbGQzMikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2Vu IHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDUwMg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlVpbnQzMikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTAzDQo+ID4N Cj4gPiArICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlN0cmluZ0lkZW50aWZpZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUw Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MDQNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MDUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNTA2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTA5DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBm aW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGNsYXNzIERhdGFTdHJ1Y3RGaWVsZDE2Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0t MSwgRmllbGRJblVuaW9uPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24g PSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBGaWVsZEluVW5pb24NCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBVaW50MTYoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQxNiwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNl bWljb2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVu dGlmaWVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIE9wZW5CcmFja2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNsb3NlQnJhY2tldCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBn ZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRh eFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RGaWVsZDE2DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEZpZWxk MTYiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RGF0 YVN0cnVjdEZpZWxkMTYoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBkYXRhU3RydWN0RmllbGQxNihzZWxmLCBGaWVsZEluVW5pb24pOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVj dEZpZWxkMTZDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlLCBGaWVsZElu VW5pb24pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjAsIHNl bGYuUlVMRV9kYXRhU3RydWN0RmllbGQxNikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0g MCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDUxMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlVpbnQxNikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g NTEyDQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDUxNg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MTMNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MTQNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTE1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTE4DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+ DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiAr ICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGNsYXNzIERhdGFTdHJ1Y3RGaWVsZDhDb250ZXh0KFBhcnNlclJ1bGVD b250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3Rh dGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkZpZWxk SW5VbmlvbiA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9r ZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlv bg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFVpbnQ4KHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50 OCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlNlbWljb2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJp bmdJZGVudGlmaWVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5CcmFja2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51 bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkNsb3NlQnJhY2tldCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RGaWVsZDgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXREYXRhU3RydWN0 RmllbGQ4IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dERhdGFTdHJ1Y3RGaWVsZDgoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBkYXRhU3RydWN0RmllbGQ4KHNlbGYsIEZpZWxkSW5Vbmlvbik6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5EYXRhU3Ry dWN0RmllbGQ4Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSwgRmllbGRJ blVuaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIyLCBz ZWxmLlJVTEVfZGF0YVN0cnVjdEZpZWxkOCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0g MCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDUyMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlVpbnQ4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1 MjENCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNTI1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUyMg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUyMw0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MjQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MjcNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4N Cj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgY2xhc3MgRGF0YVN0cnVjdEZpZWxkQm9vbENvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdT dGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRmll bGRJblVuaW9uID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBU b2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmllbGRJblVu aW9uDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQm9vbGVhbihzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Qm9vbGVhbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24o c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5CcmFja2V0KHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJh Y2tldCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZUJy YWNrZXQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RGaWVsZEJvb2wNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRE YXRhU3RydWN0RmllbGRCb29sIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdERhdGFTdHJ1Y3RGaWVsZEJvb2woc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBkYXRhU3RydWN0RmllbGRCb29sKHNlbGYsIEZpZWxk SW5Vbmlvbik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGRCb29sQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ ID4gc2VsZi5zdGF0ZSwgRmllbGRJblVuaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDI0LCBzZWxmLlJVTEVfZGF0YVN0cnVjdEZpZWxkQm9vbCkNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAg IHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUyOQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJvb2xlYW4pDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUzMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2Fs Y3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MzQNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3lu dGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNTMxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk9wZW5CcmFja2V0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNTMyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUzMw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZUJyYWNrZXQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDUzNg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBEYXRhU3RydWN0 RmllbGRTdHJpbmdDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9u ZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IE5vbmUNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIEVGSV9TVFJJTkdfSUQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVGSV9TVFJJTkdfSUQsIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29s b24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmll cihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBPcGVuQnJhY2tldChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5D bG9zZUJyYWNrZXQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV9kYXRhU3RydWN0RmllbGRTdHJpbmcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXREYXRhU3RydWN0RmllbGRT dHJpbmciICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 RGF0YVN0cnVjdEZpZWxkU3RyaW5nKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihz ZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgZGF0YVN0cnVjdEZpZWxkU3RyaW5nKHNlbGYsIEZpZWxkSW5Vbmlvbik6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5EYXRhU3RydWN0RmllbGRTdHJpbmdDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxm LnN0YXRlLCBGaWVsZEluVW5pb24pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgMjYsIHNlbGYuUlVMRV9kYXRhU3RydWN0RmllbGRTdHJpbmcpDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MzgNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FRklfU1RSSU5HX0lEKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MzkNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2Nh bGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTQzDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5 bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDU0MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5PcGVuQnJhY2tldCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDU0MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NDIN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xv c2VCcmFja2V0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA1NDUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgRGF0YVN0cnVj dEZpZWxkRGF0ZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1Ob25l KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tp bmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gTm9uZQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuRmllbGRJblVuaW9uID0gRmllbGRJblVuaW9uDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgRUZJX0hJSV9EQVRFKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FRklfSElJX0RBVEUsIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24s IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBPcGVuQnJhY2tldChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9z ZUJyYWNrZXQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUlu ZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIu UlVMRV9kYXRhU3RydWN0RmllbGREYXRlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEZpZWxkRGF0ZSIg KToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3Ry dWN0RmllbGREYXRlKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgZGF0YVN0cnVjdEZpZWxkRGF0ZShzZWxmLCBGaWVsZEluVW5pb24pOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVj dEZpZWxkRGF0ZUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIEZpZWxk SW5VbmlvbikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyOCwg c2VsZi5SVUxFX2RhdGFTdHJ1Y3RGaWVsZERhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9s YSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA1NDcNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5FRklfSElJX0RBVEUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDU0OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA1NTINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5C cmFja2V0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTQ5DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFj a2V0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTUwDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU1MQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU1 NA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWlj b2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyBy ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0K PiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4 aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBEYXRhU3RydWN0RmllbGRUaW1lQ29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4g PiBpbnZva2luZ1N0YXRlOmludD0tMSwgRmllbGRJblVuaW9uPU5vbmUpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5GaWVsZEluVW5pb24gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5O ID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24g PSBGaWVsZEluVW5pb24NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBFRklfSElJ X1RJTUUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfVElNRSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJ ZGVudGlmaWVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5CcmFj a2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RG aWVsZFRpbWUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXREYXRhU3RydWN0RmllbGRUaW1lIiApOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdERhdGFTdHJ1Y3RGaWVsZFRpbWUoc2Vs ZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBkYXRhU3RydWN0 RmllbGRUaW1lKHNlbGYsIEZpZWxkSW5Vbmlvbik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGRUaW1lQ29udGV4 dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSwgRmllbGRJblVuaW9uKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMwLCBzZWxmLlJVTEVfZGF0YVN0 cnVjdEZpZWxkVGltZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5 cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDU1Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkVGSV9ISUlfVElNRSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTU3DQo+ ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDU2MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NTgNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NTkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNTYwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTYzDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4g KyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAg ICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGNsYXNzIERhdGFTdHJ1Y3RGaWVsZFJlZkNvbnRleHQoUGFyc2VyUnVsZUNvbnRl eHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTpp bnQ9LTEsIEZpZWxkSW5Vbmlvbj1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVu aW9uID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmllbGRJblVuaW9uDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRUZJX0hJSV9SRUYoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVG SV9ISUlfUkVGLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xv bihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlbkJyYWNrZXQoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5C cmFja2V0LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3Nl QnJhY2tldChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEZpZWxkUmVmDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlz aXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0 RGF0YVN0cnVjdEZpZWxkUmVmIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdERhdGFTdHJ1Y3RGaWVsZFJlZihzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZFJlZihzZWxmLCBGaWVsZElu VW5pb24pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkUmVmQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4g c2VsZi5zdGF0ZSwgRmllbGRJblVuaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1 bGUobG9jYWxjdHgsIDMyLCBzZWxmLlJVTEVfZGF0YVN0cnVjdEZpZWxkUmVmKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTY1DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9SRUYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU2Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2Fs Y3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NzANCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3lu dGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNTY3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk9wZW5CcmFja2V0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNTY4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU2OQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZUJyYWNrZXQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDU3Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBEYXRhU3RydWN0 RmllbGRVc2VyQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRmllbGRJblVuaW9uPU5vbmUp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBOb25lDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5UID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5OID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5p b24gPSBGaWVsZEluVW5pb24NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1p Y29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCBpKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5CcmFja2V0KHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJh Y2tldCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZUJy YWNrZXQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RGaWVsZFVzZXINCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRE YXRhU3RydWN0RmllbGRVc2VyIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdERhdGFTdHJ1Y3RGaWVsZFVzZXIoc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBkYXRhU3RydWN0RmllbGRVc2VyKHNlbGYsIEZpZWxk SW5Vbmlvbik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGRVc2VyQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ ID4gc2VsZi5zdGF0ZSwgRmllbGRJblVuaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDM0LCBzZWxmLlJVTEVfZGF0YVN0cnVjdEZpZWxkVXNlcikNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAg IHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU3NA0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGxvY2FsY3R4LlQgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJ ZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NzUNCj4gPg0K PiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTc5 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4N Cj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU3Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU3Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA1NzgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1ODENCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZp bmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgY2xhc3MgRGF0YVN0cnVjdEJpdEZpZWxkNjRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0 KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50 PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5Vbmlv biA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkQgPSBOb25lICMgVG9rZW4NCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIENvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db2xvbiwgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xv biwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBVaW50NjQoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlVpbnQ2NCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVu dGlmaWVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEJpdEZpZWxkNjQNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXREYXRhU3RydWN0Qml0RmllbGQ2NCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0Qml0RmllbGQ2NChzZWxmKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGRhdGFTdHJ1Y3RCaXRGaWVsZDY0KHNl bGYsIEZpZWxkSW5Vbmlvbik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQ2NENvbnRleHQoc2VsZiwgc2Vs Zi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNiwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RCaXRGaWVs ZDY0KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTgzDQo+ ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguRCA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlVpbnQ2NCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTg1DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTg0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVy KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA1ODcNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Db2xvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTg4DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1ODkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICBl eGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg Y2xhc3MgRGF0YVN0cnVjdEJpdEZpZWxkMzJDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBh cmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBG aWVsZEluVW5pb249Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJz ZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IE5v bmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkQgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIENvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBVaW50MzIoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQz MiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVy KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEJpdEZpZWxkMzINCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRE YXRhU3RydWN0Qml0RmllbGQzMiIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXREYXRhU3RydWN0Qml0RmllbGQzMihzZWxmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGRhdGFTdHJ1Y3RCaXRGaWVsZDMyKHNlbGYsIEZp ZWxkSW5Vbmlvbik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQzMkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4 LA0KPiA+IHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCAzOCwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RCaXRGaWVsZDMyKQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAg ICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTkxDQo+ID4NCj4g PiArICAgICAgICAgICAgbG9jYWxjdHguRCA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVp bnQzMikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTkzDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBf bGE9PVZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNTkyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2Fs Y3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1 OTUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db2xv bikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTk2DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA1OTcNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3Mg RGF0YVN0cnVjdEJpdEZpZWxkMTZDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQ YXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZElu VW5pb249Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJl bnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IE5vbmUNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLkQgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIENvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5Db2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBVaW50MTYoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQxNiwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEJpdEZpZWxkMTYNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXREYXRhU3Ry dWN0Qml0RmllbGQxNiIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXREYXRhU3RydWN0Qml0RmllbGQxNihzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIGRhdGFTdHJ1Y3RCaXRGaWVsZDE2KHNlbGYsIEZpZWxkSW5V bmlvbik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRh eFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQxNkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+ IHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJS dWxlKGxvY2FsY3R4LCA0MCwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RCaXRGaWVsZDE2KQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAg dHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTk5DQo+ID4NCj4gPiArICAg ICAgICAgICAgbG9jYWxjdHguRCA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQxNikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjAxDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZm clN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNjAwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4g PSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MDMNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db2xvbikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjA0DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA2MDUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhj ZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9y dEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9j YWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgRGF0YVN0 cnVjdEJpdEZpZWxkOENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1 bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1O b25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gTm9uZQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuRCA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJ blVuaW9uID0gRmllbGRJblVuaW9uDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg Q29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIFVpbnQ4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50OCwgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJp bmdJZGVudGlmaWVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfZGF0YVN0cnVjdEJpdEZpZWxkOA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdERhdGFTdHJ1Y3RCaXRGaWVs ZDgiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RGF0 YVN0cnVjdEJpdEZpZWxkOChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIGRhdGFTdHJ1Y3RCaXRGaWVsZDgoc2VsZiwgRmllbGRJblVuaW9uKToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkRhdGFT dHJ1Y3RCaXRGaWVsZDhDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlLCBG aWVsZEluVW5pb24pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg NDIsIHNlbGYuUlVMRV9kYXRhU3RydWN0Qml0RmllbGQ4KQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNjA3DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxj dHguRCA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQ4KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA2MDkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlN0 cmluZ0lkZW50aWZpZXI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2 MDgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYxMQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA2MTINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDYxMw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNl bWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJGb3JtU2V0RGVmaW5pdGlvbkNv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUs DQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0g VmZyVHJlZU5vZGUoRUZJX0lGUl9GT1JNX1NFVF9PUCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBGb3JtU2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Gb3JtU2V0LCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIFV1aWQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlV1aWQsIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgZ3VpZERlZmluaXRpb24oc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIFRpdGxlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5UaXRsZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIEhlbHAoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkhlbHAsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgdmZyRm9ybVNldExpc3Qoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJGb3Jt U2V0TGlzdENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBFbmRGb3JtU2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRGb3JtU2V0LCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsYXNzR3VpZChzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xh c3NHdWlkLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGNsYXNzZ3VpZERl ZmluaXRpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5DbGFzc2d1aWREZWZpbml0aW9uQ29u dGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENs YXNzKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5DbGFzcywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBjbGFzc0RlZmluaXRpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5DbGFzc0RlZmluaXRp b25Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgU3ViY2xhc3Moc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIHN1YmNsYXNzRGVmaW5pdGlvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlN1YmNsYXNzRGVmaW5pdGlvbkNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckZvcm1TZXREZWZpbml0aW9uDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0VmZyRm9ybVNldERlZmluaXRpb24iICk6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyRm9ybVNldERlZmluaXRpb24oc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJGb3JtU2V0RGVmaW5pdGlv bihzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlZmckZvcm1TZXREZWZpbml0aW9uQ29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgs DQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCA0NCwgc2VsZi5SVUxFX3ZmckZvcm1TZXREZWZpbml0aW9uKQ0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjE1DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRm9ybVNldCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNjE2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVXVpZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjE3 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjE4DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5ndWlkRGVmaW5pdGlvbigpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDYxOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MjANCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UaXRsZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjIxDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNjIyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDYyMw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9w ZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjI0DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MjUNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA2MjYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g NjI3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSGVs cCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjI4DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNjI5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDYzMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjMx DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MzINCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MzMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gNjM5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5DbGFzc0d1aWQ6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MzQNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xhc3NHdWlkKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjM1DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MzYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5jbGFzc2d1aWREZWZpbml0aW9uKGxvY2FsY3R4Lk5vZGUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA2MzcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY0Ng0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50 YXhQYXJzZXIuQ2xhc3M6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2 NDENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q2xhc3MpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NDINCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY0Mw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLmNsYXNzRGVmaW5pdGlvbigpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA2NDQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY1Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQ YXJzZXIuU3ViY2xhc3M6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2 NDgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U3ViY2xhc3MpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NDkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY1MA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN1YmNsYXNzRGVmaW5pdGlvbigpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NTENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY1NQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYudmZyRm9ybVNldExpc3QobG9jYWxjdHguTm9kZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNjU2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuRW5kRm9ybVNldCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNjU3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIENsYXNzZ3VpZERlZmluaXRp b25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBOb2RlPU5vbmUpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuR3VpZExpc3Qg PSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vZGUNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBndWlkRGVmaW5pdGlvbihzZWxmLCBpOmludD1Ob25lKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFy c2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCxpKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmlu dD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0 V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9jbGFzc2d1 aWREZWZpbml0aW9uDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0Q2xhc3NndWlkRGVmaW5pdGlvbiIgKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDbGFzc2d1aWREZWZpbml0aW9u KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgY2xhc3Nn dWlkRGVmaW5pdGlvbihzZWxmLCBOb2RlKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkNsYXNzZ3VpZERlZmluaXRpb25Db250ZXh0KHNl bGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlLCBOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDQ2LCBzZWxmLlJVTEVfY2xhc3NndWlkRGVmaW5pdGlv bikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY1OQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24oKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA2NjINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRl cnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDMzLHNlbGYuX2N0eCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDY2MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA2NjENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlvbigpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDY2Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qo c2VsZi5faW5wdXQsMzQsc2VsZi5fY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGxhXyA9 PSAxOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjY0DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY2NQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLmd1aWREZWZpbml0aW9uKCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjcwDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9 PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA2NjgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNjY5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24o KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxv Y2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIENsYXNz RGVmaW5pdGlvbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9HVUlEX09QKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIHZhbGlkQ2xhc3NOYW1lcyhzZWxmLCBpOmludD1Ob25lKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2Vy LlZhbGlkQ2xhc3NOYW1lc0NvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5WYWxpZENsYXNzTmFtZXNDb250ZXh0LGkpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRX aXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2NsYXNzRGVm aW5pdGlvbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2 aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdENsYXNzRGVmaW5pdGlvbiIgKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDbGFzc0RlZmluaXRpb24oc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBjbGFzc0RlZmluaXRpb24oc2Vs Zik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBh cnNlci5DbGFzc0RlZmluaXRpb25Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0 YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDQ4LCBzZWxm LlJVTEVfY2xhc3NEZWZpbml0aW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMg VG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNjcyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52YWxpZENsYXNzTmFt ZXMoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NzcNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxl IF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDY3Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA2NzQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52YWxpZENsYXNz TmFtZXMoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjc5DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4g PiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUo KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZhbGlkQ2xhc3NOYW1lc0NvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdT dGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy ZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0g cGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5DbGFzc05hbWUgPSAwDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xhc3NOb25EZXZpY2Uoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsYXNz Tm9uRGV2aWNlLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsYXNzRGlz a0RldmljZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ2xhc3NEaXNrRGV2aWNlLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIENsYXNzVmlkZW9EZXZpY2Uoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsYXNzVmlkZW9EZXZp Y2UsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xhc3NOZXR3b3JrRGV2 aWNlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5DbGFzc05ldHdvcmtEZXZpY2UsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgQ2xhc3NJbnB1dERldmljZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xhc3NJbnB1dERldmlj ZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbGFzc09uQm9hcmREZXZp Y2Uoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNsYXNzT25Cb2FyZERldmljZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBDbGFzc090aGVyRGV2aWNlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbGFzc090aGVyRGV2aWNl LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu TnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfdmFsaWRDbGFzc05hbWVzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNj ZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmFsaWRDbGFzc05hbWVzIiApOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZhbGlkQ2xhc3NOYW1lcyhz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZhbGlkQ2xh c3NOYW1lcyhzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLlZhbGlkQ2xhc3NOYW1lc0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0K PiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgNTAsIHNlbGYuUlVMRV92YWxpZENsYXNzTmFtZXMpDQo+ID4NCj4gPiArICAgICAgICBzZWxm Ll9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA2ODANCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIG5vdCgoKCgoX2xhIC0g MTcwKSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSAxNzApKSAmICgoMSA8PA0KPiA+ IChWZnJTeW50YXhQYXJzZXIuQ2xhc3NOb25EZXZpY2UgLSAxNzApKSB8ICgxIDw8DQo+ID4gKFZm clN5bnRheFBhcnNlci5DbGFzc0Rpc2tEZXZpY2UgLSAxNzApKSB8ICgxIDw8DQo+ID4gKFZmclN5 bnRheFBhcnNlci5DbGFzc1ZpZGVvRGV2aWNlIC0gMTcwKSkgfCAoMSA8PA0KPiA+IChWZnJTeW50 YXhQYXJzZXIuQ2xhc3NOZXR3b3JrRGV2aWNlIC0gMTcwKSkgfCAoMSA8PA0KPiA+IChWZnJTeW50 YXhQYXJzZXIuQ2xhc3NJbnB1dERldmljZSAtIDE3MCkpIHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4 UGFyc2VyLkNsYXNzT25Cb2FyZERldmljZSAtIDE3MCkpIHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4 UGFyc2VyLkNsYXNzT3RoZXJEZXZpY2UgLSAxNzApKSkpICE9IDApIG9yDQo+ID4gX2xhPT1WZnJT eW50YXhQYXJzZXIuTnVtYmVyKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZWNvdmVySW5saW5lKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQ0KPiA+DQo+ID4g KyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAg ICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGNsYXNzIFN1YmNsYXNzRGVmaW5pdGlvbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRl eHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTpp bnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBp bnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2Vy DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9H VUlEX09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN1YmNsYXNzU2V0dXBB cHBsaWNhdGlvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuU3ViY2xhc3NTZXR1cEFwcGxpY2F0aW9uLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN1YmNsYXNzR2VuZXJhbEFwcGxpY2F0aW9uKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TdWJjbGFzc0dlbmVyYWxBcHBsaWNhdGlvbiwNCj4gMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBTdWJjbGFzc0Zyb250UGFnZShzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3ViY2xhc3NG cm9udFBhZ2UsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3ViY2xhc3NT aW5nbGVVc2Uoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzU2luZ2xlVXNlLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfc3ViY2xhc3NEZWZpbml0aW9u DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlz aXRvciwgInZpc2l0U3ViY2xhc3NEZWZpbml0aW9uIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdFN1YmNsYXNzRGVmaW5pdGlvbihzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHN1YmNsYXNzRGVmaW5pdGlvbihz ZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLlN1YmNsYXNzRGVmaW5pdGlvbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNl bGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNTIs IHNlbGYuUlVMRV9zdWJjbGFzc0RlZmluaXRpb24pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9s YSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA2ODINCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIG5vdCgoKCgoX2xhIC0gMTc3 KSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSAxNzcpKSAmICgoMSA8PA0KPiA+IChW ZnJTeW50YXhQYXJzZXIuU3ViY2xhc3NTZXR1cEFwcGxpY2F0aW9uIC0gMTc3KSkgfCAoMSA8PA0K PiA+IChWZnJTeW50YXhQYXJzZXIuU3ViY2xhc3NHZW5lcmFsQXBwbGljYXRpb24gLSAxNzcpKSB8 ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5TdWJjbGFzc0Zyb250UGFnZSAtIDE3NykpIHwg KDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzU2luZ2xlVXNlIC0gMTc3KSkpKSAh PSAwKSBvcg0KPiA+IF9sYT09VmZyU3ludGF4UGFyc2VyLk51bWJlcik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcklubGluZShzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5jb25zdW1lKCkNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJGb3JtU2V0TGlzdENvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIE5vZGU9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lk5vZGUgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9kZQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmckZvcm1TZXQoc2VsZiwgaTppbnQ9Tm9u ZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRh eFBhcnNlci5WZnJGb3JtU2V0Q29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckZvcm1TZXRDb250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJGb3JtU2V0 TGlzdA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNp dG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdFZmckZvcm1TZXRMaXN0IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckZvcm1TZXRMaXN0KHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyRm9ybVNldExpc3Qoc2VsZiwgTm9k ZSk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBh cnNlci5WZnJGb3JtU2V0TGlzdENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3Rh dGUsIE5vZGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNTQs IHNlbGYuUlVMRV92ZnJGb3JtU2V0TGlzdCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0g MCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDY4Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuRm9y bSBvcg0KPiBfbGE9PVZmclN5bnRheFBhcnNlci5Gb3JtTWFwDQo+ID4gb3IgKCgoKF9sYSAtIDEw NSkpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMTA1KSkgJiAoKDEgPDwNCj4gPiAo VmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYgLSAxMDUpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuRGlzYWJsZUlmIC0NCj4gMTA1KSkNCj4gPiB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuSW1h Z2UgLSAxMDUpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuRGVmYXVsdFN0b3JlDQo+ID4g LSAxMDUpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVmFyc3RvcmUgLSAxMDUpKSB8ICgxIDw8 DQo+ID4gKFZmclN5bnRheFBhcnNlci5FZml2YXJzdG9yZSAtIDEwNSkpIHwgKDEgPDwNCj4gPiAo VmZyU3ludGF4UGFyc2VyLk5hbWVWYWx1ZVZhclN0b3JlIC0gMTA1KSkgfCAoMSA8PA0KPiA+IChW ZnJTeW50YXhQYXJzZXIuR3VpZE9wIC0gMTA1KSkpKSAhPSAwKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDY4NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnZmckZvcm1TZXQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjg5 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmckZvcm1TZXRDb250ZXh0KFBhcnNlclJ1 bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5n U3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJGb3JtRGVmaW5pdGlvbihzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmckZvcm1EZWZpbml0aW9uQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmckZvcm1NYXBEZWZpbml0aW9uKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRm9ybU1hcERlZmluaXRpb25Db250ZXh0LDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50 SW1hZ2Uoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbWFnZUNvbnRleHQs MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0 ZW1lbnRWYXJTdG9yZUxpbmVhcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4N Cj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudFZhclN0b3JlTGluZWFyQ29uDQo+ID4gdGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFZhclN0b3JlRWZpKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFyU3RvcmVFZmlDb250ZXh0DQo+ID4g LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3Rh dGVtZW50VmFyU3RvcmVOYW1lVmFsdWUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1DQo+ID4gZUNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmUo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmVDb250 ZQ0KPiA+IHh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgdmZyU3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXRDDQo+ID4gb250ZXh0LDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3VwcHJl c3NJZkZvcm1TZXQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdXBw cmVzc0lmRm9ybVNldA0KPiA+IENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHRlbnNpb24oc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHRlbnNpb25Db250ZXh0LA0KPiA+IDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92 ZnJGb3JtU2V0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0VmZyRm9ybVNldCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJGb3JtU2V0KHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyRm9ybVNldChzZWxmKToNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckZvcm1T ZXRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA1Niwgc2VsZi5SVUxFX3ZmckZvcm1TZXQpDQo+ ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3 MDANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Gb3JtXToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY5MA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnZmckZvcm1EZWZpbml0aW9uKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5Gb3JtTWFwXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY5MQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmckZvcm1NYXBEZWZpbml0aW9uKCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbWFnZV06DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA2OTINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJT dGF0ZW1lbnRJbWFnZSgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVmFyc3RvcmVdOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjkzDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXIoKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkVmaXZhcnN0b3JlXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDY5NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudFZhclN0b3JlRWZpKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OYW1lVmFs dWVWYXJTdG9yZV06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2OTUN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVW YWx1ZSgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRGVmYXVsdFN0b3JlXToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY5Ng0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnZmclN0YXRlbWVudERlZmF1bHRTdG9yZSgpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuRGlzYWJsZUlmXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDY5Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudERp c2FibGVJZkZvcm1TZXQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWZd Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjk4DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQoKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0 b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkd1aWRPcF06DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA2OTkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJT dGF0ZW1lbnRFeHRlbnNpb24oKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4N Cj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmFpc2Ug Tm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxs eToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBjbGFzcyBWZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmVDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0 KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50 PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfREVG QVVMVFNUT1JFX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tl bg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuUyA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuQSA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIERlZmF1bHRTdG9yZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGVmYXVsdFN0b3JlLCAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgUHJvbXB0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Qcm9tcHQsIDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2Vu LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuT3BlblBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3Nl UGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRl bnRpZmllciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2Vs ZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBp KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEF0dHJpYnV0ZShzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu QXR0cmlidXRlLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2Vy LlJVTEVfdmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50RGVm YXVsdFN0b3JlIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdFZmclN0YXRlbWVudERlZmF1bHRTdG9yZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudERlZmF1bHRTdG9yZShzZWxmKToNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudERlZmF1bHRTdG9yZUNvbnRleHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYu c3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNTgsIHNl bGYuUlVMRV92ZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmUpDQo+ID4NCj4gPiArICAgICAgICBzZWxm Ll9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MDINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5EZWZhdWx0U3RvcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDcwMw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA3MDQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNzA1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu UHJvbXB0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MDYNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MDcNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNzA4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA3MDkNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5TID0gc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3 MTANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MTUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IF9sYT09VmZyU3ludGF4UGFyc2VyLkNvbW1hOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNzExDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNzEyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkF0dHJpYnV0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcx Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U X181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzE0DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkEgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDcxNw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1l bnRWYXJTdG9yZUxpbmVhckNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNl clJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9WQVJTVE9SRV9PUCkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLlROID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5JRCA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu U04gPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBWYXJz dG9yZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuVmFyc3RvcmUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgTmFtZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTmFtZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkNvbW1hLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFV1aWQo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlV1aWQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ3Vp ZERlZmluaXRpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRl eHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1p Y29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCBpKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFVpbnQ4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50OCwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBVaW50MTYoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQxNiwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBVaW50MzIoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVp bnQzMiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBVaW50NjQoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlVpbnQ2NCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBFRklfSElJ X0RBVEUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfREFURSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBFRklfSElJX1RJTUUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfVElNRSwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBFRklfSElJX1JFRihzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRUZJX0hJ SV9SRUYsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVmFySWQoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlZhcklkLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXINCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0 ZW1lbnRWYXJTdG9yZUxpbmVhciIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhcihzZWxmKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudFZhclN0b3JlTGlu ZWFyKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXJDb250ZXh0KHNlbGYsDQo+ID4g c2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDYwLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXIpDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAg ICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MTkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5WYXJzdG9yZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzM2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4gPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA3MjANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguVE4g PSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzIxDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLlVpbnQ4XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDcyMg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5VaW50OCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcyMw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50MTZdOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNzI0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQxNikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDcyNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50MzJd Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzI2DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQzMikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcyNw0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5VaW50NjRdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNzI4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlVpbnQ2NCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcy OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5FRklfSElJX0RBVEVdOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzMwDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfREFURSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDczMQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5FRklfSElJX1RJTUVdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gNzMyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkVGSV9ISUlfVElNRSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDczMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5FRklfSElJX1JFRl06 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MzQNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9SRUYpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MzUNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NDINCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IF9sYT09VmZyU3ludGF4UGFyc2VyLlZhcklkOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNzM4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlZhcklkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNzM5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NDANCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguSUQgPSBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3 NDENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDc0NA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk5hbWUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc0NQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc0Ng0KPiA+DQo+ID4gKyAgICAgICAgICAg IGxvY2FsY3R4LlNOID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmll cikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzQ3DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDc0OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlV1aWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDc0OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc1MA0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24oKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA3NTENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVt ZW50VmFyU3RvcmVFZmlDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfVkFSU1RPUkVfRUZJX09QKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVE4gPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLklEID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5TTiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVk4gPSBOb25l ICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBFZml2YXJzdG9yZShzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRWZp dmFyc3RvcmUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQXR0cmlidXRl KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5BdHRyaWJ1dGUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgdmZyVmFyU3RvcmVFZmlBdHRyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyVmFyU3RvcmVF ZmlBdHRyQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclZhclN0b3JlRWZpQXR0ckNvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIFV1aWQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlV1aWQsIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgZ3VpZERlZmluaXRpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBVaW50OChzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDgsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVWludDE2KHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50MTYs IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVWludDMyKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5V aW50MzIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVWludDY0KHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5VaW50NjQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRUZJX0hJ SV9EQVRFKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5FRklfSElJX0RBVEUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgRUZJX0hJSV9USU1FKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FRklfSElJX1RJTUUsIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRUZJX0hJSV9SRUYoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVGSV9I SUlfUkVGLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE5hbWUoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk5hbWUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nVG9r ZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVmFyU2l6ZShzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVmFyU2l6 ZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVy KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5TdHJpbmdJZGVudGlmaWVyLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIFZhcklkKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5WYXJJZCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5OdW1iZXIsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVu dFZhclN0b3JlRWZpIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdFZmclN0YXRlbWVudFZhclN0b3JlRWZpKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD aGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50VmFyU3RvcmVFZmkoc2VsZik6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaUNvbnRleHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYu c3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNjIsIHNl bGYuUlVMRV92ZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu X2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDc1Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkVmaXZhcnN0b3JlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA3NzANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEp DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5TdHJp bmdJZGVudGlmaWVyXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc1 NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5UTiA9IHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA3NTUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVWludDhd Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzU2DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQ4KQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzU3DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLlVpbnQxNl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA3NTgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVWludDE2KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzU5 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlVpbnQzMl06DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NjANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVWludDMyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNzYxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNz DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlVp bnQ2NF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NjINCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVWludDY0KQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzYzDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfREFURV06DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA3NjQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9EQVRFKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNzY1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkVGSV9I SUlfVElNRV06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NjYNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX0hJ SV9USU1FKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzY3DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfUkVGXToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc2OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FRklfSElJX1JFRikNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDc2OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc3Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQ YXJzZXIuVmFySWQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NzIN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVmFy SWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NzMNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc3NA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBsb2NhbGN0eC5JRCA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc3NQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzc4DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQXR0cmlidXRl KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NzkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA3ODANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclZh clN0b3JlRWZpQXR0cigpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc4NQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzgxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDc4Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnZmclZhclN0b3JlRWZpQXR0cigpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA3ODcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc4OA0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MDQNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBsYV8g PSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDQ1LHNlbGYuX2N0eCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDc4OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OYW1lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gNzkwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3 OTENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguU04gPSBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNzkyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBsYV8gPT0gMjoNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc5Mw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OYW1lKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNzk0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA3OTUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA3OTYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNzk3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LlZOID0gc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gNzk4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA3OTkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MDAN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVmFy U2l6ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgwMQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODAyDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MDMNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODA2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVXVpZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gODA3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODA4DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlvbigpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDgwOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBs b2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJW YXJTdG9yZUVmaUF0dHJDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuQXR0ciA9IDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1i ZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5 bnRheFBhcnNlci5SVUxFX3ZmclZhclN0b3JlRWZpQXR0cg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclZhclN0b3Jl RWZpQXR0ciIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRWZnJWYXJTdG9yZUVmaUF0dHIoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiB2ZnJWYXJTdG9yZUVmaUF0dHIoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJWYXJTdG9yZUVmaUF0 dHJDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDY0LCBzZWxmLlJVTEVfdmZyVmFyU3RvcmVF ZmlBdHRyKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gODExDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFZhclN0 b3JlTmFtZVZhbHVlQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX1ZBUlNUT1JFX05BTUVfVkFMVUVfT1Ap DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5TTiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuSUQgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBOYW1lVmFsdWVWYXJTdG9yZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTmFtZVZhbHVlVmFyU3Rv cmUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBVdWlkKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VdWlkLCAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGd1aWREZWZpbml0aW9uKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29s b24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmll cihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBWYXJJZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVmFySWQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgTmFtZShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTmFtZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuTmFtZSwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBT dHJpbmdUb2tlbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu cyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxz ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlN0cmluZ1Rva2VuLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VucyhWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5PcGVuUGFyZW4sIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5z KFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk51bWJlciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBh cmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5DbG9zZVBhcmVuLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfdmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0 ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZSIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZShzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudFZhclN0 b3JlTmFtZVZhbHVlKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxj dHggPQ0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZUNv bnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNjYsDQo+IHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRW YXJTdG9yZU5hbWVWYWx1ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2Vu IHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDgxMw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk5hbWVWYWx1ZVZhclN0b3JlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA4MTQNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5TTiA9IHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDgxNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MjANCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlZhcklkOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gODE2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlZhcklkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gODE3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4 MTgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguSUQgPSBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA4MTkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDgyOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUgVHJ1ZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDgyMg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5OYW1lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gODIzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA4MjQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4 MjUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu T3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODI2DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgyNw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODI4DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODMxDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBu b3QgKF9sYT09VmZyU3ludGF4UGFyc2VyLk5hbWUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgYnJlYWsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gODMzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VXVpZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODM0DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gODM1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5n dWlkRGVmaW5pdGlvbigpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgzNg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xv bikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0 Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUg PSBWZnJUcmVlTm9kZShFRklfSUZSX0RJU0FCTEVfSUZfT1ApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgRGlzYWJsZUlmKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYsIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0DQo+ID4g LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNv bG9uKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlNlbWljb2xvbiwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJGb3Jt U2V0TGlzdChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckZvcm1TZXRMaXN0Q29udGV4dCww KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEVuZElmKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5FbmRJZiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRS dWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBh cnNlci5SVUxFX3ZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXQNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0 ZW1lbnREaXNhYmxlSWZGb3JtU2V0IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXQoc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnREaXNhYmxl SWZGb3JtU2V0KHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldENvbnRleHQoc2Vs ZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgNjgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3Jt U2V0KQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gODM4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuRGlzYWJsZUlmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MzkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb24oKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NDANCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDg0MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyRm9ybVNl dExpc3QobG9jYWxjdHguTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g ODQyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5k SWYpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg0Mw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAg ICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldENvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52 b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5v ZGUoRUZJX0lGUl9TVVBQUkVTU19JRl9PUCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBTdXBwcmVzc0lmKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4dA0KPiA+ICwwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxm LCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJz ZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29s b24sIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyRm9ybVNldExpc3Qo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJGb3JtU2V0TGlzdENvbnRleHQsMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBFbmRJZihzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu RW5kSWYsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVM RV92ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFN1 cHByZXNzSWZGb3JtU2V0IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdFZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0KHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50U3VwcHJlc3NJZkZv cm1TZXQoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9DQo+ ID4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0Q29udGV4dChz ZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCA3MCwNCj4gc2VsZi5SVUxFX3ZmclN0YXRlbWVudFN1cHByZXNz SWZGb3JtU2V0KQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gODQ1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU3VwcHJlc3NJZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g ODQ2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODQ3DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NDgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZm ckZvcm1TZXRMaXN0KGxvY2FsY3R4Lk5vZGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDg0OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkVuZElmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NTANCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgR3VpZFN1YkRlZmluaXRpb25Db250ZXh0KFBhcnNlclJ1 bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5n U3RhdGU6aW50PS0xLCBHdWlkPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5HdWlkID0gTm9u ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuR3VpZCA9IEd1aWQNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV9ndWlkU3ViRGVmaW5pdGlvbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEd1aWRTdWJEZWZpbml0aW9u IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEd1aWRT dWJEZWZpbml0aW9uKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgZ3VpZFN1YkRlZmluaXRpb24oc2VsZiwgR3VpZCk6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5HdWlkU3ViRGVmaW5pdGlvbkNv bnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIEd1aWQpDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNzIsIHNlbGYuUlVMRV9ndWlkU3ViRGVm aW5pdGlvbikNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDg1Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODUzDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg1NA0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gODU1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDg1Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODU3DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg1OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gODU5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg2MA0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODYxDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDg2Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g ODYzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg2NA0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gODY1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDg2Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBHdWlkRGVmaW5pdGlvbkNvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZy VHJlZU5vZGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuR3VpZCA9IEVGSV9HVUlEKCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuQnJhY2Uoc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk9wZW5C cmFjZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNlLCBpKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25l KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBDbG9zZUJyYWNlKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNlKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNlLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIGd1aWRTdWJEZWZpbml0aW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu R3VpZFN1YkRlZmluaXRpb25Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9ndWlkRGVmaW5pdGlvbg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dEd1aWREZWZpbml0aW9uIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdEd1aWREZWZpbml0aW9uKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxz ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgZ3VpZERlZmluaXRpb24oc2VsZik6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNv bnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNzQsIHNlbGYuUlVMRV9ndWlkRGVmaW5pdGlvbikN Cj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDg2OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9w ZW5CcmFjZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODY5DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NzANCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gODcxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NzIN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODczDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA4NzQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gODgwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNlXToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg3NQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2UpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NzYNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5ndWlkU3ViRGVmaW5pdGlvbihsb2NhbGN0eC5HdWlkKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODc3DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2UpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtW ZnJTeW50YXhQYXJzZXIuTnVtYmVyXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDg3OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmd1aWRTdWJEZWZpbml0 aW9uKGxvY2FsY3R4Lkd1aWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByYWlzZSBO b1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA4ODINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5DbG9zZUJyYWNlKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxv Y2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIEdldFN0 cmluZ0lkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LlN0cmluZ0lkID0gJycNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdU b2tlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl biwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2dl dFN0cmluZ0lkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0R2V0U3RyaW5nSWQiICk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0R2V0U3RyaW5nSWQoc2VsZikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBnZXRTdHJpbmdJZChzZWxmKToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkdldFN0 cmluZ0lkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNzYsIHNlbGYuUlVMRV9nZXRTdHJpbmdJ ZCkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDg4NA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4ODUNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4p DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg4Ng0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gODg3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBW ZnJRdWVzdGlvbkhlYWRlckNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNl clJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIE9wT2JqPU5vbmUs IFFUeXBlPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy ZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0g cGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5PcE9iaiA9IE5vbmUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLlFUeXBlID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuT3BPYmogPSBPcE9iag0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuUVR5cGUgPSBRVHlw ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclF1ZXN0aW9uQmFzZUluZm8o c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkJhc2VJbmZvQ29udGV4dCwwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dEhlYWRlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEhlYWRlckNvbnRl eHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRS dWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBh cnNlci5SVUxFX3ZmclF1ZXN0aW9uSGVhZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyUXVlc3Rpb25IZWFkZXIi ICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyUXVl c3Rpb25IZWFkZXIoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiB2ZnJRdWVzdGlvbkhlYWRlcihzZWxmLCBPcE9iaiwgUVR5cGUpOg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25I ZWFkZXJDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlLCBPcE9iaiwgUVR5 cGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNzgsIHNlbGYu UlVMRV92ZnJRdWVzdGlvbkhlYWRlcikNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg4OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu dmZyUXVlc3Rpb25CYXNlSW5mbyhPcE9iaiwgUVR5cGUpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDg5MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50 SGVhZGVyKE9wT2JqKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclF1ZXN0aW9uQmFzZUlu Zm9Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBPcE9iaj1Ob25lLCBRVHlwZT1Ob25lKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdT dGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5RVHlwZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkJhc2VJbmZvID0g RUZJX1ZBUlNUT1JFX0lORk8oKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuUUlkID0gRUZJ X1FVRVNUSU9OX0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkNoZWNrRmxh ZyA9IFRydWUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlFOID0gTm9uZSAjIFRva2VuDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5JRCA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuT3BPYmogPSBPcE9iag0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu UVR5cGUgPSBRVHlwZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE5hbWUoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk5hbWUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEo c2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwg aSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBWYXJJZChzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVmFy SWQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RvcmFnZVZhcklk KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RvcmFnZVZhcklkQ29udGV4dCwwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFF1ZXN0aW9uSWQoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlF1ZXN0aW9uSWQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg U3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclF1ZXN0aW9u QmFzZUluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRWZnJRdWVzdGlvbkJhc2VJbmZvIiApOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclF1ZXN0aW9uQmFzZUluZm8oc2Vs ZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJRdWVzdGlv bkJhc2VJbmZvKHNlbGYsIE9wT2JqLCBRVHlwZSk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkJhc2VJbmZvQ29udGV4 dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSwgT3BPYmosIFFUeXBlKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDgwLCBzZWxmLlJVTEVfdmZyUXVl c3Rpb25CYXNlSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5 cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDg5Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuTmFtZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg5Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OYW1lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gODkzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA4OTQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguUU4gPSBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gODk1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MDMNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBf bGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZy U3ludGF4UGFyc2VyLlZhcklkOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gODk4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlZhcklkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODk5DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MDANCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi52ZnJTdG9yYWdlVmFySWQobG9jYWxjdHguQmFzZUluZm8sIGxv Y2FsY3R4LkNoZWNrRmxhZykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDkwMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Db21tYSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gOTA5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5RdWVzdGlvbklk Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTA1DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uSWQpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MDYNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkwNw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBsb2NhbGN0eC5JRCA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkwOA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRIZWFkZXJDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0K PiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBPcE9iaj1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuT3BPYmogPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5PcE9iaiA9IE9wT2Jq DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgUHJvbXB0KHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Qcm9t cHQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2Vs ZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFy c2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJp bmdUb2tlbiwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4o c2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3Bl blBhcmVuLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxm LCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJz ZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmLCBpOmlu dD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xv c2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwg aSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29t bWEsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgSGVscChzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu SGVscCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X3ZmclN0YXRlbWVudEhlYWRlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFj Y2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEhlYWRlciIgKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRI ZWFkZXIoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2 ZnJTdGF0ZW1lbnRIZWFkZXIoc2VsZiwgT3BPYmopOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SGVhZGVyQ29udGV4 dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSwgT3BPYmopDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgODIsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRI ZWFkZXIpDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA5MTENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Qcm9tcHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkxMg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkxMw0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA5MTQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDkxNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTE2DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTE3DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDkxOA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkhlbHApDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDkxOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRf XzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkyMA0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MjENCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDkyMg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g OTIzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xv c2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBRdWVzdGlvbmhlYWRlckZsYWdzRmll bGRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuUUhG bGFnID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTyA9IE5vbmUgIyBUb2tlbg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuTCA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIFJlYWRPbmx5RmxhZyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmVhZE9ubHlGbGFnLCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEludGVyYWN0aXZlRmxhZyhzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSW50ZXJh Y3RpdmVGbGFnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFJlc2V0UmVx dWlyZWRGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZywgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBSZXN0U3R5bGVGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SZXN0U3R5bGVGbGFn LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFJlY29ubmVjdFJlcXVpcmVk RmxhZyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIE9wdGlvbk9ubHlGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcHRpb25Pbmx5Rmxh ZywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOVkFjY2Vzc0ZsYWcoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk5WQWNjZXNzRmxhZywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBMYXRlQ2hlY2tGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnLCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfcXVlc3Rpb25oZWFkZXJGbGFnc0Zp ZWxkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0UXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkIiApOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVs ZChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHF1ZXN0 aW9uaGVhZGVyRmxhZ3NGaWVsZChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZENvbnRl eHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgODQsIHNlbGYuUlVMRV9xdWVzdGlvbmhlYWRlckZsYWdz RmllbGQpDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDkzMw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlJlYWRP bmx5RmxhZ106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkyNQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SZWFk T25seUZsYWcpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFnXToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAy KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTI2DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxh ZykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZ106DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkyNw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZykN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZXN0U3R5bGVGbGFnXToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA0KQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTI4DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlJlc3RTdHlsZUZsYWcpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnXToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA1KQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTI5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZykNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PcHRpb25Pbmx5RmxhZ106DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNikNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkzMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBs b2NhbGN0eC5PID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3B0aW9uT25seUZsYWcpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTlZBY2Nlc3NGbGFnXToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA3KQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTMxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWcpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZ106DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgOCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkzMg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBsb2NhbGN0eC5MID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZykN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9u KHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25F eGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9u ID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9y KHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zl cihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RvcmFnZVZh cklkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgQmFzZUluZm89Tm9uZSwgQ2hlY2tGbGFn PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBp bnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2Vy DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5CYXNlSW5mbyA9IE5vbmUNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLkNoZWNrRmxhZyA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLlZhcklkU3RyID0gJycNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkJhc2VJbmZvID0g QmFzZUluZm8NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkNoZWNrRmxhZyA9IENoZWNrRmxh Zw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2Vy LlJVTEVfdmZyU3RvcmFnZVZhcklkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgY29weUZyb20oc2VsZiwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzdXBlcigpLmNvcHlGcm9tKGN0eCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLkJhc2VJbmZvID0gY3R4LkJhc2VJbmZvDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5DaGVja0ZsYWcgPSBjdHguQ2hlY2tGbGFnDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5WYXJJZFN0ciA9IGN0eC5WYXJJZFN0cg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdG9yYWdlVmFySWRSdWxlMUNvbnRleHQoVmZy U3RvcmFnZVZhcklkQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5 IGENCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RvcmFnZVZhcklkQ29udGV4dA0KPiA+DQo+ID4g KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuU04xID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5J ID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5jb3B5RnJvbShjdHgp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlbkJyYWNrZXQoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk9wZW5CcmFja2V0LCAwKQ0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlQnJhY2tldChzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50 aWZpZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQo+ID4NCj4gPiArICAgICAgICBk ZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RvcmFnZVZhcklk UnVsZTEiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 VmZyU3RvcmFnZVZhcklkUnVsZTEoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0b3Jh Z2VWYXJJZFJ1bGUyQ29udGV4dChWZnJTdG9yYWdlVmFySWRDb250ZXh0KToNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJS dWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYQ0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJTdG9yYWdl VmFySWRDb250ZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJz ZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5TTjIgPSBOb25lICMgVG9rZW4NCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVy LCAwKQ0KPiA+DQo+ID4gKyAgICAgICAgZGVmIERvdChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuRG90KQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5Eb3QsIGkpDQo+ID4NCj4gPiArICAgICAgICBkZWYgYXJy YXlOYW1lKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuQXJyYXlOYW1lQ29udGV4dCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4g PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkFycmF5TmFtZUNvbnRl eHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdG9yYWdlVmFySWRSdWxlMiIgKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdG9yYWdlVmFy SWRSdWxlMihzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0b3JhZ2VW YXJJZChzZWxmLCBCYXNlSW5mbywgQ2hlY2tGbGFnKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0b3JhZ2VWYXJJZENvbnRleHQo c2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIEJhc2VJbmZvLCBDaGVja0ZsYWcpDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgODYsIHNlbGYuUlVMRV92 ZnJTdG9yYWdlVmFySWQpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0 eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDk0Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVBy ZWRpY3Qoc2VsZi5faW5wdXQsNTQsc2VsZi5fY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IGxhXyA9PSAxOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRh eFBhcnNlci5WZnJTdG9yYWdlVmFySWRSdWxlMUNvbnRleHQoc2VsZiwNCj4gPiBsb2NhbGN0eCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTM1DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGxvY2FsY3R4LlNOMSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlN0cmluZ0lkZW50aWZpZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA5MzYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuT3BlbkJyYWNrZXQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5 MzcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguSSA9IHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDkzOA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5DbG9zZUJyYWNrZXQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIGxhXyA9PSAyOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdG9yYWdlVmFySWRS dWxlMkNvbnRleHQoc2VsZiwNCj4gPiBsb2NhbGN0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gOTM5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4 LlNOMiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NDQNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkRvdDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA5NDANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRvdCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA5NDENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYu YXJyYXlOYW1lKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5 NDYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEo MSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmckNvbnN0YW50VmFsdWVG aWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5W YWx1ZSA9IEVGSV9JRlJfVFlQRV9WQUxVRSgpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5W YWx1ZUxpc3QgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTGlzdFR5cGUgPSBGYWxz ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1O b25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTmVnYXRpdmUoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5lZ2F0aXZlLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFRydWVTeW1ib2woc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlRydWVTeW1ib2wsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRmFsc2VT eW1ib2woc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkZhbHNlU3ltYm9sLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIE9uZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT25lLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIE9uZXMoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9uZXMsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgWmVybyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuWmVybywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBDb2xvbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNvbG9uLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IFNsYXNoKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5TbGFzaCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu U2xhc2gsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNl bGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWlj b2xvbiwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBndWlkRGVmaW5pdGlv bihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCwwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TdHJpbmdUb2tlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBPcGVuUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5CcmFjZShzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNl LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlQnJhY2Uoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNsb3NlQnJhY2UsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29t bWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21t YSwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Zm ckNvbnN0YW50VmFsdWVGaWVsZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFj Y2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckNvbnN0YW50VmFsdWVGaWVsZCIgKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJDb25zdGFu dFZhbHVlRmllbGQoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiB2ZnJDb25zdGFudFZhbHVlRmllbGQoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJDb25zdGFudFZhbHVlRmllbGRD b250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDg4LCBzZWxmLlJVTEVfdmZyQ29uc3RhbnRW YWx1ZUZpZWxkKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0K PiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA5OTMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0 KHNlbGYuX2lucHV0LDU3LHNlbGYuX2N0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBsYV8g PT0gMToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTUwDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5OZWdhdGl2ZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NDkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk5lZ2F0aXZlKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g OTUyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsaWYgbGFfID09IDI6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDk1Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5UcnVlU3ltYm9sKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBwYXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBsYV8gPT0gMzoN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAz KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTU0DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZhbHNlU3ltYm9sKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxpZiBsYV8gPT0gNDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCA0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gOTU1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk9uZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgbGFfID09IDU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk1Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PbmVzKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBwYXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBsYV8gPT0gNjoN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA2 KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTU3DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlplcm8pDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbGlmIGxhXyA9PSA3Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDcpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA5NTgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTU5DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbG9u KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTYwDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk2MQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db2xvbikNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk2Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIGxhXyA9PSA4 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NjMNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTY0DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNsYXNoKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTY1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDk2Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5TbGFzaCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDk2Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIGxhXyA9PSA5Og0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDkpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NjgNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gOTY5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDk3MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA5NzENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gOTcyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24oKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTczDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk3NA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk3NQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NzYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gOTc3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIGxhXyA9PSAxMDoN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx MCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk3OQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk4MA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5ODENCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTgyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIGxh XyA9PSAxMToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAxMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk4Mw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVu QnJhY2UpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5ODQNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTg5DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5Db21tYToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5ODUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk4Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk5MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gOTkyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2UpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBj bGFzcyBWZnJJbWFnZVRhZ0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNl clJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9JTUFHRV9PUCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBJbWFnZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSW1hZ2UsIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFy ZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJl bihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX3ZmckltYWdlVGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZySW1hZ2VUYWciICk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZySW1hZ2VU YWcoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJJ bWFnZVRhZyhzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLlZmckltYWdlVGFnQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4g c2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA5 MCwgc2VsZi5SVUxFX3ZmckltYWdlVGFnKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTk1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSW1hZ2UpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDk5Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk5Nw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzYpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk5OA0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gOTk5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMDAwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJMb2NrZWRUYWdDb250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+ IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRy ZWVOb2RlKEVGSV9JRlJfTE9DS0VEX09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIExvY2tlZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTG9ja2VkLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyTG9ja2VkVGFnDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyTG9ja2Vk VGFnIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm ckxvY2tlZFRhZyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIHZmckxvY2tlZFRhZyhzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxv Y2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckxvY2tlZFRhZ0NvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgOTIsIHNlbGYuUlVMRV92ZnJMb2NrZWRUYWcpDQo+ID4NCj4gPiArICAgICAgICB0 cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDAyDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTG9ja2VkKQ0KPiA+DQo+ID4gKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBm aW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGNsYXNzIFZmclN0YXRlbWVudFN0YXRUYWdDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0 KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50 PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiB2ZnJJbWFnZVRhZyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm ckltYWdlVGFnQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIHZmckxvY2tlZFRhZyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckxvY2tl ZFRhZ0NvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN0YXRUYWcNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0 ZW1lbnRTdGF0VGFnIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdFZmclN0YXRlbWVudFN0YXRUYWcoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0VGFnKHNlbGYpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50U3RhdFRhZ0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgOTQsIHNlbGYuUlVMRV92ZnJT dGF0ZW1lbnRTdGF0VGFnKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMDA2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuSW1hZ2VdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MDA0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZySW1hZ2VUYWcoKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLkxvY2tlZF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDEwMDUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJM b2NrZWRUYWcoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVB bHRFeGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBW ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50 OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIE5vZGU9 Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5Ob2RlID0gTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudFN0YXRUYWcoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4g PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRT dGF0VGFnQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRUYWdDb250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN0YXRUYWdMaXN0DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0VmZyU3RhdGVtZW50U3RhdFRhZ0xpc3QiICk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50U3RhdFRhZ0xpc3Qoc2VsZikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRT dGF0VGFnTGlzdChzZWxmLCBOb2RlKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxv Y2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRUYWdMaXN0Q29udGV4dChz ZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgTm9kZSkNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA5Niwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFN0YXRU YWdMaXN0KQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTAwOA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3Rh dFRhZygpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMTMNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAg ICAgICAgICBfYWx0ID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw1 OSxzZWxmLl9jdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUgX2FsdCE9MiBhbmQgX2Fs dCE9QVROLklOVkFMSURfQUxUX05VTUJFUjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYg X2FsdD09MToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDA5 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDEw DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0YXRUYWco KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAxNQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgX2FsdCA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5f aW5wdXQsNTksc2VsZi5fY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2Fs Y3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNz IFZmckZvcm1EZWZpbml0aW9uQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFy c2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX0ZPUk1fT1ApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRm9ybShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRm9ybSwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBGb3JtSWQoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZvcm1JZCwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9u ZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBUaXRsZShzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVGl0bGUsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0 cmluZ1Rva2VuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJl bihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBFbmRGb3JtKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRGb3JtLCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmckZvcm0oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5W ZnJGb3JtQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmckZvcm1Db250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJGb3JtRGVmaW5pdGlvbg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdFZmckZvcm1EZWZpbml0aW9uIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdFZmckZvcm1EZWZpbml0aW9uKHNlbGYpDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyRm9ybURlZmluaXRpb24oc2VsZik6DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJG b3JtRGVmaW5pdGlvbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgOTgsIHNlbGYuUlVMRV92 ZnJGb3JtRGVmaW5pdGlvbikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2Vu IHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEwMTYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Gb3JtKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDE3DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRm9ybUlkKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDE4DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTAxOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTAyMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDIxDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGl0bGUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMjINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMDIzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEw MjQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVu UGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMjUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMjYNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMDI3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMDMxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0K PiA+ICsgICAgICAgICAgICB3aGlsZSAoKCgoX2xhIC0gNDYpKSAmIH4weDNmKSA9PSAwIGFuZCAo KDEgPDwgKF9sYSAtIDQ2KSkgJiAoKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLk9uZU9mIC0g NDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuT3JkZXJlZExpc3QgLSA0NikpIHwNCj4gPiAo MSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuVGV4dCAtIDQ2KSkgfA0KPiAoMQ0KPiA+IDw8IChWZnJTeW50YXhQYXJzZXIuRGF0ZSAt IDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlRpbWUgLSA0NikpIHwgKDEgPDwNCj4gPiAo VmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy LkxhYmVsIC0gNDYpKSB8ICgxDQo+IDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5JbnZlbnRvcnkg LSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5DaGVja0JveCAtIDQ2KSkNCj4gfA0KPiA+ ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTnVtZXJpYyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4 UGFyc2VyLkRlZmF1bHQgLSA0NikpDQo+ID4gfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlBhc3N3 b3JkIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3RyaW5nIC0NCj4gNDYpKQ0KPiA+ IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmIC0gNDYpKSB8ICgxIDw8DQo+IChW ZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlmIC0NCj4gPiA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBh cnNlci5IaWRkZW4gLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5Hb3RvIC0NCj4gPiA0 NikpKSkgIT0gMCkgb3IgKCgoKF9sYSAtIDExMCkpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAo X2xhIC0gMTEwKSkgJiAoKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLkluY29uc2lzdGVudElm IC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlJlc3RvcmUgLQ0KPiA+IDExMCkpIHwg KDEgPDwgKFZmclN5bnRheFBhcnNlci5TYXZlIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFy c2VyLkJhbm5lcg0KPiAtDQo+ID4gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkltYWdl IC0gMTEwKSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLkxvY2tlZA0KPiA+IC0gMTEwKSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlJ1bGUgLSAxMTApKSB8ICgxIDw8DQo+ID4gKFZmclN5 bnRheFBhcnNlci5SZXNldEJ1dHRvbiAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5B Y3Rpb24gLSAxMTApKQ0KPiA+IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3AgLSAxMTAp KSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTW9kYWwgLQ0KPiA+IDExMCkpKSkgIT0gMCkgb3Ig X2xhPT1WZnJTeW50YXhQYXJzZXIuUmVmcmVzaEd1aWQ6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMDI4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZy Rm9ybSgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDMzDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDM0DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kRm9ybSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTAzNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBW ZnJGb3JtQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lk5vZGUgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVt ZW50SW1hZ2Uoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbWFnZUNvbnRl eHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJT dGF0ZW1lbnRMb2NrZWQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRMb2Nr ZWRDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgdmZyU3RhdGVtZW50UnVsZXMoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu DQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRSdWxlc0NvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiB2ZnJTdGF0ZW1lbnREZWZhdWx0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50RGVmYXVsdENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50U3RhdENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbnNDb250ZXh0LA0KPiA+IDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50Q29u ZGl0aW9uYWwoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRDb25kaXRp b25hbENvbnRleHQNCj4gPiAsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRMYWJlbChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudExhYmVsQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEJhbm5lcihzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudEJhbm5lckNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbnZhbGlkKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW52YWxpZENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHRlbnNpb24oc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHRlbnNpb25Db250ZXh0LA0K PiA+IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZy U3RhdGVtZW50TW9kYWwoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRNb2Rh bENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiB2ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnRDb250DQo+ID4gZXh0LDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29s b24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92 ZnJGb3JtDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0 ciggdmlzaXRvciwgInZpc2l0VmZyRm9ybSIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRWZnJGb3JtKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGls ZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyRm9ybShzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckZvcm1Db250ZXh0KHNlbGYs IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCAxMDAsIHNlbGYuUlVMRV92ZnJGb3JtKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA1Mg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLkltYWdlXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEwMzcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0 ZW1lbnRJbWFnZSgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTG9ja2VkXToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMzgNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRMb2NrZWQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLlJ1bGVdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAz OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFJ1bGVzKCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EZWZhdWx0XToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDEwNDANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52 ZnJTdGF0ZW1lbnREZWZhdWx0KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5TdWJ0aXRs ZSwgVmZyU3ludGF4UGFyc2VyLlRleHQsDQo+ID4gVmZyU3ludGF4UGFyc2VyLkdvdG8sIFZmclN5 bnRheFBhcnNlci5SZXNldEJ1dHRvbl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMDQxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50 U3RhdCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuT25lT2YsIFZmclN5bnRheFBhcnNl ci5PcmRlcmVkTGlzdCwNCj4gPiBWZnJTeW50YXhQYXJzZXIuRGF0ZSwgVmZyU3ludGF4UGFyc2Vy LlRpbWUsIFZmclN5bnRheFBhcnNlci5DaGVja0JveCwNCj4gPiBWZnJTeW50YXhQYXJzZXIuTnVt ZXJpYywgVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkLA0KPiBWZnJTeW50YXhQYXJzZXIuU3RyaW5n LA0KPiA+IFZmclN5bnRheFBhcnNlci5BY3Rpb25dOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTA0Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudFF1ZXN0aW9ucygpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JheU91dElm LA0KPiBWZnJTeW50YXhQYXJzZXIuU3VwcHJlc3NJZiwNCj4gPiBWZnJTeW50YXhQYXJzZXIuRGlz YWJsZUlmLCBWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWZdOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA0Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnZmclN0YXRlbWVudENvbmRpdGlvbmFsKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5MYWJlbF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDQ0DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50TGFiZWwoKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLkJhbm5lcl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMDQ1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3Rh dGVtZW50QmFubmVyKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbnZlbnRvcnksIFZm clN5bnRheFBhcnNlci5IaWRkZW4sDQo+ID4gVmZyU3ludGF4UGFyc2VyLlJlc3RvcmUsIFZmclN5 bnRheFBhcnNlci5TYXZlXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEwNDYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRJbnZhbGlk KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5HdWlkT3BdOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA0Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnZmclN0YXRlbWVudEV4dGVuc2lvbigpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBh c3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu TW9kYWxdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA0OA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudE1vZGFsKCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5SZWZyZXNoR3VpZF06DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMDQ5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZy U3RhdGVtZW50UmVmcmVzaEV2ZW50KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEwNTANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4N Cj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmFpc2Ug Tm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxs eToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBjbGFzcyBWZnJGb3JtTWFwRGVmaW5pdGlvbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9GT1JNX01B UF9PUCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlMxID0gTm9uZSAjIFRva2VuDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRm9ybU1hcChzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRm9ybU1hcCwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBGb3JtSWQoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZv cm1JZCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQ29tbWEsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRW5kRm9ybShz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuRW5kRm9ybSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBT ZW1pY29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51 bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJT eW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5O dW1iZXIsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTWFwVGl0bGUoc2Vs ZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFy c2VyLk1hcFRpdGxlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NYXBUaXRs ZSwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxm LCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJz ZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmlu Z1Rva2VuLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihz ZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVu UGFyZW4sIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihz ZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQ YXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xv c2VQYXJlbiwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBNYXBHdWlkKHNl bGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5NYXBHdWlkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NYXBHdWlk LCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGd1aWREZWZpbml0aW9uKHNl bGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0cyhWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0KQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250 ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZy Rm9ybShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmckZvcm1Db250ZXh0KQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRm9ybUNvbnRleHQsaSkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5k ZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX3ZmckZvcm1NYXBEZWZpbml0aW9uDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRm9ybU1hcERlZmluaXRpb24i ICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyRm9y bU1hcERlZmluaXRpb24oc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiB2ZnJGb3JtTWFwRGVmaW5pdGlvbihzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckZvcm1NYXBEZWZpbml0aW9u Q29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxMDIsIHNlbGYuUlVMRV92ZnJGb3JtTWFw RGVmaW5pdGlvbikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUN Cj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEwNTQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5G b3JtTWFwKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDU1DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRm9ybUlkKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDU2DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTA1Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LlMxID0gc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMDU4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNzMN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLk1hcFRpdGxlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA1OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NYXBUaXRsZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNjANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEwNjENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMDYyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEwNjMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTA2NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA2 NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T ZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDY2DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk1hcEd1 aWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDY3DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDY4DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24oKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTA2OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMDc1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MDc5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICB3aGlsZSAoKCgoX2xhIC0gNDYpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwg KF9sYSAtIDQ2KSkgJiAoKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLk9uZU9mIC0gNDYpKSB8 ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuT3JkZXJlZExpc3QgLSA0NikpIHwNCj4gPiAoMSA8PCAo VmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIu VGV4dCAtIDQ2KSkgfA0KPiAoMQ0KPiA+IDw8IChWZnJTeW50YXhQYXJzZXIuRGF0ZSAtIDQ2KSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlRpbWUgLSA0NikpIHwgKDEgPDwNCj4gPiAoVmZyU3lu dGF4UGFyc2VyLkdyYXlPdXRJZiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkxhYmVs IC0gNDYpKSB8ICgxDQo+IDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5JbnZlbnRvcnkgLSA0Nikp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5DaGVja0JveCAtIDQ2KSkNCj4gfA0KPiA+ICgxIDw8 IChWZnJTeW50YXhQYXJzZXIuTnVtZXJpYyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy LkRlZmF1bHQgLSA0NikpDQo+ID4gfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkIC0g NDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3RyaW5nIC0NCj4gNDYpKQ0KPiA+IHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmIC0gNDYpKSB8ICgxIDw8DQo+IChWZnJTeW50 YXhQYXJzZXIuRGlzYWJsZUlmIC0NCj4gPiA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5I aWRkZW4gLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5Hb3RvIC0NCj4gPiA0NikpKSkg IT0gMCkgb3IgKCgoKF9sYSAtIDExMCkpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0g MTEwKSkgJiAoKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLkluY29uc2lzdGVudElmIC0gMTEw KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlJlc3RvcmUgLQ0KPiA+IDExMCkpIHwgKDEgPDwg KFZmclN5bnRheFBhcnNlci5TYXZlIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkJh bm5lcg0KPiAtDQo+ID4gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkltYWdlIC0gMTEw KSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLkxvY2tlZA0KPiA+IC0gMTEwKSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLlJ1bGUgLSAxMTApKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBh cnNlci5SZXNldEJ1dHRvbiAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5BY3Rpb24g LSAxMTApKQ0KPiA+IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3AgLSAxMTApKSB8ICgx IDw8IChWZnJTeW50YXhQYXJzZXIuTW9kYWwgLQ0KPiA+IDExMCkpKSkgIT0gMCkgb3IgX2xhPT1W ZnJTeW50YXhQYXJzZXIuUmVmcmVzaEd1aWQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMDc2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyRm9ybSgp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDgxDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDgyDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kRm9ybSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTA4Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2Nh bGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0 ZW1lbnRJbWFnZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5Ob2RlID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmcklt YWdlVGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZySW1hZ2VUYWdDb250ZXh0LDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50 YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRJbWFnZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudElt YWdlIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm clN0YXRlbWVudEltYWdlKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBkZWYgdmZyU3RhdGVtZW50SW1hZ2Uoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbWFnZUNvbnRl eHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTA0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50SW1hZ2Up DQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMDg1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJJbWFnZVRhZygpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwODYNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICBl eGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg Y2xhc3MgVmZyU3RhdGVtZW50TG9ja2VkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3Rh dGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgdmZyTG9ja2VkVGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy bg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyTG9ja2Vk VGFnQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50TG9ja2VkDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0VmZyU3RhdGVtZW50TG9ja2VkIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudExvY2tlZChzZWxmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudExvY2tlZChzZWxmKToNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudExvY2tlZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUp DQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTA2LCBzZWxmLlJV TEVfdmZyU3RhdGVtZW50TG9ja2VkKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA4OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu dmZyTG9ja2VkVGFnKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA4OQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xv bikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRSdWxlc0NvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52 b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5v ZGUoRUZJX0lGUl9SVUxFX09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFJ1 bGUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLlJ1bGUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg U3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0DQo+ ID4gLDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRW5k UnVsZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuRW5kUnVsZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFJ1bGVzDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0VmZyU3RhdGVtZW50UnVsZXMiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50UnVsZXMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRSdWxlcyhzZWxmKToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudFJ1bGVzQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxMDgsIHNlbGYuUlVMRV92 ZnJTdGF0ZW1lbnRSdWxlcykNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDEwOTENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5SdWxlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMDkyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA5 Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDk0DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTA5NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkVuZFJ1bGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEwOTYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYs IHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50U3RhdENv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUs DQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0g Tm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN1YlRp dGxlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3ViVGl0bGVDb250 ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZy U3RhdGVtZW50U3RhdGljVGV4dChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4N Cj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudFN0YXRpY1RleHRDb250ZXh0LA0KPiA+IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50Q3Jvc3NSZWZlcmVuY2Uoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZUNvDQo+ID4gbnRl eHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRS dWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBh cnNlci5SVUxFX3ZmclN0YXRlbWVudFN0YXQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRTdGF0IiAp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRl bWVudFN0YXQoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiB2ZnJTdGF0ZW1lbnRTdGF0KHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdENvbnRleHQoc2VsZiwg c2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVy UnVsZShsb2NhbGN0eCwgMTEwLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3RhdCkNCj4gPg0KPiA+ ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEwMQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlXToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA5OA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN1YlRpdGxlKCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5UZXh0XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTA5OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0YXRpY1Rl eHQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkdvdG8sIFZmclN5bnRheFBhcnNlci5S ZXNldEJ1dHRvbl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEx MDANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRDcm9zc1JlZmVy ZW5jZSgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4 Y2VwdGlvbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxv Y2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0 YXRlbWVudFN1YlRpdGxlQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2Vy UnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX1NVQlRJVExFX09QKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBDSWZyU3VidGl0bGUoKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIFN1YnRpdGxlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdWJ0aXRsZSwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBUZXh0KHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5UZXh0LCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5T dHJpbmdUb2tlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuUGFy ZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEVuZFN1YnRpdGxlKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5FbmRTdWJ0aXRsZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21t YShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1h LCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5G TEFHUywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdWJ0aXRsZUZs YWdzKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3VidGl0bGVGbGFnc0NvbnRleHQsMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1l bnRTdGF0VGFnTGlzdChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0K PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0 YXRUYWdMaXN0Q29udGV4dCwNCj4gPiAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN1YlRpdGxlQ29tcG9uZW50KHNlbGYsIGk6aW50 PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lDQo+ID4gbnRDb250ZXh0 KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbg0KPiA+IHRDb250ZXh0LGkpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0 ZW1lbnRTdWJUaXRsZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChz ZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFN1YlRpdGxlIiApOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFN1YlRp dGxlKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZy U3RhdGVtZW50U3ViVGl0bGUoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbnRleHQoc2Vs ZiwNCj4gc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgMTEyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3ViVGl0bGUp DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiAr ICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTAzDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3VidGl0bGUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMDQNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMTA1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTEwNg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0 cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTA3DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTA4DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMTA5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTExNA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2 ZVByZWRpY3Qoc2VsZi5faW5wdXQsNjUsc2VsZi5fY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIGxhXyA9PSAxOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEx MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMTENCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTEyDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTEzDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYudmZyU3VidGl0bGVGbGFncygpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMzYNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBsYV8g PSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDcwLHNlbGYuX2N0eCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDExMTgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3lu dGF4UGFyc2VyLkNvbW1hOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDExMTYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDExMTcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50 U3RhdFRhZ0xpc3QobG9jYWxjdHguTm9kZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMjANCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxpZiBsYV8gPT0gMjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEx MjMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVBy ZWRpY3Qoc2VsZi5faW5wdXQsNjcsc2VsZi5fY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBpZiBsYV8gPT0gMToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMTIxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMTIyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0 YXRUYWdMaXN0KGxvY2FsY3R4Lk5vZGUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTMyDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBp ZiBfbGE9PVZmclN5bnRheFBhcnNlci5Db21tYToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMTI1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMTI5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICB3aGls ZSAoKCgoX2xhIC0gNDYpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDQ2KSkgJiAo KDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLk9uZU9mIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuT3JkZXJlZExpc3QgLSA0NikpIHwNCj4gPiAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy LlN1YnRpdGxlIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVGV4dCAtIDQ2KSkgfA0K PiAoMQ0KPiA+IDw8IChWZnJTeW50YXhQYXJzZXIuRGF0ZSAtIDQ2KSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLlRpbWUgLSA0NikpIHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLkNoZWNr Qm94IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTnVtZXJpYyAtIDQ2KSkgfA0KPiAo MQ0KPiA+IDw8IChWZnJTeW50YXhQYXJzZXIuUGFzc3dvcmQgLSA0NikpIHwgKDEgPDwgKFZmclN5 bnRheFBhcnNlci5TdHJpbmcgLSA0NikpIHwNCj4gPiAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkdv dG8gLSA0NikpKSkgIT0gMCkgb3INCj4gPiBfbGE9PVZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRv biBvciBfbGE9PVZmclN5bnRheFBhcnNlci5BY3Rpb246DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMjYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN1YlRpdGxlQ29tcG9uZW50KCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEzMQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMTM0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkVuZFN1YnRpdGxlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTEzNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1l bnRTdWJUaXRsZUNvbXBvbmVudENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIHZmclN0YXRlbWVudFN0YXQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu DQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRTdGF0Q29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9ucyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudFF1ZXN0aW9uc0NvbnRleHQsDQo+ID4gMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN1 YlRpdGxlQ29tcG9uZW50DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQi ICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3Rh dGVtZW50U3ViVGl0bGVDb21wb25lbnQoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudChzZWxmKToNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0NCj4gPiBWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwN Cj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxj dHgsIDExNCwNCj4gPiBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQpDQo+ ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDExNDANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5TdWJ0aXRsZSwgVmZy U3ludGF4UGFyc2VyLlRleHQsDQo+ID4gVmZyU3ludGF4UGFyc2VyLkdvdG8sIFZmclN5bnRheFBh cnNlci5SZXNldEJ1dHRvbl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDExMzgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0 KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PbmVPZiwgVmZyU3ludGF4UGFyc2VyLk9y ZGVyZWRMaXN0LA0KPiA+IFZmclN5bnRheFBhcnNlci5EYXRlLCBWZnJTeW50YXhQYXJzZXIuVGlt ZSwgVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94LA0KPiA+IFZmclN5bnRheFBhcnNlci5OdW1lcmlj LCBWZnJTeW50YXhQYXJzZXIuUGFzc3dvcmQsDQo+IFZmclN5bnRheFBhcnNlci5TdHJpbmcsDQo+ ID4gVmZyU3ludGF4UGFyc2VyLkFjdGlvbl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDExMzkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0 ZW1lbnRRdWVzdGlvbnMoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9W aWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBj bGFzcyBWZnJTdWJ0aXRsZUZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLlN1YkZsYWdzID0gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIHN1YnRpdGxlRmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy bg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxl RmxhZ3NGaWVsZENvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5TdWJ0aXRsZUZsYWdzRmllbGRDb250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5v bmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNl T3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN1YnRpdGxl RmxhZ3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRWZnJTdWJ0aXRsZUZsYWdzIiApOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN1YnRpdGxlRmxhZ3Moc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdWJ0aXRsZUZsYWdzKHNl bGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuVmZyU3VidGl0bGVGbGFnc0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYu c3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTE2LCBz ZWxmLlJVTEVfdmZyU3VidGl0bGVGbGFncykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0g MCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDExNDINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN1YnRpdGxl RmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNDcNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNDMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTE0NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN1YnRpdGxlRmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMTQ5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgx KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFN1YnRpdGxlRmxhZ3NGaWVs ZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GbGFn ID0gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu TnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfc3VidGl0bGVGbGFnc0ZpZWxkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0U3VidGl0bGVGbGFnc0ZpZWxkIiApOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFN1YnRpdGxlRmxh Z3NGaWVsZChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IHN1YnRpdGxlRmxhZ3NGaWVsZChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlRmxhZ3NGaWVsZENvbnRleHQoc2Vs Ziwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMTE4LCBzZWxmLlJVTEVfc3VidGl0bGVGbGFnc0ZpZWxkKQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAg ICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE1MA0KPiA+DQo+ID4g KyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgbm90KF9sYT09VmZyU3ludGF4UGFyc2VyLlRfXzcgb3INCj4gX2xhPT1WZnJTeW50YXhQ YXJzZXIuTnVtYmVyKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVySW5saW5lKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQ0KPiA+DQo+ID4gKyAgICAg ICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5h bGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAg ICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGNsYXNzIFZmclN0YXRlbWVudFN0YXRpY1RleHRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0 KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50 PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfVEVY VF9PUCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlMxID0gTm9uZSAjIFRva2VuDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5TMiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuUzMgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LkYgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlM0ID0gTm9uZSAj IFRva2VuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVGV4dChzZWxmLCBpOmlu dD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuVGV4 dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVGV4dCwgaSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBIZWxwKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5IZWxwLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYsIGk6aW50PU5vbmUp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tl bikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIGkpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYsIGk6aW50PU5v bmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5PcGVuUGFy ZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgaSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6aW50PU5v bmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5DbG9zZVBh cmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCBpKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBzdGF0aWNUZXh0RmxhZ3NGaWVsZChzZWxmLCBpOmludD1O b25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3lu dGF4UGFyc2VyLlN0YXRpY1RleHRGbGFnc0ZpZWxkQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlN0YXRpY1RleHRGbGFnc0ZpZWxkQ29u dGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEtl eShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuS2V5LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZm clN0YXRlbWVudFN0YXRUYWdMaXN0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy bg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50U3RhdFRhZ0xpc3RDb250ZXh0LA0KPiA+IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRTdGF0 aWNUZXh0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0 ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3RhdGljVGV4dCIgKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdGF0aWNUZXh0 KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3Rh dGVtZW50U3RhdGljVGV4dChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxv Y2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRpY1RleHRDb250ZXh0KHNl bGYsDQo+ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDEyMCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFN0YXRpY1RleHQp DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiAr ICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTUyDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGV4dCkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE1Mw0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkhlbHApDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDExNTQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTU1 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5n VG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNTYNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNTcNCj4gPg0KPiA+ICsgICAgICAgICAg ICBsb2NhbGN0eC5TMSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE1OA0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDExNTkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTE2MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNjENCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTYyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDExNjMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDExNjQNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5TMiA9IHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTE2NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNzMNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lu cHV0LDczLHNlbGYuX2N0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNjYNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTY3DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRleHQpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMTY4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMTY5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTE3MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMTcxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LlMzID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTE3Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTkxDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgbGFfID0g c2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw3NSxzZWxmLl9jdHgpDQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMTc1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTE3Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5GID0gc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMTc3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMTc4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGljVGV4dEZsYWdz RmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE4Mw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNzkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTgwDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRpY1RleHRGbGFnc0ZpZWxkKCkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTg1DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTg2DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE4Nw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5LZXkpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMTg4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMTg5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LlM0ID0g c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTk1DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9 PVZmclN5bnRheFBhcnNlci5Db21tYToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDExOTMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MTk0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3RhdFRhZ0xp c3QobG9jYWxjdHguTm9kZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTE5Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBT dGF0aWNUZXh0RmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5GbGFnID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5v bmUgIyBUb2tlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHF1ZXN0 aW9uaGVhZGVyRmxhZ3NGaWVsZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4N Cj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9u aGVhZGVyRmxhZ3NGaWVsZENvbnRlDQo+ID4geHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3N0YXRpY1RleHRGbGFnc0ZpZWxk DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlz aXRvciwgInZpc2l0U3RhdGljVGV4dEZsYWdzRmllbGQiICk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0U3RhdGljVGV4dEZsYWdzRmllbGQoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBzdGF0aWNUZXh0RmxhZ3NG aWVsZChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLlN0YXRpY1RleHRGbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgs DQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCAxMjIsIHNlbGYuUlVMRV9zdGF0aWNUZXh0RmxhZ3NGaWVsZCkNCj4gPg0KPiA+ICsgICAg ICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIwMQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk51bWJlcl06DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExOTkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg bG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZsYWcsDQo+ID4gVmZyU3ludGF4UGFyc2Vy Lk5WQWNjZXNzRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnLA0KPiA+IFZm clN5bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcsIFZmclN5bnRheFBhcnNlci5MYXRl Q2hlY2tGbGFnLA0KPiA+IFZmclN5bnRheFBhcnNlci5SZWFkT25seUZsYWcsIFZmclN5bnRheFBh cnNlci5PcHRpb25Pbmx5RmxhZywNCj4gPiBWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZ106 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMDANCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRDcm9zc1Jl ZmVyZW5jZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250 ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5Ob2RlID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRl bWVudEdvdG8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRHb3RvQ29udGV4 dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0 YXRlbWVudFJlc2V0QnV0dG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0K PiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50UmVzZXRCdXR0b25Db250ZQ0KPiA+IHh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRDcm9zc1JlZmVy ZW5jZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNp dG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlIiApOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudENyb3NzUmVm ZXJlbmNlKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYg dmZyU3RhdGVtZW50Q3Jvc3NSZWZlcmVuY2Uoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRDcm9zc1JlZmVy ZW5jZUNvbnRleHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTI0LCBzZWxmLlJVTEVfdmZyU3RhdGVt ZW50Q3Jvc3NSZWZlcmVuY2UpDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMDUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYu X2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5Hb3RvXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTIwMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEdvdG8oKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlJlc2V0QnV0dG9uXToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIwNA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnZmclN0YXRlbWVudFJlc2V0QnV0dG9uKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50R290b0NvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0 ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lG Ul9SRUZfT1ApDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5PcE9iaiA9IE5vbmUNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLk9IT2JqID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX1JFRg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuUU4gPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBHb3RvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Hb3RvLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIHZmclF1ZXN0aW9uSGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu VmZyUXVlc3Rpb25IZWFkZXJDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgdmZyR290b0ZsYWdzKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyR290b0ZsYWdzQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIEtleShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuS2V5LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0DQo+ID4gQ29udGV4dCwwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIERldmljZVBhdGgo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkRldmljZVBhdGgsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgU3RyaW5nVG9rZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3Nl UGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRm9ybVNldEd1aWQo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkZvcm1TZXRHdWlkLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIGd1aWREZWZpbml0aW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0K PiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRp b25Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgRm9ybUlkKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5Gb3JtSWQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgUXVlc3Rpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50 aWZpZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVM RV92ZnJTdGF0ZW1lbnRHb3RvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNj ZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50R290byIgKToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRHb3Rv KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3Rh dGVtZW50R290byhzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdvdG9Db250ZXh0KHNlbGYsIHNlbGYuX2N0 eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDEyNiwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudEdvdG8pDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjA3DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuR290bykNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTI1NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEo MSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkRl dmljZVBhdGhdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIwOA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EZXZp Y2VQYXRoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIwOQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIxMA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMTENCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIxMg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjEzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjE0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTIxNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Gb3JtU2V0R3VpZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEyMTYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEyMTcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlvbigp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjE4DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIxOQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Gb3JtSWQpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjIwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMjIxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEyMjINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMjIzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlF1ZXN0aW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIy NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U X181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIyNQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjI2DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkZvcm1TZXRHdWlkXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDEyMjgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuRm9ybVNldEd1aWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMjI5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMjMwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24o KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIzMQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMzINCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRm9ybUlkKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIzMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTIzNA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMjM1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTIzNg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5RdWVzdGlvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEy MzcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMzgNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIzOQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5Gb3JtSWRdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTI0MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Gb3JtSWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMjQyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjQz DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNDQNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjQ1DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI0Ng0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI1MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgdG9r ZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXJdOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNDcNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIGxvY2FsY3R4LlFOID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRl bnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjQ4 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk51bWJlcl06DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI0OQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNTANCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVB bHRFeGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5OdW1iZXJdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI1Mw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjU0DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0 b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlByb21wdCwgVmZyU3ludGF4UGFyc2VyLk5hbWUsDQo+ ID4gVmZyU3ludGF4UGFyc2VyLlZhcklkLCBWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25JZF06DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEyNTcNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclF1ZXN0aW9u SGVhZGVyKGxvY2FsY3R4Lk9wT2JqLCBsb2NhbGN0eC5RVHlwZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTI2Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVy cC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsODEsc2VsZi5fY3R4KQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIGxhXyA9PSAxOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTI1OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEy NTkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu RkxBR1MpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjYwDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjYxDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYudmZyR290b0ZsYWdzKGxvY2FsY3R4Lk9wT2JqKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjY4DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9p bnB1dCw4MixzZWxmLl9jdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjY0DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI2NQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5LZXkpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMjY2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMjY3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI3Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJz ZXIuQ29tbWE6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjcwDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI3MQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChsb2Nh bGN0eC5Ob2RlKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMjc0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0 aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRF cnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2Fs Y3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmckdvdG9G bGFnc0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIE9iaj1Ob25lKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuT2JqID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuR290b0ZsYWdz ID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuT2JqID0gT2JqDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgZ290b0ZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNl ci5Hb3RvRmxhZ3NGaWVsZENvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5Hb3RvRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdp c2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyR290b0Zs YWdzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0VmZyR290b0ZsYWdzIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdFZmckdvdG9GbGFncyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmckdvdG9GbGFncyhzZWxmLCBPYmopOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZy R290b0ZsYWdzQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSwgT2JqKQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEyOCwgc2VsZi5SVUxF X3ZmckdvdG9GbGFncykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5 cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEyNzYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmdvdG9GbGFnc0ZpZWxkKCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI4MQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUgX2xhPT1W ZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTI3Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMjc4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZ290b0ZsYWdzRmllbGQo KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI4Mw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAg ICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g Pg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBjbGFzcyBHb3RvRmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRl eHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTpp bnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBp bnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2Vy DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GbGFnID0gMA0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIHF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZChzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZENvbnRlDQo+ID4geHQsMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2dvdG9G bGFnc0ZpZWxkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0R290b0ZsYWdzRmllbGQiICk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0R290b0ZsYWdzRmllbGQoc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBnb3RvRmxhZ3NGaWVsZChzZWxm KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLkdvdG9GbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0 ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxMzAsIHNlbGYu UlVMRV9nb3RvRmxhZ3NGaWVsZCkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI4Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2Vs Zi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLk51bWJlcl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEyODQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFz cw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5J bnRlcmFjdGl2ZUZsYWcsDQo+ID4gVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZywgVmZyU3lu dGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnLA0KPiA+IFZmclN5bnRheFBhcnNlci5SZWNvbm5l Y3RSZXF1aXJlZEZsYWcsIFZmclN5bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnLA0KPiA+IFZmclN5 bnRheFBhcnNlci5SZWFkT25seUZsYWcsIFZmclN5bnRheFBhcnNlci5PcHRpb25Pbmx5RmxhZywN Cj4gPiBWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZ106DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyODUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBw YXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAg ICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbkNvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdT dGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy ZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0g cGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJ X0lGUl9SRVNFVF9CVVRUT05fT1ApDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5PcE9iaiA9 IENJZnJSZXNldEJ1dHRvbigpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAj IFRva2VuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgUmVzZXRCdXR0b24oc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlJlc2V0QnV0dG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IERlZmF1bHRTdG9yZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGVmYXVsdFN0b3JlLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgdmZyU3RhdGVtZW50SGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50SGVhZGVyQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIEVuZFJlc2V0QnV0dG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRSZXNldEJ1dHRvbiwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNl bWljb2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVu dGlmaWVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0YXRUYWdMaXN0KHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdFRhZ0xpc3RDb250ZXh0LA0KPiA+IDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92 ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFJlc2V0QnV0dG9u IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0 YXRlbWVudFJlc2V0QnV0dG9uKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxm KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50UmVzZXRCdXR0b24oc2VsZik6DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRS ZXNldEJ1dHRvbkNvbnRleHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTMyLCBzZWxmLlJVTEVfdmZy U3RhdGVtZW50UmVzZXRCdXR0b24pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBU b2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMjg4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuUmVzZXRCdXR0b24pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEyODkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5E ZWZhdWx0U3RvcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyOTANCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjkxDQo+ID4NCj4gPiArICAgICAgICAg ICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZp ZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyOTINCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI5Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu dmZyU3RhdGVtZW50SGVhZGVyKGxvY2FsY3R4Lk9wT2JqKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMjk0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEy OTgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkltYWdlIG9yIF9sYT09VmZyU3ludGF4 UGFyc2VyLkxvY2tlZDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEy OTUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0VGFnTGlz dChsb2NhbGN0eC5Ob2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTI5Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Db21tYSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTMwMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkVuZFJlc2V0QnV0dG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMzAxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFF1ZXN0 aW9uc0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5O b2RlID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dEJvb2xlYW5UeXBlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Qm9v bGVhblR5cGVDb250ZQ0KPiA+IHh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RGF0ZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudERhdGVDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50TnVtZXJpY1R5cGUoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnROdW1lcmljVHlwZUNvbnQNCj4gPiBleHQsMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRT dHJpbmdUeXBlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RyaW5n VHlwZUNvbnRleHQsDQo+ID4gMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdChzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudE9yZGVyZWRMaXN0Q29udGV4DQo+ID4gdCwwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFRpbWUoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRUaW1lQ29udGV4dCwwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZy U3RhdGVtZW50UXVlc3Rpb25zDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNj ZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25zIiApOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVu dFF1ZXN0aW9ucyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9ucyhzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uc0Nv bnRleHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTM0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UXVl c3Rpb25zKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMzA5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuQ2hl Y2tCb3gsIFZmclN5bnRheFBhcnNlci5BY3Rpb25dOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMzAzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZy U3RhdGVtZW50Qm9vbGVhblR5cGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkRhdGVd Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzA0DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RGF0ZSgpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtW ZnJTeW50YXhQYXJzZXIuT25lT2YsIFZmclN5bnRheFBhcnNlci5OdW1lcmljXToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMwNQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnZmclN0YXRlbWVudE51bWVyaWNUeXBlKCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5QYXNzd29yZCwgVmZyU3ludGF4UGFyc2VyLlN0cmluZ106DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMDYNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdHJpbmdUeXBlKCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5PcmRlcmVkTGlzdF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEzMDcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRP cmRlcmVkTGlzdCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVGltZV06DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMDgNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRUaW1lKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50UXVlc3Rpb25UYWdDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9r aW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0VGFnKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdFRhZ0NvbnRleHQsMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29t bWEsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50SW5j b25zaXN0ZW50SWYoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbmNv bnNpc3RlbnRJZkNvbnQNCj4gPiBleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnROb1N1Ym1pdElmKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Tm9TdWJtaXRJZkNvbnRleA0KPiA+IHQsMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnREaXNh YmxlSWZRdWVzdChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERpc2Fi bGVJZlF1ZXN0Q29uDQo+ID4gdGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFJlZnJlc2goc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRSZWZyZXNoQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2VDb24N Cj4gPiB0ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgdmZyU3RhdGVtZW50RXh0ZW5zaW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50RXh0ZW5zaW9uQ29udGV4dCwNCj4gPiAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFJlZnJlc2hFdmVudChzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFJlZnJlc2hFdmVudENvbnQNCj4gPiBl eHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJT dGF0ZW1lbnRXYXJuaW5nSWYoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRXYXJuaW5nSWZDb250ZXh0LA0KPiA+IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBh cnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0 b3IsICJ2aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uVGFnIiApOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uVGFnKHNlbGYp DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50 UXVlc3Rpb25UYWcoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0NvbnRleHQoc2VsZiwN Cj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVy UnVsZShsb2NhbGN0eCwgMTM2LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25UYWcpDQo+ ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEzMjINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbWFnZSwgVmZyU3lu dGF4UGFyc2VyLkxvY2tlZF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEzMTENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0 VGFnKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMTINCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWZdOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzE0DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYudmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYoKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLk5vU3VibWl0SWZdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMzE1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50 Tm9TdWJtaXRJZigpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlmXToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA0KQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMxNg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0KCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5SZWZyZXNoXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA1KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTMxNw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudFJlZnJlc2goKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlZhcnN0b3JlRGV2 aWNlXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCA2KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMxOA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlKCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5HdWlkT3BdOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDcpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzE5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYudmZyU3RhdGVtZW50RXh0ZW5zaW9uKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFz cw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5S ZWZyZXNoR3VpZF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgOCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEz MjANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRSZWZyZXNoRXZl bnQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLldhcm5pbmdJZl06DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgOSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMjENCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRXYXJuaW5nSWYoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4g KyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZkNvbnRleHQo UGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4g aW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJl ZU5vZGUoRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUZfT1ApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgSW5jb25zaXN0ZW50SWYoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkluY29uc2lzdGVudElmLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFByb21wdChzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUHJvbXB0 LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5TdHJpbmdUb2tlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBP cGVuUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0DQo+ID4gLDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRW5kSWYoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkVuZElmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEZMQUdTKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5GTEFHUywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBmbGFnc0Zp ZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4 dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWlj b2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFZmclN0YXRlbWVudEluY29uc2lzdGVudElmIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEluY29uc2lzdGVudElmKHNlbGYpDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50SW5j b25zaXN0ZW50SWYoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZkNvbnRleHQoc2Vs ZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMTM4LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50 SWYpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4g PiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzI0DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0 ZW50SWYpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMjUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMjYNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMzI3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEzMjgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5P cGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMjkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMzANCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMzMxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEzNDQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdTOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMzMg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMzMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEzMzQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0Zp ZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMzkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzM1DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMzNg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzQxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzQyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzQ2DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTM0Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkVuZElmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMzQ5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQo+ID4NCj4gPiArICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGlj dChzZWxmLl9pbnB1dCw5MSxzZWxmLl9jdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgbGFf ID09IDE6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzQ4DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xv bikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBs b2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJT dGF0ZW1lbnROb1N1Ym1pdElmQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFy c2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX05PX1NVQk1JVF9JRl9PUCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOb1N1Ym1pdElmKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5O b1N1Ym1pdElmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFByb21wdChz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuUHJvbXB0LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0 cmluZ1Rva2VuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYs IGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNl ci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0 DQo+ID4gLDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg RW5kSWYoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkVuZElmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIEZMQUdTKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBmbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRl eHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5G bGFnc0ZpZWxkQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnROb1N1Ym1pdElm DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlz aXRvciwgInZpc2l0VmZyU3RhdGVtZW50Tm9TdWJtaXRJZiIgKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnROb1N1Ym1pdElmKHNlbGYp DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50 Tm9TdWJtaXRJZihzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE5vU3VibWl0SWZDb250ZXh0KHNlbGYsDQo+ ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1 bGUobG9jYWxjdHgsIDE0MCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudE5vU3VibWl0SWYpDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAg ICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzUxDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTm9TdWJtaXRJZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM1Mg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlByb21wdCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTM1Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEz NTQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJp bmdUb2tlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM1NQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM1Ng0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTM1Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEzNTgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM3MQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMzU5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTM2MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTM2MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM2Ng0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg d2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNjINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzYzDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEzNjgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0g c2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEzNjkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNzMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMzc0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuRW5kSWYpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNzYNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0 LDk0LHNlbGYuX2N0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNzUNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudERpc2Fi bGVJZlF1ZXN0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX0RJU0FCTEVfSUZfT1ApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgRGlzYWJsZUlmKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lv bihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250 ZXh0DQo+ID4gLDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgU2VtaWNvbG9uKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW5zKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxz ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QNCj4gPiBDb250ZXh0LDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRW5kSWYoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkVuZElmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfdmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3QNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnREaXNh YmxlSWZRdWVzdCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRWZnJTdGF0ZW1lbnREaXNhYmxlSWZRdWVzdChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0KHNlbGYp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3RDb250ZXh0KHNlbGYsDQo+ID4gc2VsZi5fY3R4 LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDE0Miwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0KQ0KPiA+DQo+ID4gKyAg ICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM3OA0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM3OQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEzODANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEzODENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9uT3B0 aW9uTGlzdChsb2NhbGN0eC5Ob2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMzgyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu RW5kSWYpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzODQNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAg ICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDk1 LHNlbGYuX2N0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzODMNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFJlZnJlc2hD b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9 IFZmclRyZWVOb2RlKEVGSV9JRlJfUkVGUkVTSF9PUCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBSZWZyZXNoKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SZWZyZXNoLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIEludGVydmFsKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5JbnRlcnZhbCwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRl bWVudFJlZnJlc2gNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRSZWZyZXNoIiApOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFJlZnJlc2go c2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0 ZW1lbnRSZWZyZXNoKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxj dHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UmVmcmVzaENvbnRleHQoc2VsZiwNCj4g c2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVy UnVsZShsb2NhbGN0eCwgMTQ0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UmVmcmVzaCkNCj4gPg0K PiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzODYN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SZWZyZXNo KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzg3DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSW50ZXJ2YWwpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzODgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMzg5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFZhcnN0 b3JlRGV2aWNlQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX1ZBUlNUT1JFX0RFVklDRV9PUCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBWYXJzdG9yZURldmljZShzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVmFy c3RvcmVEZXZpY2UsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5n VG9rZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFy ZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkNvbW1hLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfdmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRWYXJz dG9yZURldmljZSIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRWZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlKHNlbGYp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2VDb250ZXh0KHNlbGYsDQo+ID4gc2VsZi5fY3R4 LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDE0Niwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlKQ0KPiA+DQo+ID4gKyAg ICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM5MQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlZhcnN0b3JlRGV2aWNl KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzkyDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTM5Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMzk0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx Mzk1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzk2DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM5Nw0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNs YXNzIFZmclN0YXRlbWVudFJlZnJlc2hFdmVudENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9SRUZSRVNI X0lEX09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFJlZnJlc2hHdWlkKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5SZWZyZXNoR3VpZCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBndWlkRGVmaW5pdGlvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4g PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9u Q29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IENvbW1hKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFJlZnJlc2hFdmVudA0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZm clN0YXRlbWVudFJlZnJlc2hFdmVudCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQoc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRSZWZyZXNoRXZl bnQoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnRDb250ZXh0KHNlbGYsDQo+ID4gc2Vs Zi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDE0OCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFJlZnJlc2hFdmVudCkNCj4gPg0KPiA+ ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzOTkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SZWZyZXNoR3Vp ZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQwMA0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MDENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmd1 aWREZWZpbml0aW9uKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQwMg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4g PiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUo KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFdhcm5pbmdJZkNvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52 b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5v ZGUoRUZJX0lGUl9XQVJOSU5HX0lGX09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIFdhcm5pbmdJZihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuV2FybmluZ0lmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIFByb21wdChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUHJvbXB0LCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk9wZW5QYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIo c2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVy LCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNsb3NlUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29t bWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21t YSwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lv bkNvbnRleHQNCj4gPiAsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBFbmRJZihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgVGltZW91dChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVGltZW91dCwgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVu dFdhcm5pbmdJZg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFdhcm5pbmdJZiIgKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRXYXJuaW5n SWYoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJT dGF0ZW1lbnRXYXJuaW5nSWYoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRXYXJuaW5nSWZDb250ZXh0KHNl bGYsDQo+ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDE1MCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFdhcm5pbmdJZikN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsg ICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MDQNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5XYXJuaW5nSWYpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MDUNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE0MDYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNDA3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MDgNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4p DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MDkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MTANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNDExDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MTYN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlRpbWVvdXQ6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDEyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRpbWVvdXQpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNDEzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNDE0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE0MTUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE0MTgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVu dEV4cHJlc3Npb24oKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDE5DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kSWYpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MjENCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBs YV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDk3LHNlbGYuX2N0 eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MjANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFF1ZXN0aW9uVGFnTGlzdENv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUs DQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIE5vZGU9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLk5vZGUgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9kZQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uVGFn KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25UYWdDb250DQo+ ID4gZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25UYWdDb250ZQ0KPiA+IHh0LGkpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0 ZW1lbnRRdWVzdGlvblRhZ0xpc3QNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xp c3QiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZy U3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxz ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0KHNlbGYsIE5vZGUp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0Q29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0 eCwgc2VsZi5zdGF0ZSwgTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxv Y2FsY3R4LCAxNTIsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3QpDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAg ICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDI2DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICB3aGls ZSAoKCgoX2xhIC0gMTA2KSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSAxMDYpKSAm ICgoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlmIC0gMTA2KSkgfCAoMSA8PCAo VmZyU3ludGF4UGFyc2VyLkluY29uc2lzdGVudElmIC0NCj4gPiAxMDYpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuV2FybmluZ0lmIC0gMTA2KSkgfCAoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJz ZXIuTm9TdWJtaXRJZiAtIDEwNikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5JbWFnZSAtIDEw NikpDQo+IHwNCj4gPiAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkxvY2tlZCAtIDEwNikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5SZWZyZXNoIC0NCj4gMTA2KSkNCj4gPiB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuVmFyc3RvcmVEZXZpY2UgLSAxMDYpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRh eFBhcnNlci5HdWlkT3AgLSAxMDYpKSkpICE9IDApIG9yDQo+ID4gX2xhPT1WZnJTeW50YXhQYXJz ZXIuUmVmcmVzaEd1aWQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NDIzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25U YWcoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQyOA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4g KyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZ0NvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9u ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN1cHByZXNz SWZRdWVzdChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1cHByZXNz SWZRdWVzdENvDQo+ID4gbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRHcmF5T3V0SWZRdWVzdChzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0Q28NCj4gPiBudGV4dCwwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dFZhbHVlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFsdWVDb250ZXh0 LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3Rh dGVtZW50RGVmYXVsdChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERlZmF1 bHRDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgdmZyU3RhdGVtZW50T3B0aW9ucyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudE9wdGlvbnNDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UmVhZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudFJlYWRDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50V3JpdGUoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRXcml0ZUNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9u T3B0aW9uVGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25UYWciICk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50 UXVlc3Rpb25PcHRpb25UYWcoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZyhzZWxmKToNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0NCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50UXVlc3Rpb25PcHRpb25UYWdDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBz ZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE1 NCwNCj4gc2VsZi5SVUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnKQ0KPiA+DQo+ID4g KyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDM2DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU3VwcHJlc3NJZl06DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MjkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3QoKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE0MzANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0 ZW1lbnRHcmF5T3V0SWZRdWVzdCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVmFsdWVd Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDMpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDMxDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50VmFsdWUoKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLkRlZmF1bHRdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNDMyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVt ZW50RGVmYXVsdCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuT3B0aW9uXToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA1KQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQzMw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudE9wdGlvbnMoKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLlJlYWRdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNDM0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UmVhZCgp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuV3JpdGVdOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDcpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDM1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYudmZyU3RhdGVtZW50V3JpdGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmFp c2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmlu YWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsg ICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBjbGFzcyBGbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLkwgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBO dW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBJbnRlcmFjdGl2ZUZsYWcoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZywgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBNYW51ZmFjdHVyaW5nRmxhZyhzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu TWFudWZhY3R1cmluZ0ZsYWcsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg RGVmYXVsdEZsYWcoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRGbGFnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIFJlc2V0UmVxdWlyZWRGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVk RmxhZywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBSZWNvbm5lY3RSZXF1 aXJlZEZsYWcoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZywgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBOVkFjY2Vzc0ZsYWcoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxh ZywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBMYXRlQ2hlY2tGbGFnKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5MYXRlQ2hlY2tGbGFnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfZmxhZ3NGaWVsZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEZsYWdzRmllbGQiICk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RmxhZ3NGaWVsZChz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGZsYWdzRmll bGQoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUp DQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTU2LCBzZWxmLlJV TEVfZmxhZ3NGaWVsZCkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTQ0Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5w dXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLk51bWJlcl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0 MzgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZ106DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MzkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFn KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk1hbnVmYWN0dXJpbmdGbGFnXToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ0MA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NYW51ZmFjdHVyaW5nRmxhZykN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EZWZhdWx0RmxhZ106DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NDENCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGVmYXVsdEZsYWcpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtW ZnJTeW50YXhQYXJzZXIuUmVzZXRSZXF1aXJlZEZsYWddOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNDQyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZ106DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNikNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NDMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZ106DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNykNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE0NDQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxj dHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZykNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnXToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA4KQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTQ0NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2Nh bGN0eC5MID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZykNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYs IHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50U3VwcHJl c3NJZlF1ZXN0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX1NVUFBSRVNTX0lGX09QKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN1cHByZXNzSWYoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYs IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVz c2lvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25D b250ZXh0DQo+ID4gLDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgU2VtaWNvbG9uKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QNCj4gPiBDb250ZXh0LDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRW5kSWYoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkVuZElmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEZMQUdTKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5GTEFHUywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBmbGFn c0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQpDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29u dGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENv bW1hKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5Db21tYSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3lu dGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZy U3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVzdChzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudFN1cHBy ZXNzSWZRdWVzdChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVzdENvbnRleHQoc2Vs ZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMTU4LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1 ZXN0KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ0OA0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN1cHByZXNz SWYpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NDkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb24oKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNDUwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNDYzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NTENCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDUyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNDUzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZmxh Z3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDU4DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ1NA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9y KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NTUNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ2MA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ2MQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ2NQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4 Lk5vZGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NjYNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRJZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ2OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxhXyA9IHNl bGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsMTAzLHNlbGYuX2N0eCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE0NjcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiAr ICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0Q29udGV4dChQ YXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19p bml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBp bnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2lu aXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVl Tm9kZShFRklfSUZSX1NVUFBSRVNTX0lGX09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIEdyYXlPdXRJZihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuR3JheU91dElmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4dA0KPiA+ICwwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxm LCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJz ZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29s b24sIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVl c3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+ DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 UXVlc3Rpb25PcHRpb25MaXN0DQo+ID4gQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEVuZElmKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRJZiwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZmxhZ3NGaWVsZChzZWxmLCBpOmludD1O b25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3lu dGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEs IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6 aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5C aXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwg aSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0 YXRlbWVudEdyYXlPdXRJZlF1ZXN0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50R3JheU91dElmUXVl c3QiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZy U3RhdGVtZW50R3JheU91dElmUXVlc3Qoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRHcmF5T3V0SWZRdWVzdChzZWxmKToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudEdyYXlPdXRJZlF1ZXN0Q29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5z dGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNjAsIHNl bGYuUlVMRV92ZnJTdGF0ZW1lbnRHcmF5T3V0SWZRdWVzdCkNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NzANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5HcmF5T3V0SWYpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE0NzENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVu dEV4cHJlc3Npb24oKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDcyDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9u KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDg1DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9 PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE0NzMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuRkxBR1MpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NDc0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDc1DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDgwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICB3aGlsZSBfbGE9 PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTQ3Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE0NzcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuZmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTQ4Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTQ4Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Db21tYSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTQ4Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVt ZW50UXVlc3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4Lk5vZGUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE0ODgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5FbmRJZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTQ5MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qo c2VsZi5faW5wdXQsMTA2LHNlbGYuX2N0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBsYV8g PT0gMToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0ODkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9u KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxv Y2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0 YXRlbWVudERlZmF1bHRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfREVGQVVMVF9PUCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLkQgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLlNOID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgRGVmYXVsdChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuRGVmYXVsdCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRWYWx1ZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudFZhbHVlQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgdmZyQ29uc3RhbnRWYWx1ZUZpZWxkKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy Q29uc3RhbnRWYWx1ZUZpZWxkQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIERlZmF1bHRTdG9yZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGVmYXVsdFN0b3JlLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnREZWZhdWx0DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3Rh dGVtZW50RGVmYXVsdCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRWZnJTdGF0ZW1lbnREZWZhdWx0KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGls ZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50RGVmYXVsdChzZWxmKToNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudERlZmF1bHRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE2Miwgc2VsZi5SVUxFX3Zm clN0YXRlbWVudERlZmF1bHQpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tl biB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNDkyDQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguRCA9IHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkRlZmF1bHQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE1MDANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5WYWx1ZV06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDkz DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50VmFsdWUoKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ5NA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5UX181XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE0OTYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0 OTcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJDb25zdGFudFZhbHVlRmllbGQo KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ5OA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MDYNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkRlZmF1bHRTdG9yZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MDINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGVmYXVsdFN0b3JlKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUwMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTUwNA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5T TiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTA1DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFz IHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFZhbHVlQ29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4g PiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJU cmVlTm9kZShFRklfSUZSX1ZBTFVFX09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIFZhbHVlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5WYWx1ZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQNCj4gPiAsMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVu dFZhbHVlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0 ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50VmFsdWUiICk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50VmFsdWUoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRWYWx1 ZShzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudFZhbHVlQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4g c2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAx NjQsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRWYWx1ZSkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MDgNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5WYWx1ZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTUwOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE1MTANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb24o KQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudE9wdGlvbnNDb250ZXh0KFBh cnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGlu dm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5p dF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBh cnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE9uZU9mT3B0aW9uQ29udA0K PiA+IGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3lu dGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50T3B0aW9ucw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVu dE9wdGlvbnMiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0VmZyU3RhdGVtZW50T3B0aW9ucyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudE9wdGlvbnMoc2VsZik6DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRP cHRpb25zQ29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNjYsIHNlbGYuUlVMRV92ZnJT dGF0ZW1lbnRPcHRpb25zKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTUxMg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3Rh dGVtZW50T25lT2ZPcHRpb24oKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlv biA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJv cihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292 ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVu dE9uZU9mT3B0aW9uQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX09ORV9PRl9PUFRJT05fT1ApDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5GID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5LTiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIE9wdGlvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3B0aW9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIFRleHQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRleHQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBh cmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBp OmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xv c2VQYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxm LCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFZhbHVlKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5WYWx1ZSwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJDb25zdGFudFZhbHVlRmll bGQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJDb25zdGFudFZhbHVlRmllbGRDb250 ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZy T25lT2ZPcHRpb25GbGFncyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4g Pg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmck9uZU9mT3B0 aW9uRmxhZ3NDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEtleShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuS2V5LCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmckltYWdlVGFnKHNlbGYsIGk6aW50PU5vbmUpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJz ZXIuVmZySW1hZ2VUYWdDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZySW1hZ2VUYWdDb250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRP bmVPZk9wdGlvbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudE9uZU9mT3B0aW9uIiApOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudE9uZU9m T3B0aW9uKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYg dmZyU3RhdGVtZW50T25lT2ZPcHRpb24oc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbkNv bnRleHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTY4LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50T25l T2ZPcHRpb24pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NTE0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3B0 aW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTE1DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGV4dCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUxNg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE1MTcNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5TdHJpbmdUb2tlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUx OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5Q YXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUxOQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUyMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE1MjENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTUyMg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlZh bHVlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTIzDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUyNA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu dmZyQ29uc3RhbnRWYWx1ZUZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTUyNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTI2DQo+ID4NCj4g PiArICAgICAgICAgICAgbG9jYWxjdHguRiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZM QUdTKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTI3DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUyOA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu dmZyT25lT2ZPcHRpb25GbGFncygpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE1MzMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0 KHNlbGYuX2lucHV0LDEwOSxzZWxmLl9jdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgbGFf ID09IDE6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTI5DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUzMA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5LZXkpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTMxDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNTMyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2Fs Y3R4LktOID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTM5DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5Db21tYToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE1MzUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNTM2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZySW1hZ2VU YWcoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU0MQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU0Mg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmlu YWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsg ICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBjbGFzcyBWZnJPbmVPZk9wdGlvbkZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0t MSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLkhGbGFncyA9IDANCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLkxGbGFncyA9IDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBvbmVv Zm9wdGlvbkZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0K PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5PbmVvZm9wdGlvbkZs YWdzRmllbGRDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuT25lb2ZvcHRpb25GbGFnc0ZpZWxkQ29udGV4dCxpKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmlu dD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0 V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJPbmVP Zk9wdGlvbkZsYWdzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyT25lT2ZPcHRpb25GbGFncyIgKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJPbmVPZk9wdGlvbkZsYWdz KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyT25l T2ZPcHRpb25GbGFncyhzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2Fs Y3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmck9uZU9mT3B0aW9uRmxhZ3NDb250ZXh0KHNlbGYsDQo+ IHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDE3MCwgc2VsZi5SVUxFX3Zmck9uZU9mT3B0aW9uRmxhZ3MpDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAg ICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTQ0DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5vbmVvZm9wdGlvbkZsYWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNTQ5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5w dXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNl ci5CaXRXaXNlT3I6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTQ1 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJp dFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NDYNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5vbmVvZm9wdGlvbkZsYWdzRmllbGQoKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU1MQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAg ZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBjbGFzcyBPbmVvZm9wdGlvbkZsYWdzRmllbGRDb250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6 aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwg aW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSEZsYWcgPSAwDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5MRmxhZyA9IDANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkEgPSBOb25l ICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkwgPSBOb25lICMgVG9rZW4NCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcHRpb25EZWZhdWx0KHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5PcHRpb25EZWZhdWx0LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IE9wdGlvbkRlZmF1bHRNZmcoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wdGlvbkRlZmF1bHRNZmcsIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgSW50ZXJhY3RpdmVGbGFnKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5JbnRl cmFjdGl2ZUZsYWcsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgUmVzZXRS ZXF1aXJlZEZsYWcoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnLCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIFJlc3RTdHlsZUZsYWcoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJlc3RTdHlsZUZs YWcsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgUmVjb25uZWN0UmVxdWly ZWRGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcsIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgTWFudWZhY3R1cmluZ0ZsYWcoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1hbnVmYWN0 dXJpbmdGbGFnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIERlZmF1bHRG bGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5EZWZhdWx0RmxhZywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBOVkFjY2Vzc0ZsYWcoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZywgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBMYXRlQ2hlY2tGbGFnKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5MYXRlQ2hl Y2tGbGFnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfb25lb2ZvcHRpb25GbGFnc0ZpZWxkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0T25lb2ZvcHRpb25GbGFnc0ZpZWxk IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdE9uZW9m b3B0aW9uRmxhZ3NGaWVsZChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIG9uZW9mb3B0aW9uRmxhZ3NGaWVsZChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLk9uZW9mb3B0aW9uRmxhZ3NG aWVsZENvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4g PiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTcyLCBzZWxmLlJVTEVfb25lb2Zv cHRpb25GbGFnc0ZpZWxkKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNTYzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuTnVtYmVyXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTU1Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuT3B0aW9uRGVmYXVsdF06DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NTMNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3B0aW9uRGVmYXVsdCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PcHRpb25EZWZhdWx0TWZnXToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU1NA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcHRpb25EZWZhdWx0TWZnKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0 b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZ106DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NTUNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFnKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnXToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA1KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU1Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZykNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5SZXN0U3R5bGVGbGFnXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA2KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTU1Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5SZXN0U3R5bGVGbGFnKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZ106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNykNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE1NTgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLk1hbnVmYWN0dXJpbmdGbGFnXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTU1OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5NYW51ZmFjdHVyaW5nRmxhZykNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5EZWZhdWx0RmxhZ106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgOSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE1NjANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuRGVmYXVsdEZsYWcpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTlZB Y2Nlc3NGbGFnXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCAxMCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1 NjENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguQSA9IHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFz cw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5M YXRlQ2hlY2tGbGFnXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE1NjINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTCA9IHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkxhdGVDaGVja0ZsYWcpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAg ICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFJlYWRDb250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6 aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwg aW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJf UkVBRF9PUCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBSZWFkKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5SZWFkLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dEV4cHJlc3Npb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uQ29udGV4dA0KPiA+ICwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UmVhZA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBh cnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0 b3IsICJ2aXNpdFZmclN0YXRlbWVudFJlYWQiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50UmVhZChzZWxmKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudFJlYWQoc2VsZik6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRSZWFkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNzQsIHNlbGYuUlVM RV92ZnJTdGF0ZW1lbnRSZWFkKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTU2NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlJlYWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE1NjYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Np b24oKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTY3DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAg ICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFdyaXRlQ29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg cGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRl OmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQs IGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJz ZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZS X1dSSVRFX09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFdyaXRlKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5Xcml0ZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0 ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+ DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 RXhwcmVzc2lvbkNvbnRleHQNCj4gPiAsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFdy aXRlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50V3JpdGUiICk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50V3JpdGUoc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRXcml0ZShz ZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudFdyaXRlQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2Vs Zi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNzYs IHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRXcml0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NjkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Xcml0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTU3MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVt ZW50RXhwcmVzc2lvbigpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NzEN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29s b24pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4g Pg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0 UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25M aXN0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgTm9kZT1Ob25lKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBO b2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rp b25PcHRpb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9w dGlvbkMNCj4gPiBvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkNvDQo+ID4gbnRleHQs aSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRl bWVudFF1ZXN0aW9uT3B0aW9uTGlzdCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVz dGlvbk9wdGlvbkxpc3Qoc2VsZiwgTm9kZSk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBsb2NhbGN0eCA9DQo+ID4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0 aW9uTGlzdENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIE5vZGUpDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTc4LA0KPiBzZWxmLlJV TEVfdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU3Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUgKCgoKF9sYSAtIDYxKSkg JiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSA2MSkpICYgKCgxIDw8DQo+ID4gKFZmclN5 bnRheFBhcnNlci5PcHRpb24gLSA2MSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HcmF5T3V0 SWYgLSA2MSkpIHwNCj4gKDENCj4gPiA8PCAoVmZyU3ludGF4UGFyc2VyLkRlZmF1bHQgLSA2MSkp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmIC0gNjEpKQ0KPiA+IHwgKDEgPDwg KFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYgLSA2MSkpIHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4 UGFyc2VyLkluY29uc2lzdGVudElmIC0gNjEpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuV2Fy bmluZ0lmIC0NCj4gPiA2MSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5Ob1N1Ym1pdElmIC0g NjEpKSkpICE9IDApIG9yICgoKChfbGEgLSAxNDQpKSAmDQo+ID4gfjB4M2YpID09IDAgYW5kICgo MSA8PCAoX2xhIC0gMTQ0KSkgJiAoKDEgPDwgKFZmclN5bnRheFBhcnNlci5JbWFnZSAtIDE0NCkp IHwNCj4gKDENCj4gPiA8PCAoVmZyU3ludGF4UGFyc2VyLkxvY2tlZCAtIDE0NCkpIHwgKDEgPDwg KFZmclN5bnRheFBhcnNlci5WYWx1ZSAtIDE0NCkpIHwNCj4gKDENCj4gPiA8PCAoVmZyU3ludGF4 UGFyc2VyLlJlYWQgLSAxNDQpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuV3JpdGUgLSAxNDQp KSB8ICgxDQo+ID4gPDwgKFZmclN5bnRheFBhcnNlci5SZWZyZXNoIC0gMTQ0KSkgfCAoMSA8PA0K PiAoVmZyU3ludGF4UGFyc2VyLlZhcnN0b3JlRGV2aWNlDQo+ID4gLSAxNDQpKSB8ICgxIDw8IChW ZnJTeW50YXhQYXJzZXIuR3VpZE9wIC0gMTQ0KSkpKSAhPSAwKSBvcg0KPiA+IF9sYT09VmZyU3lu dGF4UGFyc2VyLlJlZnJlc2hHdWlkOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTU3Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1 ZXN0aW9uT3B0aW9uKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1 NzgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRp b25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9k ZSA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRR dWVzdGlvblRhZyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0 aW9uVGFnQ29udGUNCj4gPiB4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25UYQ0KPiA+IGdDb250ZXh0 LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV92ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVu dFF1ZXN0aW9uT3B0aW9uIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb24o c2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkNvbnRleHQoc2VsZiwNCj4gPiBzZWxm Ll9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2Nh bGN0eCwgMTgwLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb24pDQo+ID4NCj4g PiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1ODEN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYsDQo+IFZmclN5 bnRheFBhcnNlci5JbmNvbnNpc3RlbnRJZiwNCj4gPiBWZnJTeW50YXhQYXJzZXIuV2FybmluZ0lm LCBWZnJTeW50YXhQYXJzZXIuTm9TdWJtaXRJZiwNCj4gPiBWZnJTeW50YXhQYXJzZXIuSW1hZ2Us IFZmclN5bnRheFBhcnNlci5Mb2NrZWQsIFZmclN5bnRheFBhcnNlci5SZWZyZXNoLA0KPiA+IFZm clN5bnRheFBhcnNlci5WYXJzdG9yZURldmljZSwgVmZyU3ludGF4UGFyc2VyLkd1aWRPcCwNCj4g PiBWZnJTeW50YXhQYXJzZXIuUmVmcmVzaEd1aWRdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNTc5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZy U3RhdGVtZW50UXVlc3Rpb25UYWcoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk9wdGlv biwgVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZiwNCj4gPiBWZnJTeW50YXhQYXJzZXIuRGVmYXVs dCwgVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYsDQo+IFZmclN5bnRheFBhcnNlci5WYWx1ZSwN Cj4gPiBWZnJTeW50YXhQYXJzZXIuUmVhZCwgVmZyU3ludGF4UGFyc2VyLldyaXRlXToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU4MA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnKCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCBy ZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50Qm9vbGVhblR5 cGVDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9k ZSA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRD aGVja0JveChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENoZWNrQm94 Q29udGV4dCwNCj4gPiAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudEFjdGlvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudEFjdGlvbkNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEJvb2xlYW5UeXBlDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VU cmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwg InZpc2l0VmZyU3RhdGVtZW50Qm9vbGVhblR5cGUiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50Qm9vbGVhblR5cGUoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRCb29s ZWFuVHlwZShzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEJvb2xlYW5UeXBlQ29udGV4dChzZWxmLA0KPiA+ IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCAxODIsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZSkNCj4gPg0K PiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU4 NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94XToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU4Mw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudENoZWNrQm94KCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5BY3Rpb25dOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNTg0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50QWN0 aW9uKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhj ZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhj ZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9y dEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9j YWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3Rh dGVtZW50Q2hlY2tCb3hDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfQ0hFQ0tCT1hfT1ApDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5PcE9iaiA9IENJZnJDaGVja0JveCgpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5MID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5GID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgdmZyUXVlc3Rpb25CYXNlSW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clF1ZXN0aW9uQmFzZUluZm9Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50SGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50SGVhZGVyQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0DQo+ID4gQ29udGV4 dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEVuZENo ZWNrQm94KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5FbmRDaGVja0JveCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBDaGVja0JveChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2hlY2tCb3gsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyQ2hlY2tCb3hGbGFncyhzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmckNoZWNrQm94RmxhZ3NDb250ZXh0LDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgS2V5KHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5LZXksIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1i ZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkZMQUdTLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfdmZyU3RhdGVtZW50Q2hlY2tCb3gNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRDaGVja0JveCIg KToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0 ZW1lbnRDaGVja0JveChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIHZmclN0YXRlbWVudENoZWNrQm94KHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Q2hlY2tCb3hD b250ZXh0KHNlbGYsDQo+ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE4NCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudENo ZWNrQm94KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+ DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU4 Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LkwgPSBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5DaGVja0JveCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU4 OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25CYXNlSW5mbyhsb2NhbGN0 eC5PcE9iaiwgbG9jYWxjdHguUVR5cGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE1ODkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEhlYWRlcihs b2NhbGN0eC5PcE9iaikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU5MA0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTk2DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZm clN5bnRheFBhcnNlci5GTEFHUzoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE1OTENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguRiA9IHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTU5Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTU5Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmckNoZWNrQm94RmxhZ3MoKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU5NA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYwMg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuS2V5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTU5OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5LZXkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNTk5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NjAwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MDENCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE2MDQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9u T3B0aW9uTGlzdChsb2NhbGN0eC5Ob2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNjA1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuRW5kQ2hlY2tCb3gpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MDYN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29s b24pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4g Pg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0 UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyQ2hlY2tCb3hGbGFnc0NvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52 b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5MRmxhZ3MgPSAwDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5IRmxhZ3MgPSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgY2hlY2tib3hGbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuQ2hl Y2tib3hGbGFnc0ZpZWxkQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLkNoZWNrYm94RmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJp dFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBp KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyQ2hl Y2tCb3hGbGFncw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckNoZWNrQm94RmxhZ3MiICk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyQ2hlY2tCb3hGbGFncyhzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmckNoZWNrQm94Rmxh Z3Moc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJDaGVja0JveEZsYWdzQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4g c2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAx ODYsIHNlbGYuUlVMRV92ZnJDaGVja0JveEZsYWdzKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5f bGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTYwOA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuY2hl Y2tib3hGbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYx Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYwOQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjEwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuY2hlY2tib3hGbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE2MTUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0 LkxBKDEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25F eGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9u ID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9y KHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zl cihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgQ2hlY2tib3hGbGFn c0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LkxGbGFnID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSEZsYWcgPSAwDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5EID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5NID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgRGVmYXVsdEZsYWcoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRGbGFnLCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE1hbnVmYWN0dXJpbmdGbGFnKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NYW51 ZmFjdHVyaW5nRmxhZywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDaGVj a0JveERlZmF1bHRGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DaGVja0JveERlZmF1bHRGbGFnLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENoZWNrQm94RGVmYXVsdE1mZ0ZsYWcoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNoZWNrQm94RGVmYXVsdE1mZ0ZsYWcsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuUXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkQ29udGUNCj4gPiB4dCwwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfY2hlY2ti b3hGbGFnc0ZpZWxkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0Q2hlY2tib3hGbGFnc0ZpZWxkIiApOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoZWNrYm94RmxhZ3NGaWVsZChz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGNoZWNrYm94 RmxhZ3NGaWVsZChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLkNoZWNrYm94RmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgMTg4LCBzZWxmLlJVTEVfY2hlY2tib3hGbGFnc0ZpZWxkKQ0KPiA+DQo+ID4gKyAg ICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjIyDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtYmVyXToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYxNg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50 YXhQYXJzZXIuRGVmYXVsdEZsYWddOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNjE3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkQgPSBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5EZWZhdWx0RmxhZykNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5NYW51ZmFjdHVyaW5nRmxhZ106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE2MTgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTSA9 IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk1hbnVmYWN0dXJpbmdGbGFnKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94RGVmYXVsdEZsYWddOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjE5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94RGVmYXVsdEZsYWcpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuQ2hlY2tCb3hEZWZhdWx0TWZnRmxhZ106DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MjANCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2hlY2tCb3hEZWZhdWx0TWZnRmxhZykN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZsYWcsDQo+ID4gVmZyU3lu dGF4UGFyc2VyLk5WQWNjZXNzRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFn LA0KPiA+IFZmclN5bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcsIFZmclN5bnRheFBh cnNlci5MYXRlQ2hlY2tGbGFnLA0KPiA+IFZmclN5bnRheFBhcnNlci5SZWFkT25seUZsYWcsIFZm clN5bnRheFBhcnNlci5PcHRpb25Pbmx5RmxhZywNCj4gPiBWZnJTeW50YXhQYXJzZXIuUmVzdFN0 eWxlRmxhZ106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgNikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MjEN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQo KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRp b24oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1l bnRBY3Rpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29u dGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfQUNUSU9OX09QKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuT3BPYmogPSBDSWZyQWN0aW9uKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUwNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBBY3Rpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkFjdGlvbiwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkhlYWRlcihzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgQ29uZmlnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db25maWcsIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rv a2VuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51 bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0KHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0Q28NCj4gPiBudGV4 dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEVuZEFj dGlvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuRW5kQWN0aW9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJBY3Rpb25GbGFncyhzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlZmckFjdGlvbkZsYWdzQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50QWN0aW9uDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0VmZyU3RhdGVtZW50QWN0aW9uIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEFjdGlvbihzZWxmKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudEFjdGlvbihzZWxm KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudEFjdGlvbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYu c3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTkwLCBz ZWxmLlJVTEVfdmZyU3RhdGVtZW50QWN0aW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEg PSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTYyNA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkFjdGlvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTYyNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25IZWFkZXIobG9j YWxjdHguT3BPYmosIGxvY2FsY3R4LlFUeXBlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNjI2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MzINCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdTOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTYyNw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE2MjgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE2MjkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJBY3Rpb25GbGFncygpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjMwDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjM0DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29uZmlnKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjM1DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTYzNg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNjM3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjM4 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjM5DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY0MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNjQxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRR dWVzdGlvblRhZ0xpc3QobG9jYWxjdHguTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTY0Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkVuZEFjdGlvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY0 Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWlj b2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyBy ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0K PiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4 aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJBY3Rpb25GbGFnc0NvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52 b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5IRmxhZ3MgPSAwDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWN0aW9uRmxhZ3NGaWVsZChzZWxmLCBpOmlu dD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZy U3ludGF4UGFyc2VyLkFjdGlvbkZsYWdzRmllbGRDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuQWN0aW9uRmxhZ3NGaWVsZENvbnRleHQs aSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBCaXRXaXNl T3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Qml0V2lzZU9yLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2Vy LlJVTEVfdmZyQWN0aW9uRmxhZ3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJBY3Rpb25GbGFncyIgKToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJBY3Rpb25GbGFncyhz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmckFjdGlv bkZsYWdzKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuVmZyQWN0aW9uRmxhZ3NDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4g PiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDE5Miwgc2VsZi5SVUxFX3ZmckFjdGlvbkZsYWdzKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5f bGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTY0NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuYWN0 aW9uRmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NTAN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NDYNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY0Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLmFjdGlvbkZsYWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTY1Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEo MSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2Vw dGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBBY3Rpb25GbGFnc0ZpZWxk Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkhGbGFn ID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVs ZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZENv bnRlDQo+ID4geHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX2FjdGlvbkZsYWdzRmllbGQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRBY3Rpb25GbGFn c0ZpZWxkIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dEFjdGlvbkZsYWdzRmllbGQoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBhY3Rpb25GbGFnc0ZpZWxkKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQWN0aW9uRmxhZ3NGaWVsZENvbnRl eHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTk0LCBzZWxmLlJVTEVfYWN0aW9uRmxhZ3NGaWVsZCkN Cj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTY1NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk51bWJlcl06DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NTMNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZsYWcsDQo+ID4g VmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWly ZWRGbGFnLA0KPiA+IFZmclN5bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcsIFZmclN5 bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnLA0KPiA+IFZmclN5bnRheFBhcnNlci5SZWFkT25seUZs YWcsIFZmclN5bnRheFBhcnNlci5PcHRpb25Pbmx5RmxhZywNCj4gPiBWZnJTeW50YXhQYXJzZXIu UmVzdFN0eWxlRmxhZ106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE2NTQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5xdWVzdGlvbmhlYWRlckZsYWdz RmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRF eGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBs b2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJT dGF0ZW1lbnROdW1lcmljVHlwZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIHZmclN0YXRlbWVudE51bWVyaWMoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnROdW1lcmljQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudE9uZU9mKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50T25lT2ZDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnROdW1lcmljVHlw ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudE51bWVyaWNUeXBlIiApOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudE51bWVyaWNUeXBlKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVt ZW50TnVtZXJpY1R5cGUoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2Nh bGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnROdW1lcmljVHlwZUNvbnRleHQoc2Vs ZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMTk2LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50TnVtZXJpY1R5cGUp DQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE2NTkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1lcmljXToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY1Nw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudE51bWVyaWMoKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLk9uZU9mXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTY1OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVu dE9uZU9mKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0 RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZy U3RhdGVtZW50TnVtZXJpY0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNl clJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9OVU1FUklDX09QKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBDSWZyTnVtZXJpYygpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgTnVtZXJpYyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtZXJpYywgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkJhc2VJbmZvKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25CYXNlSW5mb0NvbnRleHQsMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRIZWFkZXIo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRIZWFkZXJDb250ZXh0LDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwg aTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTZXRNaW5NYXhTdGVwKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU2V0TWluTWF4U3RlcENvbnRleHQsMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9w dGlvbkxpc3Qoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlv bk9wdGlvbkxpc3QNCj4gPiBDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgRW5kTnVtZXJpYyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kTnVtZXJpYywgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWlj b2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJOdW1lcmljRmxh Z3Moc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJOdW1lcmljRmxhZ3NDb250ZXh0LDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgS2V5KHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5LZXksIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRkxBR1Mo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50TnVtZXJpYw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudE51 bWVyaWMiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 VmZyU3RhdGVtZW50TnVtZXJpYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIHZmclN0YXRlbWVudE51bWVyaWMoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnROdW1l cmljQ29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxOTgsIHNlbGYuUlVMRV92ZnJTdGF0 ZW1lbnROdW1lcmljKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlw ZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTY2MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk51bWVyaWMpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NjINCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnZmclF1ZXN0aW9uQmFzZUluZm8obG9jYWxjdHguT3BPYmos IGxvY2FsY3R4LlFUeXBlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjYz DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRIZWFkZXIobG9jYWxjdHgu T3BPYmopDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NjQNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY3MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQ YXJzZXIuRkxBR1M6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjY1 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkYgPSBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5GTEFHUykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE2NjYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NjcNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJOdW1lcmljRmxhZ3MoKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY2OA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY3Ng0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg X2xhPT1WZnJTeW50YXhQYXJzZXIuS2V5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTY3Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5LZXkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NjczDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjc0DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NzUNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NzgN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclNldE1pbk1heFN0ZXAobG9jYWxjdHguT3BP YmopDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NzkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChsb2NhbGN0eC5O b2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjgwDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kTnVtZXJpYykNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY4MQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxs eToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBjbGFzcyBWZnJTZXRNaW5NYXhTdGVwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgT3BP Ymo9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQs IGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJz ZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk9wT2JqID0gTm9uZQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuTjEgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLkkgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk4yID0gTm9u ZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5BID0gTm9uZSAjIFRva2VuDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5TID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5PcE9iaiA9IE9wT2JqDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgTWluaW11bShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWluaW11bSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IE1heGltdW0oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk1heGltdW0sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxz ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk51bWJlciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBT dGVwKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5TdGVwLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IE5lZ2F0aXZlKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5z KFZmclN5bnRheFBhcnNlci5OZWdhdGl2ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuTmVnYXRpdmUsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV92ZnJTZXRNaW5NYXhTdGVwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU2V0TWluTWF4U3RlcCIg KToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTZXRN aW5NYXhTdGVwKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgdmZyU2V0TWluTWF4U3RlcChzZWxmLCBPcE9iaik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTZXRNaW5NYXhTdGVwQ29udGV4 dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSwgT3BPYmopDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjAwLCBzZWxmLlJVTEVfdmZyU2V0TWluTWF4 U3RlcCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0K PiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2ODMN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NaW5pbXVt KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjg0DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTY4Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIu TmVnYXRpdmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjg1DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4xID0gc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTmVnYXRpdmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2ODgNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0 eC5JID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNjg5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE2OTANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5NYXhpbXVtKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjkxDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY5Mw0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50 YXhQYXJzZXIuTmVnYXRpdmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNjkyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4yID0gc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTmVnYXRpdmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2OTUNCj4gPg0KPiA+ICsgICAgICAgICAg ICBsb2NhbGN0eC5BID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjk2DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE3MDENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlN0ZXA6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjk3DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0ZXApDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjk4DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNjk5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2Fs Y3R4LlMgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzAwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmck51bWVyaWNGbGFnc0NvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tp bmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5IRmxhZ3MgPSAwDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5MRmxhZ3MgPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5Jc0Rpc3BsYXlTcGVjaWZpZWQgPSBGYWxzZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIG51bWVyaWNGbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu DQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuTnVtZXJpY0Zs YWdzRmllbGRDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuTnVtZXJpY0ZsYWdzRmllbGRDb250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3Ip DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Zmck51bWVyaWNGbGFn cw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdFZmck51bWVyaWNGbGFncyIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJOdW1lcmljRmxhZ3Moc2VsZikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJOdW1lcmljRmxhZ3Moc2VsZik6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5W ZnJOdW1lcmljRmxhZ3NDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIwMiwgc2VsZi5SVUxF X3Zmck51bWVyaWNGbGFncykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2Vu IHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE3MDMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm51bWVyaWNGbGFnc0ZpZWxk KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcwOA0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUg X2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTcwNA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNzA1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubnVtZXJpY0Zs YWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcxMA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBOdW1lcmljRmxhZ3NGaWVsZENvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52 b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5IRmxhZyA9IDANCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLklzU2V0VHlwZSA9IEZhbHNlDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5Jc0Rpc3BsYXlTcGVjaWZpZWQgPSBGYWxzZQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIE51bWVyaWNTaXplT25lKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZU9uZSwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1lcmljU2l6ZVR3byhzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu TnVtZXJpY1NpemVUd28sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVt ZXJpY1NpemVGb3VyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZUZvdXIsIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgTnVtZXJpY1NpemVFaWdodChzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1Np emVFaWdodCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBEaXNQbGF5SW50 RGVjKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5EaXNQbGF5SW50RGVjLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIERpc1BsYXlVSW50RGVjKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EaXNQbGF5VUludERlYywgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBEaXNQbGF5VUludEhleChzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu RGlzUGxheVVJbnRIZXgsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgcXVl c3Rpb25oZWFkZXJGbGFnc0ZpZWxkKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy bg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuUXVlc3Rp b25oZWFkZXJGbGFnc0ZpZWxkQ29udGUNCj4gPiB4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfbnVtZXJpY0ZsYWdzRmllbGQN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXROdW1lcmljRmxhZ3NGaWVsZCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXROdW1lcmljRmxhZ3NGaWVsZChzZWxmKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIG51bWVyaWNGbGFnc0ZpZWxkKHNlbGYp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuTnVtZXJpY0ZsYWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0 YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIwNCwgc2Vs Zi5SVUxFX251bWVyaWNGbGFnc0ZpZWxkKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzIwDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4g PSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtW ZnJTeW50YXhQYXJzZXIuTnVtYmVyXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTcxMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLk51bWVyaWNTaXplT25lXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTcxMg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1lcmljU2l6ZU9uZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1l cmljU2l6ZVR3b106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3 MTMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TnVtZXJpY1NpemVUd28pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVG b3VyXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCA0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcxNA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1lcmlj U2l6ZUZvdXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVFaWdodF06 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg NSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MTUNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVF aWdodCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EaXNQbGF5SW50RGVjXToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA2KQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcxNg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EaXNQbGF5SW50RGVjKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0 b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkRpc1BsYXlVSW50RGVjXToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA3KQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcxNw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EaXNQbGF5VUludERlYykNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5EaXNQbGF5VUludEhleF06DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgOCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE3MTgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRGlzUGxheVVJbnRIZXgpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50 YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFnLA0KPiA+IFZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0Zs YWcsIFZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZywNCj4gPiBWZnJTeW50YXhQYXJz ZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnLCBWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZywN Cj4gPiBWZnJTeW50YXhQYXJzZXIuUmVhZE9ubHlGbGFnLCBWZnJTeW50YXhQYXJzZXIuT3B0aW9u T25seUZsYWcsDQo+ID4gVmZyU3ludGF4UGFyc2VyLlJlc3RTdHlsZUZsYWddOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDkpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzE5DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0K PiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50T25lT2ZDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9r aW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2Rl KEVGSV9JRlJfT05FX09GX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBD SWZyT25lT2YoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuUVR5cGUgPSBFRklfUVVFU0lP Tl9UWVBFLlFVRVNUSU9OX05PUk1BTA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRiA9IE5v bmUgIyBUb2tlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9uZU9mKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5PbmVPZiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJRdWVz dGlvbkJhc2VJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25CYXNlSW5m b0NvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiB2ZnJTdGF0ZW1lbnRIZWFkZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu DQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRIZWFkZXJDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5Db21tYSwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJT dGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QNCj4gPiBDb250ZXh0LDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRW5kT25lT2Yoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVu ZE9uZU9mLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IHZmck9uZW9mRmxhZ3NGaWVsZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4N Cj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmck9uZW9mRmxh Z3NGaWVsZENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiB2ZnJTZXRNaW5NYXhTdGVwKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU2V0 TWluTWF4U3RlcENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRPbmVPZg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFZmclN0YXRlbWVudE9uZU9mIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdFZmclN0YXRlbWVudE9uZU9mKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD aGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50T25lT2Yoc2VsZik6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRPbmVPZkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjA2LCBzZWxmLlJVTEVfdmZy U3RhdGVtZW50T25lT2YpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0 eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNzIyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuT25lT2YpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MjMNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnZmclF1ZXN0aW9uQmFzZUluZm8obG9jYWxjdHguT3BPYmos IGxvY2FsY3R4LlFUeXBlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzI0 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRIZWFkZXIobG9jYWxjdHgu T3BPYmopDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MjUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTczMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQ YXJzZXIuRkxBR1M6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzI2 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkYgPSBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5GTEFHUykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE3MjcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MjgNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJPbmVvZkZsYWdzRmllbGQoKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcyOQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTczNA0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuTWluaW11bToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE3MzMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJT ZXRNaW5NYXhTdGVwKGxvY2FsY3R4Lk9wT2JqKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzM2DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi52ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QobG9jYWxjdHguTm9kZSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTczNw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZE9uZU9mKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNzM4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZm ck9uZW9mRmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNl clJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5IRmxhZ3MgPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5MRmxhZ3Mg PSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgbnVtZXJpY0ZsYWdzRmllbGQo c2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHRzKFZmclN5bnRheFBhcnNlci5OdW1lcmljRmxhZ3NGaWVsZENvbnRleHQpDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5OdW1lcmljRmxhZ3NG aWVsZENvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfdmZyT25lb2ZGbGFnc0ZpZWxkDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyT25lb2ZG bGFnc0ZpZWxkIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdFZmck9uZW9mRmxhZ3NGaWVsZChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIHZmck9uZW9mRmxhZ3NGaWVsZChzZWxmKToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmck9uZW9mRmxhZ3NG aWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjA4LCBzZWxmLlJVTEVfdmZyT25lb2ZG bGFnc0ZpZWxkKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0K PiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTc0MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubnVtZXJpY0ZsYWdzRmllbGQoKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzQ1DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZm clN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNzQxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE3NDINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5udW1lcmljRmxhZ3NGaWVs ZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzQ3DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiAr ICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFN0cmluZ1R5cGVDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9r aW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdHJpbmcoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdHJpbmdDb250ZXh0LDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UGFzc3dvcmQo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRQYXNzd29yZENvbnRleHQs DQo+ID4gMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBn ZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRh eFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN0cmluZ1R5cGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1l bnRTdHJpbmdUeXBlIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdFZmclN0YXRlbWVudFN0cmluZ1R5cGUoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdHJpbmdUeXBlKHNlbGYpOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50U3RyaW5nVHlwZUNvbnRleHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3Rh dGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjEwLCBzZWxm LlJVTEVfdmZyU3RhdGVtZW50U3RyaW5nVHlwZSkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc1MA0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRv a2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLlN0cmluZ106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE3NDgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0 ZW1lbnRTdHJpbmcoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkXToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc0OQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFBhc3N3b3JkKCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4g Pg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0 UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50U3RyaW5nQ29udGV4dChQ YXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19p bml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBp bnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2lu aXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVl Tm9kZShFRklfSUZSX1NUUklOR19PUCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk9wT2Jq ID0gQ0lmclN0cmluZygpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5RVHlwZSA9IEVGSV9R VUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5G ID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5NaW4gPSBOb25lICMg VG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk1heCA9IE5vbmUgIyBUb2tlbg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0cmluZyhzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclF1ZXN0aW9uSGVhZGVyKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25IZWFkZXJDb250ZXh0LDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdA0KPiA+ IENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBFbmRTdHJpbmcoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZFN0cmluZywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBNaW5TaXplKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NaW5TaXplLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE1heFNpemUoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1heFNp emUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RyaW5nRmxhZ3NG aWVsZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0cmluZ0ZsYWdzRmllbGRDb250ZXh0 LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgS2V5KHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5LZXksIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRkxBR1Mo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50U3RyaW5nDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3Ry aW5nIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm clN0YXRlbWVudFN0cmluZyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIHZmclN0YXRlbWVudFN0cmluZyhzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0cmluZ0Nv bnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjEyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3Ry aW5nKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc1Mg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZykN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc1Mw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYudmZyUXVlc3Rpb25IZWFkZXIobG9jYWxjdHguT3BPYmosIGxvY2FsY3R4LlFU eXBlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzU0DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NjANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFy c2VyLkZMQUdTOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc1NQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5GID0gc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuRkxBR1MpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NzU2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzU3DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RyaW5nRmxhZ3NGaWVsZCgpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzU4DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzY2DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBfbGE9PVZmclN5bnRheFBhcnNlci5LZXk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNzYyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLktleSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE3NjMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NjQNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc2NQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc2 OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4Lk1pbiA9IHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk1pblNpemUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3 NjkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzcwDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzcxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE3NzINCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5NYXggPSBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5NYXhTaXplKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNzczDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc3NA0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc3NQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNzc2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0 ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QobG9jYWxjdHguTm9kZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTc3Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkVuZFN0cmluZykNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTc3OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2Vw dGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdHJpbmdGbGFnc0Zp ZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkhG bGFncyA9IDANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkxGbGFncyA9IDANCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBzdHJpbmdGbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5v bmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50 YXhQYXJzZXIuU3RyaW5nRmxhZ3NGaWVsZENvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5TdHJpbmdGbGFnc0ZpZWxkQ29udGV4dCxpKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihz ZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQ YXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRX aXNlT3IsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVM RV92ZnJTdHJpbmdGbGFnc0ZpZWxkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RyaW5nRmxhZ3NGaWVsZCIgKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdHJpbmdG bGFnc0ZpZWxkKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgdmZyU3RyaW5nRmxhZ3NGaWVsZChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0cmluZ0ZsYWdzRmllbGRDb250ZXh0 KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDIxNCwgc2VsZi5SVUxFX3ZmclN0cmluZ0ZsYWdzRmllbGQp DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiAr ICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzgwDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdHJpbmdGbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTc4NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJz ZXIuQml0V2lzZU9yOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc4 MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5C aXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzgyDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RyaW5nRmxhZ3NGaWVsZCgpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzg3DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5h bGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAg ICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGNsYXNzIFN0cmluZ0ZsYWdzRmllbGRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBh cmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdT dGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuSEZsYWcgPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5MRmxhZyA9IDANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJl ciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBxdWVzdGlvbmhlYWRlckZs YWdzRmllbGQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5RdWVzdGlvbmhlYWRlckZsYWdz RmllbGRDb250ZQ0KPiA+IHh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9zdHJpbmdGbGFnc0ZpZWxkDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0U3Ry aW5nRmxhZ3NGaWVsZCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRTdHJpbmdGbGFnc0ZpZWxkKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxz ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgc3RyaW5nRmxhZ3NGaWVsZChzZWxmKToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlN0cmluZ0ZsYWdzRmll bGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIxNiwgc2VsZi5SVUxFX3N0cmluZ0ZsYWdz RmllbGQpDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE3OTENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEp DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1i ZXJdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzg4DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVF9fOF06DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3ODkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fOCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZsYWcsDQo+ID4gVmZyU3ludGF4UGFyc2VyLk5WQWNj ZXNzRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnLA0KPiA+IFZmclN5bnRh eFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcsIFZmclN5bnRheFBhcnNlci5MYXRlQ2hlY2tG bGFnLA0KPiA+IFZmclN5bnRheFBhcnNlci5SZWFkT25seUZsYWcsIFZmclN5bnRheFBhcnNlci5P cHRpb25Pbmx5RmxhZywNCj4gPiBWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZ106DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3OTANCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyBy ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0K PiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4 aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRQYXNzd29yZENvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZy VHJlZU5vZGUoRUZJX0lGUl9QQVNTV09SRF9PUCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lk9wT2JqID0gQ0lmclBhc3N3b3JkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlFUeXBl ID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUwNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLkYgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk1pbiA9 IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTWF4ID0gTm9uZSAjIFRv a2VuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgUGFzc3dvcmQoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlBhc3N3b3JkLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclF1ZXN0 aW9uSGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25IZWFkZXJDb250 ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29t bWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21t YSwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9u TGlzdChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0 aW9uTGlzdA0KPiA+IENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBFbmRQYXNzd29yZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kUGFzc3dvcmQsIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29s b24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTWluU2l6ZShzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuTWluU2l6ZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBNYXhTaXpl KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5NYXhTaXplLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IHZmclBhc3N3b3JkRmxhZ3NGaWVsZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclBh c3N3b3JkRmxhZ3NGaWVsZENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBLZXkoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLktleSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBFbmNvZGluZyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5jb2RpbmcsIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50 UGFzc3dvcmQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRQYXNzd29yZCIgKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRQYXNzd29yZChz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRl bWVudFBhc3N3b3JkKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxj dHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UGFzc3dvcmRDb250ZXh0KHNlbGYsDQo+ ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1 bGUobG9jYWxjdHgsIDIxOCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFBhc3N3b3JkKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAg dHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc5Mw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzk0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi52ZnJRdWVzdGlvbkhlYWRlcihsb2NhbGN0eC5PcE9iaiwgbG9jYWxjdHguUVR5cGUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3OTUNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTgwMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzk2DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGxvY2FsY3R4LkYgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5G TEFHUykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3OTcNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3OTgNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi52ZnJQYXNzd29yZEZsYWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc5OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgwNw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1W ZnJTeW50YXhQYXJzZXIuS2V5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTgwMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5LZXkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODA0DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODA1DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MDYNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MDkNCj4gPg0K PiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5NaW4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5NaW5TaXplKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODEwDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgxMQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTgxMg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx ODEzDQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguTWF4ID0gc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTWF4U2l6ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTgxNA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRf XzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MTUNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MTYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTgyMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRW5jb2Rpbmc6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODE3DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuY29kaW5nKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgxOA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgxOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxODIwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODIzDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi52ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QobG9jYWxjdHguTm9kZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgyNA0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZFBhc3N3b3JkKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxODI1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZm clBhc3N3b3JkRmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5IRmxhZ3MgPSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgcGFzc3dvcmRGbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuUGFzc3dvcmRGbGFn c0ZpZWxkQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlBhc3N3b3JkRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyUGFzc3dvcmRGbGFn c0ZpZWxkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0 ciggdmlzaXRvciwgInZpc2l0VmZyUGFzc3dvcmRGbGFnc0ZpZWxkIiApOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclBhc3N3b3JkRmxhZ3NGaWVsZChz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclBhc3N3 b3JkRmxhZ3NGaWVsZChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2Fs Y3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclBhc3N3b3JkRmxhZ3NGaWVsZENvbnRleHQoc2VsZiwN Cj4gc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMjIwLCBzZWxmLlJVTEVfdmZyUGFzc3dvcmRGbGFnc0ZpZWxkKQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAg ICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgyNw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYucGFzc3dvcmRGbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTgzMg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJz ZXIuQml0V2lzZU9yOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgy OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5C aXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODI5DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYucGFzc3dvcmRGbGFnc0ZpZWxkKCkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MzQNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZp bmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgY2xhc3MgUGFzc3dvcmRGbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0t MSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLkhGbGFnID0gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIHF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZChzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZENvbnRlDQo+ID4geHQsMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5k ZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX3Bhc3N3b3JkRmxhZ3NGaWVsZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFBhc3N3b3JkRmxhZ3NGaWVsZCIgKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRQYXNzd29yZEZs YWdzRmllbGQoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBwYXNzd29yZEZsYWdzRmllbGQoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5QYXNzd29yZEZsYWdzRmllbGRDb250ZXh0KHNl bGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDIyMiwgc2VsZi5SVUxFX3Bhc3N3b3JkRmxhZ3NGaWVsZCkNCj4g Pg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTgzNw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk51bWJlcl06DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MzUNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZywNCj4gPiBWZnJTeW50YXhQYXJzZXIu TlZBY2Nlc3NGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVzZXRSZXF1aXJlZEZsYWcsDQo+ID4gVmZy U3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZywgVmZyU3ludGF4UGFyc2VyLkxhdGVD aGVja0ZsYWcsDQo+ID4gVmZyU3ludGF4UGFyc2VyLlJlYWRPbmx5RmxhZywgVmZyU3ludGF4UGFy c2VyLk9wdGlvbk9ubHlGbGFnLA0KPiA+IFZmclN5bnRheFBhcnNlci5SZXN0U3R5bGVGbGFnXToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAy KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgzNg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudE9yZGVyZWRM aXN0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5v ZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX09SREVSRURfTElTVF9PUCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLk9wT2JqID0gQ0lmck9yZGVyZWRMaXN0KCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUwNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLk0gPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLkYgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBPcmRlcmVkTGlzdChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3JkZXJlZExpc3QsIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgdmZyUXVlc3Rpb25IZWFkZXIoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJRdWVzdGlvbkhlYWRlckNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdA0KPiA+IENvbnRl eHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBFbmRM aXN0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5FbmRMaXN0LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIHZmck9yZGVyZWRMaXN0RmxhZ3Moc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5WZnJPcmRlcmVkTGlzdEZsYWdzQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE1heENvbnRhaW5lcnMoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1h eENvbnRhaW5lcnMsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRkxBR1Mo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50T3JkZXJlZExpc3QNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1l bnRPcmRlcmVkTGlzdCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRWZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudE9yZGVyZWRMaXN0KHNlbGYpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50T3JkZXJlZExpc3RDb250ZXh0KHNlbGYsDQo+ID4gc2VsZi5fY3R4LCBzZWxm LnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIyNCwg c2VsZi5SVUxFX3ZmclN0YXRlbWVudE9yZGVyZWRMaXN0KQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgzOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk9yZGVyZWRMaXN0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxODQwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJRdWVzdGlv bkhlYWRlcihsb2NhbGN0eC5PcE9iaiwgbG9jYWxjdHguUVR5cGUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE4NDENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTg0Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuTWF4Q29udGFpbmVyczoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NDINCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgbG9jYWxjdHguTSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk1heENv bnRhaW5lcnMpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODQzDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODQ0DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NDUNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NTMNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdTOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTg0OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5G ID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxODQ5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxODUwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyT3JkZXJl ZExpc3RGbGFncygpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODUx DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxODU1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRRdWVz dGlvbk9wdGlvbkxpc3QobG9jYWxjdHguTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTg1Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkVuZExpc3QpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NTcN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29s b24pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4g Pg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0 UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyT3JkZXJlZExpc3RGbGFnc0NvbnRleHQo UGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4g aW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5IRmxhZ3MgPSAwDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5MRmxhZ3MgPSAwDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgb3JkZXJlZGxpc3RGbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJz ZXIuT3JkZXJlZGxpc3RGbGFnc0ZpZWxkQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLk9yZGVyZWRsaXN0RmxhZ3NGaWVsZENvbnRleHQs aSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBCaXRXaXNl T3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Qml0V2lzZU9yLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2Vy LlJVTEVfdmZyT3JkZXJlZExpc3RGbGFncw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmck9yZGVyZWRMaXN0RmxhZ3Mi ICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyT3Jk ZXJlZExpc3RGbGFncyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIHZmck9yZGVyZWRMaXN0RmxhZ3Moc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJPcmRlcmVkTGlzdEZsYWdzQ29u dGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyMjYsIHNlbGYuUlVMRV92ZnJPcmRlcmVkTGlzdEZs YWdzKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg1OQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYub3JkZXJlZGxpc3RGbGFnc0ZpZWxkKCkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg2NA0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJT eW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTg2MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxODYxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYub3JkZXJlZGxpc3RGbGFnc0Zp ZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NjYNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgT3JkZXJlZGxpc3RGbGFnc0ZpZWxkQ29udGV4dChQYXJz ZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZv a2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJz ZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkhGbGFnID0gMA0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuTEZsYWcgPSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgVW5pUXVlRmxhZyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVW5pUXVlRmxhZywgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOb0VtcHR5RmxhZyhzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTm9FbXB0 eUZsYWcsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgcXVlc3Rpb25oZWFk ZXJGbGFnc0ZpZWxkKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25oZWFkZXJG bGFnc0ZpZWxkQ29udGUNCj4gPiB4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfb3JkZXJlZGxpc3RGbGFnc0ZpZWxkDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VU cmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwg InZpc2l0T3JkZXJlZGxpc3RGbGFnc0ZpZWxkIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdE9yZGVyZWRsaXN0RmxhZ3NGaWVsZChzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIG9yZGVyZWRsaXN0RmxhZ3NGaWVs ZChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLk9yZGVyZWRsaXN0RmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0K PiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMjI4LCBzZWxmLlJVTEVfb3JkZXJlZGxpc3RGbGFnc0ZpZWxkKQ0KPiA+DQo+ID4gKyAgICAg ICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODcxDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtYmVyXToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg2Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuVW5pUXVlRmxhZ106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE4NjgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVW5pUXVlRmxhZykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Ob0VtcHR5Rmxh Z106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NjkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTm9FbXB0eUZs YWcpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFnLA0KPiA+IFZm clN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWcsIFZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVk RmxhZywNCj4gPiBWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnLCBWZnJTeW50 YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZywNCj4gPiBWZnJTeW50YXhQYXJzZXIuUmVhZE9ubHlGbGFn LCBWZnJTeW50YXhQYXJzZXIuT3B0aW9uT25seUZsYWcsDQo+ID4gVmZyU3ludGF4UGFyc2VyLlJl c3RTdHlsZUZsYWddOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx ODcwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYucXVlc3Rpb25oZWFkZXJGbGFnc0Zp ZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhj ZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhj ZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9y dEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9j YWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3Rh dGVtZW50RGF0ZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9EQVRFX09QKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuT3BPYmogPSBDSWZyRGF0ZSgpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fREFURQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuVmFsID0gRUZJX0lGUl9UWVBFX1ZBTFVFKCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLkYxID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5G MiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIERhdGUo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkRhdGUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRW5k RGF0ZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuRW5kRGF0ZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkhlYWRlcihzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0DQo+ID4gQ29udGV4dCww KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFllYXIoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlllYXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVmFySWQo c2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLlZhcklkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5WYXJJZCwg aSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNl bGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5TdHJpbmdJZGVudGlmaWVyLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IERvdChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJT eW50YXhQYXJzZXIuRG90KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Eb3Qs IGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgUHJvbXB0KHNlbGYsIGk6aW50 PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Qcm9t cHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlByb21wdCwgaSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmLCBpOmludD1Ob25l KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9r ZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCBpKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1O b25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuT3BlblBh cmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIGkpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCBpKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEhlbHAoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkhlbHApDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkhlbHAsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgbWluTWF4RGF0ZVN0ZXBEZWZhdWx0KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIu TWluTWF4RGF0ZVN0ZXBEZWZhdWx0Q29udGUNCj4gPiB4dCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLk1pbk1heERhdGVTdGVwRGVmYXVsdENv bnRleHQNCj4gPiAsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBNb250aChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTW9udGgsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgRGF5KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5EYXksIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgdmZyRGF0ZUZsYWdzKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy bg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRGF0ZUZs YWdzQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIHZmclN0YXRlbWVudEluY29uc2lzdGVudElmKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZDb24NCj4gPiB0ZXh0KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW5jb25z aXN0ZW50SWZDb250DQo+ID4gZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50RGF0ZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdFZmclN0YXRlbWVudERhdGUiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50RGF0ZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudERhdGUoc2VsZik6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnREYXRlQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyMzAsIHNlbGYuUlVMRV92ZnJT dGF0ZW1lbnREYXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlw ZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTg3Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkRhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NjQNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAg ICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Qcm9tcHQsIFZmclN5bnRheFBhcnNlci5OYW1l LA0KPiA+IFZmclN5bnRheFBhcnNlci5WYXJJZCwgVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uSWRd Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg3NA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnZmclF1ZXN0aW9uSGVhZGVyKGxvY2FsY3R4Lk9wT2JqLCBs b2NhbGN0eC5RVHlwZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4 NzUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODgxDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODc2DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBsb2NhbGN0eC5GMSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdT KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NzcNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg3OA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZnJEYXRlRmxhZ3MoKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NzkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg4Mw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9u TGlzdChsb2NhbGN0eC5Ob2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4N Cj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlllYXJdOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg4NQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5ZZWFyKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg4Ng0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5WYXJJZCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4ODcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE4ODgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE4ODkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuRG90KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTg5MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTg5MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE4OTINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuUHJvbXB0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg5Mw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg5NA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4OTUNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg5Ng0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODk3DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODk4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTg5OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5IZWxwKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTkwMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTkwMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TdHJpbmdUb2tlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5 MDINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu T3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkwMw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTA0DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4p DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTA1DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkwNg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1pbk1heERhdGVTdGVwRGVmYXVsdChsb2NhbGN0eC5WYWwuZGF0ZSwgMCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MDcNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTW9udGgpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTA4DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlZhcklkKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkwOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTkxMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTkxMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Eb3QpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxOTEyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxOTEzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTkxNA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Qcm9tcHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTE1 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRf XzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTE2DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2Vu KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkxNw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTE4DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MTkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MjANCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxOTIxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkhlbHApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxOTIyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxOTIzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTkyNA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTI1 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MjYNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MjcNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTI4DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWluTWF4RGF0ZVN0ZXBEZWZhdWx0KGxvY2FsY3R4LlZhbC5kYXRlLCAx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkyOQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EYXkpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTMwDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlZhcklkKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkzMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTkzMg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTkzMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Eb3QpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxOTM0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxOTM1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTkzNg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Qcm9tcHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTM3 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRf XzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTM4DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2Vu KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkzOQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTQwDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NDENCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NDINCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxOTQzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkhlbHApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxOTQ0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxOTQ1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTk0Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTQ3 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NDgNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NDkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTUwDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWluTWF4RGF0ZVN0ZXBEZWZhdWx0KGxvY2FsY3R4LlZhbC5kYXRlLCAy KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk1Ng0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk1MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgbG9jYWxjdHguRjIgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTUyDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NTMNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYudmZyRGF0ZUZsYWdzKCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTU0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NjENCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkluY29uc2lzdGVudElmOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NTgNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYoKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NjMNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0 aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE5NjYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5F bmREYXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTY3DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+ DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiAr ICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGNsYXNzIE1pbk1heERhdGVTdGVwRGVmYXVsdENvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tp bmdTdGF0ZTppbnQ9LTEsIERhdGU9Tm9uZSwgS2V5VmFsdWU9Tm9uZSk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLkRhdGUgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5LZXlWYWx1ZSA9 IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLkRhdGUgPSBEYXRlDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5LZXlWYWx1ZSA9IEtleVZhbHVlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgTWluaW11bShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTWluaW11bSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Q29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTWF4aW11bShzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuTWF4aW11bSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdGVw KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5TdGVwLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIERl ZmF1bHQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkRlZmF1bHQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV9taW5NYXhEYXRlU3RlcERlZmF1bHQNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9y KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRNaW5N YXhEYXRlU3RlcERlZmF1bHQiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0TWluTWF4RGF0ZVN0ZXBEZWZhdWx0KHNlbGYpDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgbWluTWF4RGF0ZVN0ZXBEZWZhdWx0KHNlbGYsIERh dGUsIEtleVZhbHVlKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLk1pbk1heERhdGVTdGVwRGVmYXVsdENvbnRleHQoc2VsZiwNCj4gPiBz ZWxmLl9jdHgsIHNlbGYuc3RhdGUsIERhdGUsIEtleVZhbHVlKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIzMiwgc2VsZi5SVUxFX21pbk1heERhdGVTdGVwRGVm YXVsdCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0K PiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NjkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NaW5pbXVt KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTcwDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTk3MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTk3Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTczDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWF4aW11bSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk3NA0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE5NzUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE5NzYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk4MQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg X2xhPT1WZnJTeW50YXhQYXJzZXIuU3RlcDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE5NzcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuU3RlcCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE5NzgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NzkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk4MA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk4 Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRGVmYXVsdDoNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5ODMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGVmYXVsdCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE5ODQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE5ODUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE5ODYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAg ICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4N Cj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgY2xhc3MgVmZyRGF0ZUZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0t MSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLkxGbGFncyA9IDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBkYXRlRmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGVG bGFnc0ZpZWxkQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLkRhdGVGbGFnc0ZpZWxkQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJEYXRlRmxhZ3MNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJz ZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXRWZnJEYXRlRmxhZ3MiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0VmZyRGF0ZUZsYWdzKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGls ZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyRGF0ZUZsYWdzKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyRGF0ZUZsYWdzQ29u dGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyMzQsIHNlbGYuUlVMRV92ZnJEYXRlRmxhZ3MpDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAg ICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTg5DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5kYXRlRmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE5OTQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJp dFdpc2VPcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5OTANCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lz ZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk5MQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLmRhdGVGbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5OTYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xh c3MgRGF0ZUZsYWdzRmllbGRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuTEZsYWcgPSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg TnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgWWVhclN1cHBwcmVzc0ZsYWcoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlllYXJTdXBwcHJlc3NGbGFnLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE1vbnRoU3VwcHJlc3NGbGFnKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5Nb250aFN1cHByZXNzRmxhZywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBEYXlTdXBwcmVzc0ZsYWcoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRheVN1cHByZXNzRmxhZywgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdG9yYWdlTm9ybWFsRmxhZyhzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu U3RvcmFnZU5vcm1hbEZsYWcsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg U3RvcmFnZVRpbWVGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdG9yYWdlVGltZUZsYWcsIDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RvcmFnZVdha2VVcEZsYWcoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0b3Jh Z2VXYWtlVXBGbGFnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfZGF0ZUZsYWdzRmllbGQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXREYXRlRmxhZ3NGaWVsZCIgKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRlRmxhZ3NGaWVs ZChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGRhdGVG bGFnc0ZpZWxkKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuRGF0ZUZsYWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwN Cj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxj dHgsIDIzNiwgc2VsZi5SVUxFX2RhdGVGbGFnc0ZpZWxkKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk5Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgbm90KCgoKChfbGEg LSAxODEpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDE4MSkpICYgKCgxIDw8DQo+ ID4gKFZmclN5bnRheFBhcnNlci5ZZWFyU3VwcHByZXNzRmxhZyAtIDE4MSkpIHwgKDEgPDwNCj4g PiAoVmZyU3ludGF4UGFyc2VyLk1vbnRoU3VwcHJlc3NGbGFnIC0gMTgxKSkgfCAoMSA8PA0KPiA+ IChWZnJTeW50YXhQYXJzZXIuRGF5U3VwcHJlc3NGbGFnIC0gMTgxKSkgfCAoMSA8PA0KPiA+IChW ZnJTeW50YXhQYXJzZXIuU3RvcmFnZU5vcm1hbEZsYWcgLSAxODEpKSB8ICgxIDw8DQo+ID4gKFZm clN5bnRheFBhcnNlci5TdG9yYWdlVGltZUZsYWcgLSAxODEpKSB8ICgxIDw8DQo+ID4gKFZmclN5 bnRheFBhcnNlci5TdG9yYWdlV2FrZVVwRmxhZyAtIDE4MSkpKSkgIT0gMCkgb3INCj4gPiBfbGE9 PVZmclN5bnRheFBhcnNlci5OdW1iZXIpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXJJbmxpbmUoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydE1h dGNoKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQo+ID4N Cj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50VGltZUNvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0 ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lG Ul9USU1FX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBDSWZyVGltZSgp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVF U1RJT05fVElNRQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVmFsID0gRUZJX0lGUl9UWVBF X1ZBTFVFKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkYxID0gTm9uZSAjIFRva2VuDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GMiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIFRpbWUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRpbWUsIDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgRW5kVGltZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kVGltZSwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWlj b2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkhl YWRlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29udGV4dCww KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNl bGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25P cHRpb25MaXN0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rp b25PcHRpb25MaXN0DQo+ID4gQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIEhvdXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkhvdXIsIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgVmFySWQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlZhcklkKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5WYXJJZCwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCBpKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIERvdChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuRG90KQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5Eb3QsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgUHJvbXB0KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxz ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlByb21wdCwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBT dHJpbmdUb2tlbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu cyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxz ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlN0cmluZ1Rva2VuLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VucyhWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5PcGVuUGFyZW4sIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5z KFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk51bWJlciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBh cmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5DbG9zZVBhcmVuLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEhlbHAo c2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLkhlbHApDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkhlbHAsIGkp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgbWluTWF4VGltZVN0ZXBEZWZhdWx0 KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuTWluTWF4VGltZVN0ZXBEZWZhdWx0Q29udGUNCj4g PiB4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLk1pbk1heFRpbWVTdGVwRGVmYXVsdENvbnRleA0KPiA+IHQsaSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBNaW51dGUoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1pbnV0ZSwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZWNvbmQoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNl Y29uZCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJUaW1lRmxhZ3Mo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJUaW1lRmxhZ3NDb250ZXh0LDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50SW5jb25z aXN0ZW50SWYoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbmNvbnNpc3Rl bnRJZkNvbg0KPiA+IHRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZkNvbnQNCj4gPiBleHQs aSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBGTEFHUyhz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuRkxBR1MsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRUaW1lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50VGltZSIg KToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0 ZW1lbnRUaW1lKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgdmZyU3RhdGVtZW50VGltZShzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFRpbWVDb250ZXh0KHNlbGYs IHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDIzOCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFRpbWUpDQo+ID4NCj4g PiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0 cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTk5DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGltZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjA5MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLlByb21wdCwgVmZyU3ludGF4UGFyc2VyLk5hbWUsDQo+ID4gVmZyU3ludGF4UGFyc2Vy LlZhcklkLCBWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25JZF06DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMDAwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu dmZyUXVlc3Rpb25IZWFkZXIobG9jYWxjdHguT3BPYmosIGxvY2FsY3R4LlFUeXBlKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAwMQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMDcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIF9sYT09 VmZyU3ludGF4UGFyc2VyLkZMQUdTOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIwMDINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGxvY2FsY3R4LkYx ID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAwMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDA0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLnZmclRpbWVGbGFncygpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjAwNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDA5DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4Lk5vZGUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSG91cl06DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMDExDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkhvdXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMDEyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlZhcklkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjAxMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAxNA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJ ZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAxNQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Eb3Qp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDE2DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZp ZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDE3DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAxOA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDE5DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMDIwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjAyMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMDIyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIwMjMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIwMjQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDI1 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkhl bHApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDI2DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDI3DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAyOA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDI5DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMzANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIwMzENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMDMyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWluTWF4VGlt ZVN0ZXBEZWZhdWx0KGxvY2FsY3R4LlZhbC50aW1lLCAwKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjAzMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5NaW51dGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMDM0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlZhcklkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjAzNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAzNg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJp bmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAz Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5E b3QpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDM4DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50 aWZpZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDM5DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA0MA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDQxDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDQyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjA0Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMDQ0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIwNDUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIwNDYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MDQ3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkhlbHApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDQ4DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDQ5DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA1MA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDUxDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNTINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNTMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMDU0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWluTWF4 VGltZVN0ZXBEZWZhdWx0KGxvY2FsY3R4LlZhbC50aW1lLCAxKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjA1NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TZWNvbmQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMDU2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlZhcklkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjA1Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA1 OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T dHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjA1OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Eb3QpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDYwDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lk ZW50aWZpZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDYxDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA2Mg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDYzDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDY0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA2NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMDY2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIwNjcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIwNjgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMDY5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkhlbHApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDcwDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDcxDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA3Mg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDczDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNzQNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNzUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMDc2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWlu TWF4VGltZVN0ZXBEZWZhdWx0KGxvY2FsY3R4LlZhbC50aW1lLCAyKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA4Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgX2xhPT1W ZnJTeW50YXhQYXJzZXIuRkxBR1M6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjA3Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgbG9jYWxjdHguRjIg PSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDc4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNzkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYudmZyVGltZUZsYWdzKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMDgwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwODcNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHdoaWxl IF9sYT09VmZyU3ludGF4UGFyc2VyLkluY29uc2lzdGVudElmOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwODQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYudmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYoKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwODkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwOTINCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRUaW1lKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDkzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNs YXNzIE1pbk1heFRpbWVTdGVwRGVmYXVsdENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFy ZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIFRp bWU9Tm9uZSwgS2V5VmFsdWU9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlRpbWUgPSBOb25l DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5LZXlWYWx1ZSA9IE5vbmUNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLlRpbWUgPSBUaW1lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5LZXlWYWx1ZSA9IEtl eVZhbHVlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTWluaW11bShzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuTWluaW11bSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIo c2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVy LCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTWF4aW11bShzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWF4aW11bSwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdGVwKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdGVwLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIERlZmF1bHQoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRl ZmF1bHQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVM RV9taW5NYXhUaW1lU3RlcERlZmF1bHQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRNaW5NYXhUaW1lU3RlcERlZmF1bHQi ICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0TWluTWF4 VGltZVN0ZXBEZWZhdWx0KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBkZWYgbWluTWF4VGltZVN0ZXBEZWZhdWx0KHNlbGYsIFRpbWUsIEtleVZhbHVlKToNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLk1p bk1heFRpbWVTdGVwRGVmYXVsdENvbnRleHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3Rh dGUsIFRpbWUsIEtleVZhbHVlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDI0MCwgc2VsZi5SVUxFX21pbk1heFRpbWVTdGVwRGVmYXVsdCkNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwOTUNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NaW5pbXVtKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMDk2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjA5Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA5OA0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDk5DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWF4aW11bSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjEwMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIx MDENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMDINCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEwNw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJz ZXIuU3RlcDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMDMNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RlcCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMDQNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMDUNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEwNg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjExMw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1W ZnJTeW50YXhQYXJzZXIuRGVmYXVsdDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIxMDkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuRGVmYXVsdCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIxMTANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMTENCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIx MTINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3Mg VmZyVGltZUZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLkxGbGFncyA9IDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB0aW1l RmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlRpbWVGbGFnc0ZpZWxkQ29udGV4dCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlRpbWVG bGFnc0ZpZWxkQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJUaW1lRmxhZ3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJUaW1lRmxh Z3MiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZy VGltZUZsYWdzKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgdmZyVGltZUZsYWdzKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyVGltZUZsYWdzQ29udGV4dChzZWxmLCBzZWxmLl9j dHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxv Y2FsY3R4LCAyNDIsIHNlbGYuUlVMRV92ZnJUaW1lRmxhZ3MpDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTE1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi50aW1lRmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIx MjANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMTYNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjExNw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnRpbWVGbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIxMjINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0g cmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zlcihz ZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVGltZUZsYWdzRmllbGRD b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTEZsYWcg PSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5O dW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgSG91clN1cHBwcmVz c0ZsYWcoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkhvdXJTdXBwcHJlc3NGbGFnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIE1pbnV0ZVN1cHByZXNzRmxhZyhzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWludXRlU3VwcHJl c3NGbGFnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlY29uZFN1cHBy ZXNzRmxhZyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuU2Vjb25kU3VwcHJlc3NGbGFnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIFN0b3JhZ2VOb3JtYWxGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdG9yYWdlTm9y bWFsRmxhZywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdG9yYWdlVGlt ZUZsYWcoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VUaW1lRmxhZywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBTdG9yYWdlV2FrZVVwRmxhZyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RvcmFnZVdha2VVcEZs YWcsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV90 aW1lRmxhZ3NGaWVsZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChz ZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFRpbWVGbGFnc0ZpZWxkIiApOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFRpbWVGbGFnc0ZpZWxkKHNlbGYpDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdGltZUZsYWdzRmllbGQo c2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRh eFBhcnNlci5UaW1lRmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYu c3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjQ0LCBz ZWxmLlJVTEVfdGltZUZsYWdzRmllbGQpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAg IyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMTIzDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5w dXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBub3QoKCgoKF9sYSAtIDE4NCkpICYg fjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMTg0KSkgJiAoKDEgPDwNCj4gPiAoVmZyU3lu dGF4UGFyc2VyLkhvdXJTdXBwcHJlc3NGbGFnIC0gMTg0KSkgfCAoMSA8PA0KPiA+IChWZnJTeW50 YXhQYXJzZXIuTWludXRlU3VwcHJlc3NGbGFnIC0gMTg0KSkgfCAoMSA8PA0KPiA+IChWZnJTeW50 YXhQYXJzZXIuU2Vjb25kU3VwcHJlc3NGbGFnIC0gMTg0KSkgfCAoMSA8PA0KPiA+IChWZnJTeW50 YXhQYXJzZXIuU3RvcmFnZU5vcm1hbEZsYWcgLSAxODQpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRh eFBhcnNlci5TdG9yYWdlVGltZUZsYWcgLSAxODQpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBh cnNlci5TdG9yYWdlV2FrZVVwRmxhZyAtIDE4NCkpKSkgIT0gMCkgb3INCj4gPiBfbGE9PVZmclN5 bnRheFBhcnNlci5OdW1iZXIpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXJJbmxpbmUoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydE1hdGNoKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQo+ID4NCj4gPiAr ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAg IGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50Q29uZGl0aW9uYWxDb250ZXh0KFBhcnNlclJ1bGVD b250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3Rh dGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVu dCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0KHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdENvbnRlDQo+ID4g eHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJT dGF0ZW1lbnRTdXBwcmVzc0lmU3RhdChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudFN1cHByZXNzSWZTdGF0Q29udA0KPiA+IGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXQoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0Q29udA0K PiA+IGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdEMNCj4gPiBvbnRleHQsMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Zm clN0YXRlbWVudENvbmRpdGlvbmFsDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50Q29uZGl0aW9uYWwi ICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3Rh dGVtZW50Q29uZGl0aW9uYWwoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRDb25kaXRpb25hbChzZWxmKToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENv bmRpdGlvbmFsQ29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNDYsIHNlbGYuUlVMRV92ZnJT dGF0ZW1lbnRDb25kaXRpb25hbCkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEyOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2Vs Zi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLkRpc2FibGVJZl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIxMjUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRE aXNhYmxlSWZTdGF0KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmXToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAy KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEyNg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0KCkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5HcmF5T3V0SWZdOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMTI3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu dmZyU3RhdGVtZW50R3JheU91dElmU3RhdCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBh c3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu SW5jb25zaXN0ZW50SWZdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMTI4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50SW5jb25z aXN0ZW50SWZTdGF0KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlh YmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xh c3MgVmZyU3RhdGVtZW50Q29uZGl0aW9uYWxOZXdDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0x KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tp bmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0KHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdENvbnRlDQo+ID4geHQsMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRT dXBwcmVzc0lmU3RhdE5ldyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4g Pg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dFN1cHByZXNzSWZTdGF0TmV3DQo+ID4gQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXcoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3DQo+ ID4gQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIHZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdChzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdEMNCj4gPiBvbnRleHQsMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X3ZmclN0YXRlbWVudENvbmRpdGlvbmFsTmV3DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50Q29uZGl0 aW9uYWxOZXciICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0VmZyU3RhdGVtZW50Q29uZGl0aW9uYWxOZXcoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ldyhzZWxmKToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudENvbmRpdGlvbmFsTmV3Q29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0eCwg c2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAy NDgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ldykNCj4gPg0KPiA+ICsgICAg ICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMzENCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudERpc2FibGVJZlN0YXQoKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTMyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldygpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIxMzMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVu dEdyYXlPdXRJZlN0YXROZXcoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MTM0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJ ZlN0YXQoKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFz IHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFN1cHByZXNzSWZT dGF0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5v ZGUgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50 U3VwcHJlc3NJZlN0YXROZXcoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRTdXBwcmVzc0lmU3RhdE5ldw0KPiA+IENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN1cHBy ZXNzSWZTdGF0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXQiICk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50U3Vw cHJlc3NJZlN0YXQoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiB2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1cHBy ZXNzSWZTdGF0Q29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNTAsIHNlbGYuUlVMRV92ZnJT dGF0ZW1lbnRTdXBwcmVzc0lmU3RhdCkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMzYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3KCkNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2Nh bGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFz cyBWZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgdmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldyhzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXcNCj4gPiBDb250ZXh0LDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUlu ZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIu UlVMRV92ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50R3Jh eU91dElmU3RhdCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRWZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD aGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50R3JheU91dElmU3RhdChzZWxmKToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXRDb250ZXh0KHNlbGYsDQo+ID4gc2VsZi5fY3R4LCBz ZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI1 Miwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXQpDQo+ID4NCj4gPiArICAgICAg ICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTM4DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3KCkNCj4gPg0KPiA+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAg ICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRTdGF0TGlzdENvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0 ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0YXQoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0Q29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9ucyhzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uc0NvbnRleHQsDQo+ID4gMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1l bnRDb25kaXRpb25hbChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0K PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENv bmRpdGlvbmFsQ29udGV4dA0KPiA+ICwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudExhYmVsKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50TGFiZWxDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXh0ZW5zaW9uKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXh0ZW5zaW9uQ29udGV4dCwNCj4gPiAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudElu dmFsaWQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkQ29udGV4 dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfdmZyU3RhdGVtZW50U3RhdExpc3QNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRTdGF0 TGlzdCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRW ZnJTdGF0ZW1lbnRTdGF0TGlzdChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIHZmclN0YXRlbWVudFN0YXRMaXN0KHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3Rh dExpc3RDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI1NCwgc2VsZi5SVUxFX3ZmclN0YXRl bWVudFN0YXRMaXN0KQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMTQ2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuU3VidGl0bGUsIFZmclN5bnRheFBhcnNlci5UZXh0LA0KPiA+IFZmclN5bnRheFBhcnNlci5H b3RvLCBWZnJTeW50YXhQYXJzZXIuUmVzZXRCdXR0b25dOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMTQwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu dmZyU3RhdGVtZW50U3RhdCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuT25lT2YsIFZm clN5bnRheFBhcnNlci5PcmRlcmVkTGlzdCwNCj4gPiBWZnJTeW50YXhQYXJzZXIuRGF0ZSwgVmZy U3ludGF4UGFyc2VyLlRpbWUsIFZmclN5bnRheFBhcnNlci5DaGVja0JveCwNCj4gPiBWZnJTeW50 YXhQYXJzZXIuTnVtZXJpYywgVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkLA0KPiBWZnJTeW50YXhQ YXJzZXIuU3RyaW5nLA0KPiA+IFZmclN5bnRheFBhcnNlci5BY3Rpb25dOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTQxDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25zKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5HcmF5T3V0SWYsDQo+IFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmLA0KPiA+IFZmclN5 bnRheFBhcnNlci5EaXNhYmxlSWYsIFZmclN5bnRheFBhcnNlci5JbmNvbnNpc3RlbnRJZl06DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNDINCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRDb25kaXRpb25hbCgpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuTGFiZWxdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMTQzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVt ZW50TGFiZWwoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkd1aWRPcF06DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNDQNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHRlbnNpb24oKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLkludmVudG9yeSwgVmZyU3ludGF4UGFyc2VyLkhpZGRlbiwNCj4gPiBWZnJTeW50 YXhQYXJzZXIuUmVzdG9yZSwgVmZyU3ludGF4UGFyc2VyLlNhdmVdOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTQ1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50SW52YWxpZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBh c3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAg ICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFN0YXRMaXN0T2xkQ29udGV4dChQYXJzZXJSdWxl Q29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0 YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJl bnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0 KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdENvbnRleHQsMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRR dWVzdGlvbnMoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlv bnNDb250ZXh0LA0KPiA+IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgdmZyU3RhdGVtZW50TGFiZWwoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRMYWJlbENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbnZhbGlkKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50SW52YWxpZENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN0YXRMaXN0 T2xkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3RhdExpc3RPbGQiICk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50U3RhdExpc3RPbGQo c2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0 ZW1lbnRTdGF0TGlzdE9sZChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxv Y2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRMaXN0T2xkQ29udGV4dChz ZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCAyNTYsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRTdGF0TGlzdE9s ZCkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjE1Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxl LCBWZnJTeW50YXhQYXJzZXIuVGV4dCwNCj4gPiBWZnJTeW50YXhQYXJzZXIuR290bywgVmZyU3lu dGF4UGFyc2VyLlJlc2V0QnV0dG9uXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjE0OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVu dFN0YXQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk9uZU9mLCBWZnJTeW50YXhQYXJz ZXIuT3JkZXJlZExpc3QsDQo+ID4gVmZyU3ludGF4UGFyc2VyLkRhdGUsIFZmclN5bnRheFBhcnNl ci5UaW1lLCBWZnJTeW50YXhQYXJzZXIuQ2hlY2tCb3gsDQo+ID4gVmZyU3ludGF4UGFyc2VyLk51 bWVyaWMsIFZmclN5bnRheFBhcnNlci5QYXNzd29yZCwNCj4gVmZyU3ludGF4UGFyc2VyLlN0cmlu ZywNCj4gPiBWZnJTeW50YXhQYXJzZXIuQWN0aW9uXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjE0OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZm clN0YXRlbWVudFF1ZXN0aW9ucygpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGFiZWxd Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDMpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTUwDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50TGFiZWwoKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLkludmVudG9yeSwgVmZyU3ludGF4UGFyc2VyLkhpZGRlbiwNCj4gPiBW ZnJTeW50YXhQYXJzZXIuUmVzdG9yZSwgVmZyU3ludGF4UGFyc2VyLlNhdmVdOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTUxDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50SW52YWxpZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiAr ICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudERpc2FibGVJZlN0YXRDb250ZXh0KFBh cnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGlu dm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5p dF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBh cnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVO b2RlKEVGSV9JRlJfRElTQUJMRV9JRl9PUCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBEaXNhYmxlSWYoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQNCj4gPiAsMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZiwg aTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9u LCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEVuZElmKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5F bmRJZiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRT dGF0TGlzdChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRMaXN0Q29udGV4 dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudFN0YXRMaXN0Q29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50RGlzYWJsZUlmU3Rh dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudERpc2FibGVJZlN0YXQiICk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50RGlzYWJsZUlmU3Rh dChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0 YXRlbWVudERpc2FibGVJZlN0YXQoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0Q29u dGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNTgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnREaXNh YmxlSWZTdGF0KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0K PiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjE1NA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRp c2FibGVJZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE1NQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNTYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIxNjANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlICgoKChfbGEgLSA0NikpICYgfjB4M2YpID09 IDAgYW5kICgoMSA8PCAoX2xhIC0gNDYpKSAmICgoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIu T25lT2YgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5PcmRlcmVkTGlzdCAtIDQ2KSkg fA0KPiA+ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3VidGl0bGUgLSA0NikpIHwgKDEgPDwgKFZm clN5bnRheFBhcnNlci5UZXh0IC0gNDYpKSB8DQo+ICgxDQo+ID4gPDwgKFZmclN5bnRheFBhcnNl ci5EYXRlIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVGltZSAtIDQ2KSkgfCAoMSA8 PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuR3JheU91dElmIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuTGFiZWwgLSA0NikpIHwgKDENCj4gPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLklu dmVudG9yeSAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94IC0gNDYpKQ0K PiB8DQo+ID4gKDEgPDwgKFZmclN5bnRheFBhcnNlci5OdW1lcmljIC0gNDYpKSB8ICgxIDw8IChW ZnJTeW50YXhQYXJzZXIuUGFzc3dvcmQgLQ0KPiA+IDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFy c2VyLlN0cmluZyAtIDQ2KSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYN Cj4gPiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiAtIDQ2KSkgfCAo MSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuSGlkZGVuIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuR290byAtIDQ2KSkpKSAhPSAwKQ0KPiBvcg0KPiA+ICgoKChfbGEgLSAxMTApKSAm IH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDExMCkpICYgKCgxIDw8DQo+ID4gKFZmclN5 bnRheFBhcnNlci5JbmNvbnNpc3RlbnRJZiAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNl ci5SZXN0b3JlIC0NCj4gPiAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU2F2ZSAtIDEx MCkpIHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLlJlc2V0QnV0dG9uIC0gMTEwKSkgfCAo MSA8PCAoVmZyU3ludGF4UGFyc2VyLkFjdGlvbiAtIDExMCkpDQo+ID4gfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLkd1aWRPcCAtIDExMCkpKSkgIT0gMCk6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMTU3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZy U3RhdGVtZW50U3RhdExpc3QoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjE2Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2Mw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZElmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTY0DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAg ICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5h bGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAg ICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGNsYXNzIFZmclN0YXRlbWVudGdyYXlvdXRJZlN1cHByZXNzSWZDb250ZXh0KFBhcnNlclJ1 bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5n U3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN1cHByZXNzSWYoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlN1cHByZXNzSWYsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg dmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudEV4cHJlc3Npb25Db250ZXh0DQo+ID4gLDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdT LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGZsYWdzRmllbGQoc2VsZiwg aTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRz KFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0LGkpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkNvbW1hLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihz ZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQ YXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRX aXNlT3IsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVM RV92ZnJTdGF0ZW1lbnRncmF5b3V0SWZTdXBwcmVzc0lmDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50 Z3JheW91dElmU3VwcHJlc3NJZiIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRncmF5b3V0SWZTdXBwcmVzc0lmKHNlbGYpDQo+ID4N Cj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50Z3JheW91 dElmU3VwcHJlc3NJZihzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2Fs Y3R4ID0NCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Z3JheW91dElmU3VwcHJlc3NJ ZkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjYwLA0KPiA+IHNlbGYuUlVMRV92ZnJTdGF0 ZW1lbnRncmF5b3V0SWZTdXBwcmVzc0lmKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAw ICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjE2Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlN1cHByZXNzSWYpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIxNzkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdTOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2Nw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNjgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIxNjkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0Zp ZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNzQNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTcwDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE3MQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTc2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTc3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTgxDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjE4Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBs b2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJT dGF0ZW1lbnRzdXBwcmVzc0lmR3JheU91dElmQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBHcmF5T3V0SWYoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJ ZiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lv bkNvbnRleHQNCj4gPiAsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgZmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2Vy LkZsYWdzRmllbGRDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3Ip DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudHN1 cHByZXNzSWZHcmF5T3V0SWYNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRzdXBwcmVzc0lmR3JheU91 dElmIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm clN0YXRlbWVudHN1cHByZXNzSWZHcmF5T3V0SWYoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRzdXBwcmVzc0lmR3JheU91dElmKHNl bGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPQ0KPiA+IFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRzdXBwcmVzc0lmR3JheU91dElmQ29udGV4dChzZWxmLCBz ZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJS dWxlKGxvY2FsY3R4LCAyNjIsDQo+ID4gc2VsZi5SVUxFX3ZmclN0YXRlbWVudHN1cHByZXNzSWZH cmF5T3V0SWYpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MTg0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuR3Jh eU91dElmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTk3DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIxODUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMTg2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTg3 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTkyDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICB3aGls ZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjE4OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxODkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjE5NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjE5NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjE5OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZy U3RhdGVtZW50RXhwcmVzc2lvbigpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIyMDANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T ZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCBy ZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50U3VwcHJlc3NJ ZlN0YXROZXdDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29u dGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfU1VQUFJFU1NfSUZfT1ApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgU3VwcHJlc3NJZihzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3VwcHJlc3NJZiwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNz aW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNv bnRleHQNCj4gPiAsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBTZW1pY29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuU2VtaWNvbG9uLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIEVuZElmKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5FbmRJZiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgZmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0K PiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRD b250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdExpc3Qoc2VsZiwgaTppbnQ9Tm9uZSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRTdGF0TGlzdENvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0TGlzdENvbnRleHQs aSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBCaXRXaXNl T3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Qml0V2lzZU9yLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2Vy LlJVTEVfdmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1l bnRTdXBwcmVzc0lmU3RhdE5ldyIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudFN1cHByZXNz SWZTdGF0TmV3KHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHgg PQ0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ld0NvbnRl eHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjY0LA0KPiBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3Vw cHJlc3NJZlN0YXROZXcpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0 eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMjAyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU3VwcHJlc3NJZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIxNQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMjAzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjIwNA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjIwNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIxMA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMDYNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjA3DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIyMTINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIyMTMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMTcNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb24oKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMjE4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjIy DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4N Cj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICB3aGlsZSAoKCgoX2xhIC0gNDYpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9s YSAtIDQ2KSkgJiAoKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLk9uZU9mIC0gNDYpKSB8ICgx IDw8IChWZnJTeW50YXhQYXJzZXIuT3JkZXJlZExpc3QgLSA0NikpIHwNCj4gPiAoMSA8PCAoVmZy U3ludGF4UGFyc2VyLlN1YnRpdGxlIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVGV4 dCAtIDQ2KSkgfA0KPiAoMQ0KPiA+IDw8IChWZnJTeW50YXhQYXJzZXIuRGF0ZSAtIDQ2KSkgfCAo MSA8PCAoVmZyU3ludGF4UGFyc2VyLlRpbWUgLSA0NikpIHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4 UGFyc2VyLkdyYXlPdXRJZiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkxhYmVsIC0g NDYpKSB8ICgxDQo+IDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5JbnZlbnRvcnkgLSA0NikpIHwg KDEgPDwgKFZmclN5bnRheFBhcnNlci5DaGVja0JveCAtIDQ2KSkNCj4gfA0KPiA+ICgxIDw8IChW ZnJTeW50YXhQYXJzZXIuTnVtZXJpYyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlBh c3N3b3JkIC0NCj4gPiA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5TdHJpbmcgLSA0Nikp IHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmDQo+ID4gLSA0NikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYgLSA0NikpIHwgKDEgPDwNCj4gPiAoVmZyU3lu dGF4UGFyc2VyLkhpZGRlbiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkdvdG8gLSA0 NikpKSkgIT0gMCkNCj4gb3INCj4gPiAoKCgoX2xhIC0gMTEwKSkgJiB+MHgzZikgPT0gMCBhbmQg KCgxIDw8IChfbGEgLSAxMTApKSAmICgoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuSW5jb25z aXN0ZW50SWYgLSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUmVzdG9yZSAtDQo+ID4g MTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlNhdmUgLSAxMTApKSB8ICgxIDw8DQo+ID4g KFZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbiAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBh cnNlci5BY3Rpb24gLSAxMTApKQ0KPiA+IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3Ag LSAxMTApKSkpICE9IDApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjIxOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0YXRMaXN0 KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMjQNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMjUNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRJZikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjIyNg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2Nh bGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0 ZW1lbnRHcmF5T3V0SWZTdGF0TmV3Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX0dSQVlfT1VUX0lGX09Q KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEdyYXlPdXRJZihzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu R3JheU91dElmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRl bWVudEV4cHJlc3Npb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRF eHByZXNzaW9uQ29udGV4dA0KPiA+ICwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgRW5kSWYoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZElmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBmbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIu RmxhZ3NGaWVsZENvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0TGlzdChzZWxmLCBp OmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMo VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRMaXN0Q29udGV4dCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRM aXN0Q29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJT eW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlz aXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0 VmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldyIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3KHNlbGYp DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50 R3JheU91dElmU3RhdE5ldyhzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxv Y2FsY3R4ID0NCj4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXdD b250ZXh0KHNlbGYsDQo+ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI2NiwNCj4gc2VsZi5SVUxFX3ZmclN0YXRlbWVu dEdyYXlPdXRJZlN0YXROZXcpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tl biB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMjI4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuR3JheU91dElmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjQx DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4N Cj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMjkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMjMwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMjMxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjM2DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIzMg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMzMNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjIzOA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBf bGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjIzOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI0Mw0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIyNDQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIy NDgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHdoaWxlICgoKChfbGEgLSA0NikpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAo X2xhIC0gNDYpKSAmICgoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuT25lT2YgLSA0NikpIHwg KDEgPDwgKFZmclN5bnRheFBhcnNlci5PcmRlcmVkTGlzdCAtIDQ2KSkgfA0KPiA+ICgxIDw8IChW ZnJTeW50YXhQYXJzZXIuU3VidGl0bGUgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5U ZXh0IC0gNDYpKSB8DQo+ICgxDQo+ID4gPDwgKFZmclN5bnRheFBhcnNlci5EYXRlIC0gNDYpKSB8 ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVGltZSAtIDQ2KSkgfCAoMSA8PA0KPiA+IChWZnJTeW50 YXhQYXJzZXIuR3JheU91dElmIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTGFiZWwg LSA0NikpIHwgKDENCj4gPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLkludmVudG9yeSAtIDQ2KSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94IC0gNDYpKQ0KPiB8DQo+ID4gKDEgPDwg KFZmclN5bnRheFBhcnNlci5OdW1lcmljIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIu UGFzc3dvcmQgLQ0KPiA+IDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0cmluZyAtIDQ2 KSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYNCj4gPiAtIDQ2KSkgfCAo MSA8PCAoVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiAtIDQ2KSkgfCAoMSA8PA0KPiA+IChWZnJT eW50YXhQYXJzZXIuSGlkZGVuIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuR290byAt IDQ2KSkpKSAhPSAwKQ0KPiBvcg0KPiA+ICgoKChfbGEgLSAxMTApKSAmIH4weDNmKSA9PSAwIGFu ZCAoKDEgPDwgKF9sYSAtIDExMCkpICYgKCgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5JbmNv bnNpc3RlbnRJZiAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5SZXN0b3JlIC0NCj4g PiAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU2F2ZSAtIDExMCkpIHwgKDEgPDwNCj4g PiAoVmZyU3ludGF4UGFyc2VyLlJlc2V0QnV0dG9uIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4 UGFyc2VyLkFjdGlvbiAtIDExMCkpDQo+ID4gfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkd1aWRP cCAtIDExMCkpKSkgIT0gMCk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMjQ1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3RhdExp c3QoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI1MA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI1MQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZElmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMjUyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxv Y2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0 YXRlbWVudEluY29uc2lzdGVudElmU3RhdENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFy ZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9JTkNPTlNJU1RF TlRfSUZfT1ApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgSW5jb25zaXN0ZW50 SWYoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkluY29uc2lzdGVudElmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIFByb21wdChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUHJvbXB0LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5Q YXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBh cmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3Rh dGVtZW50RXhwcmVzc2lvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4g Pg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dEV4cHJlc3Npb25Db250ZXh0DQo+ID4gLDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgRW5kSWYoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZElmLCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBmbGFnc0ZpZWxkKHNlbGYsIGk6 aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhW ZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCxpKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBp OmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu Qml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3Is IGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJT dGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRJbmNvbnNp c3RlbnRJZlN0YXQiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0VmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0KHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZT dGF0KHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPQ0KPiBW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0Q29udGV4dChzZWxm LA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCAyNjgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJ ZlN0YXQpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4N Cj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjU0 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSW5jb25z aXN0ZW50SWYpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNTUNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNTYNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMjU3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIyNTgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNTkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNjANCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjYxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIyNzQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdTOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI2Mg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNjMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIyNjQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5mbGFn c0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNjkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjY1DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3Ip DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI2Ng0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjcxDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjcyDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjc2DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjI3Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkVuZElmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMjc4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudEludmFs aWRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIHZmclN0YXRlbWVudEludmFsaWRIaWRkZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuQ29udA0KPiA+IGV4dCwwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEludmFsaWRJbnZl bnRvcnkoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkSW52 ZW50b3J5Q28NCj4gPiBudGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIHZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW52YWxpZFNhdmVSZXN0b3JlDQo+ ID4gRGVmYXVsdHNDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlkDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlz aXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0 VmZyU3RhdGVtZW50SW52YWxpZCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRJbnZhbGlkKHNlbGYpDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50SW52YWxpZChzZWxmKToNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudEludmFsaWRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRl KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI3MCwgc2VsZi5S VUxFX3ZmclN0YXRlbWVudEludmFsaWQpDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyODMNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5IaWRkZW5dOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMjgwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50 SW52YWxpZEhpZGRlbigpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW52ZW50b3J5XToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAy KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI4MQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkoKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0 b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlJlc3RvcmUsIFZmclN5bnRheFBhcnNlci5TYXZlXToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAz KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI4Mg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1 bHRzKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhj ZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhj ZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9y dEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9j YWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3Rh dGVtZW50SW52YWxpZEhpZGRlbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgSGlkZGVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5IaWRkZW4sIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVmFsdWUoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlZhbHVlLCAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEtleShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuS2V5LCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3Rh dGVtZW50SW52YWxpZEhpZGRlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFj Y2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEludmFsaWRIaWRkZW4i ICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3Rh dGVtZW50SW52YWxpZEhpZGRlbihzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIHZmclN0YXRlbWVudEludmFsaWRIaWRkZW4oc2VsZik6DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRJbnZhbGlkSGlkZGVuQ29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNzIsIHNlbGYuUlVM RV92ZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI4NQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkhpZGRlbikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjI4Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlZhbHVlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy Mjg3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI4OA0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI4OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMjkwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuS2V5KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjkxDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI5Mg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjI5Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2Nh bGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0 ZW1lbnRJbnZhbGlkSW52ZW50b3J5Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBJbnZlbnRvcnkoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkludmVudG9yeSwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBIZWxwKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5IZWxwLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYsIGk6 aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5T dHJpbmdUb2tlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9r ZW4sIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYs IGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNl ci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl biwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZiwgaTppbnQ9Tm9u ZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFy ZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBUZXh0KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5UZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5UZXh0LCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50SW52YWxpZEludmVudG9y eQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkiICk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50SW52YWxpZElu dmVudG9yeShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IHZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlk SW52ZW50b3J5Q29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNzQsIHNlbGYuUlVMRV92ZnJT dGF0ZW1lbnRJbnZhbGlkSW52ZW50b3J5KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAw ICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjI5NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkludmVudG9yeSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjI5Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkhlbHApDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyOTcNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjk4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIyOTkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIzMDANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMDENCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzAyDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIzMDMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5UZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMzA0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMwNQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzA2DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMzA3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMzA4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMwOQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzE2DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZm clN5bnRheFBhcnNlci5UZXh0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjMxMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5UZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMxMQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMxMg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMTMNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMxNA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzE1DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMTgNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MNCj4gPiBWZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3Rv cmVEZWZhdWx0c0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgRGVmYXVsdHMoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRzLCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgRm9ybUlkKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Gb3JtSWQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBQcm9tcHQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlByb21wdCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgaSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBIZWxwKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5IZWxwLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNhdmUoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNhdmUsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgUmVzdG9yZShzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmVzdG9y ZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu RkxBR1MsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZmxhZ3NGaWVsZChz ZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dHMoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQsaSkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBLZXkoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLktleSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Io c2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0 V2lzZU9yLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBWZnJTeW50YXhQYXJz ZXIuUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZhdWx0cw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzIiApOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEludmFsaWRTYXZl UmVzdG9yZURlZmF1bHRzKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBkZWYgdmZyU3RhdGVtZW50SW52YWxpZFNhdmVSZXN0b3JlRGVmYXVsdHMoc2VsZik6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9DQo+ID4gVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzQ29udGV4dChzZWxmLA0K PiA+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJS dWxlKGxvY2FsY3R4LCAyNzYsDQo+ID4gc2VsZi5SVUxFX3ZmclN0YXRlbWVudEludmFsaWRTYXZl UmVzdG9yZURlZmF1bHRzKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4g dHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjMyMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgbm90KF9sYT09VmZyU3ludGF4UGFyc2VyLlJlc3Rv cmUgb3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuU2F2ZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcklubGluZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0TWF0Y2goc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5jb25zdW1l KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMyMQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRzKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzIyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIzMjMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Gb3JtSWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMjQN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzI1DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMzI2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIzMjcNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Qcm9tcHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMjgNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzI5DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIzMzANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIzMzENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMzINCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzMzDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMzQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5IZWxwKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMzM1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMzNg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzM3DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzM4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMzM5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM1 MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2Vs Zi5faW5wdXQsMTgxLHNlbGYuX2N0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBsYV8gPT0g MToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNDANCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzQxDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM0Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjM0Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmZs YWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM0OA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNDQNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VP cikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzQ1DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNTANCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM1Nw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuQ29tbWE6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMzUzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjM1NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5LZXkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMzU1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzU2DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjM1OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2Vw dGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRMYWJl bENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2Rl ID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9HVUlEX09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIExhYmVsKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5MYWJlbCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVu dExhYmVsDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0 ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50TGFiZWwiICk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50TGFiZWwoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRMYWJl bChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudExhYmVsQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4g c2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAy NzgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRMYWJlbCkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNjENCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5MYWJlbCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjM2Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjM2Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRCYW5uZXJD b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9 IFZmclRyZWVOb2RlKEVGSV9JRlJfR1VJRF9PUCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBCYW5uZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJhbm5lciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBUaXRsZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVGl0bGUsIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3Bl blBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxm LCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJz ZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShz ZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBp KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIExpbmUoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxpbmUs IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQWxpZ24oc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkFs aWduLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFRp bWVvdXQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlRpbWVvdXQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgTGVmdChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTGVmdCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBDZW50ZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNlbnRlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBSaWdodChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmlnaHQsIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRCYW5uZXINCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXRWZnJTdGF0ZW1lbnRCYW5uZXIiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50QmFubmVyKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50QmFubmVyKHNlbGYpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50QmFubmVyQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0 ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyODAsIHNlbGYu UlVMRV92ZnJTdGF0ZW1lbnRCYW5uZXIpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAg IyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMzY1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQmFubmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MzY3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5Db21tYToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNjYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNjkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UaXRsZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjM3MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIzNzENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TdHJpbmdUb2tlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM3Mg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl bikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM3Mw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM3NA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIzNzUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM4 Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkxpbmVdOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM3Ng0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5MaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjM3Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMzc4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjM3OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5BbGlnbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIz ODANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgbm90KCgoKChfbGEgLSAxMzYpKSAmIH4weDNmKSA9 PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDEzNikpICYgKCgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNl ci5MZWZ0IC0gMTM2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlJpZ2h0IC0gMTM2KSkgfCAo MSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuQ2VudGVyIC0gMTM2KSkpKSAhPSAwKSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXJJbmxpbmUo c2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMzgxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5UaW1lb3V0XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIz ODINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VGltZW91dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzODMNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzODQNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM4NQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFz IHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudEV4dGVuc2lvbkNv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUs DQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0g VmZyVHJlZU5vZGUoRUZJX0lGUl9HVUlEX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu RGF0YUJ1ZmYgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5TaXplID0gMA0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVHlwZU5hbWUgPSAnJw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuVHlwZVNpemUgPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Jc1N0cnVj dCA9IEZhbHNlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5BcnJheU51bSA9IDANCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLkQgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBHdWlkT3Aoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkd1aWRPcCwgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBVdWlkKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VdWlkLCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGd1aWREZWZpbml0aW9uKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9u ZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBFbmRHdWlkT3Aoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZEd1aWRPcCwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBEYXRhVHlwZShzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGF0 YVR5cGUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVWludDY0KHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5VaW50NjQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVWludDMy KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5VaW50MzIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg VWludDE2KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5VaW50MTYsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgVWludDgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQ4LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIEJvb2xlYW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJvb2xlYW4sIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgRUZJX1NUUklOR19JRChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRUZJX1NUUklOR19JRCwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBFRklfSElJX0RBVEUoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkVGSV9ISUlfREFURSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBF RklfSElJX1RJTUUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfVElNRSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBFRklfSElJX1JFRihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9SRUYsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiB2ZnJFeHRlbnNpb25EYXRhKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyRXh0ZW5zaW9uRGF0 YUNvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJFeHRlbnNpb25EYXRhQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4dGVuc2lvbihzZWxmLCBpOmludD1O b25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4dGVuc2lvbkNvbnRleHQpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHRl bnNpb25Db250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgT3BlbkJyYWNrZXQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlQnJhY2tldChzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VC cmFja2V0LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfdmZyU3RhdGVtZW50RXh0ZW5zaW9uDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50RXh0ZW5zaW9u IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0 YXRlbWVudEV4dGVuc2lvbihzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIHZmclN0YXRlbWVudEV4dGVuc2lvbihzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4dGVu c2lvbkNvbnRleHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjgyLCBzZWxmLlJVTEVfdmZyU3RhdGVt ZW50RXh0ZW5zaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlw ZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjM4OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lkd1aWRPcCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM4OQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlV1aWQpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzOTANCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMzkxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlv bigpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NjMNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDE5Nyxz ZWxmLl9jdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzkyDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjM5Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2Nh bGN0eC5EID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGF0YVR5cGUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzk0DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNDU1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICB0b2tlbiA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuVWludDY0XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMzk1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5VaW50NjQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjM5OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgX2xh PT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzOTYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM5Nw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM5OA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNs b3NlQnJhY2tldCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLlVpbnQzMl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjQwMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVWludDMyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI0MDUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0g c2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIF9sYT09 VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNDAyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MDMNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MDQNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZUJyYWNrZXQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5VaW50MTZdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI0MDcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlVpbnQxNikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNDExDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBfbGE9PVZm clN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjQwOA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDA5DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDEwDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VC cmFja2V0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuVWludDhdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI0MTMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlVpbnQ4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI0MTcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3lu dGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNDE0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MTUNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MTYNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNr ZXQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5Cb29sZWFuXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNDE5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Cb29sZWFuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI0MjMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3lu dGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNDIwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MjENCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MjINCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNr ZXQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5FRklfU1RSSU5HX0lEXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNDI1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5FRklfU1RSSU5HX0lEKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI0MjkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlm IF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDI2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MjcNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MjgNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5DbG9zZUJyYWNrZXQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5FRklfSElJX0RBVEVdOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MzENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfREFURSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDM1DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQzMg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0 KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDMzDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNDM0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBl bGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9USU1FXToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDM3DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FRklfSElJX1RJTUUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ0MQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MzgNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5P cGVuQnJhY2tldCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjQzOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjQ0MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfUkVGXToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDQzDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FRklfSElJX1JF RikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDQ3DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJh Y2tldDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ0 NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk9wZW5CcmFja2V0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNDQ1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNDQ2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRl bnRpZmllcl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ0 OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNDUzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5 bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjQ1MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDUxDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDUyDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFj a2V0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NjANCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIF9hbHQgPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYu X2lucHV0LDE5NixzZWxmLl9jdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHdoaWxlIF9h bHQhPTIgYW5kIF9hbHQhPUFUTi5JTlZBTElEX0FMVF9OVU1CRVI6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBpZiBfYWx0PT0xOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNDU3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi52ZnJFeHRlbnNpb25EYXRhKGxvY2FsY3R4LkRhdGFCdWZmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NjINCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgX2FsdCA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQs MTk2LHNlbGYuX2N0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ3Mw0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50 YXhQYXJzZXIuQ29tbWE6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NDY1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ2OQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuR3VpZE9wOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NjYNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXh0ZW5zaW9uKCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDcxDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDcyDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZEd1aWRPcCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ3NQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikN Cj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxl KCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJFeHRlbnNpb25EYXRhQ29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18o c2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2lu Z1N0YXRlOmludD0tMSwgRGF0YUJ1ZmY9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkRhdGFC dWZmID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSXNTdHJ1Y3QgPSBOb25lDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5EYXRhQnVmZiA9IERhdGFCdWZmDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIERhdGEoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRhdGEsIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBPcGVuQnJhY2tldChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNr ZXQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRG90KHNlbGYsIGk6aW50 PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Eb3Qp DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRvdCwgaSkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBhcnJheU5hbWUoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5B cnJheU5hbWVDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuQXJyYXlOYW1lQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyRXh0ZW5zaW9uRGF0YQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdFZmckV4dGVuc2lvbkRhdGEiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0VmZyRXh0ZW5zaW9uRGF0YShzZWxmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmckV4dGVuc2lvbkRhdGEoc2VsZiwgRGF0YUJ1 ZmYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuVmZyRXh0ZW5zaW9uRGF0YUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYu c3RhdGUsIERhdGFCdWZmKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxj dHgsIDI4NCwgc2VsZi5SVUxFX3ZmckV4dGVuc2lvbkRhdGEpDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDc3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI0NzgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5EYXRhKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDgyDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NzkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDgwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI0ODENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDg4DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICB3aGlsZSBfbGE9 PVZmclN5bnRheFBhcnNlci5Eb3Q6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNDg0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkRvdCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0ODUN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5hcnJheU5hbWUoKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ5MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjQ5MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0 OTINCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudE1v ZGFsQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5v ZGUgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyTW9kYWxUYWco c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJNb2RhbFRhZ0NvbnRleHQsMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlNlbWljb2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX3ZmclN0YXRlbWVudE1vZGFsDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50TW9kYWwiICk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVt ZW50TW9kYWwoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiB2ZnJTdGF0ZW1lbnRNb2RhbChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE1vZGFsQ29udGV4dChzZWxm LCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCAyODYsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRNb2RhbCkNCj4gPg0K PiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0OTQN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmck1vZGFsVGFnKCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjQ5NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBW ZnJNb2RhbFRhZ0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9NT0RBTF9UQUdfT1ApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgTW9kYWwoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1vZGFsLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyTW9kYWxUYWcNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJz ZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXRWZnJNb2RhbFRhZyIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRWZnJNb2RhbFRhZyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgZGVmIHZmck1vZGFsVGFnKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyTW9kYWxUYWdDb250ZXh0 KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDI4OCwgc2VsZi5SVUxFX3Zmck1vZGFsVGFnKQ0KPiA+DQo+ ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ5Nw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk1vZGFsKQ0K PiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4g PiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUo KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0KFBh cnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGlu dm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5p dF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBh cnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cHJl c3Npb25JbmZvKCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhbmRUZXJtKHNl bGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0cyhWZnJTeW50YXhQYXJzZXIuQW5kVGVybUNvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5BbmRUZXJtQ29udGV4dCxpKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9SKHNlbGYsIGk6aW50PU5v bmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5PUikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT1IsIGkpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRFeHByZXNzaW9uDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0VmZyU3RhdGVtZW50RXhwcmVzc2lvbiIgKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50RXhw cmVzc2lvbihzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0KHNlbGYsDQo+ID4g c2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDI5MCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudEV4cHJlc3Npb24pDQo+ID4NCj4g PiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0 cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDk5DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5hbmRUZXJtKGxvY2FsY3R4LkV4cEluZm8pDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI1MDQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2Vy Lk9SOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjUwMA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PUikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MDENCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5hbmRUZXJtKGxvY2FsY3R4LkV4cEluZm8pDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTA2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2Fs Y3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNz IFZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBh cmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdT dGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cHJlc3Npb25JbmZvKCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhbmRUZXJtKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIu QW5kVGVybUNvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5BbmRUZXJtQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIE9SKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5PUikNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuT1IsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVt ZW50RXhwcmVzc2lvblN1YiIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yihz ZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0KHNlbGYsDQo+ID4gc2VsZi5f Y3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxj dHgsIDI5Miwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIpDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTA3DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5hbmRUZXJtKGxvY2FsY3R4LkV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI1MTINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLk9S Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjUwOA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PUikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MDkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5hbmRUZXJtKGxvY2FsY3R4LkV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNTE0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIEFu ZFRlcm1Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu Q0lmckFuZExpc3QgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4 cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBiaXR3aXNlb3JUZXJtKHNl bGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0cyhWZnJTeW50YXhQYXJzZXIuQml0d2lzZW9yVGVybUNvbnRleHQpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5CaXR3aXNlb3JUZXJtQ29udGV4 dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEFORChz ZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQ YXJzZXIuQU5EKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5BTkQsIGkpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9hbmRUZXJtDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0QW5kVGVybSIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRBbmRUZXJtKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxm KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgYW5kVGVybShzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkFuZFRlcm1Db250ZXh0KHNlbGYs IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gPiBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI5NCwgc2VsZi5SVUxFX2FuZFRlcm0pDQo+ID4NCj4g PiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0 cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTE1DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5iaXR3aXNlb3JUZXJtKEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI1MjANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkFO RDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MTYNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQU5EKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjUxNw0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLmJpdHdpc2VvclRlcm0oRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI1MjINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgQml0 d2lzZW9yVGVybUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3Rh dGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5DSWZyQml0V2lzZU9yTGlzdCA9IFtdDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5F eHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGJpdHdp c2VhbmRUZXJtKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuQml0d2lzZWFuZFRlcm1Db250ZXh0KQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuQml0d2lz ZWFuZFRlcm1Db250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IFZmclN5bnRheFBhcnNlci5SVUxFX2JpdHdpc2VvclRlcm0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRCaXR3aXNlb3JU ZXJtIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEJp dHdpc2VvclRlcm0oc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBiaXR3aXNlb3JUZXJtKHNlbGYsIEV4cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQml0d2lzZW9yVGVybUNvbnRleHQo c2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIEV4cEluZm8pDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjk2LCBzZWxmLlJVTEVfYml0d2lzZW9yVGVy bSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MjMNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLmJpdHdpc2VhbmRUZXJtKEV4cEluZm8pDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MjgNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3lu dGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI1MjQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjUyNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmJpdHdpc2VhbmRUZXJtKEV4cElu Zm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTMwDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiAr ICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGNsYXNzIEJpdHdpc2VhbmRUZXJtQ29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg cGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRl OmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5v bmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkNJZnJCaXRXaXNlQW5kTGlzdCA9IFtdDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIGVxdWFsVGVybShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkVx dWFsVGVybUNvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5FcXVhbFRlcm1Db250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgQml0V2lzZUFuZChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZUFuZCkNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZUFuZCwgaSkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2JpdHdpc2VhbmRUZXJtDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VU cmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwg InZpc2l0Qml0d2lzZWFuZFRlcm0iICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Qml0d2lzZWFuZFRlcm0oc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBiaXR3aXNlYW5kVGVybShzZWxmLCBFeHBJbmZvKToNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkJp dHdpc2VhbmRUZXJtQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSwgRXhw SW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyOTgsIHNl bGYuUlVMRV9iaXR3aXNlYW5kVGVybSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAj IFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI1MzENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVxdWFsVGVybShF eHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTM2DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICB3 aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlQW5kOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjUzMg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlQW5kKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjUzMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVx dWFsVGVybShFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjUzOA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBFcXVhbFRlcm1Db250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9r aW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJ bmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ0lmckVxdWFsTGlzdCA9IFtd DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5DSWZyTm90RXF1YWxMaXN0ID0gW10NCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgY29tcGFyZVRlcm0oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5D b21wYXJlVGVybUNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBlcXVhbFRlcm1TdXBwbGVtZW50YXJ5KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJz ZXIuRXF1YWxUZXJtU3VwcGxlbWVudGFyeUNvbnRlDQo+ID4geHQpDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5FcXVhbFRlcm1TdXBwbGVtZW50 YXJ5Q29udGUNCj4gPiB4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZXF1YWxUZXJtDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RXF1YWxUZXJtIiAp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEVxdWFsVGVy bShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGVxdWFs VGVybShzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2Fs Y3R4ID0gVmZyU3ludGF4UGFyc2VyLkVxdWFsVGVybUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBz ZWxmLnN0YXRlLA0KPiA+IEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgMzAwLCBzZWxmLlJVTEVfZXF1YWxUZXJtKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjUzOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuY29tcGFyZVRlcm0obG9jYWxjdHguRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjU0Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuRXF1YWwg b3INCj4gX2xhPT1WZnJTeW50YXhQYXJzZXIuTm90RXF1YWw6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNTQwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu ZXF1YWxUZXJtU3VwcGxlbWVudGFyeShsb2NhbGN0eC5DSWZyRXF1YWxMaXN0LA0KPiA+IGxvY2Fs Y3R4LkNJZnJOb3RFcXVhbExpc3QsIEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNTQ1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0 aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRF cnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2Fs Y3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIEVxdWFsVGVy bVN1cHBsZW1lbnRhcnlDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBDSWZyRXF1YWxMaXN0 PU5vbmUsIENJZnJOb3RFcXVhbExpc3Q9Tm9uZSwNCj4gPiBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5DSWZyRXF1YWxMaXN0ID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuQ0lmck5vdEVxdWFsTGlzdCA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LkV4cEluZm8gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5DSWZyRXF1YWxMaXN0 ID0gQ0lmckVxdWFsTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ0lmck5vdEVxdWFs TGlzdCA9IENJZnJOb3RFcXVhbExpc3QNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cElu Zm8gPSBFeHBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJT eW50YXhQYXJzZXIuUlVMRV9lcXVhbFRlcm1TdXBwbGVtZW50YXJ5DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgY29weUZyb20oc2VsZiwgY3R4OlBhcnNlclJ1 bGVDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLmNvcHlGcm9tKGN0eCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkNJZnJFcXVhbExpc3QgPSBjdHguQ0lmckVxdWFs TGlzdA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ0lmck5vdEVxdWFsTGlzdCA9IGN0eC5D SWZyTm90RXF1YWxMaXN0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gY3R4 LkV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgY2xhc3MgRXF1YWxUZXJtRXF1YWxSdWxlQ29udGV4dChFcXVhbFRlcm1TdXBwbGVtZW50YXJ5 Q29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5IGENCj4gPiBWZnJT eW50YXhQYXJzZXIuRXF1YWxUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcnNlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLmNvcHlGcm9tKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBFcXVh bChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuRXF1YWwsIDApDQo+ID4NCj4gPiArICAgICAgICBkZWYgY29tcGFyZVRlcm0o c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5Db21wYXJlVGVybUNvbnRleHQsMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2 aXNpdG9yLCAidmlzaXRFcXVhbFRlcm1FcXVhbFJ1bGUiICk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RXF1YWxUZXJtRXF1YWxSdWxlKHNlbGYpDQo+ID4N Cj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBjbGFzcw0KPiBFcXVhbFRlcm1Ob3RFcXVhbFJ1bGVDb250ZXh0KEVxdWFsVGVy bVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFs bHkgYQ0KPiA+IFZmclN5bnRheFBhcnNlci5FcXVhbFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dA0K PiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIE5vdEVxdWFsKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Ob3RFcXVhbCwgMCkNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBjb21wYXJlVGVybShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4N Cj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJt Q29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEVxdWFsVGVybU5vdEVxdWFsUnVsZSIg KToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRFcXVhbFRl cm1Ob3RFcXVhbFJ1bGUoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBlcXVh bFRlcm1TdXBwbGVtZW50YXJ5KHNlbGYsIENJZnJFcXVhbExpc3QsIENJZnJOb3RFcXVhbExpc3Qs DQo+ID4gRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5FcXVhbFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dChzZWxmLA0KPiA+ IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgQ0lmckVxdWFsTGlzdCwgQ0lmck5vdEVxdWFsTGlzdCwg RXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMDIs IHNlbGYuUlVMRV9lcXVhbFRlcm1TdXBwbGVtZW50YXJ5KQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTUwDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRXF1YWxdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5FcXVhbFRlcm1FcXVhbFJ1bGVDb250ZXh0KHNl bGYsDQo+ID4gbG9jYWxjdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI1NDYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuRXF1YWwpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTQ3 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuY29tcGFyZVRlcm0oRXhwSW5mbykNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Ob3RFcXVhbF06DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkVxdWFsVGVybU5vdEVxdWFsUnVsZUNv bnRleHQoc2VsZiwNCj4gPiBsb2NhbGN0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjU0OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Ob3RFcXVhbCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI1NDkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5jb21wYXJlVGVybShF eHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRF eGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBs b2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBDb21w YXJlVGVybUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250 ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5DSWZyTGVzc1RoYW5MaXN0ID0gW10NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkNJZnJM ZXNzRXF1YWxMaXN0ID0gW10NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkNJZnJHcmVhdGVy VGhhbkxpc3QgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ0lmckdyZWF0ZXJFcXVh bExpc3QgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBzaGlmdFRlcm0oc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5TaGlmdFRlcm1Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgY29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5KHNlbGYsIGk6 aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 cyhWZnJTeW50YXhQYXJzZXIuQ29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5Qw0KPiA+IG9udGV4dCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkNv bXBhcmVUZXJtU3VwcGxlbWVudGFyeUNvDQo+ID4gbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2NvbXBhcmVUZXJtDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0Q29tcGFyZVRlcm0iICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q29tcGFyZVRlcm0oc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBjb21wYXJlVGVybShzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVU ZXJtQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSwgRXhwSW5mbykNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMDQsIHNlbGYuUlVMRV9j b21wYXJlVGVybSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUN Cj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI1NTINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnNoaWZ0VGVybShFeHBJbmZvKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTU2DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICB3aGlsZSAoKChfbGEp ICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCBfbGEpICYgKCgxIDw8DQo+ID4gVmZyU3ludGF4UGFy c2VyLkxlc3NFcXVhbCkgfCAoMSA8PCBWZnJTeW50YXhQYXJzZXIuTGVzcykgfCAoMSA8PA0KPiA+ IFZmclN5bnRheFBhcnNlci5HcmVhdGVyRXF1YWwpIHwgKDEgPDwgVmZyU3ludGF4UGFyc2VyLkdy ZWF0ZXIpKSkgIT0gMCk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NTUzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuY29tcGFyZVRlcm1TdXBwbGVtZW50 YXJ5KGxvY2FsY3R4LkNJZnJMZXNzVGhhbkxpc3QsDQo+ID4gbG9jYWxjdHguQ0lmckxlc3NFcXVh bExpc3QsIGxvY2FsY3R4LkNJZnJHcmVhdGVyVGhhbkxpc3QsDQo+ID4gbG9jYWxjdHguQ0lmckdy ZWF0ZXJFcXVhbExpc3QsIEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNTU4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIENvbXBhcmVUZXJtU3Vw cGxlbWVudGFyeUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIENJZnJMZXNzVGhhbkxpc3Q9 Tm9uZSwgQ0lmckxlc3NFcXVhbExpc3Q9Tm9uZSwNCj4gPiBDSWZyR3JlYXRlclRoYW5MaXN0PU5v bmUsIENJZnJHcmVhdGVyRXF1YWxMaXN0PU5vbmUsIEV4cEluZm89Tm9uZSk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLkNJZnJMZXNzVGhhbkxpc3QgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5DSWZyTGVzc0VxdWFsTGlzdCA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LkNJZnJHcmVhdGVyVGhhbkxpc3QgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5D SWZyR3JlYXRlckVxdWFsTGlzdCA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4 cEluZm8gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5DSWZyTGVzc1RoYW5MaXN0 ID0gQ0lmckxlc3NUaGFuTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ0lmckxlc3NF cXVhbExpc3QgPSBDSWZyTGVzc0VxdWFsTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu Q0lmckdyZWF0ZXJUaGFuTGlzdCA9IENJZnJHcmVhdGVyVGhhbkxpc3QNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLkNJZnJHcmVhdGVyRXF1YWxMaXN0ID0gQ0lmckdyZWF0ZXJFcXVhbExpc3QN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9jb21wYXJl VGVybVN1cHBsZW1lbnRhcnkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBjb3B5RnJvbShzZWxmLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHN1cGVyKCkuY29weUZyb20oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuQ0lmckxlc3NUaGFuTGlzdCA9IGN0eC5DSWZyTGVzc1RoYW5MaXN0DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5DSWZyTGVzc0VxdWFsTGlzdCA9IGN0eC5DSWZyTGVzc0VxdWFsTGlz dA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ0lmckdyZWF0ZXJUaGFuTGlzdCA9IGN0eC5D SWZyR3JlYXRlclRoYW5MaXN0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5DSWZyR3JlYXRl ckVxdWFsTGlzdCA9IGN0eC5DSWZyR3JlYXRlckVxdWFsTGlzdA0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuRXhwSW5mbyA9IGN0eC5FeHBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzDQo+ID4gQ29tcGFyZVRlcm1MZXNzUnVsZUNv bnRleHQoQ29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNv bnRleHQpOiAjIGFjdHVhbGx5IGENCj4gPiBWZnJTeW50YXhQYXJzZXIuQ29tcGFyZVRlcm1TdXBw bGVtZW50YXJ5Q29udGV4dA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyc2VyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIExlc3Moc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxlc3MsIDApDQo+ID4N Cj4gPiArICAgICAgICBkZWYgc2hpZnRUZXJtKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuU2hp ZnRUZXJtQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdENvbXBhcmVUZXJtTGVzc1J1 bGUiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q29t cGFyZVRlcm1MZXNzUnVsZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MNCj4gPg0KPiBDb21w YXJlVGVybUdyZWF0ZXJFcXVhbFJ1bGVDb250ZXh0KENvbXBhcmVUZXJtU3VwcGxlbWVudGFyeUNv bnRlDQo+ID4geHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KTogIyBhY3R1YWxseSBhDQo+ID4g VmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcnNlcikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBHcmVhdGVyRXF1YWwoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXJFcXVhbCwgMCkNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBzaGlmdFRlcm0oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5TaGlmdFRlcm1Db250 ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNj ZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0Q29tcGFyZVRlcm1HcmVhdGVyRXF1YWxSdWxl IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENvbXBh cmVUZXJtR3JlYXRlckVxdWFsUnVsZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MNCj4gPiBD b21wYXJlVGVybUdyZWF0ZXJSdWxlQ29udGV4dChDb21wYXJlVGVybVN1cHBsZW1lbnRhcnlDb250 ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYQ0KPiA+IFZmclN5bnRh eFBhcnNlci5Db21wYXJlVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0DQo+ID4NCj4gPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJzZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5jb3B5RnJvbShjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgR3JlYXRl cihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuR3JlYXRlciwgMCkNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBzaGlmdFRlcm0o c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5TaGlmdFRlcm1Db250ZXh0LDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlz aXRvciwgInZpc2l0Q29tcGFyZVRlcm1HcmVhdGVyUnVsZSIgKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDb21wYXJlVGVybUdyZWF0ZXJSdWxlKHNlbGYp DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBjbGFzcw0KPiA+DQo+IENvbXBhcmVUZXJtTGVzc0VxdWFsUnVsZUNv bnRleHQoQ29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNv bnRleHQpOiAjIGFjdHVhbGx5IGENCj4gPiBWZnJTeW50YXhQYXJzZXIuQ29tcGFyZVRlcm1TdXBw bGVtZW50YXJ5Q29udGV4dA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyc2VyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIExlc3NFcXVhbChzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGVzc0VxdWFs LCAwKQ0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHNoaWZ0VGVybShzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlNoaWZ0VGVybUNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRDb21wYXJl VGVybUxlc3NFcXVhbFJ1bGUiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q29tcGFyZVRlcm1MZXNzRXF1YWxSdWxlKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgY29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5KHNlbGYsIENJZnJMZXNz VGhhbkxpc3QsDQo+IENJZnJMZXNzRXF1YWxMaXN0LA0KPiA+IENJZnJHcmVhdGVyVGhhbkxpc3Qs IENJZnJHcmVhdGVyRXF1YWxMaXN0LCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtU3VwcGxlbWVudGFy eUNvbnRleHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIENJZnJMZXNzVGhhbkxp c3QsIENJZnJMZXNzRXF1YWxMaXN0LCBDSWZyR3JlYXRlclRoYW5MaXN0LA0KPiA+IENJZnJHcmVh dGVyRXF1YWxMaXN0LCBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDMwNiwgc2VsZi5SVUxFX2NvbXBhcmVUZXJtU3VwcGxlbWVudGFyeSkNCj4gPg0K PiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU2 Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkxlc3NdOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5Db21wYXJlVGVybUxl c3NSdWxlQ29udGV4dChzZWxmLA0KPiA+IGxvY2FsY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNTU5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkxlc3MpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNTYwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc2hpZnRUZXJt KEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGVzc0VxdWFsXToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHggPQ0KPiBWZnJTeW50YXhQYXJzZXIuQ29tcGFy ZVRlcm1MZXNzRXF1YWxSdWxlQ29udGV4dChzZWxmLA0KPiA+IGxvY2FsY3R4KQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTYxDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkxlc3NFcXVhbCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NjINCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zaGlmdFRlcm0oRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFz cw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5H cmVhdGVyXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuQ29tcGFyZVRlcm1HcmVhdGVyUnVsZUNvbnRleHQoc2VsZiwNCj4gPiBsb2NhbGN0eCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAz KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU2Mw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5HcmVhdGVyKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU2NA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnNoaWZ0VGVybShFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLkdyZWF0ZXJFcXVhbF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4 ID0NCj4gPiBWZnJTeW50YXhQYXJzZXIuQ29tcGFyZVRlcm1HcmVhdGVyRXF1YWxSdWxlQ29udGV4 dChzZWxmLCBsb2NhbGN0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCA0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjU2NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5HcmVhdGVyRXF1YWwpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNTY2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc2hpZnRUZXJtKEV4cEluZm8p DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlv bihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlv biA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJv cihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292 ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFNoaWZ0VGVybUNv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUs DQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5DSWZyU2hp ZnRMZWZ0TGlzdCA9IFtdDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5DSWZyU2hpZnRSaWdo dExpc3QgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhZGRNaW51c1Rlcm0oc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5BZGRNaW51c1Rlcm1Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgc2hpZnRUZXJtU3VwcGxlbWVudGFyeShzZWxm LCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dHMoVmZyU3ludGF4UGFyc2VyLlNoaWZ0VGVybVN1cHBsZW1lbnRhcnlDb250ZQ0KPiA+IHh0 KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu U2hpZnRUZXJtU3VwcGxlbWVudGFyeUNvbnRleA0KPiA+IHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3NoaWZ0VGVybQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdFNoaWZ0VGVybSIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRTaGlmdFRlcm0oc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiBzaGlmdFRlcm0oc2VsZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5TaGlmdFRlcm1Db250ZXh0 KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gPiBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMwOCwgc2VsZi5SVUxFX3NoaWZ0VGVybSkN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsg ICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NjkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLmFkZE1pbnVzVGVybShFeHBJbmZvKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTczDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBh cnNlci5UX185IG9yIF9sYT09VmZyU3ludGF4UGFyc2VyLlRfXzEwOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU3MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnNoaWZ0VGVybVN1cHBsZW1lbnRhcnkobG9jYWxjdHguQ0lmclNoaWZ0TGVmdExpc3QsDQo+ ID4gbG9jYWxjdHguQ0lmclNoaWZ0UmlnaHRMaXN0LCBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU3NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2Nh bGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFz cyBTaGlmdFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgQ0lm clNoaWZ0TGVmdExpc3Q9Tm9uZSwgQ0lmclNoaWZ0UmlnaHRMaXN0PU5vbmUsDQo+ID4gRXhwSW5m bz1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwg aW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ0lmclNoaWZ0TGVmdExpc3QgPSBOb25lDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5DSWZyU2hpZnRSaWdodExpc3QgPSBOb25lDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuQ0lmclNoaWZ0TGVmdExpc3QgPSBDSWZyU2hpZnRMZWZ0TGlzdA0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuQ0lmclNoaWZ0UmlnaHRMaXN0ID0gQ0lmclNoaWZ0UmlnaHRMaXN0 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfc2hpZnRU ZXJtU3VwcGxlbWVudGFyeQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIGNvcHlGcm9tKHNlbGYsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc3VwZXIoKS5jb3B5RnJvbShjdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5DSWZyU2hpZnRMZWZ0TGlzdCA9IGN0eC5DSWZyU2hpZnRMZWZ0TGlzdA0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuQ0lmclNoaWZ0UmlnaHRMaXN0ID0gY3R4LkNJZnJTaGlmdFJpZ2h0 TGlzdA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IGN0eC5FeHBJbmZvDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFNo aWZ0VGVybVJpZ2h0Q29udGV4dChTaGlmdFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dCk6DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6 UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5IGENCj4gPiBWZnJTeW50YXhQYXJzZXIuU2hp ZnRUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcnNlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0 eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhZGRNaW51c1Rlcm0oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5BZGRNaW51c1Rlcm1Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0U2hpZnRUZXJtUmlnaHQiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0U2hpZnRUZXJtUmlnaHQoc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNs YXNzIFNoaWZ0VGVybUxlZnRDb250ZXh0KFNoaWZ0VGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYQ0KPiA+IFZmclN5bnRheFBhcnNl ci5TaGlmdFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuY29weUZy b20oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFkZE1pbnVzVGVybShz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkFkZE1pbnVzVGVybUNvbnRleHQsMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2 aXNpdG9yLCAidmlzaXRTaGlmdFRlcm1MZWZ0IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdFNoaWZ0VGVybUxlZnQoc2VsZikNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBzaGlmdFRlcm1TdXBwbGVtZW50YXJ5KHNlbGYsIENJZnJTaGlmdExl ZnRMaXN0LCBDSWZyU2hpZnRSaWdodExpc3QsDQo+ID4gRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5TaGlmdFRlcm1TdXBw bGVtZW50YXJ5Q29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgQ0lmclNo aWZ0TGVmdExpc3QsIENJZnJTaGlmdFJpZ2h0TGlzdCwgRXhwSW5mbykNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMTAsIHNlbGYuUlVMRV9zaGlmdFRlcm1TdXBw bGVtZW50YXJ5KQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNTgwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu VF9fOV06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlNoaWZ0VGVybUxlZnRDb250ZXh0KHNlbGYsIGxvY2FsY3R4KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTc2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzkpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNTc3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuYWRk TWludXNUZXJtKEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVF9fMTBdOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5TaGlm dFRlcm1SaWdodENvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI1NzgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVF9fMTApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNTc5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuYWRkTWludXNU ZXJtKEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJs ZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2Fs Y3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNz IEFkZE1pbnVzVGVybUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1 bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5DSWZyQWRkTGlzdCA9IFtdDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5DSWZy U3VidHJhY3RMaXN0ID0gW10NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBF eHBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgbXVsdGRpdm1vZFRlcm0o c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVybUNvbnRleHQsMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhZGRNaW51c1Rlcm1TdXBw bGVtZW50YXJ5KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuQWRkTWludXNUZXJtU3VwcGxlbWVu dGFyeQ0KPiA+IENvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5BZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5Qw0KPiA+IG9udGV4dCxp KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2Vy LlJVTEVfYWRkTWludXNUZXJtDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNj ZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0QWRkTWludXNUZXJtIiApOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEFkZE1pbnVzVGVybShzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGFkZE1pbnVzVGVybShz ZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLkFkZE1pbnVzVGVybUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+ IHNlbGYuc3RhdGUsIEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgMzEyLCBzZWxmLlJVTEVfYWRkTWludXNUZXJtKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU4Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYubXVsdGRpdm1vZFRlcm0oRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjU4Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4N Cj4gPiArICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuVF9fMTEgb3INCj4g X2xhPT1WZnJTeW50YXhQYXJzZXIuTmVnYXRpdmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNTgzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuYWRkTWlu dXNUZXJtU3VwcGxlbWVudGFyeShsb2NhbGN0eC5DSWZyQWRkTGlzdCwNCj4gPiBsb2NhbGN0eC5D SWZyU3VidHJhY3RMaXN0LCBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjU4OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24g PSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Io c2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBBZGRNaW51c1Rlcm1T dXBwbGVtZW50YXJ5Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgQ0lmckFkZExpc3Q9Tm9u ZSwgQ0lmclN1YnRyYWN0TGlzdD1Ob25lLA0KPiA+IEV4cEluZm89Tm9uZSk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLkNJZnJBZGRMaXN0ID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu Q0lmclN1YnRyYWN0TGlzdCA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cElu Zm8gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5DSWZyQWRkTGlzdCA9IENJZnJB ZGRMaXN0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5DSWZyU3VidHJhY3RMaXN0ID0gQ0lm clN1YnRyYWN0TGlzdA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cElu Zm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX2FkZE1pbnVzVGVybVN1cHBsZW1lbnRhcnkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBjb3B5RnJvbShzZWxmLCBjdHg6UGFyc2VyUnVsZUNvbnRl eHQpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuY29weUZyb20oY3R4KQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuQ0lmckFkZExpc3QgPSBjdHguQ0lmckFkZExpc3QNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLkNJZnJTdWJ0cmFjdExpc3QgPSBjdHguQ0lmclN1YnRyYWN0 TGlzdA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IGN0eC5FeHBJbmZvDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzDQo+ ID4gQWRkTWludXNUZXJtcEFkZENvbnRleHQoQWRkTWludXNUZXJtU3VwcGxlbWVudGFyeUNvbnRl eHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KTogIyBhY3R1YWxseSBhDQo+ID4gVmZyU3ludGF4 UGFyc2VyLkFkZE1pbnVzVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0DQo+ID4NCj4gPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJzZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5jb3B5RnJvbShjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgbXVsdGRp dm1vZFRlcm0oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVybUNvbnRleHQs MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRBZGRNaW51c1Rlcm1wQWRkIiApOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEFkZE1pbnVzVGVybXBBZGQoc2Vs ZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGNsYXNzDQo+ID4gQWRkTWludXNUZXJtU3VidHJhY3RDb250ZXh0 KEFkZE1pbnVzVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4 dCk6ICMgYWN0dWFsbHkgYQ0KPiA+IFZmclN5bnRheFBhcnNlci5BZGRNaW51c1Rlcm1TdXBwbGVt ZW50YXJ5Q29udGV4dA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy c2VyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE5lZ2F0aXZlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OZWdhdGl2ZSwgMCkN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBtdWx0ZGl2bW9kVGVybShzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLk11bHRkaXZtb2RUZXJtQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEFk ZE1pbnVzVGVybVN1YnRyYWN0IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdEFkZE1pbnVzVGVybVN1YnRyYWN0KHNlbGYpDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgYWRkTWludXNUZXJtU3VwcGxlbWVudGFyeShzZWxmLCBDSWZyQWRkTGlz dCwgQ0lmclN1YnRyYWN0TGlzdCwNCj4gPiBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkFkZE1pbnVzVGVybVN1cHBsZW1l bnRhcnlDb250ZXh0KHNlbGYsDQo+ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBDSWZyQWRkTGlz dCwgQ0lmclN1YnRyYWN0TGlzdCwgRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCAzMTQsIHNlbGYuUlVMRV9hZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5 KQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNTkzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVF9fMTFdOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5BZGRN aW51c1Rlcm1wQWRkQ29udGV4dChzZWxmLA0KPiA+IGxvY2FsY3R4KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTg5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzExKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjU5MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm11 bHRkaXZtb2RUZXJtKEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTmVnYXRp dmVdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5BZGRNaW51c1Rlcm1TdWJ0cmFjdENvbnRleHQoc2VsZiwNCj4gPiBsb2NhbGN0eCkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU5MQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OZWdhdGl2ZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1OTINCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5tdWx0ZGl2bW9kVGVybShFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4g KyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBjbGFzcyBNdWx0ZGl2bW9kVGVybUNvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0 ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBO b25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5DSWZyTXVsdGlwbHlMaXN0ID0gW10NCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLkNJZnJEaXZpZGVMaXN0ID0gW10NCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLkNJZnJNb2R1bG9MaXN0ID0gW10NCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgY2FzdFRlcm0oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5DYXN0VGVybUNvbnRleHQsMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBtdWx0ZGl2bW9k VGVybVN1cHBsZW1lbnRhcnkoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0K PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVy bVN1cHBsZW1lbnRhcg0KPiA+IHlDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5DQo+ ID4gQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfbXVsdGRpdm1vZFRlcm0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRNdWx0ZGl2bW9kVGVy bSIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRNdWx0 ZGl2bW9kVGVybShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIG11bHRkaXZtb2RUZXJtKHNlbGYsIEV4cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1Db250ZXh0 KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMxNiwgc2VsZi5SVUxFX211bHRkaXZtb2RU ZXJtKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU5NQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuY2FzdFRlcm0oRXhwSW5mbykNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU5OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUgKCgoX2xhKSAmIH4weDNm KSA9PSAwIGFuZCAoKDEgPDwgX2xhKSAmICgoMSA8PA0KPiA+IFZmclN5bnRheFBhcnNlci5UX18x MikgfCAoMSA8PCBWZnJTeW50YXhQYXJzZXIuVF9fMTMpIHwgKDEgPDwNCj4gPiBWZnJTeW50YXhQ YXJzZXIuU2xhc2gpKSkgIT0gMCk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNTk2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubXVsdGRpdm1vZFRlcm1T dXBwbGVtZW50YXJ5KGxvY2FsY3R4LkNJZnJNdWx0aXBseUxpc3QsDQo+ID4gbG9jYWxjdHguQ0lm ckRpdmlkZUxpc3QsIGxvY2FsY3R4LkNJZnJNb2R1bG9MaXN0LCBFeHBJbmZvKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYwMQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxs eToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBjbGFzcyBNdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6 aW50PS0xLCBDSWZyTXVsdGlwbHlMaXN0PU5vbmUsIENJZnJEaXZpZGVMaXN0PU5vbmUsDQo+ID4g Q0lmck1vZHVsb0xpc3Q9Tm9uZSwgRXhwSW5mbz1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu Q0lmck11bHRpcGx5TGlzdCA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkNJZnJE aXZpZGVMaXN0ID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ0lmck1vZHVsb0xp c3QgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ0lmck11bHRpcGx5TGlzdCA9IENJZnJNdWx0aXBseUxp c3QNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkNJZnJEaXZpZGVMaXN0ID0gQ0lmckRpdmlk ZUxpc3QNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkNJZnJNb2R1bG9MaXN0ID0gQ0lmck1v ZHVsb0xpc3QNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVM RV9tdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBjb3B5RnJvbShzZWxmLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuY29weUZyb20oY3R4KQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuQ0lmck11bHRpcGx5TGlzdCA9IGN0eC5DSWZyTXVsdGlwbHlMaXN0 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5DSWZyRGl2aWRlTGlzdCA9IGN0eC5DSWZyRGl2 aWRlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ0lmck1vZHVsb0xpc3QgPSBjdHgu Q0lmck1vZHVsb0xpc3QNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBjdHgu RXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBjbGFzcw0KPiA+IE11bHRkaXZtb2RUZXJtRGl2Q29udGV4dChNdWx0ZGl2bW9kVGVybVN1cHBs ZW1lbnRhcnlDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYQ0K PiA+IFZmclN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0DQo+ ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJzZXIpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5jb3B5RnJvbShjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgU2xhc2goc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNsYXNoLCAwKQ0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGNhc3RUZXJtKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuQ2FzdFRlcm1Db250ZXh0LDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0TXVsdGRpdm1vZFRlcm1EaXYiICk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0TXVsdGRpdm1vZFRlcm1EaXYoc2VsZikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGNsYXNzDQo+ID4gTXVsdGRpdm1vZFRlcm1NdWxDb250ZXh0KE11bHRk aXZtb2RUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KTog IyBhY3R1YWxseSBhDQo+ID4gVmZyU3ludGF4UGFyc2VyLk11bHRkaXZtb2RUZXJtU3VwcGxlbWVu dGFyeUNvbnRleHQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcnNl cikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBjYXN0VGVybShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LkNhc3RUZXJtQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdE11bHRkaXZtb2RUZXJt TXVsIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdE11 bHRkaXZtb2RUZXJtTXVsKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcw0KPiA+DQo+IE11bHRk aXZtb2RUZXJtTW9kdWxvQ29udGV4dChNdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0 KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYQ0KPiA+IFZmclN5bnRheFBh cnNlci5NdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0DQo+ID4NCj4gPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJzZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5jb3B5RnJvbShjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgY2FzdFRl cm0oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5DYXN0VGVybUNvbnRleHQsMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2 aXNpdG9yLCAidmlzaXRNdWx0ZGl2bW9kVGVybU1vZHVsbyIgKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRNdWx0ZGl2bW9kVGVybU1vZHVsbyhzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIG11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFy eShzZWxmLCBDSWZyTXVsdGlwbHlMaXN0LCBDSWZyRGl2aWRlTGlzdCwNCj4gPiBDSWZyTW9kdWxv TGlzdCwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9 DQo+ID4gVmZyU3ludGF4UGFyc2VyLk11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQo c2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIENJZnJNdWx0aXBseUxpc3QsIENJZnJE aXZpZGVMaXN0LCBDSWZyTW9kdWxvTGlzdCwgRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMTgsDQo+IHNlbGYuUlVMRV9tdWx0ZGl2bW9kVGVybVN1 cHBsZW1lbnRhcnkpDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI2MDgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0 LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5UX18xMl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLk11bHRkaXZtb2RUZXJtTXVsQ29udGV4dChzZWxmLA0KPiA+IGxvY2FsY3R4KQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjAyDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzEyKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYwMw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLmNhc3RUZXJtKEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBh c3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu U2xhc2hdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBh cnNlci5NdWx0ZGl2bW9kVGVybURpdkNvbnRleHQoc2VsZiwNCj4gPiBsb2NhbGN0eCkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYwNA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TbGFzaCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MDUNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5jYXN0VGVybShFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNz DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlRf XzEzXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuTXVsdGRpdm1vZFRlcm1Nb2R1bG9Db250ZXh0KHNlbGYsDQo+ID4gbG9jYWxjdHgpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MDYNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fMTMpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjA3DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuY2FzdFRlcm0oRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFz cw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAg IGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgY2xhc3MgQ2FzdFRlcm1Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJ bmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuVEJPYmogPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5UVU9iaiA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJ bmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYXRvbVRlcm0oc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5BdG9tVGVybUNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCBpKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQm9vbGVhbihzZWxmLCBpOmludD1Ob25lKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQm9vbGVhbikNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQm9vbGVhbiwgaSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBVaW50NjQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlVpbnQ2NCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuVWludDY0LCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIFVpbnQzMihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VucyhWZnJTeW50YXhQYXJzZXIuVWludDMyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5VaW50MzIsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg VWludDE2KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5VaW50MTYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlVpbnQxNiwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBVaW50OChzZWxm LCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJz ZXIuVWludDgpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQ4LCBpKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfY2FzdFRlcm0N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRDYXN0VGVybSIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDYXN0VGVybShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIGNhc3RUZXJtKHNlbGYsIEV4cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQ2FzdFRlcm1Db250ZXh0 KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gPiBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMyMCwgc2VsZi5SVUxFX2Nhc3RUZXJtKQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAg ICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYxNQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIF9hbHQgPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0 LDIxNyxzZWxmLl9jdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUgX2FsdCE9MiBhbmQg X2FsdCE9QVROLklOVkFMSURfQUxUX05VTUJFUjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg aWYgX2FsdD09MToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NjEwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjYxMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIG5vdCgoKCgoX2xhIC0gODAp KSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDgwKSkgJiAoKDEgPDwNCj4gPiAoVmZy U3ludGF4UGFyc2VyLkJvb2xlYW4gLSA4MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5VaW50 NjQgLSA4MCkpIHwgKDENCj4gPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLlVpbnQzMiAtIDgwKSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlVpbnQxNiAtIDgwKSkgfCAoMSA8PA0KPiA+IChWZnJT eW50YXhQYXJzZXIuVWludDggLSA4MCkpKSkgIT0gMCkpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcklubGluZShzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydE1hdGNoKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjEyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYxNw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgX2Fs dCA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsMjE3LHNlbGYuX2N0 eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYxOA0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuYXRvbVRlcm0oRXhwSW5mbykNCj4gPg0KPiA+ICsg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAg ZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBjbGFzcyBBdG9tVGVybUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50 OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cElu Zm89Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQs IGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJz ZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIHZmckV4cHJlc3Npb25DYXRlbmF0ZShzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlZmckV4cHJlc3Npb25DYXRlbmF0ZUNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJFeHByZXNzaW9uTWF0Y2goc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uTWF0Y2hDb250ZXh0LDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyRXhwcmVzc2lvbk1hdGNoMihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25NYXRjaDJDb250ZXh0LDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyRXhwcmVzc2lv blBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvblBhcmVuQ29udGV4 dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmckV4 cHJlc3Npb25CdWlsZEluRnVuY3Rpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJF eHByZXNzaW9uQnVpbGRJbkZ1bmN0aW9uQ28NCj4gPiBudGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmckV4cHJlc3Npb25Db25zdGFudChzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25Db25zdGFudENvbnRleHQsMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJFeHByZXNz aW9uVW5hcnlPcChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25VbmFy eU9wQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIHZmckV4cHJlc3Npb25UZXJuYXJ5T3Aoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJFeHByZXNzaW9uVGVybmFyeU9wQ29udGV4dA0KPiA+ICwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmckV4cHJlc3Npb25NYXAoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uTWFwQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE5PVChzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTk9ULCAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGF0b21UZXJtKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuQXRvbVRlcm1Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9hdG9tVGVybQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEF0b21U ZXJtIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEF0 b21UZXJtKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYg YXRvbVRlcm0oc2VsZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5BdG9tVGVybUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4 LCBzZWxmLnN0YXRlLA0KPiA+IEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVy UnVsZShsb2NhbGN0eCwgMzIyLCBzZWxmLlJVTEVfYXRvbVRlcm0pDQo+ID4NCj4gPiArICAgICAg ICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MzINCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAg ICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDIx OCxzZWxmLl9jdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MjANCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi52ZnJFeHByZXNzaW9uQ2F0ZW5hdGUoRXhwSW5mbykNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs aWYgbGFfID09IDI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2 MjENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJFeHByZXNzaW9uTWF0Y2goRXhw SW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsaWYgbGFfID09IDM6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI2MjINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJF eHByZXNzaW9uTWF0Y2gyKEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIGxhXyA9PSA0Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjIzDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYudmZyRXhwcmVzc2lvblBhcmVuKEV4cEluZm8pDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlm IGxhXyA9PSA1Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjI0 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyRXhwcmVzc2lvbkJ1aWxkSW5GdW5j dGlvbihFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBsYV8gPT0gNjoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA2KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYyNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnZmckV4cHJlc3Npb25Db25zdGFudChFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBwYXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBsYV8gPT0g NzoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCA3KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYyNg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmckV4cHJlc3Npb25VbmFyeU9wKEV4cEluZm8pDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbGlmIGxhXyA9PSA4Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNjI3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyRXhwcmVzc2lv blRlcm5hcnlPcChFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBsYV8gPT0gOToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA5KQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYyOA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnZmckV4cHJlc3Npb25NYXAoRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgbGFfID09 IDEwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEwKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYyOQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OT1QpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjMwDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuYXRvbVRlcm0oRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgbGFfID09 IDExOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDExKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYzMQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmckV4cHJlc3Npb25NYXRjaDIoRXhwSW5mbykN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4g PiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUo KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmckV4cHJlc3Npb25DYXRlbmF0ZUNvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52 b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4 cEluZm8gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5DT2JqID0gTm9uZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBDYXRlbmF0ZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2F0ZW5hdGUsIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFy ZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhw cmVzc2lvblN1YihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Np b25TdWJDbw0KPiA+IG50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnQNCj4gPiBleHQs aSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQ29tbWEsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xv c2VQYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckV4cHJlc3Npb25DYXRlbmF0ZQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFZmckV4cHJlc3Npb25DYXRlbmF0ZSIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRWZnJFeHByZXNzaW9uQ2F0ZW5hdGUoc2VsZikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJFeHByZXNzaW9uQ2F0ZW5hdGUoc2Vs ZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uQ2F0ZW5hdGVDb250ZXh0KHNlbGYsDQo+IHNlbGYu X2N0eCwNCj4gPiBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDMyNCwgc2VsZi5SVUxFX3ZmckV4cHJlc3Npb25DYXRlbmF0ZSkN Cj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI2MzQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D YXRlbmF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYzNQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYzNg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI2MzcNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjYzOA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1 YigpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MzkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAg ICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGNsYXNzIFZmckV4cHJlc3Npb25NYXRjaENvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0 ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBO b25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5NT2JqID0gTm9uZQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBNYXRjaChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWF0Y2gsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxm LCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDbw0KPiA+IG50 ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnQNCj4gPiBleHQsaSkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEs IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQ2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRS dWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBh cnNlci5SVUxFX3ZmckV4cHJlc3Npb25NYXRjaA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckV4cHJlc3Npb25NYXRj aCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJF eHByZXNzaW9uTWF0Y2goc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiB2ZnJFeHByZXNzaW9uTWF0Y2goc2VsZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9u TWF0Y2hDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMyNiwgc2VsZi5SVUxF X3ZmckV4cHJlc3Npb25NYXRjaCkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NDENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5NYXRjaCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjY0Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY0Mw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NDQNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjY0NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3Rh dGVtZW50RXhwcmVzc2lvblN1YigpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI2NDYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D bG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmckV4cHJlc3Npb25NYXRjaDJD b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTTJPYmog PSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE1hdGNoMihzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWF0Y2gyLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu T3BlblBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRl bWVudEV4cHJlc3Npb25TdWIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0K PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRF eHByZXNzaW9uU3ViQ28NCj4gPiBudGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250DQo+ ID4gZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg Q29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5D b21tYSwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBndWlkRGVmaW5pdGlv bihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCwwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50 YXhQYXJzZXIuUlVMRV92ZnJFeHByZXNzaW9uTWF0Y2gyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRXhwcmVzc2lv bk1hdGNoMiIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRWZnJFeHByZXNzaW9uTWF0Y2gyKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihz ZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgdmZyRXhwcmVzc2lvbk1hdGNoMihzZWxmLCBFeHBJbmZvKToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckV4 cHJlc3Npb25NYXRjaDJDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRl LCBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMy OCwgc2VsZi5SVUxFX3ZmckV4cHJlc3Npb25NYXRjaDIpDQo+ID4NCj4gPiArICAgICAgICB0cnk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjQ4DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWF0Y2gyKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNjQ5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNjUwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uU3ViKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY1MQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjUyDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjY1Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NjU0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlvbigpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NTUNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAg ICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGNsYXNzIFZmckV4cHJlc3Npb25QYXJlbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFy ZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4 cEluZm89Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJl bnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udA0K PiA+IGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJFeHByZXNzaW9uUGFyZW4NCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVW aXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRWZnJFeHByZXNzaW9uUGFyZW4iICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0VmZyRXhwcmVzc2lvblBhcmVuKHNlbGYpDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyRXhwcmVzc2lvblBhcmVuKHNlbGYsIEV4cElu Zm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuVmZyRXhwcmVzc2lvblBhcmVuQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2Vs Zi5zdGF0ZSwgRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCAzMzAsIHNlbGYuUlVMRV92ZnJFeHByZXNzaW9uUGFyZW4pDQo+ID4NCj4gPiArICAgICAg ICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjU3DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjU4DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjY1OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyRXhwcmVz c2lvbkJ1aWxkSW5GdW5jdGlvbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89 Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIGR1cEV4cChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5EdXBFeHBDb250ZXh0LDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmFyZXF2YWxF eHAoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WYXJlcXZhbEV4cENvbnRleHQsMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBpZGVxdmFsRXhwKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuSWRlcXZhbEV4cENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBpZGVxaWRFeHAoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5JZGVxaWRFeHBDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgaWRlcXZhbGxpc3RFeHAoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5JZGVxdmFsbGlzdEV4cENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBxdWVzdGlvbnJlZjFFeHAoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5RdWVzdGlvbnJlZjFFeHBDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgcnVsZXJlZkV4cChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlJ1bGVyZWZFeHBDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgc3RyaW5ncmVmMUV4cChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlN0cmlu Z3JlZjFFeHBDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgcHVzaHRoaXNFeHAoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu DQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5QdXNodGhpc0V4 cENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBzZWN1cml0eUV4cChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlNlY3VyaXR5RXhwQ29udGV4 dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldEV4 cChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5HZXRFeHBDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJFeHByZXNzaW9u QnVpbGRJbkZ1bmN0aW9uDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRXhwcmVzc2lvbkJ1aWxkSW5GdW5jdGlvbiIg KToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJFeHBy ZXNzaW9uQnVpbGRJbkZ1bmN0aW9uKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihz ZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgdmZyRXhwcmVzc2lvbkJ1aWxkSW5GdW5jdGlvbihzZWxmLCBFeHBJbmZv KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb25Db250ZXh0KHNlbGYsDQo+ID4gc2VsZi5f Y3R4LCBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1 bGUobG9jYWxjdHgsIDMzMiwgc2VsZi5SVUxFX3ZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb24p DQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI2NzINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EdXBdOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjYxDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuZHVwRXhwKEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuVmFyRXFWYWxdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNjYyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmFyZXF2YWxFeHAoRXhwSW5m bykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JZEVxVmFsXToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY2Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLmlkZXF2YWxFeHAoRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFz cw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5J ZEVxSWRdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjY0DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuaWRlcWlkRXhwKEV4cEluZm8pDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuSWRFcVZhbExpc3RdOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNjY1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu aWRlcXZhbGxpc3RFeHAoRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5RdWVz dGlvblJlZl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgNikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NjYN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5xdWVzdGlvbnJlZjFFeHAoRXhwSW5mbykN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SdWxlUmVmXToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA3KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY2Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnJ1bGVyZWZFeHAoRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5TdHJp bmdSZWZdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjY4DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RyaW5ncmVmMUV4cChFeHBJbmZvKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0 b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlB1c2hUaGlzXToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA5KQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjY2OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnB1c2h0aGlzRXhwKEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU2VjdXJp dHldOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEwKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY3MA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnNlY3VyaXR5RXhwKEV4cEluZm8pDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuR2V0XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI2NzENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5nZXRFeHAo RXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0 RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgRHVw RXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkRP YmogPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIER1cChzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRHVwLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZHVwRXhwDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0RHVwRXhwIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdER1cEV4cChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIGR1cEV4cChzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkR1cEV4cENvbnRleHQoc2VsZiwgc2Vs Zi5fY3R4LCBzZWxmLnN0YXRlLA0KPiA+IEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgMzM0LCBzZWxmLlJVTEVfZHVwRXhwKQ0KPiA+DQo+ID4gKyAg ICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY3NA0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkR1cCkNCj4gPg0KPiA+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAg ICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBjbGFzcyBWYXJlcXZhbEV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEs IEV4cEluZm89Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIg PSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIFZhckVxVmFsKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5WYXJFcVZhbCwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBWYXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlZhciwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl biwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3Nl UGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRXF1YWwoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkVxdWFsLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIExlc3NFcXVh bChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuTGVzc0VxdWFsLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIExlc3Moc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkxlc3MsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgR3JlYXRlckVxdWFsKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5HcmVhdGVyRXF1YWwsIDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgR3JlYXRlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuR3JlYXRlciwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZhcmVxdmFsRXhw DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlz aXRvciwgInZpc2l0VmFyZXF2YWxFeHAiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0VmFyZXF2YWxFeHAoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiB2YXJlcXZhbEV4cChzZWxmLCBFeHBJbmZvKToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZhcmVx dmFsRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUsDQo+ID4gRXhwSW5m bykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMzYsIHNlbGYu UlVMRV92YXJlcXZhbEV4cCkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI2NzYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5WYXJFcVZhbCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjY3Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlZhcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY3OA0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY3OQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjY4MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI2OTENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5FcXVhbF06 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjgxDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVxdWFsKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY4Mg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtW ZnJTeW50YXhQYXJzZXIuTGVzc0VxdWFsXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI2ODMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTGVzc0VxdWFsKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjY4NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGVzc106DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjg1DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkxlc3MpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjg2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5HcmVhdGVyRXF1YWxdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjY4Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5HcmVhdGVyRXF1YWwpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNjg4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5HcmVhdGVyXToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2ODkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuR3JlYXRlcikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2OTANCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBJZGVxdmFsRXhwQ29udGV4dChQYXJzZXJSdWxl Q29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0 YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9 IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkkgPSBOb25lICMgVG9rZW4NCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgdmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25EYXRhRmllbGROYW1lQ29udA0KPiA+IGV4dCwwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIElkRXFWYWwoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLklkRXFWYWwsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRXF1 YWwoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkVxdWFsLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIExlc3NFcXVhbChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGVzc0VxdWFsLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIExlc3Moc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxlc3MsIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgR3JlYXRlckVxdWFsKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5HcmVhdGVyRXF1YWws IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgR3JlYXRlcihzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu R3JlYXRlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5k ZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX2lkZXF2YWxFeHANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRJZGVxdmFsRXhwIiApOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdElkZXF2YWxFeHAoc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBpZGVxdmFsRXhwKHNlbGYsIEV4cElu Zm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuSWRlcXZhbEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlLA0K PiA+IEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg MzM4LCBzZWxmLlJVTEVfaWRlcXZhbEV4cCkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2OTMNCj4gPg0KPiA+ICsgICAgICAgICAgICBs b2NhbGN0eC5JID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSWRFcVZhbCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY5NA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjcwNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkVxdWFs XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2OTUNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRXF1YWwpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjk2DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5MZXNzRXF1YWxdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjY5Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5MZXNzRXF1YWwpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNjk4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5MZXNzXToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2OTkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTGVzcykNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MDANCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLkdyZWF0ZXJFcXVhbF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNzAxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkdyZWF0ZXJFcXVhbCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI3MDINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXJdOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcwMw0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5HcmVhdGVyKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcwNA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIElkZXFpZEV4cENvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdT dGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8g PSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5JID0gTm9uZSAjIFRva2VuDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5FID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5MRSA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu TCA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQkUgPSBOb25lICMg VG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkIgPSBOb25lICMgVG9rZW4NCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgdmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKHNlbGYsIGk6aW50PU5v bmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJT eW50YXhQYXJzZXIuVmZyUXVlc3Rpb25EYXRhRmllbGROYW1lQ29uDQo+ID4gdGV4dCkNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4N Cj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0 aW9uRGF0YUZpZWxkTmFtZUNvbnQNCj4gPiBleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBJZEVxSWQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLklkRXFJZCwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBFcXVhbChzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRXF1YWwsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTGVzc0VxdWFsKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5MZXNz RXF1YWwsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTGVzcyhzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuTGVzcywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBHcmVhdGVyRXF1 YWwoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkdyZWF0ZXJFcXVhbCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBHcmVhdGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5HcmVhdGVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfaWRlcWlkRXhwDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0SWRlcWlk RXhwIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdElk ZXFpZEV4cChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IGlkZXFpZEV4cChzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLklkZXFpZEV4cENvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LCBzZWxmLnN0YXRlLA0KPiA+IEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMzQwLCBzZWxmLlJVTEVfaWRlcWlkRXhwKQ0KPiA+DQo+ID4gKyAg ICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcwNw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LkkgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5J ZEVxSWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MDgNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MTkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNl bGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5FcXVhbF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNzA5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkUgPSBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5FcXVhbCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI3MTANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJRdWVzdGlvbkRh dGFGaWVsZE5hbWUoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkxlc3NFcXVhbF06DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzExDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIGxvY2FsY3R4LkxFID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTGVz c0VxdWFsKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcxMg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGVzc106DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNzEzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4 LkwgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5MZXNzKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjcxNA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBh c3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu R3JlYXRlckVxdWFsXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3 MTUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguQkUgPSBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5HcmVhdGVyRXF1YWwpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNzE2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rp b25EYXRhRmllbGROYW1lKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5HcmVhdGVyXToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MTcNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgbG9jYWxjdHguQiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkdy ZWF0ZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzE4DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNl bGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0g cmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zlcihz ZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgSWRlcXZhbGxpc3RFeHBD b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5m byA9IEV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBJZEVxVmFsTGlz dChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuSWRFcVZhbExpc3QsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgdmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyUXVlc3Rpb25EYXRhRmllbGROYW1lQ29udA0KPiA+IGV4dCwwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEVxdWFsKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FcXVhbCwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfaWRlcXZhbGxpc3RFeHAN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRJZGVxdmFsbGlzdEV4cCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRJZGVxdmFsbGlzdEV4cChzZWxmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGlkZXF2YWxsaXN0RXhwKHNlbGYsIEV4cEluZm8p Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuSWRlcXZhbGxpc3RFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRl LCBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM0 Miwgc2VsZi5SVUxFX2lkZXF2YWxsaXN0RXhwKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEg PSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjcyMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLklkRXFWYWxMaXN0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNzIyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJRdWVzdGlvbkRhdGFG aWVsZE5hbWUoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzIzDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRXF1YWwpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MjUNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlIFRydWU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzI0DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MjcNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlm IG5vdCAoX2xhPT1WZnJTeW50YXhQYXJzZXIuTnVtYmVyKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIGJyZWFrDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZy UXVlc3Rpb25EYXRhRmllbGROYW1lQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLlFJZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5NYXNrID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVmFy SWRTdHIgPSAnJw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTGluZSA9IE5vbmUNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Zm clF1ZXN0aW9uRGF0YUZpZWxkTmFtZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIGNvcHlGcm9tKHNlbGYsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc3VwZXIoKS5jb3B5RnJvbShjdHgpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5RSWQgPSBjdHguUUlkDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5NYXNr ID0gY3R4Lk1hc2sNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlZhcklkU3RyID0gY3R4LlZh cklkU3RyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5MaW5lID0gY3R4LkxpbmUNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MNCj4gPg0K PiBWZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMkNvbnRleHQoVmZyUXVlc3Rpb25EYXRhRmll bGROYW1lQ29udGV4DQo+ID4gdCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5 IGENCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25EYXRhRmllbGROYW1lQ29udGV4dA0K PiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuU04yID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5jb3B5RnJvbShjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg U3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBEb3Qoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkRvdCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuRG90LCBpKQ0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFycmF5TmFtZShzZWxmLCBp OmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMo VmZyU3ludGF4UGFyc2VyLkFycmF5TmFtZUNvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5BcnJheU5hbWVDb250ZXh0LGkpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0VmZyUXVlc3Rpb25EYXRhRmllbGROYW1lUnVsZTIiICk6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyUXVlc3Rpb25EYXRhRmll bGROYW1lUnVsZTIoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzDQo+ID4NCj4gVmZyUXVlc3Rp b25EYXRhRmllbGROYW1lUnVsZTFDb250ZXh0KFZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZUNvbnRl eA0KPiA+IHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KTogIyBhY3R1YWxseSBhDQo+ID4gVmZy U3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZUNvbnRleHQNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcnNlcikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLlNOMSA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSSA9 IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5CcmFja2V0KHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5P cGVuQnJhY2tldCwgMCkNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNsb3NlQnJhY2tldCwgMCkNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlm aWVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiA+DQo+ID4gKyAgICAgICAgZGVm IE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclF1ZXN0aW9uRGF0YUZp ZWxkTmFtZVJ1bGUxIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdFZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUxKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgdmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKHNlbGYpOg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyUXVl c3Rpb25EYXRhRmllbGROYW1lQ29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5zdGF0 ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNDQsIHNlbGYu UlVMRV92ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9s YSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NDENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBsYV8gPSBzZWxmLl9p bnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDIyNSxzZWxmLl9jdHgpDQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxv Y2FsY3R4ID0NCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25EYXRhRmllbGROYW1lUnVs ZTFDb250ZXh0KHNlbGYsIGxvY2FsY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNzI5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LlNOMSA9 IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzMwDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjczMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBsb2NhbGN0eC5JID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjczMg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbGlmIGxhXyA9PSAyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9DQo+ ID4gVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUyQ29udGV4dChz ZWxmLCBsb2NhbGN0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjczMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5TTjIgPSBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjczOA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2Vs Zi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJT eW50YXhQYXJzZXIuRG90Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI3MzQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkRvdCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNzM1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmFycmF5TmFtZSgpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc0MA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0K PiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgQXJyYXlOYW1lQ29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg cGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRl OmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQs IGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJz ZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlN1YlN0ciA9ICcnDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5TdWJTdHJaID0gJycNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk4g PSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdJ ZGVudGlmaWVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIE9wZW5CcmFja2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkNsb3NlQnJhY2tldCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1i ZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5 bnRheFBhcnNlci5SVUxFX2FycmF5TmFtZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEFycmF5TmFtZSIgKToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRBcnJheU5hbWUoc2VsZikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBhcnJheU5hbWUoc2Vs Zik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBh cnNlci5BcnJheU5hbWVDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNDYsIHNlbGYuUlVMRV9h cnJheU5hbWUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NzQzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3Ry aW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc0Nw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzQ0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc0NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBs b2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc0Ng0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYs IHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgUXVlc3Rpb25yZWYxRXhwQ29u dGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwN Cj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8g PSBFeHBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgUXVlc3Rpb25SZWYo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlF1ZXN0aW9uUmVmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu U3RyaW5nSWRlbnRpZmllciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBO dW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX3F1ZXN0aW9ucmVmMUV4cA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFF1ZXN0aW9ucmVm MUV4cCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRR dWVzdGlvbnJlZjFFeHAoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBxdWVzdGlvbnJlZjFFeHAoc2VsZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5RdWVzdGlvbnJlZjFFeHBD b250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM0OCwgc2VsZi5SVUxFX3F1ZXN0 aW9ucmVmMUV4cCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUN Cj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI3NDkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5R dWVzdGlvblJlZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc1MA0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc1MQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg bm90KF9sYT09VmZyU3ludGF4UGFyc2VyLk51bWJlciBvcg0KPiA+IF9sYT09VmZyU3ludGF4UGFy c2VyLlN0cmluZ0lkZW50aWZpZXIpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlY292ZXJJbmxpbmUoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydE1hdGNo KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NTINCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAg ICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGNsYXNzIFJ1bGVyZWZFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5v bmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBSdWxlUmVmKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SdWxlUmVmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0 cmluZ0lkZW50aWZpZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xv c2VQYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3J1bGVyZWZFeHANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRSdWxlcmVmRXhw IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFJ1bGVy ZWZFeHAoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBy dWxlcmVmRXhwKHNlbGYsIEV4cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuUnVsZXJlZkV4cENvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LA0KPiBzZWxmLnN0YXRlLA0KPiA+IEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgMzUwLCBzZWxmLlJVTEVfcnVsZXJlZkV4cCkNCj4gPg0KPiA+ ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NTQNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SdWxlUmVmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzU1DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzU2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjc1Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgU3Ry aW5ncmVmMUV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3Rh dGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IFN0cmluZ1JlZihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nUmVmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9zdHJpbmdy ZWYxRXhwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0 ciggdmlzaXRvciwgInZpc2l0U3RyaW5ncmVmMUV4cCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTdHJpbmdyZWYxRXhwKHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgc3RyaW5ncmVmMUV4cChzZWxmLCBFeHBJ bmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLlN0cmluZ3JlZjFFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0 YXRlLCBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDM1Miwgc2VsZi5SVUxFX3N0cmluZ3JlZjFFeHApDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzU5DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nUmVmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNzYwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNzY2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU3RyaW5n VG9rZW5dOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc2MQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdU b2tlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NjINCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVu KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc2Mw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzY0DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuTnVtYmVyXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI3NjUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmFp c2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjc2OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3Mg UHVzaHRoaXNFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBQdXNoVGhpcyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuUHVzaFRoaXMsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9wdXNodGhpc0V4cA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFB1c2h0aGlz RXhwIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFB1 c2h0aGlzRXhwKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgcHVzaHRoaXNFeHAoc2VsZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5QdXNodGhpc0V4cENvbnRleHQoc2VsZiwg c2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlLA0KPiA+IEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzU0LCBzZWxmLlJVTEVfcHVzaHRoaXNFeHApDQo+ ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NzcwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUHVz aFRoaXMpDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgU2VjdXJpdHlFeHBDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9r aW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJ bmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZWN1cml0eShzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2Vj dXJpdHksIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5PcGVuUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg Z3VpZERlZmluaXRpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNv bnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBD bG9zZVBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfc2VjdXJpdHlFeHANCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRTZWN1cml0 eUV4cCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRT ZWN1cml0eUV4cChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIHNlY3VyaXR5RXhwKHNlbGYsIEV4cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuU2VjdXJpdHlFeHBDb250ZXh0KHNlbGYs IHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSwNCj4gPiBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM1Niwgc2VsZi5SVUxFX3NlY3VyaXR5RXhwKQ0K PiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g Mjc3Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNl Y3VyaXR5KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzczDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzc0DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5ndWlkRGVmaW5pdGlvbigpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI3NzUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIE51bWVyaWNWYXJTdG9yZVR5 cGVDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVmFy VHlwZSA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1lcmljU2l6 ZU9uZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVPbmUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgTnVtZXJpY1NpemVUd28oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplVHdvLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWVyaWNTaXplRm91cihzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuTnVtZXJpY1NpemVGb3VyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IE51bWVyaWNTaXplRWlnaHQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplRWlnaHQsIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9udW1lcmljVmFyU3RvcmVU eXBlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0TnVtZXJpY1ZhclN0b3JlVHlwZSIgKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXROdW1lcmljVmFyU3RvcmVUeXBlKHNlbGYpDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgbnVtZXJpY1ZhclN0b3Jl VHlwZShzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLk51bWVyaWNWYXJTdG9yZVR5cGVDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0 eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDM1OCwgc2VsZi5SVUxFX251bWVyaWNWYXJTdG9yZVR5cGUpDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzc3DQo+ID4NCj4gPiArICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBub3Qo KCgoKF9sYSAtIDIzNykpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMjM3KSkgJiAo KDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplT25lIC0gMjM3KSkgfCAoMSA8 PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVUd28gLSAyMzcpKSB8ICgxIDw8DQo+ ID4gKFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZUZvdXIgLSAyMzcpKSB8ICgxIDw8DQo+ID4g KFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZUVpZ2h0IC0gMjM3KSkpKSAhPSAwKSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcklubGluZShzZWxm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5jb25zdW1lKCkNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBHZXRFeHBDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0K PiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQmFzZUluZm8g PSBFRklfVkFSU1RPUkVfSU5GTygpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5HT2JqID0g Tm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBHZXQoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkdldCwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl biwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdG9yYWdlVmFySWQo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdG9yYWdlVmFySWRDb250ZXh0LDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBC aXRXaXNlT3Ioc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgbnVtZXJpY1ZhclN0b3JlVHlwZShzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLk51bWVyaWNWYXJTdG9yZVR5cGVDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9nZXRFeHANCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVW aXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRHZXRFeHAiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0R2V0RXhwKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgZ2V0RXhwKHNlbGYsIEV4cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuR2V0RXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgs IHNlbGYuc3RhdGUsDQo+ID4gRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJS dWxlKGxvY2FsY3R4LCAzNjAsIHNlbGYuUlVMRV9nZXRFeHApDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzc5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuR2V0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNzgwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzgx DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdG9yYWdlVmFySWQobG9jYWxjdHguQmFz ZUluZm8sIEZhbHNlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzg2DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzgyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI3ODMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNzg0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNzg1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubnVtZXJpY1ZhclN0b3JlVHlw ZSgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI3ODgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmckV4cHJlc3Npb25D b25zdGFudENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250 ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFRy dWVTeW1ib2woc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlRydWVTeW1ib2wsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgRmFsc2VTeW1ib2woc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZhbHNlU3ltYm9sLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9uZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT25lLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9uZXMoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9uZXMsIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgWmVybyhzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuWmVybywgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBVbmRlZmluZWQoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVuZGVm aW5lZCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBWZXJzaW9uKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5WZXJzaW9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJl cihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3lu dGF4UGFyc2VyLlJVTEVfdmZyRXhwcmVzc2lvbkNvbnN0YW50DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRXhwcmVz c2lvbkNvbnN0YW50IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdFZmckV4cHJlc3Npb25Db25zdGFudChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmckV4cHJlc3Npb25Db25zdGFudChzZWxmLCBFeHBJbmZv KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmckV4cHJlc3Npb25Db25zdGFudENvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LA0KPiA+ IHNlbGYuc3RhdGUsIEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgMzYyLCBzZWxmLlJVTEVfdmZyRXhwcmVzc2lvbkNvbnN0YW50KQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc5MA0KPiA+DQo+ID4gKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg bm90KCgoKChfbGEgLSAyMDkpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDIwOSkp ICYgKCgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5UcnVlU3ltYm9sIC0gMjA5KSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLkZhbHNlU3ltYm9sDQo+IC0NCj4gPiAyMDkpKSB8ICgxIDw8IChW ZnJTeW50YXhQYXJzZXIuT25lIC0gMjA5KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk9uZXMg LQ0KPiA+IDIwOSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5aZXJvIC0gMjA5KSkgfCAoMSA8 PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuVW5kZWZpbmVkIC0gMjA5KSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLlZlcnNpb24gLSAyMDkpKQ0KPiB8DQo+ID4gKDEgPDwgKFZmclN5bnRheFBhcnNl ci5OdW1iZXIgLSAyMDkpKSkpICE9IDApKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVySW5saW5lKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRN YXRjaChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQ0KPiA+ DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiAr ICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGNsYXNzIFZmckV4cHJlc3Npb25VbmFyeU9wQ29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18o c2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2lu Z1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5m byA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgbGVuZ3RoRXhwKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuTGVuZ3RoRXhwQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIGJpdHdpc2Vub3RFeHAoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5CaXR3aXNlbm90RXhwQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIHF1ZXN0aW9uMjNyZWZFeHAoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5RdWVzdGlvbjIzcmVmRXhwQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIHN0cmluZ3JlZjJFeHAoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5TdHJpbmdyZWYyRXhwQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIHRvYm9vbEV4cChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlRv Ym9vbEV4cENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiB0b3N0cmluZ0V4cChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4N Cj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlRvc3RyaW5nRXhw Q29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IHVuaW50RXhwKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlVuaW50RXhwQ29udGV4dCwwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHRvdXBwZXJFeHAoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5Ub3VwcGVyRXhwQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHRvbHdlckV4cChzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlRvbHdlckV4cENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBzZXRFeHAoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuU2V0RXhw Q29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3lu dGF4UGFyc2VyLlJVTEVfdmZyRXhwcmVzc2lvblVuYXJ5T3ANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJFeHByZXNz aW9uVW5hcnlPcCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRWZnJFeHByZXNzaW9uVW5hcnlPcChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgZGVmIHZmckV4cHJlc3Npb25VbmFyeU9wKHNlbGYsIEV4cEluZm8pOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu VmZyRXhwcmVzc2lvblVuYXJ5T3BDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwNCj4gPiBzZWxm LnN0YXRlLCBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxj dHgsIDM2NCwgc2VsZi5SVUxFX3ZmckV4cHJlc3Npb25VbmFyeU9wKQ0KPiA+DQo+ID4gKyAgICAg ICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODAyDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGVuZ3RoXToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc5Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLmxlbmd0aEV4cChFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkJpdFdp c2VOb3RdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzkzDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuYml0d2lzZW5vdEV4cChFeHBJbmZvKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0 b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uUmVmVmFsXToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc5NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnF1ZXN0aW9uMjNyZWZFeHAoRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5TdHJpbmdSZWZWYWxdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNzk1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RyaW5ncmVmMkV4cChF eHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkJvb2xWYWxdOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDUpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzk2DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYudG9ib29sRXhwKEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuU3RyaW5nVmFsXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCA2KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g Mjc5Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnRvc3RyaW5nRXhwKEV4cEluZm8p DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVW5JbnRWYWxdOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDcpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzk4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYudW5pbnRFeHAoRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Ub1Vw cGVyXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCA4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc5OQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnRvdXBwZXJFeHAoRXhwSW5mbykNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5Ub0xvd2VyXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA5KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjgwMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnRvbHdl ckV4cChFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlNldF06DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMTApDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODAxDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc2V0RXhwKEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAg ICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGNsYXNzIExlbmd0aEV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEs IEV4cEluZm89Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIg PSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5MT2JqID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBMZW5ndGgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkxlbmd0aCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnQNCj4gPiBleHQs MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBh cmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g VmZyU3ludGF4UGFyc2VyLlJVTEVfbGVuZ3RoRXhwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0TGVuZ3RoRXhwIiApOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdExlbmd0aEV4cChz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGxlbmd0aEV4 cChzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLkxlbmd0aEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxm LnN0YXRlLA0KPiA+IEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgMzY2LCBzZWxmLlJVTEVfbGVuZ3RoRXhwKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgwNA0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkxlbmd0aCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjgwNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjgwNg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhw cmVzc2lvblN1YigpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MDcNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu KQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIEJpdHdpc2Vub3RFeHBDb250ZXh0KFBhcnNlclJ1 bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5n U3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZv ID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQldOT2JqID0gTm9uZQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBCaXRXaXNlTm90KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlTm90LCAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBh cmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4 cHJlc3Npb25TdWIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uU3ViQ29udA0KPiA+IGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9iaXR3aXNlbm90RXhw DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlz aXRvciwgInZpc2l0Qml0d2lzZW5vdEV4cCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRCaXR3aXNlbm90RXhwKHNlbGYpDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgYml0d2lzZW5vdEV4cChzZWxmLCBFeHBJbmZvKToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LkJpdHdpc2Vub3RFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlLCBF eHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM2OCwg c2VsZi5SVUxFX2JpdHdpc2Vub3RFeHApDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODA5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU5vdCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjgxMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjgxMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lv blN1YigpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MTINCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+ DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiAr ICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGNsYXNzIFF1ZXN0aW9uMjNyZWZFeHBDb250ZXh0KFBhcnNlclJ1bGVD b250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3Rh dGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0g Tm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBRdWVzdGlvblJlZlZhbChzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUXVl c3Rpb25SZWZWYWwsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBh cmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk9wZW5QYXJlbiwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0 ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0K PiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50RXhwcmVzc2lvblN1YkNvbnQNCj4gPiBleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCBpKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIERldmljZVBhdGgoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRldmljZVBhdGgs IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlN0cmluZ1Rva2VuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51 bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5z KFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVXVpZChzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuVXVpZCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBndWlkRGVm aW5pdGlvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCww KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2Vy LlJVTEVfcXVlc3Rpb24yM3JlZkV4cA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFF1ZXN0aW9uMjNyZWZFeHAiICk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0UXVlc3Rpb24yM3Jl ZkV4cChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHF1 ZXN0aW9uMjNyZWZFeHAoc2VsZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5RdWVzdGlvbjIzcmVmRXhwQ29udGV4dChz ZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSwgRXhwSW5mbykNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNzAsIHNlbGYuUlVMRV9xdWVzdGlvbjIzcmVm RXhwKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgxNA0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9u UmVmVmFsKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODE1DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODIzDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5 bnRheFBhcnNlci5EZXZpY2VQYXRoOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjgxNg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5EZXZpY2VQYXRoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjgxNw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgxOA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJp bmdUb2tlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MTkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBh cmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgyMA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODIxDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODIyDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODMwDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5VdWlkOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjgyNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5VdWlkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjgyNg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgy Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmd1aWREZWZpbml0aW9uKCkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MjgNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MzINCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODMzDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxs eToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBjbGFzcyBTdHJpbmdyZWYyRXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5m bz1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwg aW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLlNSMk9iaiA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LkV4cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3Ry aW5nUmVmVmFsKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdSZWZWYWwsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250DQo+ ID4gZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg Q2xvc2VQYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3N0cmluZ3JlZjJFeHANCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9y KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRTdHJp bmdyZWYyRXhwIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdFN0cmluZ3JlZjJFeHAoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBzdHJpbmdyZWYyRXhwKHNlbGYsIEV4cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuU3RyaW5ncmVmMkV4cENv bnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIEV4cEluZm8pDQo+ID4NCj4g PiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzcyLCBzZWxmLlJVTEVfc3RyaW5n cmVmMkV4cCkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI4MzUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TdHJpbmdSZWZWYWwpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI4MzYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5P cGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MzcNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODM4DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxs eToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBjbGFzcyBUb2Jvb2xFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5v bmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuVEJPYmogPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJ bmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEJvb2xWYWwo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkJvb2xWYWwsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg T3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250DQo+ID4gZXh0LDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBn ZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRh eFBhcnNlci5SVUxFX3RvYm9vbEV4cA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFRvYm9vbEV4cCIgKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRUb2Jvb2xFeHAoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB0b2Jvb2xFeHAoc2VsZiwg RXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5Ub2Jvb2xFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwN Cj4gPiBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDM3NCwgc2VsZi5SVUxFX3RvYm9vbEV4cCkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NDANCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Cb29sVmFsKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyODQxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyODQyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9u U3ViKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg0Mw0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4N Cj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgY2xhc3MgVG9zdHJpbmdFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0 KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50 PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVFNPYmogPSBOb25lDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIFN0cmluZ1ZhbChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVmFsLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29u dA0KPiA+IGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdG9zdHJpbmdFeHANCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJz ZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXRUb3N0cmluZ0V4cCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRUb3N0cmluZ0V4cChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgZGVmIHRvc3RyaW5nRXhwKHNlbGYsIEV4cEluZm8pOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVG9zdHJpbmdF eHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSwNCj4gPiBFeHBJbmZvKQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM3Niwgc2VsZi5SVUxF X3Rvc3RyaW5nRXhwKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlw ZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjg0NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlN0cmluZ1ZhbCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg1MA0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuVF9fMTQ6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyODQ2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlRfXzE0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjg0Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g Mjg0OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODQ5DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyODUyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODUzDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg1NA0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZp bmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgY2xhc3MgVW5pbnRFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQ YXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZv PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBp bnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2Vy DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuVFVPYmogPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5F eHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFVuSW50 VmFsKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5VbkludFZhbCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnQNCj4gPiBleHQsMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVu KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfdW5pbnRFeHANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRVbmludEV4cCIgKToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRVbmludEV4cChzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHVuaW50RXhwKHNlbGYs IEV4cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuVW5pbnRFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwN Cj4gPiBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDM3OCwgc2VsZi5SVUxFX3VuaW50RXhwKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg1Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVuSW50VmFsKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyODU3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyODU4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9u U3ViKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg1OQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4N Cj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgY2xhc3MgVG91cHBlckV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9 LTEsIEV4cEluZm89Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJz ZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5UVU9iaiA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgVG9VcHBlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVG9VcHBlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnQNCj4g PiBleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBD bG9zZVBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdG91cHBlckV4cA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFRvdXBwZXJF eHAiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VG91 cHBlckV4cChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IHRvdXBwZXJFeHAoc2VsZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5Ub3VwcGVyRXhwQ29udGV4dChzZWxmLCBzZWxm Ll9jdHgsDQo+IHNlbGYuc3RhdGUsDQo+ID4gRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzODAsIHNlbGYuUlVMRV90b3VwcGVyRXhwKQ0KPiA+DQo+ ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg2MQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRvVXBwZXIp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NjINCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NjMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyODY0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24g PSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Io c2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBUb2x3ZXJFeHBDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0K PiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVExPYmogPSBO b25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFRvTG93ZXIoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRvTG93ZXIsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5P cGVuUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVt ZW50RXhwcmVzc2lvblN1YihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4g Pg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dEV4cHJlc3Npb25TdWJDb250DQo+ID4gZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3RvbHdlckV4 cA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdFRvbHdlckV4cCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRUb2x3ZXJFeHAoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiB0b2x3ZXJFeHAoc2VsZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5Ub2x3ZXJFeHBD b250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gPiBFeHBJbmZvKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM4Miwgc2VsZi5SVUxFX3RvbHdl ckV4cCkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI4NjYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Ub0xvd2VyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODY3DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVu KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODY4DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjg2OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3Mg U2V0RXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LkJhc2VJbmZvID0gRUZJX1ZBUlNUT1JFX0lORk8oKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuVFNPYmogPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhw SW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNldChzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2V0 LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuT3BlblBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0 b3JhZ2VWYXJJZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0b3JhZ2VWYXJJZENvbnRl eHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21t YShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuQ29tbWEsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg dmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250DQo+ID4gZXh0LDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQ YXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkJpdFdpc2VPciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBG TEFHUyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgbnVtZXJpY1ZhclN0b3JlVHlwZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLk51bWVy aWNWYXJTdG9yZVR5cGVDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9zZXRFeHANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRTZXRFeHAiICk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0U2V0RXhwKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgc2V0RXhwKHNl bGYsIEV4cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuU2V0RXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUs DQo+ID4gRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4 LCAzODQsIHNlbGYuUlVMRV9zZXRFeHApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAg IyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyODcxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuU2V0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODcy DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBh cmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODczDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi52ZnJTdG9yYWdlVmFySWQobG9jYWxjdHguQmFzZUluZm8sIEZhbHNl KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODc4DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9 PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyODc0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI4NzUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuRkxBR1MpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy ODc2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODc3DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYubnVtZXJpY1ZhclN0b3JlVHlwZSgpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4ODAN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg4MQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI4ODINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZm ckV4cHJlc3Npb25UZXJuYXJ5T3BDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQ YXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZv PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBp bnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2Vy DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBjb25kaXRpb25hbEV4cChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkNvbmRp dGlvbmFsRXhwQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIGZpbmRFeHAoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRmluZEV4cENvbnRleHQs MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBtaWRFeHAo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuTWlkRXhwQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHRva2VuRXhwKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVG9rZW5FeHBDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgc3BhbkV4cChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5TcGFuRXhw Q29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3lu dGF4UGFyc2VyLlJVTEVfdmZyRXhwcmVzc2lvblRlcm5hcnlPcA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckV4cHJl c3Npb25UZXJuYXJ5T3AiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0VmZyRXhwcmVzc2lvblRlcm5hcnlPcChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmckV4cHJlc3Npb25UZXJuYXJ5T3Aoc2VsZiwgRXhw SW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRh eFBhcnNlci5WZnJFeHByZXNzaW9uVGVybmFyeU9wQ29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0 eCwgc2VsZi5zdGF0ZSwgRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCAzODYsIHNlbGYuUlVMRV92ZnJFeHByZXNzaW9uVGVybmFyeU9wKQ0KPiA+DQo+ ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODg5 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4N Cj4gPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuQ29uZF06DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4ODQNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5jb25kaXRpb25hbEV4cChFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLkZpbmRdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy ODg1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZmluZEV4cChFeHBJbmZvKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0 b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk1pZF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI4ODYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5taWRF eHAoRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Ub2tdOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODg3DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYudG9rZW5FeHAoRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5TcGFuXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCA1KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg4OA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnNwYW5FeHAoRXhwSW5mbykNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCBy ZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgQ29uZGl0aW9uYWxFeHBDb250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+ IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ09iaiA9IE5vbmUN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29uZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29uZCwgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNz aW9uU3ViKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1 YkNvDQo+ID4gbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udA0KPiA+IGV4dCxpKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbG9uKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5Db2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBh cmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g VmZyU3ludGF4UGFyc2VyLlJVTEVfY29uZGl0aW9uYWxFeHANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRDb25kaXRpb25h bEV4cCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD b25kaXRpb25hbEV4cChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIGNvbmRpdGlvbmFsRXhwKHNlbGYsIEV4cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQ29uZGl0aW9uYWxFeHBDb250 ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM4OCwgc2VsZi5SVUxFX2NvbmRpdGlv bmFsRXhwKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjg5MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNvbmQpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4OTINCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4p DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4OTMNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyODk0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVF9fMTUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI4OTUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Np b25TdWIoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODk2DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29sb24pDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4OTcNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyODk4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBGaW5kRXhwQ29u dGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwN Cj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkZPYmogPSBO b25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEZpbmQoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZpbmQsIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFy ZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZmluZEZvcm1hdChzZWxm LCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dHMoVmZyU3ludGF4UGFyc2VyLkZpbmRGb3JtYXRDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRmluZEZvcm1hdENvbnRleHQsaSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBp OmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIo c2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ28NCj4g PiBudGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250DQo+ID4gZXh0LGkpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQ2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBCaXRX aXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQml0V2lzZU9yLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfZmluZEV4cA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEZpbmRFeHAiICk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RmluZEV4cChzZWxmKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGZpbmRFeHAoc2VsZiwgRXhwSW5mbyk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5G aW5kRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsDQo+ID4gRXhwSW5mbykN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzOTAsIHNlbGYuUlVM RV9maW5kRXhwKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0K PiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjkwMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZp bmQpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MDENCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MDINCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLmZpbmRGb3JtYXQoRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjkwNw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4g PiArICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkwMw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTA0DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuZmluZEZvcm1hdChFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjkwOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjkxMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTExDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkxMg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyOTEzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRF eHByZXNzaW9uU3ViKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkxNA0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTE1DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjkxNg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgRmlu ZEZvcm1hdENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250 ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5Gb3JtYXQgPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5m bw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbnNpdGl2ZShzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu U2Vuc2l0aXZlLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEluc2Vuc2l0 aXZlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5JbnNlbnNpdGl2ZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IFZmclN5bnRheFBhcnNlci5SVUxFX2ZpbmRGb3JtYXQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRGaW5kRm9ybWF0IiAp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEZpbmRGb3Jt YXQoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBmaW5k Rm9ybWF0KHNlbGYsIEV4cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRmluZEZvcm1hdENvbnRleHQoc2VsZiwgc2VsZi5fY3R4 LA0KPiBzZWxmLnN0YXRlLA0KPiA+IEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMzkyLCBzZWxmLlJVTEVfZmluZEZvcm1hdCkNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MTgNCj4gPg0KPiA+ICsgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIG5v dChfbGE9PVZmclN5bnRheFBhcnNlci5JbnNlbnNpdGl2ZSBvcg0KPiA+IF9sYT09VmZyU3ludGF4 UGFyc2VyLlNlbnNpdGl2ZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcklubGluZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0TWF0Y2goc2Vs ZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkNCj4gPg0KPiA+ICsg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAg ZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBjbGFzcyBNaWRFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQ YXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZv PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBp bnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2Vy DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuTU9iaiA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4 cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTWlkKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5NaWQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBh cmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDbw0KPiA+IG50ZXh0KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVz c2lvblN1YkNvbnQNCj4gPiBleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9taWRFeHANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRNaWRFeHAiICk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0TWlkRXhwKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgbWlkRXhwKHNl bGYsIEV4cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuTWlkRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUs DQo+ID4gRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4 LCAzOTQsIHNlbGYuUlVMRV9taWRFeHApDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTIwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWlkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyOTIxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTIy DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkyMw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyOTI0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJT dGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjkyNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTI2DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkyNw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICBl eGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg Y2xhc3MgVG9rZW5FeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuVE9iaiA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8g PSBFeHBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVG9rKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5Ub2ssIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5PcGVuUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg dmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy bg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudEV4cHJlc3Npb25TdWJDbw0KPiA+IG50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1 YkNvbnQNCj4gPiBleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkNvbW1hLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3Nl UGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBWZnJTeW50YXhQYXJzZXIuUlVMRV90b2tlbkV4cA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFRva2VuRXhwIiApOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFRva2VuRXhwKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdG9rZW5FeHAo c2VsZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5Ub2tlbkV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0 YXRlLA0KPiA+IEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2Nh bGN0eCwgMzk2LCBzZWxmLlJVTEVfdG9rZW5FeHApDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTI5DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVG9rKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyOTMwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyOTMxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9u U3ViKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkzMg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTMzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjkzNA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTM1DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkzNg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZp bmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgY2xhc3MgU3BhbkV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89 Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5TT2JqID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhw SW5mbyA9IEV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTcGFuKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TcGFuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5Q YXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIEZMQUdTKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBzcGFuRmxhZ3Moc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4g PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5TcGFuRmxhZ3NDb250 ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu U3BhbkZsYWdzQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZy U3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0K PiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudEV4cHJlc3Npb25TdWJDbw0KPiA+IG50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNv bnQNCj4gPiBleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9zcGFuRXhwDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0U3BhbkV4 cCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTcGFu RXhwKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgc3Bh bkV4cChzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2Fs Y3R4ID0gVmZyU3ludGF4UGFyc2VyLlNwYW5FeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2Vs Zi5zdGF0ZSwNCj4gPiBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDM5OCwgc2VsZi5SVUxFX3NwYW5FeHApDQo+ID4NCj4gPiArICAgICAgICBzZWxm Ll9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTM4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU3BhbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjkzOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk0MA0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTQxDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjk0Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3BhbkZs YWdzKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk0Nw0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hp bGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjk0Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyOTQ0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3BhbkZs YWdzKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NDkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NTANCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjk1MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3Rh dGVtZW50RXhwcmVzc2lvblN1YigpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI5NTINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk1Mw0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NTQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjk1NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhw cmVzc2lvblN1YigpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NTYNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu KQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFNwYW5GbGFnc0NvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0 ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GbGFnID0gMA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIExhc3ROb25NYXRjaChzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGFzdE5vbk1h dGNoLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEZpcnN0Tm9uTWF0Y2go c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkZpcnN0Tm9uTWF0Y2gsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV9zcGFuRmxhZ3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRTcGFuRmxhZ3MiICk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0U3BhbkZsYWdzKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgc3BhbkZsYWdz KHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuU3BhbkZsYWdzQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNDAwLCBzZWxmLlJVTEVf c3BhbkZsYWdzKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0K PiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g Mjk1OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgbm90KCgoKChfbGEgLSAyNDYpKSAmIH4weDNmKSA9PSAwIGFu ZCAoKDEgPDwgKF9sYSAtIDI0NikpICYgKCgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5MYXN0 Tm9uTWF0Y2ggLSAyNDYpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5GaXJzdE5vbk1h dGNoIC0gMjQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk51bWJlciAtDQo+ID4gMjQ2KSkp KSAhPSAwKSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcklubGluZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkNCj4gPg0KPiA+ICsgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBj bGFzcyBWZnJFeHByZXNzaW9uTWFwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5m bz1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwg aW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLk1PYmogPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5F eHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE1hcChz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuTWFwLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5Q YXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udA0KPiA+IGV4dCwwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbG9uKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db2xv biwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5DbG9zZVBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZm clN0YXRlbWVudEV4cHJlc3Npb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4g Pg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRFeHByZXNzaW9uQ29udGV4DQo+ID4gdCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0DQo+ ID4gLGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29t bWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21t YSwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZiwg aTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9u LCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZy RXhwcmVzc2lvbk1hcA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChz ZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckV4cHJlc3Npb25NYXAiICk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyRXhwcmVzc2lvbk1hcChzZWxm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmckV4cHJlc3Np b25NYXAoc2VsZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2Nh bGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uTWFwQ29udGV4dChzZWxmLCBzZWxm Ll9jdHgsDQo+ID4gc2VsZi5zdGF0ZSwgRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCA0MDIsIHNlbGYuUlVMRV92ZnJFeHByZXNzaW9uTWFwKQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAg ICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk2MA0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk1hcCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk2MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjk2Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50 RXhwcmVzc2lvblN1YigpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NjMN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db2xvbikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk3MQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUgX2xh PT1WZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuIG9yICgoKChfbGEgLSAxOTIpKSAmIH4weDNmKQ0K PiA9PSAwDQo+ID4gYW5kICgoMSA8PCAoX2xhIC0gMTkyKSkgJiAoKDEgPDwgKFZmclN5bnRheFBh cnNlci5Db25kIC0gMTkyKSkgfCAoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuRmluZCAtIDE5 MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5NaWQgLSAxOTIpKSB8ICgxIDw8DQo+ID4gKFZm clN5bnRheFBhcnNlci5Ub2sgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3BhbiAt IDE5MikpIHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLkR1cCAtIDE5MikpIHwgKDEgPDwg KFZmclN5bnRheFBhcnNlci5WYXJFcVZhbCAtIDE5MikpIHwgKDENCj4gPiA8PCAoVmZyU3ludGF4 UGFyc2VyLklkRXFWYWwgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuSWRFcUlkIC0g MTkyKSkNCj4gfA0KPiA+ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuSWRFcVZhbExpc3QgLSAxOTIp KSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5RdWVzdGlvblJlZiAtIDE5MikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5SdWxlUmVmIC0NCj4gMTkyKSkNCj4gPiB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuU3RyaW5nUmVmIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlB1 c2hUaGlzDQo+IC0NCj4gPiAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU2VjdXJpdHkg LSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuR2V0DQo+IC0NCj4gPiAxOTIpKSB8ICgx IDw8IChWZnJTeW50YXhQYXJzZXIuVHJ1ZVN5bWJvbCAtIDE5MikpIHwgKDEgPDwNCj4gPiAoVmZy U3ludGF4UGFyc2VyLkZhbHNlU3ltYm9sIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy Lk9uZSAtIDE5MikpIHwNCj4gPiAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk9uZXMgLSAxOTIpKSB8 ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuWmVybyAtIDE5MikpIHwNCj4gKDENCj4gPiA8PCAoVmZy U3ludGF4UGFyc2VyLlVuZGVmaW5lZCAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5W ZXJzaW9uIC0NCj4gPiAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTGVuZ3RoIC0gMTky KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk5PVA0KPiAtDQo+ID4gMTkyKSkgfCAoMSA8PCAo VmZyU3ludGF4UGFyc2VyLlNldCAtIDE5MikpIHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2Vy LkJpdFdpc2VOb3QgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuQm9vbFZhbCAtIDE5 MikpDQo+ID4gfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0cmluZ1ZhbCAtIDE5MikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5VbkludFZhbA0KPiAtDQo+ID4gMTkyKSkgfCAoMSA8PCAoVmZy U3ludGF4UGFyc2VyLlRvVXBwZXIgLSAxOTIpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNl ci5Ub0xvd2VyIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk1hdGNoIC0gMTkyKSkg fA0KPiAoMQ0KPiA+IDw8IChWZnJTeW50YXhQYXJzZXIuTWF0Y2gyIC0gMTkyKSkgfCAoMSA8PCAo VmZyU3ludGF4UGFyc2VyLkNhdGVuYXRlIC0NCj4gMTkyKSkNCj4gPiB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuUXVlc3Rpb25SZWZWYWwgLSAxOTIpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBh cnNlci5TdHJpbmdSZWZWYWwgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTWFwIC0g MTkyKSkNCj4gfA0KPiA+ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTnVtYmVyIC0gMTkyKSkpKSAh PSAwKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NjQNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NjUNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTY2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyOTY3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI5NzMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0 LkxBKDEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5 NzQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFz IHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiBk aWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4 VmlzaXRvci5weQ0KPiA+IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZy U3ludGF4VmlzaXRvci5weQ0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAw MDAwMDAwMC4uNDMwNzhmOTE0YQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9CYXNlVG9v bHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50YXhWaXNpdG9yLnB5DQo+ID4gQEAg LTAsMCArMSw1MTA2IEBADQo+ID4gK2Zyb20gY2dpIGltcG9ydCBwcmludF9lbnZpcm9uX3VzYWdl DQo+ID4NCj4gPiArZnJvbSBlbWFpbC5lcnJvcnMgaW1wb3J0IE5vbkFTQ0lJTG9jYWxQYXJ0RGVm ZWN0LCBOb25QcmludGFibGVEZWZlY3QNCj4gPg0KPiA+ICtmcm9tIGVudW0gaW1wb3J0IEZsYWcN Cj4gPg0KPiA+ICtmcm9tIGZpbGVpbnB1dCBpbXBvcnQgbGluZW5vDQo+ID4NCj4gPiArZnJvbSBo dHRwLmNsaWVudCBpbXBvcnQgUmVzcG9uc2VOb3RSZWFkeQ0KPiA+DQo+ID4gK2Zyb20gaXRlcnRv b2xzIGltcG9ydCBjb3VudA0KPiA+DQo+ID4gK2Zyb20gbW9kdWxlZmluZGVyIGltcG9ydCBTVE9S RV9OQU1FDQo+ID4NCj4gPiArZnJvbSBtc2lsaWIuc2NoZW1hIGltcG9ydCBDcmVhdGVGb2xkZXIN Cj4gPg0KPiA+ICtmcm9tIHJlIGltcG9ydCBUDQo+ID4NCj4gPiArZnJvbSBzcmVfcGFyc2UgaW1w b3J0IEZMQUdTDQo+ID4NCj4gPiArZnJvbSB0b2tlbml6ZSBpbXBvcnQgTnVtYmVyDQo+ID4NCj4g PiArZnJvbSBhbnRscjQgaW1wb3J0ICoNCj4gPg0KPiA+ICtmcm9tIFZmckNvbXBpbGVyLkNvbW1v bkN0eXBlcyBpbXBvcnQgKg0KPiA+DQo+ID4gK2Zyb20gVmZyQ29tcGlsZXIuVmZyRm9ybVBrZyBp bXBvcnQgKg0KPiA+DQo+ID4gK2Zyb20gVmZyQ29tcGlsZXIuVmZyVXRpbGl0eSBpbXBvcnQgKg0K PiA+DQo+ID4gK2Zyb20gVmZyQ29tcGlsZXIuVmZyVHJlZSBpbXBvcnQgKg0KPiA+DQo+ID4gK2lt cG9ydCBjdHlwZXMNCj4gPg0KPiA+ICtpbXBvcnQgc3RydWN0DQo+ID4NCj4gPiArDQo+ID4NCj4g PiAraWYgX19uYW1lX18gaXMgbm90IE5vbmUgYW5kICIuIiBpbiBfX25hbWVfXzoNCj4gPg0KPiA+ ICsgICAgZnJvbSAuVmZyU3ludGF4UGFyc2VyIGltcG9ydCBWZnJTeW50YXhQYXJzZXINCj4gPg0K PiA+ICtlbHNlOg0KPiA+DQo+ID4gKyAgICBmcm9tIFZmclN5bnRheFBhcnNlciBpbXBvcnQgVmZy U3ludGF4UGFyc2VyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZ0NWZnJWYXJEYXRhVHlwZURCID0g Q1ZmclZhckRhdGFUeXBlREIoKQ0KPiA+DQo+ID4gK2dDVmZyRGVmYXVsdFN0b3JlID0gIENWZnJE ZWZhdWx0U3RvcmUoKQ0KPiA+DQo+ID4gK2dDVmZyRGF0YVN0b3JhZ2UgPSBDVmZyRGF0YVN0b3Jh Z2UoKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyMgVGhpcyBjbGFzcyBkZWZpbmVzIGEgY29tcGxl dGUgZ2VuZXJpYyB2aXNpdG9yIGZvciBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gPiBWZnJT eW50YXhQYXJzZXIuDQo+ID4NCj4gPiArY2xhc3MgVmZyU3ludGF4VmlzaXRvcihQYXJzZVRyZWVW aXNpdG9yKToNCj4gPg0KPiA+ICsgICAgZ1plcm9FZmlJZnJUeXBlVmFsdWUgPSBFRklfSUZSX1RZ UEVfVkFMVUUoKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fT3ZlcnJpZGVDbGFzc0d1aWQgPSBOb25lDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLl9fUGFyc2VyU3RhdHVzID0gMA0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5fX0NJZnJPcEhkckluZGV4ID0gLTENCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19Db25z dGFudE9ubHlJbkV4cHJlc3Npb24gPSBGYWxzZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1Vz ZWREZWZhdWx0QXJyYXkgPSBbXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5f X0NWZnJSdWxlc0RCID0gQ1ZmclJ1bGVzREIoKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0NJ ZnJPcEhkciA9IFtdICAjDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fQ0lmck9wSGRyTGluZU5v ID0gW10NCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19DdXJyUWVzdFZhckluZm8gPSBFRklfVkFS U1RPUkVfSU5GTygpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fQ1ZmclF1 ZXN0aW9uREIgPSBDVmZyUXVlc3Rpb25EQigpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fQ3Vy cmVudFF1ZXN0aW9uID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0N1cnJlbnRNaW5N YXhEYXRhID0gTm9uZSAjDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fSXNT dHJpbmdPcCA9IEZhbHNlDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fSXNPcmRlcmVkTGlzdCA9 IEZhbHNlDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fSXNDaGVja0JveE9wID0gRmFsc2UNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuX19Sb290ID0gVmZyVHJlZU5vZGUoKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eSBWZnJTeW50YXhQYXJzZXIjdmZyUHJvZ3JhbS4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZy UHJvZ3JhbShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclByb2dyYW1Db250ZXh0KToNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICNzZWxmLl9fQ1ZmclF1ZXN0aW9uREIuUHJpbnRB bGxRdWVzdGlvbigndGVzdFxcUXVlc3Rpb25zLnR4dCcpDQo+ID4NCj4gPiArICAgICAgICAjZ0NW ZnJWYXJEYXRhVHlwZURCLkR1bXAoInRlc3RcXERhdGFUeXBlSW5mby50eHQiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZm clN5bnRheFBhcnNlciNwcmFnbWFQYWNrU2hvd0RlZi4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0 UHJhZ21hUGFja1Nob3dEZWYoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLlByYWdtYVBh Y2tTaG93RGVmQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBMaW5lID0g Y3R4LnN0YXJ0LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIGdDVmZyVmFyRGF0YVR5cGVEQi5QYWNr KExpbmUsIFZGUl9QQUNLX1NIT1cpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ByYWdtYVBhY2tT dGFja0RlZi4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0UHJhZ21hUGFja1N0YWNrRGVmKHNlbGYs DQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5QcmFnbWFQYWNrU3RhY2tEZWZDb250ZXh0KToNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIElkZW50aWZpZXIgPSBzZWxmLl9fVHJhbnNJZChj dHguU3RyaW5nSWRlbnRpZmllcigpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYg c3RyKGN0eC5nZXRDaGlsZCgwKSkgPT0gJ3B1c2gnOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEFj dGlvbiA9IFZGUl9QQUNLX1BVU0gNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgQWN0aW9uID0gVkZSX1BBQ0tfUE9QDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBpZiBjdHguTnVtYmVyKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBB Y3Rpb24gfD0gVkZSX1BBQ0tfQVNTSUdODQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBQ YWNrTnVtYmVyID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSwNCj4gREVGQVVMVF9QQUNL X0FMSUdOKQ0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4g PiArICAgICAgICBnQ1ZmclZhckRhdGFUeXBlREIuUGFjayhMaW5lLCBBY3Rpb24sIElkZW50aWZp ZXIsIFBhY2tOdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ByYWdtYVBhY2tOdW1iZXIu DQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFByYWdtYVBhY2tOdW1iZXIoc2VsZiwNCj4gPiBjdHg6 VmZyU3ludGF4UGFyc2VyLlByYWdtYVBhY2tOdW1iZXJDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAg UGFja051bWJlciA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCksDQo+IERFRkFVTFRfUEFD S19BTElHTikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGdDVmZyVmFyRGF0YVR5cGVE Qi5QYWNrKExpbmUsIFZGUl9QQUNLX0FTU0lHTiwgTm9uZSwNCj4gPiBQYWNrTnVtYmVyKQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5DQo+ID4gVmZyU3ludGF4UGFyc2VyI3ZmclByYWdtYVBhY2tEZWZpbml0aW9uLg0KPiA+DQo+ ID4gKyAgICBkZWYgdmlzaXRWZnJQcmFnbWFQYWNrRGVmaW5pdGlvbigNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5WZnJQcmFnbWFQYWNrRGVmaW5pdGlv bkNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJEYXRhU3RydWN0RGVmaW5p dGlvbi4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyRGF0YVN0cnVjdERlZmluaXRpb24oc2Vs ZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJEYXRhU3RydWN0RGVmaW5pdGlvbkNvbnRl eHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZ0NWZnJWYXJEYXRhVHlwZURCLkRl Y2xhcmVEYXRhVHlwZUJlZ2luKCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0 eC5OMSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFJldHVybkNvZGUgPSBnQ1ZmclZh ckRhdGFUeXBlREIuU2V0TmV3VHlwZU5hbWUoY3R4Lk4xLnRleHQpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguTjEubGluZSwgY3R4Lk4x LnRleHQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguTjIgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBSZXR1cm5Db2RlID0gZ0NWZnJWYXJEYXRhVHlwZURCLlNl dE5ld1R5cGVOYW1lKGN0eC5OMi50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19F cnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4Lk4yLmxpbmUsIGN0eC5OMi50ZXh0KQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGdDVmZyVmFyRGF0YVR5cGVEQi5EZWNsYXJlRGF0YVR5cGVF bmQoKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIE5vbmUNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmckRhdGFVbmlvbkRlZmluaXRpb24uDQo+ID4NCj4g PiArICAgIGRlZiB2aXNpdFZmckRhdGFVbmlvbkRlZmluaXRpb24oc2VsZiwNCj4gPiBjdHg6VmZy U3ludGF4UGFyc2VyLlZmckRhdGFVbmlvbkRlZmluaXRpb25Db250ZXh0KToNCj4gPg0KPiA+ICsg ICAgICAgIGdDVmZyVmFyRGF0YVR5cGVEQi5EZWNsYXJlRGF0YVR5cGVCZWdpbigpDQo+ID4NCj4g PiArICAgICAgICBpZiBjdHguTjEgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBSZXR1 cm5Db2RlID0gZ0NWZnJWYXJEYXRhVHlwZURCLlNldE5ld1R5cGVOYW1lKGN0eC5OMS50ZXh0KQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4 Lk4xLmxpbmUsIGN0eC5OMS50ZXh0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYg Y3R4Lk4yICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgUmV0dXJuQ29kZSA9IGdDVmZy VmFyRGF0YVR5cGVEQi5TZXROZXdUeXBlTmFtZShjdHguTjIudGV4dCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5OMi5saW5lLCBjdHgu TjIudGV4dCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBnQ1ZmclZhckRhdGFUeXBlREIu RGVjbGFyZURhdGFUeXBlRW5kKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBOb25lDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJEYXRhU3RydWN0RmllbGRzLg0KPiA+DQo+ID4g KyAgICBkZWYgdmlzaXRWZnJEYXRhU3RydWN0RmllbGRzKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRh eFBhcnNlci5WZnJEYXRhU3RydWN0RmllbGRzQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI2RhdGFTdHJ1Y3RGaWVsZDY0Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlz aXREYXRhU3RydWN0RmllbGQ2NChzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuRGF0YVN0 cnVjdEZpZWxkNjRDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIEFycmF5TnVtID0gc2VsZi5f X1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4gPg0KPiA+ICsgICAgICAgIFJldHVybkNvZGUgPSBn Q1ZmclZhckRhdGFUeXBlREIuRGF0YVR5cGVBZGRGaWVsZChjdHguTi50ZXh0LA0KPiA+ICdVSU5U NjQnLCBBcnJheU51bSwgY3R4LkZpZWxkSW5VbmlvbikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu X19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4Lk4ubGluZSwgY3R4Lk4udGV4dCkNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eSBWZnJTeW50YXhQYXJzZXIjZGF0YVN0cnVjdEZpZWxkMzIuDQo+ID4NCj4gPiArICAgIGRlZiB2 aXNpdERhdGFTdHJ1Y3RGaWVsZDMyKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5EYXRh U3RydWN0RmllbGQzMkNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgQXJyYXlOdW0gPSBzZWxm Ll9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiA+DQo+ID4gKyAgICAgICAgUmV0dXJuQ29kZSA9 IGdDVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUFkZEZpZWxkKGN0eC5OLnRleHQsDQo+ID4gJ1VJ TlQzMicsIEFycmF5TnVtLCBjdHguRmllbGRJblVuaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguTi5saW5lLCBjdHguTi50ZXh0KQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGQxNi4NCj4gPg0KPiA+ICsgICAgZGVm IHZpc2l0RGF0YVN0cnVjdEZpZWxkMTYoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLkRh dGFTdHJ1Y3RGaWVsZDE2Q29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBBcnJheU51bSA9IHNl bGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQo+ID4NCj4gPiArICAgICAgICBSZXR1cm5Db2Rl ID0gZ0NWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkRmllbGQoY3R4Lk4udGV4dCwNCj4gPiAn VUlOVDE2JywgQXJyYXlOdW0sIGN0eC5GaWVsZEluVW5pb24pDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI2RhdGFTdHJ1Y3RGaWVsZDguDQo+ID4NCj4gPiArICAgIGRl ZiB2aXNpdERhdGFTdHJ1Y3RGaWVsZDgoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLkRh dGFTdHJ1Y3RGaWVsZDhDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIEFycmF5TnVtID0gc2Vs Zi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4gPg0KPiA+ICsgICAgICAgIFJldHVybkNvZGUg PSBnQ1ZmclZhckRhdGFUeXBlREIuRGF0YVR5cGVBZGRGaWVsZChjdHguTi50ZXh0LA0KPiA+ICdV SU5UOCcsIEFycmF5TnVtLCBjdHguRmllbGRJblVuaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguTi5saW5lLCBjdHguTi50ZXh0KQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGRCb29sLg0KPiA+DQo+ID4gKyAgICBk ZWYgdmlzaXREYXRhU3RydWN0RmllbGRCb29sKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNl ci5EYXRhU3RydWN0RmllbGRCb29sQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBBcnJheU51 bSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQo+ID4NCj4gPiArICAgICAgICBSZXR1 cm5Db2RlID0gZ0NWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkRmllbGQoY3R4Lk4udGV4dCwN Cj4gPiAnQk9PTEVBTicsIEFycmF5TnVtLCBjdHguRmllbGRJblVuaW9uKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguTi5saW5lLCBjdHguTi50 ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGRTdHJpbmcuDQo+ID4N Cj4gPiArICAgIGRlZiB2aXNpdERhdGFTdHJ1Y3RGaWVsZFN0cmluZyhzZWxmLA0KPiA+IGN0eDpW ZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkU3RyaW5nQ29udGV4dCk6DQo+ID4NCj4gPiAr ICAgICAgICBBcnJheU51bSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQo+ID4NCj4g PiArICAgICAgICBSZXR1cm5Db2RlID0gZ0NWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkRmll bGQoY3R4Lk4udGV4dCwNCj4gPiAnRUZJX1NUUklOR19JRCcsIEFycmF5TnVtLCBjdHguRmllbGRJ blVuaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2Rl LCBjdHguTi5saW5lLCBjdHguTi50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYu dmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3Ry dWN0RmllbGREYXRlLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXREYXRhU3RydWN0RmllbGREYXRl KHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGREYXRlQ29udGV4 dCk6DQo+ID4NCj4gPiArICAgICAgICBBcnJheU51bSA9IHNlbGYuX19UcmFuc051bShjdHguTnVt YmVyKCkpDQo+ID4NCj4gPiArICAgICAgICBSZXR1cm5Db2RlID0gZ0NWZnJWYXJEYXRhVHlwZURC LkRhdGFUeXBlQWRkRmllbGQoY3R4Lk4udGV4dCwNCj4gPiAnRUZJX0hJSV9EQVRFJywgQXJyYXlO dW0sIGN0eC5GaWVsZEluVW5pb24pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fRXJyb3JIYW5k bGVyKFJldHVybkNvZGUsIGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4 UGFyc2VyI2RhdGFTdHJ1Y3RGaWVsZFRpbWUuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdERhdGFT dHJ1Y3RGaWVsZFRpbWUoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RG aWVsZFRpbWVDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIEFycmF5TnVtID0gc2VsZi5fX1Ry YW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4gPg0KPiA+ICsgICAgICAgIFJldHVybkNvZGUgPSBnQ1Zm clZhckRhdGFUeXBlREIuRGF0YVR5cGVBZGRGaWVsZChjdHguTi50ZXh0LA0KPiA+ICdFRklfSElJ X1RJTUUnLCBBcnJheU51bSwgY3R4LkZpZWxkSW5VbmlvbikNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4Lk4ubGluZSwgY3R4Lk4udGV4dCkNCj4g Pg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjZGF0YVN0cnVjdEZpZWxkUmVmLg0KPiA+DQo+ID4gKyAgICBk ZWYgdmlzaXREYXRhU3RydWN0RmllbGRSZWYoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2Vy LkRhdGFTdHJ1Y3RGaWVsZFJlZkNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgQXJyYXlOdW0g PSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiA+DQo+ID4gKyAgICAgICAgUmV0dXJu Q29kZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUFkZEZpZWxkKGN0eC5OLnRleHQsDQo+ ID4gJ0VGSV9ISUlfUkVGJywgQXJyYXlOdW0sIGN0eC5GaWVsZEluVW5pb24pDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5OLmxpbmUsIGN0eC5O LnRleHQpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2RhdGFTdHJ1Y3RGaWVsZFVzZXIuDQo+ID4N Cj4gPiArICAgIGRlZiB2aXNpdERhdGFTdHJ1Y3RGaWVsZFVzZXIoc2VsZiwNCj4gPiBjdHg6VmZy U3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFVzZXJDb250ZXh0KToNCj4gPg0KPiA+ICsgICAg ICAgIEFycmF5TnVtID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4gPg0KPiA+ICsg ICAgICAgIGlmIGN0eC5ULnRleHQgIT0gJ0NIQVIxNic6DQo+ID4NCj4gPiArICAgICAgICAgICAg UmV0dXJuQ29kZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUFkZEZpZWxkKGN0eC5OLnRl eHQsDQo+ID4gY3R4LlQudGV4dCwgQXJyYXlOdW0sIGN0eC5GaWVsZEluVW5pb24pDQo+ID4NCj4g PiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFJldHVybkNvZGUgPSBnQ1Zm clZhckRhdGFUeXBlREIuRGF0YVR5cGVBZGRGaWVsZChjdHguTi50ZXh0LA0KPiA+ICdVSU5UMTYn LCBBcnJheU51bSwgY3R4LkZpZWxkSW5VbmlvbikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19F cnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4Lk4ubGluZSwgY3R4Lk4udGV4dCkNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjZGF0YVN0cnVjdEJpdEZpZWxkNjQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdERhdGFTdHJ1 Y3RCaXRGaWVsZDY0KHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0 RmllbGQ2NENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgV2lkdGggPSBzZWxmLl9fVHJhbnNO dW0oY3R4Lk51bWJlcigpKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Lk4gIT0gTm9uZToNCj4g Pg0KPiA+ICsNCj4gPiBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyVmFyRGF0YVR5cGVEQi5EYXRh VHlwZUFkZEJpdEZpZWxkKGN0eC5OLnRleHQsDQo+ID4gJ1VJTlQ2NCcsIFdpZHRoLCBjdHguRmll bGRJblVuaW9uKSwgY3R4Lk4ubGluZSwgY3R4Lk4udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJWYXJEYXRhVHlwZURC LkRhdGFUeXBlQWRkQml0RmllbGQoTm9uZSwNCj4gPiAnVUlOVDY0JywgV2lkdGgsIGN0eC5GaWVs ZEluVW5pb24pLCBjdHguRC5saW5lLCBjdHguRC50ZXh0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZm clN5bnRheFBhcnNlciNkYXRhU3RydWN0Qml0RmllbGQzMi4NCj4gPg0KPiA+ICsgICAgZGVmIHZp c2l0RGF0YVN0cnVjdEJpdEZpZWxkMzIoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLkRh dGFTdHJ1Y3RCaXRGaWVsZDMyQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBXaWR0aCA9IHNl bGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguTiAh PSBOb25lOg0KPiA+DQo+ID4gKw0KPiA+IHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJWYXJEYXRh VHlwZURCLkRhdGFUeXBlQWRkQml0RmllbGQoY3R4Lk4udGV4dCwNCj4gPiAnVUlOVDMyJywgV2lk dGgsIGN0eC5GaWVsZEluVW5pb24pLCBjdHguTi5saW5lLCBjdHguTi50ZXh0KQ0KPiA+DQo+ID4g KyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihnQ1ZmclZh ckRhdGFUeXBlREIuRGF0YVR5cGVBZGRCaXRGaWVsZChOb25lLA0KPiA+ICdVSU5UMzInLCBXaWR0 aCwgY3R4LkZpZWxkSW5VbmlvbiksIGN0eC5ELmxpbmUsIGN0eC5ELnRleHQpDQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI2RhdGFTdHJ1Y3RCaXRGaWVsZDE2Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlz aXREYXRhU3RydWN0Qml0RmllbGQxNihzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuRGF0 YVN0cnVjdEJpdEZpZWxkMTZDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIFdpZHRoID0gc2Vs Zi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5OICE9 IE5vbmU6DQo+ID4NCj4gPiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihnQ1ZmclZhckRhdGFU eXBlREIuRGF0YVR5cGVBZGRCaXRGaWVsZChjdHguTi50ZXh0LA0KPiA+ICdVSU5UMTYnLCBXaWR0 aCwgY3R4LkZpZWxkSW5VbmlvbiksIGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQo+ID4NCj4gPiAr ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyVmFy RGF0YVR5cGVEQi5EYXRhVHlwZUFkZEJpdEZpZWxkKE5vbmUsDQo+ID4gJ1VJTlQxNicsIFdpZHRo LCBjdHguRmllbGRJblVuaW9uKSwgY3R4LkQubGluZSwgY3R4LkQudGV4dCkNCj4gPg0KPiA+ICsg ICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjZGF0YVN0cnVjdEJpdEZpZWxkOC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0 RGF0YVN0cnVjdEJpdEZpZWxkOChzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuRGF0YVN0 cnVjdEJpdEZpZWxkOENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgV2lkdGggPSBzZWxmLl9f VHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Lk4gIT0gTm9u ZToNCj4gPg0KPiA+ICsNCj4gPiBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyVmFyRGF0YVR5cGVE Qi5EYXRhVHlwZUFkZEJpdEZpZWxkKGN0eC5OLnRleHQsDQo+ID4gJ1VJTlQ4JywgV2lkdGgsIGN0 eC5GaWVsZEluVW5pb24pLCBjdHguTi5saW5lLCBjdHguTi50ZXh0KQ0KPiA+DQo+ID4gKyAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihnQ1ZmclZhckRhdGFU eXBlREIuRGF0YVR5cGVBZGRCaXRGaWVsZChOb25lLA0KPiA+ICdVSU5UOCcsIFdpZHRoLCBjdHgu RmllbGRJblVuaW9uKSwgY3R4LkQubGluZSwgY3R4LkQudGV4dCkNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgX19EZWNsYXJlU3RhbmRhcmREZWZhdWx0U3RvcmFnZShzZWxmLCBMaW5lTm8pOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgRFNPYmogPSBDSWZyRGVmYXVsdFN0b3JlKCkNCj4g Pg0KPiA+ICsgICAgICAgIGdDVmZyRGVmYXVsdFN0b3JlLlJlZ2lzdGVyRGVmYXVsdFN0b3JlKERT T2JqLkdldERlZmF1bHRTdG9yZSgpLA0KPiA+ICJTdGFuZGFyZCBEZWZhdWx0cyIsIEVGSV9TVFJJ TkdfSURfSU5WQUxJRCwNCj4gPiBFRklfSElJX0RFRkFVTFRfQ0xBU1NfU1RBTkRBUkQpDQo+ID4N Cj4gPiArICAgICAgICBEU09iai5TZXRMaW5lTm8gKExpbmVObykNCj4gPg0KPiA+ICsgICAgICAg IERTT2JqLlNldERlZmF1bHROYW1lIChFRklfU1RSSU5HX0lEX0lOVkFMSUQpDQo+ID4NCj4gPiAr ICAgICAgICBEU09iai5TZXREZWZhdWx0SWQgKEVGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFOREFS RCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIERTT2JqTUYgPSBDSWZyRGVmYXVsdFN0 b3JlKCkNCj4gPg0KPiA+ICsgICAgICAgIGdDVmZyRGVmYXVsdFN0b3JlLlJlZ2lzdGVyRGVmYXVs dFN0b3JlKERTT2JqTUYuR2V0RGVmYXVsdFN0b3JlKCksDQo+ID4gIlN0YW5kYXJkIE1hbnVGYWN0 dXJpbmciLCBFRklfU1RSSU5HX0lEX0lOVkFMSUQsDQo+ID4gRUZJX0hJSV9ERUZBVUxUX0NMQVNT X01BTlVGQUNUVVJJTkcpDQo+ID4NCj4gPiArICAgICAgICBEU09iak1GLlNldExpbmVObyAoTGlu ZU5vKQ0KPiA+DQo+ID4gKyAgICAgICAgRFNPYmpNRi5TZXREZWZhdWx0TmFtZSAoRUZJX1NUUklO R19JRF9JTlZBTElEKQ0KPiA+DQo+ID4gKyAgICAgICAgRFNPYmpNRi5TZXREZWZhdWx0SWQgKEVG SV9ISUlfREVGQVVMVF9DTEFTU19NQU5VRkFDVFVSSU5HKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50 YXhQYXJzZXIjdmZyRm9ybVNldERlZmluaXRpb24uDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZm ckZvcm1TZXREZWZpbml0aW9uKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJGb3Jt U2V0RGVmaW5pdGlvbkNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0luc2VydENo aWxkKHNlbGYuX19Sb290LCBjdHgpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hp bGQoY3R4Lk5vZGUsIGN0eC5jbGFzc0RlZmluaXRpb24oKSkNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuX19JbnNlcnRDaGlsZChjdHguTm9kZSwgY3R4LnN1YmNsYXNzRGVmaW5pdGlvbigpKQ0KPiA+ DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLl9fRGVjbGFyZVN0YW5kYXJkRGVmYXVsdFN0b3JhZ2UoTGluZSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAg ICBDbGFzc0d1aWROdW0gPSAwDQo+ID4NCj4gPiArICAgICAgICBHdWlkTGlzdCA9IFtdDQo+ID4N Cj4gPiArICAgICAgICBpZiBjdHguY2xhc3NndWlkRGVmaW5pdGlvbigpICE9IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgR3VpZExpc3QgPSBjdHguY2xhc3NndWlkRGVmaW5pdGlvbigpLkd1 aWRMaXN0DQo+ID4NCj4gPiArICAgICAgICAgICAgQ2xhc3NHdWlkTnVtID0gbGVuKEd1aWRMaXN0 KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgRGVmYXVsdENsYXNzR3VpZCA9IEVGSV9I SUlfUExBVEZPUk1fU0VUVVBfRk9STVNFVF9HVUlEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBpZiAoc2VsZi5fX092ZXJyaWRlQ2xhc3NHdWlkICE9IE5vbmUgYW5kIENsYXNzR3VpZE51 bSA+PTQpOg0KPiA+DQo+ID4gKw0KPiA+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiA+IExpbmUsIE5vbmUsICdBbHJlYWR5 IGhhcyA0IGNsYXNzIGd1aWRzLCBjYW4gbm90IGFkZCBleHRyYSBjbGFzcyBndWlkIScpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBDbGFzc0d1aWROdW0gPT0gMDoNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBzZWxmLl9fT3ZlcnJpZGVDbGFzc0d1aWQgIT0gTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgQ2xhc3NHdWlkTnVtICA9IDINCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBDbGFzc0d1aWROdW0gID0gMQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIEZTT2JqID0gQ0lmckZvcm1TZXQoc2l6ZW9mKEVGSV9JRlJf Rk9STV9TRVQpICsgQ2xhc3NHdWlkTnVtICoNCj4gPiBzaXplb2YoRUZJX0dVSUQpKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChEZWZhdWx0Q2xhc3NHdWlkKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIChzZWxmLl9fT3ZlcnJpZGVDbGFzc0d1aWQgIT0gTm9uZSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChzZWxmLl9fT3Zl cnJpZGVDbGFzc0d1aWQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIENsYXNz R3VpZE51bSA9PSAxOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuX19PdmVycmlkZUNs YXNzR3VpZCAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBDbGFzc0d1aWROdW0g ICs9IDENCj4gPg0KPiA+ICsgICAgICAgICAgICBGU09iaiA9IENJZnJGb3JtU2V0KHNpemVvZihF RklfSUZSX0ZPUk1fU0VUKSArIENsYXNzR3VpZE51bSAqDQo+ID4gc2l6ZW9mKEVGSV9HVUlEKSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBGU09iai5TZXRDbGFzc0d1aWQoR3VpZExpc3RbMF0pDQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgKHNlbGYuX19PdmVycmlkZUNsYXNzR3VpZCAhPSBOb25l KToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKHNlbGYuX19P dmVycmlkZUNsYXNzR3VpZCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgQ2xh c3NHdWlkTnVtID09IDI6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2VsZi5fX092ZXJyaWRl Q2xhc3NHdWlkICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIENsYXNzR3VpZE51 bSArPSAxDQo+ID4NCj4gPiArICAgICAgICAgICAgRlNPYmogPSBDSWZyRm9ybVNldChzaXplb2Yo RUZJX0lGUl9GT1JNX1NFVCkgKyBDbGFzc0d1aWROdW0gKg0KPiA+IHNpemVvZihFRklfR1VJRCkp DQo+ID4NCj4gPiArICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKEd1aWRMaXN0WzBdKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChHdWlkTGlzdFsxXSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiAoc2VsZi5fX092ZXJyaWRlQ2xhc3NHdWlkICE9IE5vbmUp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBGU09iai5TZXRDbGFzc0d1aWQoc2VsZi5fX092 ZXJyaWRlQ2xhc3NHdWlkKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBDbGFz c0d1aWROdW0gPT0gMzoNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLl9fT3ZlcnJpZGVD bGFzc0d1aWQgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgQ2xhc3NHdWlkTnVt ICArPSAxDQo+ID4NCj4gPiArICAgICAgICAgICAgRlNPYmogPSBDSWZyRm9ybVNldChzaXplb2Yo RUZJX0lGUl9GT1JNX1NFVCkgKyBDbGFzc0d1aWROdW0gKg0KPiA+IHNpemVvZihFRklfR1VJRCkp DQo+ID4NCj4gPiArICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKEd1aWRMaXN0WzBdKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChHdWlkTGlzdFsxXSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBGU09iai5TZXRDbGFzc0d1aWQoR3VpZExpc3RbMl0pDQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgKHNlbGYuX19PdmVycmlkZUNsYXNzR3VpZCAhPSBOb25lKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKHNlbGYuX19PdmVy cmlkZUNsYXNzR3VpZCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgQ2xhc3NH dWlkTnVtID09IDQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2VsZi5fX092ZXJyaWRlQ2xh c3NHdWlkICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIENsYXNzR3VpZE51bSAg Kz0gMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIEZTT2JqID0gQ0lmckZvcm1TZXQoc2l6ZW9mKEVG SV9JRlJfRk9STV9TRVQpICsgQ2xhc3NHdWlkTnVtICoNCj4gPiBzaXplb2YoRUZJX0dVSUQpKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChHdWlkTGlzdFswXSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBGU09iai5TZXRDbGFzc0d1aWQoR3VpZExpc3RbMV0pDQo+ID4N Cj4gPiArICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKEd1aWRMaXN0WzJdKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChHdWlkTGlzdFszXSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIEZTT2JqLlNldExpbmVObyhMaW5lKQ0KPiA+DQo+ID4gKyAg ICAgICAgRlNPYmouU2V0R3VpZChjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkKQ0KPiA+DQo+ID4g KyAgICAgICAgRlNPYmouU2V0Rm9ybVNldFRpdGxlKHNlbGYuX19UcmFuc051bShjdHguTnVtYmVy KDApKSkNCj4gPg0KPiA+ICsgICAgICAgIEZTT2JqLlNldEhlbHAoc2VsZi5fX1RyYW5zTnVtKGN0 eC5OdW1iZXIoMSkpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0 YSA9IEZTT2JqDQo+ID4NCj4gPiArICAgICAgICAjIERlY2xhcmUgdW5kZWZpbmVkIFF1ZXN0aW9u IHNvIHRoYXQgdGhleSBjYW4gYmUgdXNlZCBpbiBleHByZXNzaW9uLg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNjbGFzc2d1 aWREZWZpbml0aW9uLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRDbGFzc2d1aWREZWZpbml0aW9u KHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5DbGFzc2d1aWREZWZpbml0aW9uQ29udGV4 dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZm9yIEd1aWRDdHggaW4gY3R4Lmd1aWRE ZWZpbml0aW9uKCk6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lkd1aWRMaXN0LmFwcGVuZChH dWlkQ3R4Lkd1aWQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5v ZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2NsYXNzRGVmaW5pdGlvbi4NCj4gPg0K PiA+ICsgICAgZGVmIHZpc2l0Q2xhc3NEZWZpbml0aW9uKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQ YXJzZXIuQ2xhc3NEZWZpbml0aW9uQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBDT2JqID0g Q0lmckNsYXNzKCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ ID4NCj4gPiArICAgICAgICBDbGFzcyA9IDANCj4gPg0KPiA+ICsgICAgICAgIGZvciBDbGFzc05h bWVDdHggaW4gY3R4LnZhbGlkQ2xhc3NOYW1lcygpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIENs YXNzIHw9IENsYXNzTmFtZUN0eC5DbGFzc05hbWUNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBj dHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgQ09iai5TZXRMaW5lTm8oTGluZSkNCj4g Pg0KPiA+ICsgICAgICAgIENPYmouU2V0Q2xhc3MoQ2xhc3MpDQo+ID4NCj4gPiArICAgICAgICBj dHguTm9kZS5EYXRhID0gQ09iag0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2YWxpZENsYXNzTmFtZXMu DQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZhbGlkQ2xhc3NOYW1lcyhzZWxmLA0KPiA+IGN0eDpW ZnJTeW50YXhQYXJzZXIuVmFsaWRDbGFzc05hbWVzQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgaWYgY3R4LkNsYXNzTm9uRGV2aWNlKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBjdHguQ2xhc3NOYW1lID0gRUZJX05PTl9ERVZJQ0VfQ0xBU1MNCj4gPg0KPiA+ ICsgICAgICAgIGVsaWYgY3R4LkNsYXNzRGlza0RldmljZSgpICE9IE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgY3R4LkNsYXNzTmFtZSA9IEVGSV9ESVNLX0RFVklDRV9DTEFTUw0KPiA+DQo+ ID4gKyAgICAgICAgZWxpZiBjdHguQ2xhc3NWaWRlb0RldmljZSgpICE9IE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgY3R4LkNsYXNzTmFtZSA9IEVGSV9WSURFT19ERVZJQ0VfQ0xBU1MNCj4g Pg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LkNsYXNzTmV0d29ya0RldmljZSgpICE9IE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgY3R4LkNsYXNzTmFtZSA9IEVGSV9ORVRXT1JLX0RFVklDRV9D TEFTUw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguQ2xhc3NJbnB1dERldmljZSgpICE9IE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LkNsYXNzTmFtZSA9IEVGSV9JTlBVVF9ERVZJ Q0VfQ0xBU1MNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LkNsYXNzT25Cb2FyZERldmljZSgp ICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LkNsYXNzTmFtZSA9IEVGSV9PTl9C T0FSRF9ERVZJQ0VfQ0xBU1MNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LkNsYXNzT3RoZXJE ZXZpY2UoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5DbGFzc05hbWUgPSBF RklfT1RIRVJfREVWSUNFX0NMQVNTDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGN0eC5DbGFzc05hbWUgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigp KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5DbGFzc05hbWUNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3N1YmNsYXNzRGVmaW5pdGlvbi4NCj4gPg0KPiA+ ICsgICAgZGVmIHZpc2l0U3ViY2xhc3NEZWZpbml0aW9uKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRh eFBhcnNlci5TdWJjbGFzc0RlZmluaXRpb25Db250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIFN1 Yk9iaiA9IENJZnJTdWJDbGFzcygpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9 IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBTdWJPYmouU2V0TGluZU5vKExpbmUp DQo+ID4NCj4gPiArICAgICAgICBTdWJDbGFzcyA9IDANCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0 eC5TdWJjbGFzc1NldHVwQXBwbGljYXRpb24oKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIFN1YkNsYXNzIHw9IEVGSV9TRVRVUF9BUFBMSUNBVElPTl9TVUJDTEFTUw0KPiA+DQo+ID4g KyAgICAgICAgZWxpZiBjdHguU3ViY2xhc3NHZW5lcmFsQXBwbGljYXRpb24oKSAhPSBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIFN1YkNsYXNzIHw9IEVGSV9HRU5FUkFMX0FQUExJQ0FUSU9O X1NVQkNMQVNTDQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC5TdWJjbGFzc0Zyb250UGFnZSgp ICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgU3ViQ2xhc3MgfD0gRUZJX0ZST05UX1BB R0VfU1VCQ0xBU1MNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LlN1YmNsYXNzU2luZ2xlVXNl KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBTdWJDbGFzcyB8PSBFRklfU0lOR0xF X1VTRV9TVUJDTEFTUw0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBTdWJDbGFzcyA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBTdWJPYmouU2V0U3ViQ2xhc3MoU3ViQ2xhc3MpDQo+ID4NCj4g PiArICAgICAgICBjdHguTm9kZS5EYXRhID0gU3ViT2JqDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3Zm ckZvcm1TZXRMaXN0Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJGb3JtU2V0TGlzdChzZWxm LA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmckZvcm1TZXRMaXN0Q29udGV4dCk6DQo+ID4NCj4g PiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgZm9y IEN0eCBpbiBjdHgudmZyRm9ybVNldCgpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19J bnNlcnRDaGlsZChjdHguTm9kZSwgQ3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJGb3JtU2V0Lg0KPiA+DQo+ID4g KyAgICBkZWYgdmlzaXRWZnJGb3JtU2V0KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRm9y bVNldENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJGb3JtRGVmaW5pdGlvbigp ICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyRm9ybURl ZmluaXRpb24oKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyRm9ybU1hcERlZmlu aXRpb24oKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZm ckZvcm1NYXBEZWZpbml0aW9uKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0 YXRlbWVudEltYWdlKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9 IGN0eC52ZnJTdGF0ZW1lbnRJbWFnZSgpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52 ZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhcigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAg ICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXIoKS5Ob2RlDQo+ID4N Cj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50VmFyU3RvcmVFZmkoKSAhPSBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFZhclN0b3Jl RWZpKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFZhclN0b3Jl TmFtZVZhbHVlKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0 eC52ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZSgpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAg IGlmIGN0eC52ZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmUoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudERlZmF1bHRTdG9yZSgpLk5vZGUN Cj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0KCkg IT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1l bnREaXNhYmxlSWZGb3JtU2V0KCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0 YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldCgpLk5vZGUNCj4g Pg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRFeHRlbnNpb24oKSAhPSBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEV4dGVuc2lv bigpLk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmUuDQo+ID4NCj4g PiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudERlZmF1bHRTdG9yZShzZWxmLA0KPiA+IGN0eDpW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlQ29udGV4dCk6DQo+ID4NCj4g PiArICAgICAgICBEU09iaiA9IENJZnJEZWZhdWx0U3RvcmUoKQ0KPiA+DQo+ID4gKyAgICAgICAg TGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRy ZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgUmVmTmFtZSA9IGN0eC5OLnRl eHQNCj4gPg0KPiA+ICsgICAgICAgIERlZmF1bHRTdG9yZU5hbWVJZCA9IHNlbGYuX19UcmFuc051 bShjdHguUy50ZXh0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgRGVmYXVsdElkID0g RUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NUQU5EQVJEIGlmIGN0eC5BdHRyaWJ1dGUoKT09DQo+ID4g Tm9uZSBlbHNlIHNlbGYuX19UcmFuc051bShjdHguQS50ZXh0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgaWYgZ0NWZnJEZWZhdWx0U3RvcmUuRGVmYXVsdElkUmVnaXN0ZXJlZChEZWZh dWx0SWQpID09IEZhbHNlOg0KPiA+DQo+ID4gKw0KPiA+DQo+IHNlbGYuX19FcnJvckhhbmRsZXIo Z0NWZnJEZWZhdWx0U3RvcmUuUmVnaXN0ZXJEZWZhdWx0U3RvcmUoRFNPYmouR2V0RGVmYQ0KPiA+ IHVsdFN0b3JlKCksIFJlZk5hbWUsIERlZmF1bHRTdG9yZU5hbWVJZCwgRGVmYXVsdElkKSAsIExp bmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgRFNPYmouU2V0RGVmYXVsdE5hbWUoRGVmYXVsdFN0 b3JlTmFtZUlkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIERTT2JqLlNldERlZmF1bHRJZCAoRGVm YXVsdElkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIERTT2JqLlNldExpbmVObyhMaW5lKQ0KPiA+ DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZSwgUmV0dXJu Q29kZSA9DQo+ID4gZ0NWZnJEZWZhdWx0U3RvcmUuUmVSZWdpc3RlckRlZmF1bHRTdG9yZUJ5SWQo RGVmYXVsdElkLCBSZWZOYW1lLA0KPiA+IERlZmF1bHRTdG9yZU5hbWVJZCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExpbmUpDQo+ID4NCj4g PiArICAgICAgICAgICAgRFNPYmouU2V0RGVmYXVsdFN0b3JlID0gcE5vZGUuT2JqQWRkcg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIERTT2JqLlNldExpbmVObyhMaW5lKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IERTT2JqDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gPiBWZnJTeW50YXhQ YXJzZXIjdmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXIuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNp dFZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhckNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAg VlNPYmogPSBDSWZyVmFyU3RvcmUoKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ ID4gKyAgICAgICAgVlNPYmouU2V0TGluZU5vKExpbmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBUeXBlTmFtZSA9IHN0cihjdHguZ2V0Q2hpbGQoMSkpDQo+ID4NCj4gPiArICAgICAg ICBpZiBUeXBlTmFtZSA9PSAnQ0hBUjE2JzoNCj4gPg0KPiA+ICsgICAgICAgICAgICBUeXBlTmFt ZSA9ICdVSU5UMTYnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBJc0JpdFZhclN0b3Jl ID0gRmFsc2UNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5UTiAhPSBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIElzQml0VmFyU3RvcmUgPQ0KPiBnQ1ZmclZhckRhdGFUeXBlREIuRGF0YVR5 cGVIYXNCaXRGaWVsZChjdHguVE4udGV4dCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IFZhclN0b3JlSWQgPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRA0KPiA+DQo+ID4gKyAgICAgICAg aWYgY3R4LlZhcklkKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBWYXJTdG9yZUlk ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5JRC50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuX19Db21wYXJlRXJyb3JIYW5kbGVyKFZhclN0b3JlSWQhPTAsIFRydWUsIGN0eC5JRC5saW5l LA0KPiA+IGN0eC5JRC50ZXh0LCAndmFyaWQgMCBpcyBub3QgYWxsb3dlZC4nKQ0KPiA+DQo+ID4g KyAgICAgICAgU3RvcmVOYW1lID0gY3R4LlNOLnRleHQNCj4gPg0KPiA+ICsgICAgICAgIEd1aWQg PSBjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkDQo+ID4NCj4gPiArDQo+ID4gc2VsZi5fX0Vycm9y SGFuZGxlcihnQ1ZmckRhdGFTdG9yYWdlLkRlY2xhcmVCdWZmZXJWYXJTdG9yZShTdG9yZU5hbWUs DQo+ID4gR3VpZCwgZ0NWZnJWYXJEYXRhVHlwZURCLCBUeXBlTmFtZSwgVmFyU3RvcmVJZCwgSXNC aXRWYXJTdG9yZSksIExpbmUpDQo+ID4NCj4gPiArICAgICAgICBWU09iai5TZXRHdWlkKEd1aWQp DQo+ID4NCj4gPiArICAgICAgICBWYXJTdG9yZUlkLCBSZXR1cm5Db2RlID0NCj4gZ0NWZnJEYXRh U3RvcmFnZS5HZXRWYXJTdG9yZUlkKFN0b3JlTmFtZSwNCj4gPiBHdWlkKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguU04ubGluZSwgY3R4LlNO LnRleHQpDQo+ID4NCj4gPiArICAgICAgICBWU09iai5TZXRWYXJTdG9yZUlkKFZhclN0b3JlSWQp DQo+ID4NCj4gPiArICAgICAgICBTaXplLCBSZXR1cm5Db2RlID0NCj4gPiBnQ1ZmclZhckRhdGFU eXBlREIuR2V0RGF0YVR5cGVTaXplQnlUeXBlTmFtZShUeXBlTmFtZSkNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgTGluZSkNCj4gPg0KPiA+ICsgICAg ICAgIFZTT2JqLlNldFNpemUoU2l6ZSkNCj4gPg0KPiA+ICsgICAgICAgIFZTT2JqLlNldE5hbWUo U3RvcmVOYW1lKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9 IFZTT2JqDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gVlNPYmoNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJv ZHVjZWQgYnkNCj4gPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50VmFyU3RvcmVFZmkuDQo+ ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFZhclN0b3JlRWZpKHNlbGYsDQo+ID4g Y3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaUNvbnRleHQpOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgVlNFT2JqID0gQ0lmclZhclN0b3JlRWZpKCkNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAg ICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIFZTRU9iai5TZXRMaW5l Tm8oTGluZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIEd1aWQgPSBjdHguZ3VpZERl ZmluaXRpb24oKS5HdWlkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBDdXN0b21pemVk TmFtZSA9IEZhbHNlDQo+ID4NCj4gPiArICAgICAgICBJc0JpdFZhclN0b3JlID0gRmFsc2UNCj4g Pg0KPiA+ICsgICAgICAgIFZhclN0b3JlSWQgPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRA0KPiA+ DQo+ID4gKyAgICAgICAgSXNVRUZJMjNFZmlWYXJzdG9yZSA9IFRydWUNCj4gPg0KPiA+ICsgICAg ICAgIFJldHVybkNvZGUgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBUeXBl TmFtZSA9IHN0cihjdHguZ2V0Q2hpbGQoMSkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBpZiBUeXBlTmFtZSA9PSAnQ0hBUjE2JzoNCj4gPg0KPiA+ICsgICAgICAgICAgICBUeXBlTmFt ZSA9ICdVSU5UMTYnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC5UTiAh PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEN1c3RvbWl6ZWROYW1lID0gVHJ1ZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIElzQml0VmFyU3RvcmUgPQ0KPiBnQ1ZmclZhckRhdGFUeXBlREIu RGF0YVR5cGVIYXNCaXRGaWVsZChUeXBlTmFtZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGlmIGN0eC5WYXJJZCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgVmFyU3Rv cmVJZCA9IHNlbGYuX19UcmFuc051bShjdHguSUQudGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9fQ29tcGFyZUVycm9ySGFuZGxlcihWYXJTdG9yZUlkIT0wLCBUcnVlLCBjdHguSUQu bGluZSwNCj4gPiBjdHguSUQudGV4dCwgJ3ZhcmlkIDAgaXMgbm90IGFsbG93ZWQuJykNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIEF0dHJpYnV0ZXMgPSAwDQo+ID4NCj4gPiArICAgICAg ICBmb3IgQXRyQ3R4IGluIGN0eC52ZnJWYXJTdG9yZUVmaUF0dHIoKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBBdHRyaWJ1dGVzIHw9IEF0ckN0eC5BdHRyDQo+ID4NCj4gPiArICAgICAgICBWU0VP YmouU2V0QXR0cmlidXRlcyhBdHRyaWJ1dGVzKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgaWYgY3R4LlNOICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgU3RvcmVOYW1lID0g Y3R4LlNOLnRleHQNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgSXNVRUZJMjNFZmlWYXJzdG9yZSA9IEZhbHNlDQo+ID4NCj4gPiArICAgICAgICAgICAgTmFt ZVN0cmluZ0lkID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5WTi50ZXh0KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIFN0b3JlTmFtZSA9DQo+ID4gZ0NWZnJTdHJpbmdEQi5HZXRWYXJTdG9yZU5hbWVGcm9t U3RyaW5nSWQoTmFtZVN0cmluZ0lkKSAjDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgU3RvcmVO YW1lID09IE5vbmU6DQo+ID4NCj4gPiArDQo+ID4NCj4gZ0NWZnJFcnJvckhhbmRsZS5IYW5kbGVX YXJuaW5nKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUg0KPiA+IFRFRCwgY3R4LlZO LmxpbmUsICdDYW5cJ3QgZ2V0IHZhcnN0b3JlIG5hbWUgZm9yIHRoaXMgU3RyaW5nSWQhJykNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBub3QoQ3VzdG9taXplZE5hbWUpOg0KPiA+DQo+ID4gKw0K PiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRF RCwNCj4gPiBMaW5lLCAnT2xkIHN0eWxlIGVmaXZhcnN0b3JlIG11c3QgaGF2ZSBTdHJpbmcgSWRl bnRpZmllciEnKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFNpemUgPSBzZWxmLl9fVHJhbnNOdW0o Y3R4Lk4udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBTaXplID09IDE6IFR5cGVOYW1l ID0gJ1VJTlQ4Jw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgU2l6ZSA9PSAyOiBUeXBlTmFt ZSA9ICdVSU5UMTYnDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBTaXplID09IDQ6IFR5cGVO YW1lID0gJ1VJTlQzMicNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIFNpemUgPT0gODogVHlw ZU5hbWUgPSAnVUlOVDY0Jw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr DQo+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9S VEVELA0KPiA+IGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBpZiBJc1VFRkkyM0VmaVZhcnN0b3JlOg0KPiA+DQo+ID4gKw0KPiA+IHNlbGYuX19F cnJvckhhbmRsZXIoZ0NWZnJEYXRhU3RvcmFnZS5EZWNsYXJlQnVmZmVyVmFyU3RvcmUoU3RvcmVO YW1lLA0KPiA+IEd1aWQsIGdDVmZyVmFyRGF0YVR5cGVEQiwgVHlwZU5hbWUsIFZhclN0b3JlSWQs IElzQml0VmFyU3RvcmUsDQo+ID4gQXR0cmlidXRlcyksIExpbmUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgVmFyU3RvcmVJZCwgUmV0dXJuQ29kZSA9DQo+ID4gZ0NWZnJEYXRhU3RvcmFnZS5HZXRW YXJTdG9yZUlkKFN0b3JlTmFtZSwgR3VpZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9f RXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5TTi5saW5lLCBjdHguU04udGV4dCkNCj4gPg0K PiA+ICsgICAgICAgICAgICBTaXplLCBSZXR1cm5Db2RlID0NCj4gPiBnQ1ZmclZhckRhdGFUeXBl REIuR2V0RGF0YVR5cGVTaXplQnlUeXBlTmFtZShUeXBlTmFtZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExpbmUpDQo+ID4NCj4gPiArICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKw0KPiA+DQo+IHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJE YXRhU3RvcmFnZS5EZWNsYXJlQnVmZmVyVmFyU3RvcmUoc2VsZi5fX0dldFRleA0KPiA+IHQoY3R4 LlROKSwgR3VpZCwgZ0NWZnJWYXJEYXRhVHlwZURCLCBUeXBlTmFtZSwgVmFyU3RvcmVJZCwNCj4g SXNCaXRWYXJTdG9yZSwNCj4gPiBBdHRyaWJ1dGVzKSwgTGluZSkgIw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIFZhclN0b3JlSWQsIFJldHVybkNvZGUgPQ0KPiA+IGdDVmZyRGF0YVN0b3JhZ2UuR2V0 VmFyU3RvcmVJZChzZWxmLl9fR2V0VGV4dChjdHguVE4pLCBHdWlkKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4LlZOLmxpbmUsIGN0eC5W Ti50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFNpemUsIFJldHVybkNvZGUgPQ0KPiA+IGdD VmZyVmFyRGF0YVR5cGVEQi5HZXREYXRhVHlwZVNpemVCeVR5cGVOYW1lKFR5cGVOYW1lKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4Lk4u bGluZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFZTRU9iai5TZXRHdWlkKEd1aWQp DQo+ID4NCj4gPiArICAgICAgICBWU0VPYmouU2V0VmFyU3RvcmVJZCAoVmFyU3RvcmVJZCkNCj4g Pg0KPiA+ICsgICAgICAgIFZTRU9iai5TZXRTaXplKFNpemUpDQo+ID4NCj4gPiArICAgICAgICBW U0VPYmouU2V0TmFtZShTdG9yZU5hbWUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBj dHguTm9kZS5EYXRhID0gVlNFT2JqDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclZhclN0b3JlRWZpQXR0ci4NCj4gPg0K PiA+ICsgICAgZGVmIHZpc2l0VmZyVmFyU3RvcmVFZmlBdHRyKHNlbGYsDQo+ID4gY3R4OlZmclN5 bnRheFBhcnNlci5WZnJWYXJTdG9yZUVmaUF0dHJDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBj dHguQXR0ciA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gY3R4LkF0dHINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBh cnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50VmFy U3RvcmVOYW1lVmFsdWUuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFZhclN0 b3JlTmFtZVZhbHVlKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRW YXJTdG9yZU5hbWVWYWx1ZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg VlNOVk9iaiA9IENJZnJWYXJTdG9yZU5hbWVWYWx1ZSgpDQo+ID4NCj4gPiArICAgICAgICBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgR3VpZCA9 IGN0eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQNCj4gPg0KPiA+ICsgICAgICAgIEhhc1ZhclN0b3Jl SWQgPSBGYWxzZQ0KPiA+DQo+ID4gKyAgICAgICAgVmFyU3RvcmVJZCA9IEVGSV9WQVJTVE9SRV9J RF9JTlZBTElEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguVmFySWQoKSAh PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEhhc1ZhclN0b3JlSWQgPSBUcnVlDQo+ID4N Cj4gPiArICAgICAgICAgICAgVmFyU3RvcmVJZCA9IHNlbGYuX19UcmFuc051bShjdHguSUQudGV4 dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fQ29tcGFyZUVycm9ySGFuZGxlcihWYXJT dG9yZUlkICE9MCwgVHJ1ZSwgY3R4LklELmxpbmUsDQo+ID4gY3R4LklELnRleHQsICd2YXJpZCAw IGlzIG5vdCBhbGxvd2VkJykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFN0b3JlTmFt ZSA9IGN0eC5TTi50ZXh0DQo+ID4NCj4gPiArICAgICAgICBDcmVhdGVkID0gRmFsc2UNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNJbmRleCA9IDAgaWYgIEhhc1ZhclN0b3JlSWQgPT0g RmFsc2UgZWxzZSAxDQo+ID4NCj4gPiArICAgICAgICBlSW5kZXggPSBsZW4oY3R4Lk5hbWUoKSkN Cj4gPg0KPiA+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKHNJbmRleCwgZUluZGV4KToNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBDcmVhdGVkID09IEZhbHNlOg0KPiA+DQo+ID4gKw0KPiA+DQo+ IHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJEYXRhU3RvcmFnZS5EZWNsYXJlTmFtZVZhclN0b3Jl QmVnaW4oU3RvcmVOYQ0KPiA+IG1lLCBWYXJTdG9yZUlkKSwgY3R4LlNOLmxpbmUsIGN0eC5TTi50 ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBDcmVhdGVkID0gVHJ1ZQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIEl0ZW0gPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcihpKSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBnQ1ZmckRhdGFTdG9yYWdlLk5hbWVUYWJsZUFkZEl0ZW0oSXRlbSkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGdDVmZyRGF0YVN0b3JhZ2UuRGVjbGFyZU5h bWVWYXJTdG9yZUVuZChHdWlkKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgVlNOVk9i ai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBWU05WT2JqLlNl dEd1aWQoR3VpZCkNCj4gPg0KPiA+ICsgICAgICAgIFZhcnN0b3JlSWQsIFJldHVybkNvZGUgPQ0K PiBnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlSWQoU3RvcmVOYW1lLA0KPiA+IEd1aWQpDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5TTi5s aW5lLCBjdHguU04udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgIFZTTlZPYmouU2V0VmFyU3RvcmVJ ZChWYXJzdG9yZUlkKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0 YSA9IFZTTlZPYmoNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9k ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0Lg0K PiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0KHNlbGYs DQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0Q29u dGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBESU9iaiA9IENJZnJEaXNhYmxl SWYoKQ0KPiA+DQo+ID4gKyAgICAgICAgRElPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0NvbnN0YW50T25seUluRXhwcmVzc2lvbiA9IFRydWUN Cj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBESU9iag0KPiA+DQo+ID4gKyAgICAg ICAgQ29uZGl0aW9uID0gJ2Rpc2FibGVpZicgKyAnICcgKw0KPiA+IHNlbGYuX19FeHRyYWN0T3Jp Z2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQo+ID4NCj4gPiArICAgICAg ICBjdHguTm9kZS5Db25kaXRpb24gPSBDb25kaXRpb24NCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu dmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g Y3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkNCj4gPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50U3VwcHJlc3NJZkZv cm1TZXQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFN1cHByZXNzSWZGb3Jt U2V0KHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdXBwcmVzc0lm Rm9ybVNldENvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgU0lPYmogPSBD SWZyU3VwcHJlc3NJZigpDQo+ID4NCj4gPiArICAgICAgICBTSU9iai5TZXRMaW5lTm8oY3R4LnN0 YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gU0lPYmoNCj4gPg0K PiA+ICsgICAgICAgIENvbmRpdGlvbiA9ICdzdXBwcmVzc2lmJyArICcgJyArDQo+ID4gc2VsZi5f X0V4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gPg0K PiA+ICsgICAgICAgIGN0eC5Ob2RlLkNvbmRpdGlvbiA9IENvbmRpdGlvbg0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBj dHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEg cGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZ3VpZFN1YkRlZmluaXRpb24u DQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdEd1aWRTdWJEZWZpbml0aW9uKHNlbGYsDQo+ID4gY3R4 OlZmclN5bnRheFBhcnNlci5HdWlkU3ViRGVmaW5pdGlvbkNvbnRleHQpOg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgY3R4Lkd1aWQuRGF0YTRbMF0gPSBzZWxmLl9fVHJhbnNOdW0oY3R4 Lk51bWJlcigwKSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5HdWlkLkRhdGE0WzFdID0gc2VsZi5f X1RyYW5zTnVtKGN0eC5OdW1iZXIoMSkpDQo+ID4NCj4gPiArICAgICAgICBjdHguR3VpZC5EYXRh NFsyXSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDIpKQ0KPiA+DQo+ID4gKyAgICAgICAg Y3R4Lkd1aWQuRGF0YTRbM10gPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigzKSkNCj4gPg0K PiA+ICsgICAgICAgIGN0eC5HdWlkLkRhdGE0WzRdID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1i ZXIoNCkpDQo+ID4NCj4gPiArICAgICAgICBjdHguR3VpZC5EYXRhNFs1XSA9IHNlbGYuX19UcmFu c051bShjdHguTnVtYmVyKDUpKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lkd1aWQuRGF0YTRbNl0g PSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcig2KSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5H dWlkLkRhdGE0WzddID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoNykpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJv ZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2d1aWREZWZpbml0aW9uLg0KPiA+DQo+ID4gKyAgICBk ZWYgdmlzaXRHdWlkRGVmaW5pdGlvbihzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkd1aWREZWZp bml0aW9uQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lkd1aWQuRGF0 YTEgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gPg0KPiA+ICsgICAgICAgIGN0 eC5HdWlkLkRhdGEyID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMSkpDQo+ID4NCj4gPiAr ICAgICAgICBjdHguR3VpZC5EYXRhMyA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDIpKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIE5vbmUNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI2dldFN0cmluZ0lkLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRHZXRT dHJpbmdJZChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkdldFN0cmluZ0lkQ29udGV4dCk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBjdHguU3RyaW5nSWQgPSBzZWxmLl9fVHJhbnNO dW0oY3R4Lk51bWJlcigpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJT dGF0ZW1lbnRIZWFkZXIuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEhlYWRl cihzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SGVhZGVyQ29udGV4 dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBjdHguT3BPYmogPSBjdHgucGFyZW50 Q3R4Lk9wT2JqDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguT3BPYmogIT0gTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBQcm9tcHQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguT3BPYmouU2V0UHJvbXB0KFByb21wdCkNCj4gPg0K PiA+ICsgICAgICAgICAgICBIZWxwID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMSkpDQo+ ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk9wT2JqLlNldEhlbHAoSGVscCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9k dWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyUXVlc3Rpb25IZWFkZXIuDQo+ID4NCj4gPiArICAg IGRlZiB2aXNpdFZmclF1ZXN0aW9uSGVhZGVyKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNl ci5WZnJRdWVzdGlvbkhlYWRlckNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgY3R4Lk9wT2JqID0gY3R4LnBhcmVudEN0eC5PcE9iag0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjdmZyUXVlc3Rpb25CYXNlSW5mby4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyUXVlc3Rp b25CYXNlSW5mbyhzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25CYXNl SW5mb0NvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk9wT2JqID0g Y3R4LnBhcmVudEN0eC5PcE9iag0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkJh c2VJbmZvLlZhclR5cGUgPSBFRklfSUZSX1RZUEVfT1RIRVINCj4gPg0KPiA+ICsgICAgICAgIGN0 eC5CYXNlSW5mby5WYXJUb3RhbFNpemUgPSAwDQo+ID4NCj4gPiArICAgICAgICBjdHguQmFzZUlu Zm8uSW5mby5WYXJPZmZzZXQgPSBFRklfVkFST0ZGU0VUX0lOVkFMSUQNCj4gPg0KPiA+ICsgICAg ICAgIGN0eC5CYXNlSW5mby5WYXJTdG9yZUlkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCj4g Pg0KPiA+ICsgICAgICAgIGN0eC5CYXNlSW5mby5Jc0JpdFZhciA9IEZhbHNlDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBRTmFtZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIFFJZCA9 IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQo+ID4NCj4gPiArICAgICAgICBSZXR1cm5Db2RlID0g Tm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0 eCkNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5OYW1lKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBRTmFtZSA9IGN0eC5RTi50ZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAgUmV0 dXJuQ29kZSA9DQo+IHNlbGYuX19DVmZyUXVlc3Rpb25EQi5GaW5kUXVlc3Rpb25CeU5hbWUoUU5h bWUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX0NvbXBhcmVFcnJvckhhbmRsZXIoUmV0 dXJuQ29kZSwNCj4gPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVELCBjdHguUU4u bGluZSwgY3R4LlFOLnRleHQsICdoYXMNCj4gPiBhbHJlYWR5IGJlZW4gdXNlZCBwbGVhc2UgdXNl ZCBhbnRoZXIgbmFtZScpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBWYXJJZFN0ciA9 ICcnIGlmIGN0eC5WYXJJZCgpID09IE5vbmUgZWxzZSAgY3R4LnZmclN0b3JhZ2VWYXJJZCgpLlZh cklkU3RyDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguUXVlc3Rpb25JZCgpICE9IE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgUUlkID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5JRC50ZXh0KQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIFJldHVybkNvZGUgPSBzZWxmLl9fQ1ZmclF1ZXN0aW9uREIu RmluZFF1ZXN0aW9uQnlJZChRSWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX0NvbXBh cmVFcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwNCj4gPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f VU5ERUZJTkVELCBjdHguSUQubGluZSwgY3R4LklELnRleHQsICdoYXMNCj4gPiBhbHJlYWR5IGJl ZW4gdXNlZCBwbGVhc2UgdXNlZCBhbnRoZXIgbnVtYmVyJykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGlmIGN0eC5RVHlwZSA9PSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1B TDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLl9fSXNDaGVja0JveE9wOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9C T09MRUFODQo+ID4NCj4gPiArICAgICAgICAgICAgUUlkLCBSZXR1cm5Db2RlID0NCj4gc2VsZi5f X0NWZnJRdWVzdGlvbkRCLlJlZ2lzdGVyUXVlc3Rpb24oUU5hbWUsDQo+ID4gVmFySWRTdHIsIFFJ ZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUs IGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHgu UVR5cGUgPT0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9EQVRFOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGN0eC5CYXNlSW5mby5WYXJUeXBlID0gRUZJX0lGUl9UWVBFX0RBVEUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBRSWQsIFJldHVybkNvZGUgPQ0KPiA+IHNlbGYuX19DVmZyUXVlc3Rpb25E Qi5SZWdpc3Rlck5ld0RhdGVRdWVzdGlvbihRTmFtZSwgVmFySWRTdHIsIFFJZCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5zdGFydC5s aW5lKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguUVR5cGUgPT0gRUZJ X1FVRVNJT05fVFlQRS5RVUVTVElPTl9USU1FOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5C YXNlSW5mby5WYXJUeXBlID0gRUZJX0lGUl9UWVBFX1RJTUUNCj4gPg0KPiA+ICsgICAgICAgICAg ICBRSWQsIFJldHVybkNvZGUgPQ0KPiA+IHNlbGYuX19DVmZyUXVlc3Rpb25EQi5SZWdpc3Rlck5l d1RpbWVRdWVzdGlvbihRTmFtZSwgVmFySWRTdHIsIFFJZCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguUVR5cGUgPT0gRUZJX1FVRVNJT05fVFlQ RS5RVUVTVElPTl9SRUY6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5 cGUgPSBFRklfSUZSX1RZUEVfUkVGDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgVmFySWRTdHIg IT0gJyc6ICNzdGFuZCBmb3IgcXVlc3Rpb24gd2l0aCBzdG9yYWdlLg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBRSWQsIFJldHVybkNvZGUgPQ0KPiA+IHNlbGYuX19DVmZyUXVlc3Rpb25EQi5S ZWdpc3RlclJlZlF1ZXN0aW9uKFFOYW1lLCBWYXJJZFN0ciwgUUlkKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5zdGFydC5saW5l KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IFFJZCwgUmV0dXJuQ29kZSA9DQo+ID4gc2VsZi5fX0NWZnJRdWVzdGlvbkRCLlJlZ2lzdGVyUXVl c3Rpb24oUU5hbWUsIE5vbmUsIFFJZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5f X0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguc3RhcnQubGluZSkNCj4gPg0KPiA+ICsgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1IsDQo+ID4gY3R4LnN0YXJ0LmxpbmUpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvID0gY3R4 LkJhc2VJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguT3BPYmogIT0g Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguT3BPYmouU2V0UXVlc3Rpb25JZChRSWQp DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgY3R4LkJhc2VJbmZvLlZhclN0b3JlSWQgIT0gRUZJ X1ZBUlNUT1JFX0lEX0lOVkFMSUQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5PcE9i ai5TZXRWYXJTdG9yZUluZm8oY3R4LkJhc2VJbmZvKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgcmV0dXJuIGN0eC5PcE9iag0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNl ciNxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFF1ZXN0 aW9uaGVhZGVyRmxhZ3NGaWVsZChzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuUXVlc3Rp b25oZWFkZXJGbGFnc0ZpZWxkQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LlJlYWRP bmx5RmxhZygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LlFIRmxhZyA9IDB4 MDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LkludGVyYWN0aXZlRmxh ZygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LlFIRmxhZyA9IDB4MDQNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LlJlc2V0UmVxdWlyZWRGbGFnKCkg IT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguUUhGbGFnID0gMHgxMA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguUmVzdFN0eWxlRmxhZygpICE9IE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LlFIRmxhZyA9IDB4MjANCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LlJlY29ubmVjdFJlcXVpcmVkRmxhZygpICE9IE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LlFIRmxhZyA9IDB4NDANCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGVsaWYgY3R4Lk9wdGlvbk9ubHlGbGFnKCkgIT0gTm9uZToNCj4gPg0K PiA+ICsNCj4gPg0KPiBnQ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcoRUZJX1ZGUl9XQVJO SU5HX0NPREUuVkZSX1dBUk5JTg0KPiA+IEdfT0JTT0xFVEVEX0ZSQU1FV09SS19PUENPREUsIGN0 eC5PLmxpbmUsIGN0eC5PLnRleHQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlm IGN0eC5OVkFjY2Vzc0ZsYWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKw0KPiA+DQo+IGdDVmZyRXJy b3JIYW5kbGUuSGFuZGxlV2FybmluZyhFRklfVkZSX1dBUk5JTkdfQ09ERS5WRlJfV0FSTklODQo+ ID4gR19PQlNPTEVURURfRlJBTUVXT1JLX09QQ09ERSwgY3R4Lk4ubGluZSwgY3R4Lk4udGV4dCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LkxhdGVDaGVja0ZsYWcoKSAh PSBOb25lOg0KPiA+DQo+ID4gKw0KPiA+DQo+IGdDVmZyRXJyb3JIYW5kbGUuSGFuZGxlV2Fybmlu ZyhFRklfVkZSX1dBUk5JTkdfQ09ERS5WRlJfV0FSTklODQo+ID4gR19PQlNPTEVURURfRlJBTUVX T1JLX09QQ09ERSwgY3R4LkwubGluZSwgY3R4LkwudGV4dCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBjdHguUUhGbGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMg VmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdG9yYWdl VmFySWRSdWxlMS4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RvcmFnZVZhcklkUnVsZTEo c2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0b3JhZ2VWYXJJZFJ1bGUxQ29udGV4 dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgU05hbWUgPSBjdHguU04xLnRleHQNCj4g Pg0KPiA+ICsgICAgICAgIGN0eC5WYXJJZFN0ciArPSBTTmFtZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgSWR4ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5JLnRleHQpDQo+ID4NCj4gPiAr ICAgICAgICBjdHguVmFySWRTdHIgKz0gJ1snDQo+ID4NCj4gPiArICAgICAgICBjdHguVmFySWRT dHIgKz0gY3R4LkkudGV4dA0KPiA+DQo+ID4gKyAgICAgICAgY3R4LlZhcklkU3RyICs9ICddJw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkJhc2VJbmZvLlZhclN0b3JlSWQsIFJl dHVybkNvZGUgPQ0KPiA+IGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVJZChTTmFtZSkNCj4g Pg0KPiA+ICsgICAgICAgIGlmIGN0eC5DaGVja0ZsYWcgb3IgUmV0dXJuQ29kZSA9PQ0KPiA+IFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4LlNOMS5saW5lLCBjdHguU04xLnRleHQp DQo+ID4NCj4gPiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihnQ1ZmckRhdGFTdG9yYWdlLkdl dE5hbWVWYXJTdG9yZUluZm8oY3R4LkJhc2VJbmZvLA0KPiA+IElkeCksIGN0eC5TTjEubGluZSwg Y3R4LlNOMS50ZXh0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5W YXJJZFN0cg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEg cGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RvcmFnZVZhcklkUnVs ZTIuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0b3JhZ2VWYXJJZFJ1bGUyKHNlbGYsDQo+ ID4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdG9yYWdlVmFySWRSdWxlMkNvbnRleHQpOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFZhclN0ciA9ICcnICMgdHlwZS5maWVsZA0KPiA+DQo+ ID4gKyAgICAgICAgU05hbWUgPSBjdHguU04yLnRleHQNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5W YXJJZFN0ciArPSBTTmFtZQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkJhc2VJbmZvLlZhclN0b3Jl SWQsIFJldHVybkNvZGUgPQ0KPiA+IGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVJZChTTmFt ZSkNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5DaGVja0ZsYWcgb3IgUmV0dXJuQ29kZSA9PQ0K PiA+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4LlNOMi5saW5lLCBjdHguU04y LnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgVmFyU3RvcmVUeXBlID0NCj4gPiBnQ1ZmckRh dGFTdG9yYWdlLkdldFZhclN0b3JlVHlwZShjdHguQmFzZUluZm8uVmFyU3RvcmVJZCkNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBWYXJTdG9yZVR5cGUgPT0NCj4gPiBFRklfVkZSX1ZBUlNUT1JF X1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVIgb3IgVmFyU3RvcmVUeXBlDQo+ID09DQo+ID4g RUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSX0JJVFM6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIFROYW1lLCBSZXR1cm5Db2RlMiA9DQo+ID4NCj4gZ0NWZnJE YXRhU3RvcmFnZS5HZXRCdWZmZXJWYXJTdG9yZURhdGFUeXBlTmFtZShjdHguQmFzZUluZm8uVmFy U3RvcmVJDQo+ID4gZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFu ZGxlcihSZXR1cm5Db2RlMiwgY3R4LlNOMi5saW5lLCBjdHguU04yLnRleHQpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIFZhclN0ciArPSBUTmFtZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgQ291bnQgPSBsZW4oY3R4LkRvdCgpKQ0KPiA+DQo+ID4gKyAgICAgICAgZm9yIGkgaW4g cmFuZ2UoMCwgQ291bnQpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGN0eC5DaGVja0ZsYWcg b3IgUmV0dXJuQ29kZSA9PQ0KPiA+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjb25kID0gKFZhclN0b3JlVHlwZSAhPQ0KPiA+IEVG SV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUikgYW5kDQo+ID4gKFZh clN0b3JlVHlwZSAhPQ0KPiA+IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JF X0JVRkZFUl9CSVRTKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBSZXR1cm5Db2RlID0NCj4g PiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRUZJVkFSU1RPUkVfVVNFX0VSUk9SIGlmIGNvbmQg ZWxzZQ0KPiA+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4LlNOMi5saW5l LCBjdHguU04yLnRleHQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LlZh cklkU3RyICs9ICcuJw0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhclN0ciArPSAnLicNCj4gPg0K PiA+ICsgICAgICAgICAgICBjdHguVmFySWRTdHIgKz0gY3R4LmFycmF5TmFtZShpKS5TdWJTdHIN Cj4gPg0KPiA+ICsgICAgICAgICAgICBWYXJTdHIgKz0gY3R4LmFycmF5TmFtZShpKS5TdWJTdHJa DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBWYXJTdG9yZVR5cGUgPT0NCj4gRUZJ X1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfRUZJOg0KPiA+DQo+ID4gKw0KPiA+ IHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJEYXRhU3RvcmFnZS5HZXRFZmlWYXJTdG9yZUluZm8o Y3R4LkJhc2VJbmZvKSwNCj4gPiBjdHguU04yLmxpbmUsIGN0eC5TTjIudGV4dCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgVmFyU3RvcmVUeXBlID09DQo+ID4gRUZJX1ZGUl9W QVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSIG9yIFZhclN0b3JlVHlwZQ0KPiA9 PQ0KPiA+IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUl9CSVRT Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5CYXNlSW5mby5JbmZvLlZhck9mZnNldCwgY3R4 LkJhc2VJbmZvLlZhclR5cGUsDQo+ID4gY3R4LkJhc2VJbmZvLlZhclRvdGFsU2l6ZSwgY3R4LkJh c2VJbmZvLklzQml0VmFyLCBSZXR1cm5Db2RlID0NCj4gPiBnQ1ZmclZhckRhdGFUeXBlREIuR2V0 RGF0YUZpZWxkSW5mbyhWYXJTdHIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX0Vycm9y SGFuZGxlcihSZXR1cm5Db2RlLCBjdHguU04yLmxpbmUsIFZhclN0cikNCj4gPg0KPiA+ICsgICAg ICAgICAgICBWYXJHdWlkID0NCj4gPiBnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlR3VpZChj dHguQmFzZUluZm8uVmFyU3RvcmVJZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fRXJy b3JIYW5kbGVyKGdDVmZyQnVmZmVyQ29uZmlnLlJlZ2lzdGVyKFNOYW1lLCBWYXJHdWlkKSwNCj4g PiBjdHguU04yLmxpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgRHVtbXkgPSBzZWxmLmdaZXJv RWZpSWZyVHlwZVZhbHVlDQo+ID4NCj4gPiArICAgICAgICAgICAgUmV0dXJuQ29kZSA9IFZmclJl dHVybkNvZGUoZ0NWZnJCdWZmZXJDb25maWcuV3JpdGUoDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICdhJywNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgU05hbWUsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIFZhckd1aWQsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIE5vbmUsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJUeXBlLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uSW5mby5WYXJPZmZzZXQsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJUb3RhbFNpemUsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIER1bW15KSkgI+OAgHRoZSBkZWZpbml0aW9uIG9mIGR1bW15IGlzIG5lZWRl ZCB0byBjaGVjaw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0 dXJuQ29kZSwgY3R4LlNOMi5saW5lKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IHNlbGYuX19FcnJvckhh bmRsZXIoZ0NWZnJEYXRhU3RvcmFnZS5BZGRCdWZmZXJWYXJTdG9yZUZpZWxkSW5mbyhjdHguQmFz ZUkNCj4gPiBuZm8pLCBjdHguU04yLmxpbmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gY3R4LlZhcklkU3RyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJDb25zdGFudFZhbHVl RmllbGQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmckNvbnN0YW50VmFsdWVGaWVsZChzZWxm LA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyQ29uc3RhbnRWYWx1ZUZpZWxkQ29udGV4dCk6 DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgSW50RGVjU3R5bGUgPSBGYWxzZQ0KPiA+DQo+ID4gKyAgICAgICAg aWYgc2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRhICE9IE5vbmUgYW5kDQo+ID4gc2VsZi5fX0N1cnJl bnRNaW5NYXhEYXRhLklzTnVtZXJpY09wY29kZSgpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIE51 bWVyaWNRc3QgPSBDSWZyTnVtZXJpYyhzZWxmLl9fQ3VycmVudFF1ZXN0aW9uKSAjDQo+ID4NCj4g PiArICAgICAgICAgICAgSW50RGVjU3R5bGUgPSBUcnVlIGlmIChOdW1lcmljUXN0LkdldE51bWVy aWNGbGFncygpICYNCj4gPiBFRklfSUZSX0RJU1BMQVkpID09IDAgZWxzZSBGYWxzZSAjDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguVHJ1ZVN5bWJvbCgpICE9IE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgY3R4LlZhbHVlLmIgPSAxDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBlbGlmIGN0eC5GYWxzZVN5bWJvbCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgY3R4LlZhbHVlLmIgPSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBl bGlmIGN0eC5PbmUoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5WYWx1ZS51 OCA9IGludChjdHguZ2V0VGV4dCgpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxp ZiBjdHguT25lcygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LlZhbHVlLnU2 NCA9IGludChjdHguZ2V0VGV4dCgpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxp ZiBjdHguWmVybygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LlZhbHVlLnU4 ID0gaW50KGN0eC5nZXRUZXh0KCkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlm IGN0eC5Db2xvbigpICE9IFtdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5WYWx1ZS50aW1l LkhvdXIgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBjdHguVmFsdWUudGltZS5NaW51dGUgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigx KSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguVmFsdWUudGltZS5TZWNvbmQgPSBzZWxmLl9f VHJhbnNOdW0oY3R4Lk51bWJlcigyKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVs aWYgY3R4LlNsYXNoKCkgIT0gW106DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LlZhbHVlLmRh dGUuWWVhciA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGN0eC5WYWx1ZS5kYXRlLk1vbnRoID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIo MSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LlZhbHVlLmRhdGUuRGF5ID0gc2VsZi5fX1Ry YW5zTnVtKGN0eC5OdW1iZXIoMikpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlm IGN0eC5TZW1pY29sb24oKSAhPSBbXToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguVmFsdWUu cmVmLlF1ZXN0aW9uSWQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBjdHguVmFsdWUucmVmLkZvcm1JZCA9IHNlbGYuX19UcmFuc051bShjdHgu TnVtYmVyKDEpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5WYWx1ZS5yZWYuRGV2aWNlUGF0 aCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDIpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGN0eC5WYWx1ZS5yZWYuRm9ybVNldEd1aWQgPSBjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC5TdHJpbmdUb2tlbigpICE9IE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LlZhbHVlLnN0cmluZyA9IHNlbGYuX19UcmFu c051bShjdHguTnVtYmVyKDApKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBj dHguT3BlbkJyYWNlKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTGlzdFR5 cGUgPSBUcnVlDQo+ID4NCj4gPiArICAgICAgICAgICAgVHlwZSA9IHNlbGYuX19DdXJyUWVzdFZh ckluZm8uVmFyVHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxl bihjdHguTnVtYmVyKCkpKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVGVtcFZhbHVlID0g RUZJX0lGUl9UWVBFX1ZBTFVFKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgVHlwZSA9 PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfODoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IFRlbXBWYWx1ZS51OCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKGkpKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgY3R4LlZhbHVlTGlzdC5hcHBlbmQoVGVtcFZhbHVlKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQ RV9OVU1fU0laRV8xNjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIFRlbXBWYWx1ZS51 MTYgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcihpKSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIGN0eC5WYWx1ZUxpc3QuYXBwZW5kKFRlbXBWYWx1ZSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVf MzI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBUZW1wVmFsdWUudTMyID0gc2VsZi5f X1RyYW5zTnVtKGN0eC5OdW1iZXIoaSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBj dHguVmFsdWVMaXN0LmFwcGVuZChUZW1wVmFsdWUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgVGVtcFZhbHVlLnU2NCA9IHNlbGYuX19UcmFuc051bShj dHguTnVtYmVyKGkpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY3R4LlZhbHVlTGlz dC5hcHBlbmQoVGVtcFZhbHVlKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBOZWdhdGl2ZSA9IFRydWUgaWYgY3R4Lk5lZ2F0aXZlKCkgIT0gTm9uZSBlbHNl IEZhbHNlDQo+ID4NCj4gPiArICAgICAgICAgICAgIyBUaGUgdmFsdWUgc3RvcmVkIGluIGJpdCBm aWVsZHMgaXMgYWx3YXlzIHNldCB0byBVSU5UMzIgdHlwZS4NCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBjdHguVmFsdWUudTMyID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVHlw ZSA9IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgY3R4LlZhbHVlLnU4ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIo MCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBJbnREZWNTdHlsZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBOZWdhdGl2ZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgIGN0eC5WYWx1ZS51OCA+IDB4ODA6DQo+ID4NCj4g PiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5W QUxJRF9QQVJBTUVURVIsDQo+ID4gY3R4LnN0YXJ0LmxpbmUsICJJTlQ4IHR5cGUgY2FuJ3QgYmln IHRoYW4gMHg3Riwgc21hbGwgdGhhbiAtMHg4MCIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg Y3R4LlZhbHVlLnU4ID4gMHg3RjoNCj4gPg0KPiA+ICsNCj4gPiBzZWxmLl9fRXJyb3JIYW5kbGVy KFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPiBjdHguc3Rh cnQubGluZSwgIklOVDggdHlwZSBjYW4ndCBiaWcgdGhhbiAweDdGLCBzbWFsbCB0aGFuIC0weDgw IikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIE5lZ2F0aXZlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5WYWx1ZS51OCA9IH5jdHguVmFsdWUudTggKyAx DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzE2Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY3R4LlZh bHVlLnUxNiA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgaWYgSW50RGVjU3R5bGU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgaWYgTmVnYXRpdmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmICBjdHguVmFsdWUudTE2ID4gMHg4MDAwOg0KPiA+DQo+ID4gKw0KPiA+IHNlbGYuX19F cnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0K PiA+IGN0eC5zdGFydC5saW5lLCAiSU5UMTYgdHlwZSBjYW4ndCBiaWcgdGhhbiAweDdGRkYsIHNt YWxsIHRoYW4gLTB4ODAwMCIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxz ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY3R4LlZhbHVlLnUx NiA+IDB4N0ZGRjoNCj4gPg0KPiA+ICsNCj4gPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPiBjdHguc3RhcnQubGluZSwg IklOVDE2IHR5cGUgY2FuJ3QgYmlnIHRoYW4gMHg3RkZGLCBzbWFsbCB0aGFuIC0weDgwMDAiKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgTmVnYXRpdmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgY3R4LlZhbHVlLnUxNiA9IH5jdHguVmFsdWUudTE2ICsgMQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJf VFlQRV9OVU1fU0laRV8zMjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5WYWx1 ZS51MzIgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIGlmIEludERlY1N0eWxlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIGlmIE5lZ2F0aXZlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAgY3R4LlZhbHVlLnUzMiA+IDB4ODAwMDAwMDA6DQo+ID4NCj4gPiArDQo+ID4gc2VsZi5f X0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIs DQo+ID4gY3R4LnN0YXJ0LmxpbmUsICJJTlQzMiB0eXBlIGNhbid0IGJpZyB0aGFuIDB4N0ZGRkZG RkYsIHNtYWxsIHRoYW4gLQ0KPiAweDgwMDAwMDAwIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiBjdHguVmFsdWUudTMyID4gMFg3RkZGRkZGRjoNCj4gPg0KPiA+ICsNCj4gPiBzZWxmLl9fRXJy b3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4g PiBjdHguc3RhcnQubGluZSwgIklOVDMyIHR5cGUgY2FuJ3QgYmlnIHRoYW4gMHg3RkZGRkZGRiwg c21hbGwgdGhhbiAtDQo+IDB4ODAwMDAwMDAiKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgaWYgTmVnYXRpdmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgY3R4LlZh bHVlLnUzMiA9IH5jdHguVmFsdWUudTMyICsgMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIGN0eC5WYWx1ZS51NjQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4 Lk51bWJlcigwKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIEludERlY1N0eWxl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIE5lZ2F0aXZlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAgY3R4LlZhbHVlLnU2NCA+IDB4ODAw MDAwMDAwMDAwMDAwMDoNCj4gPg0KPiA+ICsNCj4gPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPiBjdHguc3RhcnQubGlu ZSwgIklOVDY0IHR5cGUgY2FuJ3QgYmlnIHRoYW4gMHg3RkZGRkZGRkZGRkZGRkZGLCBzbWFsbCB0 aGFuIC0NCj4gPiAweDgwMDAwMDAwMDAwMDAwMDAiKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm IGN0eC5WYWx1ZS51NjQgPiAweDdGRkZGRkZGRkZGRkZGRkY6DQo+ID4NCj4gPiArDQo+ID4gc2Vs Zi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVU RVIsDQo+ID4gY3R4LnN0YXJ0LmxpbmUsICJJTlQ2NCB0eXBlIGNhbid0IGJpZyB0aGFuIDB4N0ZG RkZGRkZGRkZGRkZGRiwgc21hbGwgdGhhbiAtDQo+ID4gMHg4MDAwMDAwMDAwMDAwMDAwIikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIE5lZ2F0aXZlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGN0eC5WYWx1ZS51NjQgPSB+Y3R4LlZhbHVlLnU2NCArIDENCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZ UEVfQk9PTEVBTjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5WYWx1ZS5iID0g c2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX0JPT0xFQU46DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBjdHguVmFsdWUuc3RyaW5nID0gc2VsZi5fX1RyYW5zTnVtKGN0 eC5OdW1iZXIoMCkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LlZh bHVlLCBjdHguVmFsdWVMaXN0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJJbWFn ZVRhZy4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZySW1hZ2VUYWcoc2VsZiwgY3R4OlZmclN5 bnRheFBhcnNlci5WZnJJbWFnZVRhZ0NvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgSU9iaiA9IENJZnJJbWFnZSgpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgSU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0Lmxp bmUpDQo+ID4NCj4gPiArICAgICAgICBJT2JqLlNldEltYWdlSWQoc2VsZi5fX1RyYW5zTnVtKGN0 eC5OdW1iZXIoKSkpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gSU9iag0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5 IFZmclN5bnRheFBhcnNlciN2ZnJMb2NrZWRUYWcuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZm ckxvY2tlZFRhZyhzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmckxvY2tlZFRhZ0NvbnRleHQp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgTE9iaj1DSWZyTG9ja2VkKCkNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBM T2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2Rl LkRhdGEgPSBMT2JqDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5v ZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN0YXRUYWcuDQo+ ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFN0YXRUYWcoc2VsZiwNCj4gPiBjdHg6 VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRUYWdDb250ZXh0KToNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAg ICAgICBpZiBjdHgudmZySW1hZ2VUYWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGN0eC5Ob2RlID0gY3R4LnZmckltYWdlVGFnKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgZWxz ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJMb2NrZWRUYWcoKS5O b2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJv ZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN0YXRUYWdMaXN0Lg0KPiA+ DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdChzZWxmLA0KPiA+IGN0 eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdFRhZ0xpc3RDb250ZXh0KToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4g PiArICAgICAgICBmb3IgQ3R4IGluIGN0eC52ZnJTdGF0ZW1lbnRTdGF0VGFnKCk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fX0luc2VydENoaWxkKGN0eC5Ob2RlLCBDdHgpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI3ZmckZvcm1EZWZpbml0aW9uLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRW ZnJGb3JtRGVmaW5pdGlvbihzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRm9ybURl ZmluaXRpb25Db250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIEZPYmogPSBD SWZyRm9ybSgpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgRk9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUp DQo+ID4NCj4gPiArICAgICAgICBGb3JtSWQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigw KSkNCj4gPg0KPiA+ICsgICAgICAgIEZPYmouU2V0Rm9ybUlkKEZvcm1JZCkNCj4gPg0KPiA+ICsg ICAgICAgIEZvcm1UaXRsZSAgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCj4gPg0K PiA+ICsgICAgICAgIEZPYmouU2V0Rm9ybVRpdGxlKEZvcm1UaXRsZSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBGT2JqDQo+ID4NCj4gPiArICAgICAgICBm b3IgQ3R4IGluIGN0eC52ZnJGb3JtKCk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX0lu c2VydENoaWxkKGN0eC5Ob2RlLCBDdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckZvcm0uDQo+ID4NCj4gPiArICAg IGRlZiB2aXNpdFZmckZvcm0oc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJGb3JtQ29udGV4 dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudEltYWdlKCkgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRJbWFnZSgp Lk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRMb2NrZWQoKSAhPSBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudExv Y2tlZCgpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRSdWxlcygp ICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVt ZW50UnVsZXMoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50RGVm YXVsdCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZy U3RhdGVtZW50RGVmYXVsdCgpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0 ZW1lbnRTdGF0KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0 eC52ZnJTdGF0ZW1lbnRTdGF0KCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0 YXRlbWVudFF1ZXN0aW9ucygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5v ZGUgPSBjdHgudmZyU3RhdGVtZW50UXVlc3Rpb25zKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAg aWYgY3R4LnZmclN0YXRlbWVudENvbmRpdGlvbmFsKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRDb25kaXRpb25hbCgpLk5vZGUNCj4g Pg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRMYWJlbCgpICE9IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50TGFiZWwoKS5Ob2Rl DQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50QmFubmVyKCkgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRCYW5uZXIo KS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50SW52YWxpZCgpICE9 IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50 SW52YWxpZCgpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRFeHRl bnNpb24oKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZm clN0YXRlbWVudEV4dGVuc2lvbigpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJT dGF0ZW1lbnRNb2RhbCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUg PSBjdHgudmZyU3RhdGVtZW50TW9kYWwoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgu dmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQoKS5Ob2RlDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4g VmZyU3ludGF4UGFyc2VyI3ZmckZvcm1NYXBEZWZpbml0aW9uLg0KPiA+DQo+ID4gKyAgICBkZWYg dmlzaXRWZnJGb3JtTWFwRGVmaW5pdGlvbihzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIu VmZyRm9ybU1hcERlZmluaXRpb25Db250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIEZNYXBPYmogPSBDSWZyRm9ybU1hcCgpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ ID4NCj4gPiArICAgICAgICBGTWFwT2JqLlNldExpbmVObyhMaW5lKQ0KPiA+DQo+ID4gKw0KPiA+ IHNlbGYuX19FcnJvckhhbmRsZXIoRk1hcE9iai5TZXRGb3JtSWQoc2VsZi5fX1RyYW5zTnVtKGN0 eC5TMS50ZXh0KSksDQo+ID4gY3R4LlMxLmxpbmUsIGN0eC5TMS5saW5lKQ0KPiA+DQo+ID4gKyAg ICAgICAgRm9ybU1hcE1ldGhvZE51bWJlciA9IGxlbihjdHguTWFwVGl0bGUoKSkNCj4gPg0KPiA+ ICsgICAgICAgIGlmIEZvcm1NYXBNZXRob2ROdW1iZXIgPT0gMDoNCj4gPg0KPiA+ICsNCj4gPiBz ZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFN RVRFUiwNCj4gPiBMaW5lLCAnTm8gTWFwTWV0aG9kIGlzIHNldCBmb3IgRm9ybU1hcCEnKQ0KPiA+ DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBmb3IgaSBpbiByYW5n ZSgwLCBGb3JtTWFwTWV0aG9kTnVtYmVyKToNCj4gPg0KPiA+ICsNCj4gRk1hcE9iai5TZXRGb3Jt TWFwTWV0aG9kKHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKGkrMSkpLA0KPiA+IGN0eC5ndWlk RGVmaW5pdGlvbihpKS5HdWlkKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IEZN YXBPYmoNCj4gPg0KPiA+ICsgICAgICAgIGZvciBDdHggaW4gY3R4LnZmckZvcm0oKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUsIEN0eCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50SW1hZ2UuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNp dFZmclN0YXRlbWVudEltYWdlKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRJbWFnZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmcklt YWdlVGFnKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRMb2NrZWQuDQo+ID4NCj4gPiArICAg IGRlZiB2aXNpdFZmclN0YXRlbWVudExvY2tlZChzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50TG9ja2VkQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUg PSBjdHgudmZyTG9ja2VkVGFnKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5O b2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRSdWxlcy4NCj4gPg0KPiA+ICsgICAg ZGVmIHZpc2l0VmZyU3RhdGVtZW50UnVsZXMoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudFJ1bGVzQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBST2JqID0gQ0lmclJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFJPYmouU2V0TGluZU5vKGN0eC5z dGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgUnVsZU5hbWUgPSBzZWxmLl9fVHJhbnNJZChj dHguU3RyaW5nSWRlbnRpZmllcigpKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0NWZnJSdWxl c0RCLlJlZ2lzdGVyUnVsZShSdWxlTmFtZSkNCj4gPg0KPiA+ICsgICAgICAgIFJPYmouU2V0UnVs ZUlkKHNlbGYuX19DVmZyUnVsZXNEQi5HZXRSdWxlSWQoUnVsZU5hbWUpKQ0KPiA+DQo+ID4gKyAg ICAgICAgY3R4Lk5vZGUuRGF0YSA9IFJPYmoNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkV4 cHJlc3Npb24gPQ0KPiA+IHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1l bnRFeHByZXNzaW9uKCkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAjIGV4cHJlc3Np b24NCj4gPg0KPiA+ICsgICAgICAgICMgZW5kIHJ1bGUNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50U3RhdC4NCj4gPg0KPiA+ ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50U3RhdChzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50U3RhdENvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52 ZnJTdGF0ZW1lbnRTdWJUaXRsZSgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4 Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50U3ViVGl0bGUoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAg ICBpZiBjdHgudmZyU3RhdGVtZW50U3RhdGljVGV4dCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50U3RhdGljVGV4dCgpLk5vZGUNCj4g Pg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZSgpICE9IE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50Q3Jv c3NSZWZlcmVuY2UoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN1YlRp dGxlLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdWJUaXRsZShzZWxmLA0K PiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3ViVGl0bGVDb250ZXh0KToNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFNPYmogPSBjdHguT3BPYmoNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAg ICAgU09iai5TZXRMaW5lTm8oTGluZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFBy b21wdCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQo+ID4NCj4gPiArICAgICAgICBT T2JqLlNldFByb21wdChQcm9tcHQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4 LnZmclN1YnRpdGxlRmxhZ3MoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFNPYmou U2V0RmxhZ3MoY3R4LnZmclN1YnRpdGxlRmxhZ3MoKS5TdWJGbGFncykNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBTT2JqDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUsIGN0eC52ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdCgp KQ0KPiA+DQo+ID4gKyAgICAgICAgIyBzZXF1ZW5jZSBxdWVzdGlvbg0KPiA+DQo+ID4gKyAgICAg ICAgZm9yIEN0eCBpbiBjdHgudmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQoKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUsIEN0eCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRh eFBhcnNlciN2ZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudC4NCj4gPg0KPiA+ICsgICAgZGVm IHZpc2l0VmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQoc2VsZiwNCj4gPiBjdHg6VmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudFN1YlRpdGxlQ29tcG9uZW50Q29udGV4dCk6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4g KyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFF1ZXN0aW9ucygpICE9IE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50UXVlc3Rpb25zKCkuTm9k ZQ0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHgudmZyU3RhdGVtZW50U3RhdCgpICE9IE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50U3RhdCgp Lk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjdmZyU3VidGl0bGVGbGFncy4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0 VmZyU3VidGl0bGVGbGFncyhzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3VidGl0 bGVGbGFnc0NvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGZvciBGbGFnc0Zp ZWxkQ3R4IGluIGN0eC5zdWJ0aXRsZUZsYWdzRmllbGQoKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBjdHguU3ViRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5GbGFnDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjc3Vi dGl0bGVGbGFnc0ZpZWxkLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRTdWJ0aXRsZUZsYWdzRmll bGQoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlRmxhZ3NGaWVsZENvbnRl eHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Lk51bWJlcigpICE9IE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LkZsYWcgPSBzZWxmLl9fVHJhbnNOdW0oY3R4 Lk51bWJlcigpKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBjdHguRmxhZyA9IDB4MDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBz ZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIj dmZyU3RhdGVtZW50U3RhdGljVGV4dC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVt ZW50U3RhdGljVGV4dChzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 U3RhdGljVGV4dENvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFFJZCA9IEVG SV9RVUVTVElPTl9JRF9JTlZBTElEDQo+ID4NCj4gPiArICAgICAgICBIZWxwID0gc2VsZi5fX1Ry YW5zTnVtKGN0eC5TMS50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgUHJvbXB0ID0gc2VsZi5fX1Ry YW5zTnVtKGN0eC5TMi50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgVHh0VHdvID0gRUZJX1NUUklO R19JRF9JTlZBTElEDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguUzMgIT0gTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBUeHRUd28gPSBzZWxmLl9fVHJhbnNOdW0oY3R4LlMzLnRleHQpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBUZXh0RmxhZ3MgPSAwDQo+ID4NCj4gPiArICAg ICAgICBmb3IgRmxhZ3NGaWVsZEN0eCBpbiBjdHguc3RhdGljVGV4dEZsYWdzRmllbGQoKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBUZXh0RmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5GbGFnDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBUZXh0RmxhZ3MgJiBFRklfSUZSX0ZMQUdfQ0FM TEJBQ0s6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgVHh0VHdvICE9IEVGSV9TVFJJTkdfSURf SU5WQUxJRDoNCj4gPg0KPiA+ICsNCj4gPg0KPiBnQ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5p bmcoRUZJX1ZGUl9XQVJOSU5HX0NPREUuVkZSX1dBUk5JTg0KPiA+IEdfQUNUSU9OX1dJVEhfVEVY VF9UV08sIGN0eC5TMy5saW5lLCBjdHguUzMudGV4dCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgICAgICBBT2JqID0gQ0lmckFjdGlvbigpDQo+ID4NCj4gPiArICAgICAgICAgICAgUUlk LCBfID0gc2VsZi5fX0NWZnJRdWVzdGlvbkRCLlJlZ2lzdGVyUXVlc3Rpb24oTm9uZSwgTm9uZSwg UUlkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIEFPYmouU2V0TGluZU5vKGN0eC5GLmxpbmUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgQU9iai5TZXRRdWVzdGlvbklkKFFJZCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBBT2JqLlNldEhlbHAoSGVscCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBBT2Jq LlNldFByb21wdChQcm9tcHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFu ZGxlcihBT2JqLlNldEZsYWdzKFRleHRGbGFncyksIGN0eC5GLmxpbmUpDQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgY3R4LktleSgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IEtleSA9IHNlbGYuX19UcmFuc051bShjdHguUzQudGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5fX0Fzc2lnblF1ZXN0aW9uS2V5KEFPYmosIEtleSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBjdHguTm9kZS5EYXRhID0gQU9iag0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5O b2RlLk9wQ29kZSA9IEVGSV9JRlJfQUNUSU9OX09QICMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgVE9iaiA9IENJZnJUZXh0KCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gPg0KPiA+ICsgICAg ICAgICAgICBUT2JqLlNldExpbmVObyhMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFRPYmou U2V0SGVscChIZWxwKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFRPYmouU2V0UHJvbXB0KFByb21w dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBUT2JqLlNldFRleHRUd28oVHh0VHdvKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBUT2JqDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI3N0YXRpY1RleHRGbGFnc0ZpZWxkLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlz aXRTdGF0aWNUZXh0RmxhZ3NGaWVsZChzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuU3Rh dGljVGV4dEZsYWdzRmllbGRDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBp ZiBjdHguTnVtYmVyKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguRmxhZyA9 IHNlbGYuX19UcmFuc051bShjdHguTi50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGN0 eC5GbGFnICE9IDA6DQo+ID4NCj4gPiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiA+IGN0eC5OLmxpbmUpDQo+ID4NCj4gPiAr ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5GbGFn ID0gY3R4LnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgpLlFIRmxhZw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5GbGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+ID4gVmZyU3lu dGF4UGFyc2VyI3ZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlLg0KPiA+DQo+ID4gKyAgICBkZWYg dmlzaXRWZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZShzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50Q3Jvc3NSZWZlcmVuY2VDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAg ICBpZiBjdHgudmZyU3RhdGVtZW50R290bygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAg ICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50R290bygpLk5vZGUNCj4gPg0KPiA+ICsgICAg ICAgIGVsaWYgY3R4LnZmclN0YXRlbWVudFJlc2V0QnV0dG9uKCkgIT0gTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbigpLk5v ZGUNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9k dWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50R290by4NCj4gPg0KPiA+ICsgICAg ZGVmIHZpc2l0VmZyU3RhdGVtZW50R290byhzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50R290b0NvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg UmVmVHlwZSA9IDUNCj4gPg0KPiA+ICsgICAgICAgIERldlBhdGggPSBFRklfU1RSSU5HX0lEX0lO VkFMSUQNCj4gPg0KPiA+ICsgICAgICAgIFFJZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQo+ ID4NCj4gPiArICAgICAgICBCaXRNYXNrID0gMA0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0 eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBSNU9iaiA9IENJZnJSZWY1KCkNCj4gPg0K PiA+ICsgICAgICAgIFI1T2JqLlNldExpbmVObyhMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4 Lk9wT2JqID0gUjVPYmoNCj4gPg0KPiA+ICsgICAgICAgICNjdHguT0hPYmogPSBSNU9iag0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LkRldmljZVBhdGgoKSAhPSBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIFJlZlR5cGUgPSA0DQo+ID4NCj4gPiArICAgICAgICAgICAg RGV2UGF0aCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIEZJZCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDEpKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIFFJZCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDIpKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIFI0T2JqID0gQ0lmclJlZjQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFI0 T2JqLlNldExpbmVObyhMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFI0T2JqLlNldERldmlj ZVBhdGgoRGV2UGF0aCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBSNE9iai5TZXRGb3JtSWQoRklk KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFI0T2JqLlNldFF1ZXN0aW9uSWQoUUlkKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGN0eC5PcE9iaiA9IFI0T2JqDQo+ID4NCj4gPiArICAgICAgICAgICAg I2N0eC5PSE9iaiA9IFI0T2JqDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0 eC5Gb3JtU2V0R3VpZCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgUmVmVHlwZSA9 IDMNCj4gPg0KPiA+ICsgICAgICAgICAgICBGSWQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJl cigwKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBRSWQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51 bWJlcigxKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBSM09iaiA9IENJZnJSZWYzKCkNCj4gPg0K PiA+ICsgICAgICAgICAgICBSM09iai5TZXRMaW5lTm8oTGluZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBSM09iai5TZXRGb3JtSWQoRklkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFIzT2JqLlNl dFF1ZXN0aW9uSWQoUUlkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5PcE9iaiA9IFIzT2Jq DQo+ID4NCj4gPiArICAgICAgICAgICAgI2N0eC5PSE9iaiA9IFIzT2JqDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC5Gb3JtSWQoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIEZJZCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIFJlZlR5cGUgPSAyDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgY3R4LlFO ICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIE5hbWUgPSBjdHguUU4udGV4dA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBRSWQsIEJpdE1hc2ssIF8gPSBzZWxmLl9fQ1ZmclF1 ZXN0aW9uREIuR2V0UXVlc3Rpb25JZChOYW1lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBp ZiBRSWQgPT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQ6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRF RklORUQsDQo+ID4gY3R4LlFOLmxpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgUUlkID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIo MSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgUjJPYmogPSBDSWZyUmVmMigpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgUjJPYmouU2V0TGluZU5vKExpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAg UjJPYmouU2V0Rm9ybUlkKEZJZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBSMk9iai5TZXRRdWVz dGlvbklkKFFJZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguT3BPYmogPSBSMk9iag0KPiA+ DQo+ID4gKyAgICAgICAgIyBjdHguT0hPYmogPSBSMk9iag0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBzdHIoY3R4LmdldENoaWxkKDEpKSA9PSBzdHIoY3R4 Lk51bWJlcigwKSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgUmVmVHlwZSA9IDENCj4gPg0KPiA+ ICsgICAgICAgICAgICBGSWQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBST2JqID0gQ0lmclJlZigpDQo+ID4NCj4gPiArICAgICAgICAgICAg Uk9iai5TZXRMaW5lTm8oTGluZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBST2JqLlNldEZvcm1J ZChGSWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk9wT2JqID0gUk9iag0KPiA+DQo+ID4g KyAgICAgICAgIyBjdHguT0hPYmogPSBST2JqDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg aWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlID09IEVGSV9JRlJfVFlQRV9PVEhFUjoN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPT0g RUZJX0lGUl9UWVBFX1JFRg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmVmVHlw ZSA9PSA0IG9yIFJlZlR5cGUgPT0gMzoNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguT3BPYmou U2V0Rm9ybVNldElkKGN0eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQpDQo+ID4NCj4gPiArICAgICAg ICAjIGN0eC5PSE9iai5TZXRGb3JtU2V0SWQoY3R4Lmd1aWREZWZpbml0aW9uKCkuR3VpZCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgY3R4Lk9wT2JqLlNldEZsYWdzKGN0eC52ZnJHb3RvRmxhZ3MoKS5H b3RvRmxhZ3MpDQo+ID4NCj4gPiArICAgICAgICAjIGN0eC5PSE9iai5TZXRGbGFncyhjdHgudmZy R290b0ZsYWdzKCkuR290b0ZsYWdzKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYg Y3R4LktleSgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaW5kZXggPSBpbnQobGVu KGN0eC5OdW1iZXIoKSkpIC0gMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIEtleSA9IHNlbGYuX19U cmFuc051bShjdHguTnVtYmVyKGluZGV4KSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9f QXNzaWduUXVlc3Rpb25LZXkoY3R4Lk9wT2JqLCBLZXkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICAjIGN0eC5PSE9iai5TZXRTY29wZSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk9w T2JqLlNldFNjb3BlKDEpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gY3R4Lk9w T2JqDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI3ZmckdvdG9GbGFncy4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyR290 b0ZsYWdzKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyR290b0ZsYWdzQ29udGV4dCk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+ DQo+ID4gKyAgICAgICAgZm9yIEZsYWdzRmllbGRDdHggaW4gY3R4LmdvdG9GbGFnc0ZpZWxkKCk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LkdvdG9GbGFncyB8PSBGbGFnc0ZpZWxkQ3R4LkZs YWcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguR290b0ZsYWdzDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNnb3RvRmxhZ3NGaWVsZC4N Cj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0R290b0ZsYWdzRmllbGQoc2VsZiwNCj4gY3R4OlZmclN5 bnRheFBhcnNlci5Hb3RvRmxhZ3NGaWVsZENvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGlmIGN0eC5OICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2VsZi5f X1RyYW5zTnVtKGN0eC5OLnRleHQpICE9IDA6DQo+ID4NCj4gPiArDQo+IHNlbGYuX19FcnJvckhh bmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiA+IGN0eC5OLmxp bmUpDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5G bGFnID0gY3R4LnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgpLlFIRmxhZw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5GbGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+ID4gVmZy U3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFJlc2V0QnV0dG9uLg0KPiA+DQo+ID4gKyAgICBkZWYg dmlzaXRWZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbihzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50UmVzZXRCdXR0b25Db250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBSQk9iaiA9IGN0eC5PcE9iag0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5z dGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBSQk9iai5TZXRMaW5lTm8oTGluZSkNCj4gPg0K PiA+ICsgICAgICAgIGRlZmF1bHRzdG9yZSA9IGN0eC5OLnRleHQNCj4gPg0KPiA+ICsgICAgICAg IERlZmF1bHRJZCwgUmV0dXJuQ29kZSA9DQo+IGdDVmZyRGVmYXVsdFN0b3JlLkdldERlZmF1bHRJ ZChkZWZhdWx0c3RvcmUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJl dHVybkNvZGUsIGN0eC5OLmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBSQk9iai5TZXREZWZhdWx0 SWQoRGVmYXVsdElkKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0 YSA9IFJCT2JqDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFF1ZXN0aW9ucy4N Cj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25zKHNlbGYsDQo+ID4g Y3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbnNDb250ZXh0KToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4g PiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50Qm9vbGVhblR5cGUoKSAhPSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEJvb2xlYW5UeXBl KCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudERhdGUoKSAhPSBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudERh dGUoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50TnVtZXJpY1R5 cGUoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0 YXRlbWVudE51bWVyaWNUeXBlKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0 YXRlbWVudFN0cmluZ1R5cGUoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5O b2RlID0gY3R4LnZmclN0YXRlbWVudFN0cmluZ1R5cGUoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAg ICBpZiBjdHgudmZyU3RhdGVtZW50T3JkZXJlZExpc3QoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudE9yZGVyZWRMaXN0KCkuTm9kZQ0K PiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFRpbWUoKSAhPSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFRpbWUoKS5Ob2Rl DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkNCj4gPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50UXVlc3Rpb25UYWcuDQo+ID4N Cj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uVGFnKHNlbGYsDQo+ID4gY3R4 OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0NvbnRleHQpOg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRTdGF0VGFnKCkgIT0gTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRTdGF0VGFnKCkuTm9kZQ0K PiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudEluY29uc2lzdGVudElmKCkgIT0g Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRJ bmNvbnNpc3RlbnRJZigpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1l bnROb1N1Ym1pdElmKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9 IGN0eC52ZnJTdGF0ZW1lbnROb1N1Ym1pdElmKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYg Y3R4LnZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnREaXNhYmxlSWZRdWVzdCgpLk5vZGUN Cj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRSZWZyZXNoKCkgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRSZWZyZXNo KCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFZhcnN0b3JlRGV2 aWNlKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJT dGF0ZW1lbnRWYXJzdG9yZURldmljZSgpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52 ZnJTdGF0ZW1lbnRFeHRlbnNpb24oKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0 eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEV4dGVuc2lvbigpLk5vZGUNCj4gPg0KPiA+ICsgICAg ICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQoKSAhPSBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFJlZnJlc2hFdmVudCgpLk5v ZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRXYXJuaW5nSWYoKSAhPSBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFdh cm5pbmdJZigpLk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHgu Tm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRJbmNv bnNpc3RlbnRJZi4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50SW5jb25zaXN0 ZW50SWYoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEluY29uc2lz dGVudElmQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBJSU9iaiA9IENJ ZnJJbmNvbnNpc3RlbnRJZigpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgSUlPYmouU2V0TGluZU5vKGN0eC5z dGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgSUlPYmouU2V0RXJyb3Ioc2VsZi5fX1RyYW5z TnVtKGN0eC5OdW1iZXIoKSkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9k ZS5EYXRhID0gSUlPYmoNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkV4cHJlc3Npb24gPQ0K PiA+IHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9u KCkpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4g PiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50Tm9TdWJtaXRJZi4NCj4gPg0KPiA+ICsgICAg ZGVmIHZpc2l0VmZyU3RhdGVtZW50Tm9TdWJtaXRJZihzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50Tm9TdWJtaXRJZkNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAg TlNJT2JqID0gQ0lmck5vU3VibWl0SWYoKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIE5TSU9iai5TZXRMaW5l Tm8oY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBOU0lPYmouU2V0RXJyb3Ioc2Vs Zi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5E YXRhID0gTlNJT2JqDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5FeHByZXNzaW9uID0NCj4g PiBzZWxmLl9fRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVzc2lvbigp KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5DQo+ID4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0Lg0K PiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnREaXNhYmxlSWZRdWVzdChzZWxmLA0K PiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3RDb250ZXh0 KToNCj4gPg0KPiA+ICsgICAgICAgIERJT2JqID0gQ0lmckRpc2FibGVJZigpDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgRElPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAg Y3R4Lk5vZGUuRGF0YSA9IERJT2JqDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5FeHByZXNz aW9uID0NCj4gPiBzZWxmLl9fRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhw cmVzc2lvbigpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rl DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRSZWZyZXNoLg0KPiA+ DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRSZWZyZXNoKHNlbGYsDQo+ID4gY3R4OlZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSZWZyZXNoQ29udGV4dCk6DQo+ID4NCj4gPiArICAg ICAgICBST2JqID0gQ0lmclJlZnJlc2goKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFJPYmouU2V0TGluZU5v KGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgUk9iai5TZXRSZWZyZXNoSW50ZXJ2 YWwoc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkpDQo+ID4NCj4gPiArICAgICAgICBjdHgu Tm9kZS5EYXRhID0gUk9iag0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0 eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5DQo+ID4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNl Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZShzZWxm LA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2VDb250 ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIFZET2JqID0gQ0lmclZhclN0b3JlRGV2aWNlKCkNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBWRE9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiAr ICAgICAgICBWRE9iai5TZXREZXZpY2VQYXRoKHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkp KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFZET2JqDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gPiBWZnJTeW50YXhQYXJzZXIj dmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0 ZW1lbnRSZWZyZXNoRXZlbnQoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudFJlZnJlc2hFdmVudENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgUmlPYmogPSBDSWZy UmVmcmVzaElkKCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBSaU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0Lmxp bmUpDQo+ID4NCj4gPiArICAgICAgICBSaU9iai5TZXRSZWZyZXNoRXZlbnRHcm91dElkKGN0eC5n dWlkRGVmaW5pdGlvbigpLkd1aWQpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0g UmlPYmoNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0K PiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50V2FybmluZ0lmLg0KPiA+DQo+ID4gKyAgICBk ZWYgdmlzaXRWZnJTdGF0ZW1lbnRXYXJuaW5nSWYoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudFdhcm5pbmdJZkNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgV0lP YmogPSBDSWZyV2FybmluZ0lmKCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBXSU9iai5TZXRMaW5lTm8oY3R4 LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBXSU9iai5TZXRXYXJuaW5nKHNlbGYuX19U cmFuc051bShjdHguTnVtYmVyKDApKSkNCj4gPg0KPiA+ICsgICAgICAgIFdJT2JqLlNldFRpbWVP dXQoc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMSkpKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4 Lk5vZGUuRGF0YSA9IFdJT2JqDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5FeHByZXNzaW9u ID0NCj4gPiBzZWxmLl9fRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVz c2lvbigpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5DQo+ID4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFF1ZXN0aW9uVGFn TGlzdC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0 KHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xp c3RDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBmb3IgQ3R4IGluIGN0eC52ZnJTdGF0ZW1lbnRR dWVzdGlvblRhZygpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19JbnNlcnRDaGlsZChj dHguTm9kZSwgQ3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+ID4g VmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnLg0KPiA+DQo+ID4g KyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZyhzZWxmLA0KPiA+IGN0 eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25UYWdDb250ZXh0KToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0KCkgIT0g Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRT dXBwcmVzc0lmUXVlc3QoKS5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBj dHgudmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0KCkuTm9kZQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFZhbHVlKCkg IT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1l bnRWYWx1ZSgpLk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJT dGF0ZW1lbnREZWZhdWx0KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9k ZSA9IGN0eC52ZnJTdGF0ZW1lbnREZWZhdWx0KCkuTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudE9wdGlvbnMoKSAhPSBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudE9wdGlvbnMoKS5Ob2RlDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50UmVhZCgpICE9 IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50 UmVhZCgpLk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0 ZW1lbnRXcml0ZSgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBj dHgudmZyU3RhdGVtZW50V3JpdGUoKS5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg IyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gPiBWZnJTeW50YXhQYXJzZXIjdmZy U3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0 ZW1lbnRTdXBwcmVzc0lmUXVlc3Qoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudFN1cHByZXNzSWZRdWVzdENvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgU0lPYmogPSBDSWZyU3VwcHJlc3NJZigpDQo+ID4NCj4gPiArICAgICAgICBTSU9iai5T ZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRh ID0gU0lPYmoNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkNvbmRpdGlvbiA9ICdzdXBwcmVz c2lmJyArICcgJyArDQo+ID4gc2VsZi5fX0V4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmclN0YXRl bWVudEV4cHJlc3Npb24oKSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4g PiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QuDQo+ID4NCj4gPiAr ICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0KHNlbGYsDQo+ID4gY3R4OlZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRHcmF5T3V0SWZRdWVzdENvbnRleHQpOg0KPiA+DQo+ ID4gKyAgICAgICAgR09JT2JqID0gQ0lmckdyYXlPdXRJZigpDQo+ID4NCj4gPiArICAgICAgICBH T0lPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5v ZGUuRGF0YSA9IEdPSU9iag0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuQ29uZGl0aW9uID0g J2dyYXlvdXRpZicgKyAnICcgKw0KPiA+IHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52 ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRh eFBhcnNlciNmbGFnc0ZpZWxkLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRGbGFnc0ZpZWxkKHNl bGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQpOg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Lk4gIT0gTm9uZToNCj4gPg0KPiA+ICsNCj4gPg0KPiBD VmZyRXJyb3JIYW5kbGUuSGFuZGxlV2FybmluZyhFRklfVkZSX1dBUk5JTkdfQ09ERS5WRlJfV0FS TklORw0KPiA+IF9PQlNPTEVURURfRlJBTUVXT1JLX09QQ09ERSwgY3R4Lk4ubGluZSwgY3R4Lk4u dGV4dCkNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5MICE9IE5vbmU6DQo+ID4NCj4gPiArDQo+ ID4NCj4gQ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcoRUZJX1ZGUl9XQVJOSU5HX0NPREUu VkZSX1dBUk5JTkcNCj4gPiBfT0JTT0xFVEVEX0ZSQU1FV09SS19PUENPREUsIGN0eC5MLmxpbmUs IGN0eC5MLnRleHQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBh cnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudERlZmF1bHQu DQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudERlZmF1bHQoc2VsZiwNCj4gPiBj dHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERlZmF1bHRDb250ZXh0KToNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiAr ICAgICAgICBJc0V4cCA9IEZhbHNlDQo+ID4NCj4gPiArICAgICAgICBEZWZhdWx0SWQgPSBFRklf SElJX0RFRkFVTFRfQ0xBU1NfU1RBTkRBUkQNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHgu c3RhcnQubGluZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmckNvbnN0 YW50VmFsdWVGaWVsZCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgVmFsdWUgPSBj dHgudmZyQ29uc3RhbnRWYWx1ZUZpZWxkKCkuVmFsdWUNCj4gPg0KPiA+ICsgICAgICAgICAgICBW YWx1ZUxpc3QgPSBjdHgudmZyQ29uc3RhbnRWYWx1ZUZpZWxkKCkuVmFsdWVMaXN0DQo+ID4NCj4g PiArICAgICAgICAgICAgVHlwZSA9IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIFNpemUgPSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgc2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRhICE9IE5vbmUgYW5kDQo+ID4gc2VsZi5f X0N1cnJlbnRNaW5NYXhEYXRhLklzTnVtZXJpY09wY29kZSgpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAjIGNoZWNrIGRlZmF1bHQgdmFsdWUgaXMgdmFsaWQgZm9yIE51bWVyaWMgT3Bjb2Rl DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFZhbHVlTGlzdCA9PSBbXToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIFZhbHVlTGlzdC5hcHBlbmQoVmFsdWUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihWYWx1ZUxpc3QpKToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgIFZhbHVlID0gVmFsdWVMaXN0W2ldDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBOdW1lcmljUXN0ID0gQ0lmck51bWVyaWMgKHNlbGYuX19DdXJy ZW50UXVlc3Rpb24pICMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIChOdW1lcmlj UXN0LkdldE51bWVyaWNGbGFncygpICYgRUZJX0lGUl9ESVNQTEFZKSA9PSAwIGFuZA0KPiA+IHNl bGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6ICMNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBWYWx1ZS51OCA8IHNlbGYu X19DdXJyZW50TWluTWF4RGF0YS5HZXRNaW5EYXRhKFR5cGUsDQo+ID4gRmFsc2UpIG9yIFZhbHVl LnU4ID4gc2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRhLkdldE1heERhdGEoVHlwZSwgRmFsc2UpOg0K PiA+DQo+ID4gKw0KPiA+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiA+IExpbmUsICJOdW1lcmljIGRlZmF1bHQgdmFsdWUg bXVzdCBiZSBiZXR3ZWVuIE1pblZhbHVlIGFuZCBNYXhWYWx1ZS4iKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05V TV9TSVpFXzE2Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBWYWx1 ZS51MTYgPA0KPiBzZWxmLl9fQ3VycmVudE1pbk1heERhdGEuR2V0TWluRGF0YShUeXBlLA0KPiA+ IEZhbHNlKSBvciBWYWx1ZS51MTYgPiBzZWxmLl9fQ3VycmVudE1pbk1heERhdGEuR2V0TWF4RGF0 YShUeXBlLCBGYWxzZSk6DQo+ID4NCj4gPiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4gTGluZSwgIk51bWVy aWMgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gTWluVmFsdWUgYW5kIE1heFZhbHVlLiIp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgVHlwZSA9 PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIFZhbHVlLnUzMiA8DQo+IHNlbGYuX19DdXJyZW50TWluTWF4RGF0YS5HZXRN aW5EYXRhKFR5cGUsDQo+ID4gRmFsc2UpIG9yIFZhbHVlLnUzMiA+IHNlbGYuX19DdXJyZW50TWlu TWF4RGF0YS5HZXRNYXhEYXRhKFR5cGUsIEZhbHNlKToNCj4gPg0KPiA+ICsNCj4gPiBzZWxmLl9f RXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwN Cj4gPiBMaW5lLCAiTnVtZXJpYyBkZWZhdWx0IHZhbHVlIG11c3QgYmUgYmV0d2VlbiBNaW5WYWx1 ZSBhbmQgTWF4VmFsdWUuIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgVmFsdWUudTY0IDwNCj4gc2VsZi5fX0N1cnJl bnRNaW5NYXhEYXRhLkdldE1pbkRhdGEoVHlwZSwNCj4gPiBGYWxzZSkgb3IgVmFsdWUudTY0ID4g c2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRhLkdldE1heERhdGEoVHlwZSwgRmFsc2UpOg0KPiA+DQo+ ID4gKw0KPiA+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lO VkFMSURfUEFSQU1FVEVSLA0KPiA+IExpbmUsICJOdW1lcmljIGRlZmF1bHQgdmFsdWUgbXVzdCBi ZSBiZXR3ZWVuIE1pblZhbHVlIGFuZCBNYXhWYWx1ZS4iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAjIFZhbHVlIGZvciBxdWVzdGlvbiBzdG9yZWQgaW4gYml0IGZpZWxkcyBpcyBhbHdheXMg c2V0IHRvIFVJTlQzMg0KPiA+IHR5cGUuDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgVmFsdWUudTMyIDwNCj4gc2VsZi5fX0N1cnJlbnRNaW5N YXhEYXRhLkdldE1pbkRhdGEoVHlwZSwNCj4gPiBUcnVlKSBvciAgVmFsdWUudTMyID4gc2VsZi5f X0N1cnJlbnRNaW5NYXhEYXRhLkdldE1heERhdGEoVHlwZSwgVHJ1ZSk6DQo+ID4NCj4gPiArDQo+ ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9Q QVJBTUVURVIsDQo+ID4gTGluZSwgIk51bWVyaWMgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIGJldHdl ZW4gTWluVmFsdWUgYW5kIE1heFZhbHVlLiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgVmFs dWUudTY0IDwNCj4gc2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRhLkdldE1pbkRhdGEoVHlwZSwNCj4g PiBGYWxzZSkgb3IgIFZhbHVlLnU2NCA+IHNlbGYuX19DdXJyZW50TWluTWF4RGF0YS5HZXRNYXhE YXRhKFR5cGUsDQo+IEZhbHNlKToNCj4gPg0KPiA+ICsNCj4gPiBzZWxmLl9fRXJyb3JIYW5kbGVy KFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPiBMaW5lLCAi TnVtZXJpYyBkZWZhdWx0IHZhbHVlIG11c3QgYmUgYmV0d2VlbiBNaW5WYWx1ZSBhbmQgTWF4VmFs dWUuIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9J RlJfVFlQRV9PVEhFUjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFu ZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1IsDQo+ID4gTGluZSwgIkRl ZmF1bHQgZGF0YSB0eXBlIGVycm9yLiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFNpemUg PSBzaXplb2YoRUZJX0lGUl9UWVBFX1ZBTFVFKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsaWYgY3R4LnZmckNvbnN0YW50VmFsdWVGaWVsZCgpLkxpc3RUeXBlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgU2l6ZSA9IHNpemVvZihjX3VieXRlKSAqIGxl bihWYWx1ZUxpc3QpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzE2Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgU2l6ZSA9 IHNpemVvZihjX3VzaG9ydCkgKiBsZW4oVmFsdWVMaXN0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIFNpemUgPSBzaXplb2YoY191bG9uZykgKiBsZW4oVmFsdWVMaXN0KQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0la RV82NDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIFNpemUgPSBzaXplb2YoY191bG9u Z2xvbmcpICogbGVuKFZhbHVlTGlzdCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJ bmZvLklzQml0VmFyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgU2l6ZSA9IHNpemVv ZihjX3Vsb25nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgU2l6ZSwgUmV0dXJuQ29kZSA9DQo+ID4gZ0NWZnJWYXJEYXRhVHlw ZURCLkdldERhdGFUeXBlU2l6ZUJ5RGF0YVR5cGUoVHlwZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgTGluZSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBTaXplICs9IEVGSV9JRlJfREVGQVVMVC5WYWx1ZS5v ZmZzZXQNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBub3QgY3R4LnZmckNvbnN0YW50VmFsdWVG aWVsZCgpLkxpc3RUeXBlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBET2JqID0gQ0lmckRl ZmF1bHQoU2l6ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgRE9iai5TZXRMaW5lTm8oTGlu ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgRE9iai5TZXRWYWx1ZShWYWx1ZSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0lzU3RyaW5nT3A6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBET2JqLlNldFR5cGUoRUZJX0lGUl9UWVBFX1NU UklORykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgRE9iai5TZXRUeXBlKEVGSV9JRlJfVFlQRV9OVU1f U0laRV8zMikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgRE9iai5TZXRUeXBlKHNlbGYuX19DdXJyUWVzdFZhcklu Zm8uVmFyVHlwZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBET2JqID0gQ0lmckRlZmF1bHQzKFNpemUsIGxlbihWYWx1ZUxpc3QpLCBUeXBl KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBET2JqLlNldExpbmVObyhMaW5lKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBET2JqLlNldFZhbHVlKFZhbHVlTGlzdCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgRE9iai5TZXRUeXBlKEVGSV9JRlJfVFlQRV9CVUZGRVIpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIElzRXhw ID0gVHJ1ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIERPYmogPSBDSWZyRGVmYXVsdDIoKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIERPYmouU2V0TGluZU5vKExpbmUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgRE9iai5TZXRTY29wZSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYg Y3R4LkRlZmF1bHRTdG9yZSgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgRGVmYXVs dElkLCBSZXR1cm5Db2RlID0NCj4gZ0NWZnJEZWZhdWx0U3RvcmUuR2V0RGVmYXVsdElkKGN0eC5T Ti50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJu Q29kZSwgY3R4LlNOLmxpbmUsIGN0eC5TTi50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIERP YmouU2V0RGVmYXVsdElkKERlZmF1bHRJZCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuX19DaGVja0R1cGxpY2F0ZURlZmF1bHRWYWx1ZShEZWZhdWx0SWQsIGN0eC5ELmxpbmUs IGN0eC5ELnRleHQpDQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZv LlZhclN0b3JlSWQgIT0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQ6DQo+ID4NCj4gPiArICAgICAg ICAgICAgVmFyU3RvcmVOYW1lLCBSZXR1cm5Db2RlID0NCj4gPiBnQ1ZmckRhdGFTdG9yYWdlLkdl dFZhclN0b3JlTmFtZShzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBMaW5lKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIFZhckd1aWQgPQ0KPiA+IGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFy U3RvcmVHdWlkKHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBWYXJTdG9yZVR5cGUgPQ0KPiA+IGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3Rv cmVUeXBlKHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiAoSXNFeHAgPT0gRmFsc2UpIGFuZCAoVmFyU3RvcmVUeXBlID09DQo+ID4gRUZJ X1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSKToNCj4gPg0KPiA+ICsN Cj4gPg0KPiBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyRGVmYXVsdFN0b3JlLkJ1ZmZlclZhclN0 b3JlQWx0Q29uZmlnQWRkKERlZmF1bHRJDQo+ID4gZCwgc2VsZi5fX0N1cnJRZXN0VmFySW5mbywg VmFyU3RvcmVOYW1lLCBWYXJHdWlkLA0KPiA+IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlw ZSwgVmFsdWUpLCBMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IERPYmoN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19JbnNlcnRDaGlsZChjdHguTm9kZSwgY3R4LnZmclN0 YXRlbWVudFZhbHVlKCkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4 Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBh cnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFZhbHVlLg0K PiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRWYWx1ZShzZWxmLA0KPiA+IGN0eDpW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFsdWVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIFZPYmogPSBDSWZyVmFsdWUoKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFZPYmou U2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0 YSA9IFZPYmoNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkV4cHJlc3Npb24gPQ0KPiA+IHNl bGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4 UGFyc2VyI3ZmclN0YXRlbWVudE9wdGlvbnMuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0 YXRlbWVudE9wdGlvbnMoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dE9wdGlvbnNDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0 ZW1lbnRPbmVPZk9wdGlvbigpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9k ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRPbmVPZk9w dGlvbi4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50T25lT2ZPcHRpb24oc2Vs ZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE9uZU9mT3B0aW9uQ29udGV4 dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUN Cj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSA9PSBF RklfSUZSX1RZUEVfT1RIRVI6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFu ZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1IsDQo+ID4gTGluZSwgIkdl dCBkYXRhIHR5cGUgZXJyb3IuIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu dmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBWYWx1ZSA9 IGN0eC52ZnJDb25zdGFudFZhbHVlRmllbGQoKS5WYWx1ZQ0KPiA+DQo+ID4gKyAgICAgICAgVmFs dWVMaXN0ID0gY3R4LnZmckNvbnN0YW50VmFsdWVGaWVsZCgpLlZhbHVlTGlzdA0KPiA+DQo+ID4g KyAgICAgICAgVHlwZSA9IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZQ0KPiA+DQo+ID4g KyAgICAgICAgU2l6ZSA9IDANCj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYuX19DdXJyZW50TWlu TWF4RGF0YSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICNzZXQgbWluL21heCB2YWx1 ZSBmb3Igb25lb2Ygb3Bjb2RlDQo+ID4NCj4gPiArICAgICAgICAgICAgU3RlcCA9DQo+ID4gc2Vs Zi5fX0N1cnJlbnRNaW5NYXhEYXRhLkdldFN0ZXBEYXRhKHNlbGYuX19DdXJyUWVzdFZhckluZm8u VmFyVHlwZSwNCj4gPiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuX19DdXJyZW50TWluTWF4RGF0YS5TZXRNaW5NYXhTdGVw RGF0YShWYWx1ZS51MzIsDQo+ID4gVmFsdWUudTMyLCBTdGVwLCBFRklfSUZSX1RZUEVfTlVNX1NJ WkVfMzIpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLl9fQ3VycmVudE1pbk1heERhdGEuU2V0TWluTWF4U3RlcERh dGEoVmFsdWUudTY0LA0KPiA+IFZhbHVlLnU2NCwgU3RlcCwgRUZJX0lGUl9UWVBFX05VTV9TSVpF XzY0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9O VU1fU0laRV8zMjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX19DdXJyZW50 TWluTWF4RGF0YS5TZXRNaW5NYXhTdGVwRGF0YShWYWx1ZS51MzIsDQo+ID4gVmFsdWUudTMyLCBT dGVwLCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRhLlNldE1pbk1heFN0ZXBEYXRhKFZh bHVlLnUxNiwNCj4gPiBWYWx1ZS51MTYsIFN0ZXAsIEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJ WkVfODoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX19DdXJyZW50TWluTWF4 RGF0YS5TZXRNaW5NYXhTdGVwRGF0YShWYWx1ZS51OCwNCj4gPiBWYWx1ZS51OCwgU3RlcCwgRUZJ X0lGUl9UWVBFX05VTV9TSVpFXzgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBz ZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX09USEVSOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIFNpemUgPSBzaXplb2YoRUZJX0lGUl9UWVBFX1ZBTFVFKQ0KPiA+ DQo+ID4gKyAgICAgICAgZWxpZiBjdHgudmZyQ29uc3RhbnRWYWx1ZUZpZWxkKCkuTGlzdFR5cGU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVf ODoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgU2l6ZSA9IHNpemVvZihjX3VieXRlKSAqIGxl bihWYWx1ZUxpc3QpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZ UEVfTlVNX1NJWkVfMTY6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFNpemUgPSBzaXplb2Yo Y191c2hvcnQpICogbGVuKFZhbHVlTGlzdCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBUeXBl ID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg U2l6ZSA9IHNpemVvZihjX3Vsb25nKSAqIGxlbihWYWx1ZUxpc3QpDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIFNpemUgPSBzaXplb2YoY191bG9uZ2xvbmcpICogbGVuKFZhbHVlTGlzdCkN Cj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgIyBGb3IgdGhl IG9uZW9mIHN0b3JlZCBpbiBiaXQgZmllbGRzLCBzZXQgdGhlIG9wdGlvbiB0eXBlIGFzIFVJTlQz Mi4NCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0 VmFyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBTaXplID0gc2l6ZW9mKGNfbG9uZykNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBTaXpl LCBSZXR1cm5Db2RlID0NCj4gPiBnQ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlE YXRhVHlwZShUeXBlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5k bGVyKFJldHVybkNvZGUsIExpbmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBTaXpl ICs9IEVGSV9JRlJfT05FX09GX09QVElPTi5WYWx1ZS5vZmZzZXQNCj4gPg0KPiA+ICsgICAgICAg IE9PT09iaiA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIGlmIG5vdCBjdHgudmZyQ29uc3RhbnRW YWx1ZUZpZWxkKCkuTGlzdFR5cGU6DQo+ID4NCj4gPiArICAgICAgICAgICAgT09PT2JqID0gQ0lm ck9uZU9mT3B0aW9uKFNpemUpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJR ZXN0VmFySW5mby5Jc0JpdFZhcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgT09PT2JqLlNl dFR5cGUoRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIE9PT09iai5TZXRUeXBlKFR5cGUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgT09PT2JqLlNldFZhbHVlKFZhbHVlKQ0KPiA+DQo+ID4gKyAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBPT09PYmogPSBDSWZyT25lT2ZPcHRpb24y KFNpemUsIGxlbihWYWx1ZUxpc3QpLCBUeXBlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIE9PT09i ai5TZXRUeXBlKEVGSV9JRlJfVFlQRV9CVUZGRVIpDQo+ID4NCj4gPiArICAgICAgICAgICAgT09P T2JqLlNldFZhbHVlKFZhbHVlTGlzdCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIE9PT09iai5TZXRMaW5lTm8oTGluZSkNCj4gPg0KPiA+ICsgICAgICAgIE9PT09i ai5TZXRPcHRpb24oc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+IHNlbGYuX19FcnJvckhhbmRsZXIoT09PT2JqLlNl dEZsYWdzKGN0eC52ZnJPbmVPZk9wdGlvbkZsYWdzKCkuTEZsYWdzKSwNCj4gPiBjdHguRi5saW5l KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IHNlbGYuX19FcnJvckhhbmRsZXIoc2VsZi5fX0N1cnJlbnRR dWVzdGlvbi5TZXRRSGVhZGVyRmxhZ3MoY3R4LnZmck9uZU9mDQo+ID4gT3B0aW9uRmxhZ3MoKS5I RmxhZ3MpLCBjdHguRi5saW5lKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgIyBBcnJh eSB0eXBlIG9ubHkgZm9yIGRlZmF1bHQgdHlwZSBPbmVPZk9wdGlvbi4NCj4gPg0KPiA+ICsgICAg ICAgIGlmIChPT09PYmouR2V0RmxhZ3MoKSAmIChFRklfSUZSX09QVElPTl9ERUZBVUxUIHwNCj4g PiBFRklfSUZSX09QVElPTl9ERUZBVUxUX01GRykpID09IDAgYW5kDQo+ID4gKGN0eC52ZnJDb25z dGFudFZhbHVlRmllbGQoKS5MaXN0VHlwZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5f X0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1IsDQo+ID4g TGluZSwgIkRlZmF1bHQga2V5d29yZCBzaG91bGQgd2l0aCBhcnJheSB2YWx1ZSB0eXBlISIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAjIENsZWFyIHRoZSBkZWZhdWx0IGZsYWcgaWYg dGhlIG9wdGlvbiBub3QgdXNlIGFycmF5IHZhbHVlIGJ1dCBoYXMNCj4gZGVmYXVsdA0KPiA+IGZs YWcuDQo+ID4NCj4gPiArICAgICAgICBpZiAoT09PT2JqLkdldEZsYWdzKCkgJiAoRUZJX0lGUl9P UFRJT05fREVGQVVMVCB8DQo+ID4gRUZJX0lGUl9PUFRJT05fREVGQVVMVF9NRkcpKSAhPSAwIGFu ZA0KPiA+IChjdHgudmZyQ29uc3RhbnRWYWx1ZUZpZWxkKCkuTGlzdFR5cGUgPT0gRmFsc2UpIGFu ZCAoc2VsZi5fX0lzT3JkZXJlZExpc3QpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIE9PT09iai5T ZXRGbGFncyhPT09PYmouR2V0RmxhZ3MoKSAmDQo+IH4oRUZJX0lGUl9PUFRJT05fREVGQVVMVA0K PiA+IHwgRUZJX0lGUl9PUFRJT05fREVGQVVMVF9NRkcpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkICE9IEVGSV9WQVJT VE9SRV9JRF9JTlZBTElEOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhclN0b3JlTmFtZSwgUmV0 dXJuQ29kZSA9DQo+ID4gZ0NWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZU5hbWUoc2VsZi5fX0N1 cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19F cnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgTGluZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBWYXJT dG9yZUd1aWQgPQ0KPiA+IGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVHdWlkKHNlbGYuX19D dXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBPT09P YmouR2V0RmxhZ3MoKSAmIEVGSV9JRlJfT1BUSU9OX0RFRkFVTFQ6DQo+ID4NCj4gPiArDQo+ID4g c2VsZi5fX0NoZWNrRHVwbGljYXRlRGVmYXVsdFZhbHVlKEVGSV9ISUlfREVGQVVMVF9DTEFTU19T VEFOREFSRCwNCj4gPiBjdHguRi5saW5lLCBjdHguRi50ZXh0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJEZWZhdWx0U3RvcmUuQnVmZmVyVmFyU3RvcmVBbHRD b25maWdBZGQoRUZJX0hJSQ0KPiA+IF9ERUZBVUxUX0NMQVNTX1NUQU5EQVJELCBzZWxmLl9fQ3Vy clFlc3RWYXJJbmZvLCBWYXJTdG9yZU5hbWUsDQo+ID4gVmFyU3RvcmVHdWlkLCBzZWxmLl9fQ3Vy clFlc3RWYXJJbmZvLlZhclR5cGUsIFZhbHVlKSwgTGluZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBPT09PYmouR2V0RmxhZ3MoKSAmIEVGSV9JRlJfT1BUSU9OX0RFRkFVTFRfTUZHOg0KPiA+ DQo+ID4gKw0KPiA+DQo+IHNlbGYuX19DaGVja0R1cGxpY2F0ZURlZmF1bHRWYWx1ZShFRklfSElJ X0RFRkFVTFRfQ0xBU1NfTUFOVUZBQ1RVDQo+ID4gUklORywgY3R4LkYubGluZSwgY3R4LkYudGV4 dCkNCj4gPg0KPiA+ICsNCj4gPg0KPiBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyRGVmYXVsdFN0 b3JlLkJ1ZmZlclZhclN0b3JlQWx0Q29uZmlnQWRkKEVGSV9ISUkNCj4gPiBfREVGQVVMVF9DTEFT U19NQU5VRkFDVFVSSU5HLCBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLA0KPiA+IFZhclN0b3JlTmFt ZSwgVmFyU3RvcmVHdWlkLCBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUsIFZhbHVlKSwN Cj4gTGluZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5LZXkoKSAhPSBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiA+IGN0eC5LTi5saW5lLCBjdHguS04udGV4 dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAj44CAR3VpZCBPcHRpb24gS2V5DQo+ID4NCj4gPiAr ICAgICAgICAgICAgSWZyT3B0aW9uS2V5ID0NCj4gPiBDSWZyT3B0aW9uS2V5KHNlbGYuX19DdXJy ZW50UXVlc3Rpb24uR2V0UXVlc3Rpb25JZCgpLCBWYWx1ZSwNCj4gPiBzZWxmLl9fVHJhbnNOdW0o Y3R4LktOLnRleHQpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIElmck9wdGlvbktleS5TZXRMaW5l Tm8oKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmckltYWdlVGFnKCkgIT0gTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBPT09PYmouU2V0U2NvcGUoMSkgIw0KPiA+DQo+ID4gKyAgICAg ICAgY3R4Lk5vZGUuRGF0YSA9IE9PT09iag0KPiA+DQo+ID4gKyAgICAgICAgZm9yIEN0eCBpbiBj dHgudmZySW1hZ2VUYWcoKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hp bGQoY3R4Lk5vZGUsIEN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBj dHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEg cGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyT25lT2ZPcHRpb25GbGFn cy4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyT25lT2ZPcHRpb25GbGFncyhzZWxmLA0KPiA+ IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyT25lT2ZPcHRpb25GbGFnc0NvbnRleHQpOg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5MRmxhZ3MgPSBzZWxmLl9fQ3VyclFlc3RWYXJJbmZv LlZhclR5cGUNCj4gPg0KPiA+ICsgICAgICAgIGZvciBGbGFnc0ZpZWxkQ3R4IGluIGN0eC5vbmVv Zm9wdGlvbkZsYWdzRmllbGQoKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguSEZsYWdzIHw9 IEZsYWdzRmllbGRDdHguSEZsYWcNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTEZsYWdzIHw9 IEZsYWdzRmllbGRDdHguTEZsYWcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBjdHguSEZsYWdzLCBjdHguTEZsYWdzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNv bmVvZm9wdGlvbkZsYWdzRmllbGQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdE9uZW9mb3B0aW9u RmxhZ3NGaWVsZChzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuT25lb2ZvcHRpb25GbGFn c0ZpZWxkQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Lk51bWJl cigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LkxGbGFnID0gc2VsZi5fX1Ry YW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5PcHRpb25EZWZh dWx0KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTEZsYWcgPSAweDEwDQo+ ID4NCj4gPiArICAgICAgICBpZiBjdHguT3B0aW9uRGVmYXVsdE1mZygpICE9IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgyMA0KPiA+DQo+ID4gKyAgICAgICAgaWYg Y3R4LkludGVyYWN0aXZlRmxhZygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4 LkhGbGFnID0gMHgwNA0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LlJlc2V0UmVxdWlyZWRGbGFn KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguSEZsYWcgPSAweDEwDQo+ID4N Cj4gPiArICAgICAgICBpZiBjdHguUmVzdFN0eWxlRmxhZygpICE9IE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgY3R4LkhGbGFnID0gMHgyMA0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LlJl Y29ubmVjdFJlcXVpcmVkRmxhZygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4 LkhGbGFnID0gMHg0MA0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Lk1hbnVmYWN0dXJpbmdGbGFn KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTEZsYWcgPSAweDIwDQo+ID4N Cj4gPiArICAgICAgICBpZiBjdHguRGVmYXVsdEZsYWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MTANCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5OVkFj Y2Vzc0ZsYWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGdDVmZyRXJyb3JIYW5k bGUuSGFuZGxlV2FybmluZw0KPiA+DQo+IChFRklfVkZSX1dBUk5JTkdfQ09ERS5WRlJfV0FSTklO R19PQlNPTEVURURfRlJBTUVXT1JLX09QDQo+ID4gQ09ERSwgY3R4LkEubGluZSwgY3R4LkEudGV4 dCkNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5MYXRlQ2hlY2tGbGFnKCkgIT0gTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBnQ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcNCj4gPg0K PiAoRUZJX1ZGUl9XQVJOSU5HX0NPREUuVkZSX1dBUk5JTkdfT0JTT0xFVEVEX0ZSQU1FV09SS19P UA0KPiA+IENPREUsIGN0eC5MLmxpbmUsIGN0eC5MLnRleHQpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gY3R4LkhGbGFnLCBjdHguTEZsYWcNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFJlYWQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZm clN0YXRlbWVudFJlYWQoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dFJlYWRDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFJPYmogPSBDSWZy UmVhZCgpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgUk9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+ ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gUk9iag0KPiA+DQo+ID4gKyAgICAgICAg Y3R4Lk5vZGUuRXhwcmVzc2lvbiA9DQo+ID4gc2VsZi5fX0V4dHJhY3RPcmlnaW5hbFRleHQoY3R4 LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50V3JpdGUuDQo+ ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFdyaXRlKHNlbGYsDQo+ID4gY3R4OlZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRXcml0ZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgV09iaiA9IENJZnJXcml0ZSgpDQo+ID4NCj4gPiArICAgICAgICBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgV09iai5T ZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRh ID0gV09iag0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRXhwcmVzc2lvbiA9DQo+ID4gc2Vs Zi5fX0V4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5 bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QuDQo+ID4NCj4gPiArICAg IGRlZiB2aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChzZWxmLA0KPiA+IGN0eDpW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Q29udGV4dCk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+ DQo+ID4gKyAgICAgICAgZm9yIEN0eCBpbiBjdHgudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb24o KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUsIEN0 eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+ IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbi4NCj4gPg0KPiA+ICsg ICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb24oc2VsZiwNCj4gPiBjdHg6VmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uQ29udGV4dCk6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4g KyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFF1ZXN0aW9uVGFnKCkgIT0gTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZygp Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LnZmclN0YXRlbWVu dFF1ZXN0aW9uT3B0aW9uVGFnKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHgu Tm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZygpLk5vZGUNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBh cnNlciN2ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZS4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZy U3RhdGVtZW50Qm9vbGVhblR5cGUoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudEJvb2xlYW5UeXBlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0 YXRlbWVudENoZWNrQm94KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9k ZSA9IGN0eC52ZnJTdGF0ZW1lbnRDaGVja0JveCgpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50QWN0 aW9uKCkuTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rl DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRDaGVja0JveC4N Cj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50Q2hlY2tCb3goc2VsZiwNCj4gPiBj dHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENoZWNrQm94Q29udGV4dCk6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBDQk9iaiA9IGN0eC5PcE9iag0KPiA+DQo+ID4gKyAgICAg ICAgTGluZSA9ICBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgQ0JPYmouU2V0TGlu ZU5vKExpbmUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fQ3VycmVudFF1ZXN0aW9uID0gQ0JP YmouR2V0UXVlc3Rpb24oKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0lzQ2hlY2tCb3hPcCA9 IFRydWUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAjIENyZWF0ZSBhIEdVSUQgb3Bjb2Rl IHRvIHdyYXAgdGhlIGNoZWNrYm94IG9wY29kZSwgaWYgaXQgcmVmZXIgdG8gYml0DQo+ID4gdmFy c3RvcmUuDQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0 VmFyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEd1aWRPYmogPSBDSWZyR3VpZCgwKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIEd1aWRPYmouU2V0R3VpZChFREtJSV9JRlJfQklUX1ZBUlNUT1JFX0dV SUQpDQo+ID4NCj4gPiArICAgICAgICAgICAgR3VpZE9iai5TZXRMaW5lTm8oTGluZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBHdWlkT2JqLlNldFNjb3BlKDEpICMNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgICMgY2hlY2sgZGF0YVR5cGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYu X19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfT1RIRVI6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlID0gRUZJX0lGUl9U WVBFX0JPT0xFQU4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYuX19DdXJy UWVzdFZhckluZm8uVmFyU3RvcmVJZCAhPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRDoNCj4gPg0K PiA+ICsgICAgICAgICAgICAjIENoZWNrIHdoZXRoZXIgdGhlIHF1ZXN0aW9uIHJlZmVycyB0byBh IGJpdCBmaWVsZCwgaWYgeWVzLiBjcmVhdGUgYQ0KPiA+IEd1aWQgdG8gaW5kaWNhdGUgdGhlIHF1 ZXN0aW9uIHJlZmVycyB0byBhIGJpdCBmaWVsZC4NCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBz ZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBfLCBSZXR1cm5Db2RlID0NCj4gPg0KPiBnQ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVT aXplQnlEYXRhVHlwZShzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLg0KPiA+IFZhclR5cGUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgTGlu ZSwgIkNoZWNrQm94IHZhcmlkIGlzIG5vdCB0aGUNCj4gPiB2YWxpZCBkYXRhIHR5cGUiKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBpZg0KPiA+IGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3Rv cmVUeXBlKHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCkNCj4gPT0NCj4gPiBFRklf VkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVJfQklUUyBhbmQNCj4gPiBz ZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZSAhPSAxOg0KPiA+DQo+ID4gKw0KPiA+ IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFS QU1FVEVSLA0KPiA+IExpbmUsICJDaGVja0JveCB2YXJpZCBvbmx5IG9jY3VweSAxIGJpdCBpbiBC aXQgVmFyc3RvcmUiKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgU2l6ZSwgUmV0dXJuQ29kZSA9DQo+ID4NCj4gZ0NWZnJWYXJE YXRhVHlwZURCLkdldERhdGFUeXBlU2l6ZUJ5RGF0YVR5cGUoc2VsZi5fX0N1cnJRZXN0VmFySW5m by4NCj4gPiBWYXJUeXBlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0Vy cm9ySGFuZGxlcihSZXR1cm5Db2RlLCBMaW5lLCAiQ2hlY2tCb3ggdmFyaWQgaXMgbm90DQo+IHRo ZQ0KPiA+IHZhbGlkIGRhdGEgdHlwZSIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBp ZiBTaXplICE9IDAgYW5kIFNpemUgIT0gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUb3RhbFNp emU6DQo+ID4NCj4gPiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4gTGluZSwgIkNoZWNrQm94IHZhcmlkIGRv ZXNuJ3Qgc3VwcG9ydCBhcnJheSIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBlbGlm DQo+ID4gZ0NWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZVR5cGUoc2VsZi5fX0N1cnJRZXN0VmFy SW5mby5WYXJTdG9yZUlkKQ0KPiA9PQ0KPiA+IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZS X1ZBUlNUT1JFX0JVRkZFUiBhbmQNCj4gPiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFs U2l6ZSAhPSBzaXplb2YoY3R5cGVzLmNfYm9vbCk6DQo+ID4NCj4gPiArDQo+ID4gc2VsZi5fX0Vy cm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ ID4gTGluZSwgIkNoZWNrQm94IHZhcmlkIG9ubHkgc3VwcG9ydCBCT09MRUFOIGRhdGEgdHlwZSIp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIENCT2JqLlNldEZsYWdzKGN0eC52ZnJDaGVja0JveEZsYWdz KCkuSEZsYWdzLA0KPiA+IGN0eC52ZnJDaGVja0JveEZsYWdzKCkuTEZsYWdzKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCAhPSBFRklf VkFSU1RPUkVfSURfSU5WQUxJRDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVmFyU3RvcmVO YW1lLCBSZXR1cm5Db2RlID0NCj4gPiBnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlTmFtZShz ZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuX19Db21wYXJlRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsDQo+ID4gVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MsIExpbmUsIGN0eC5MLnRleHQsICJGYWlsZWQgdG8gcmV0 cmlldmUNCj4gPiB2YXJzdG9yZSBuYW1lIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgVmFyU3RvcmVHdWlkID0NCj4gPiBnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3Jl R3VpZChzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuZ1plcm9FZmlJZnJUeXBlVmFsdWUuYiA9IFRydWUNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgaWYgQ0JPYmouR2V0RmxhZ3MoKSAmIDB4MDE6DQo+ID4NCj4gPiArDQo+ ID4gc2VsZi5fX0NoZWNrRHVwbGljYXRlRGVmYXVsdFZhbHVlKEVGSV9ISUlfREVGQVVMVF9DTEFT U19TVEFOREFSRCwNCj4gPiBjdHguRi5saW5lLCBjdHguRi50ZXh0KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgUmV0dXJuQ29kZSA9DQo+ID4NCj4gZ0NWZnJEZWZhdWx0U3RvcmUuQnVm ZmVyVmFyU3RvcmVBbHRDb25maWdBZGQoRUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NUDQo+ID4gQU5E QVJELHNlbGYuX19DdXJyUWVzdFZhckluZm8sIFZhclN0b3JlTmFtZSwgVmFyU3RvcmVHdWlkLA0K PiA+IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSwgc2VsZi5nWmVyb0VmaUlmclR5cGVW YWx1ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX19Db21wYXJlRXJyb3JI YW5kbGVyKFJldHVybkNvZGUsDQo+ID4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1Ms IExpbmUsIGN0eC5MLnRleHQsICJObyBzdGFuZGFyZA0KPiA+IGRlZmF1bHQgc3RvcmFnZSBmb3Vu ZCIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIENCT2JqLkdldEZsYWdzKCkgJiAweDAy Og0KPiA+DQo+ID4gKw0KPiA+DQo+IHNlbGYuX19DaGVja0R1cGxpY2F0ZURlZmF1bHRWYWx1ZShF RklfSElJX0RFRkFVTFRfQ0xBU1NfTUFOVUZBQ1RVDQo+ID4gUklORywgY3R4LkYubGluZSwgY3R4 LkYudGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIFJldHVybkNvZGUgPQ0KPiA+ DQo+IGdDVmZyRGVmYXVsdFN0b3JlLkJ1ZmZlclZhclN0b3JlQWx0Q29uZmlnQWRkKEVGSV9ISUlf REVGQVVMVF9DTEFTU19NDQo+ID4gQU5VRkFDVFVSSU5HLCBzZWxmLl9fQ3VyclFlc3RWYXJJbmZv LCBWYXJTdG9yZU5hbWUsIFZhclN0b3JlR3VpZCwNCj4gPiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZv LlZhclR5cGUsIHNlbGYuZ1plcm9FZmlJZnJUeXBlVmFsdWUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLl9fQ29tcGFyZUVycm9ySGFuZGxlcihSZXR1cm5Db2RlLA0KPiA+IFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTLCBMaW5lLCBjdHguTC50ZXh0LCAiTm8NCj4g bWFudWZhY3R1cmluZw0KPiA+IGRlZmF1bHQgc3RvcmFnZSBmb3VuZCIpDQo+ID4NCj4gPiArICAg ICAgICBpZiBjdHguS2V5KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBLZXkgPSBz ZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X19Bc3NpZ25RdWVzdGlvbktleShDQk9iaiwgS2V5KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgY3R4Lk5vZGUuRGF0YSA9IENCT2JqDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fSXND aGVja0JveE9wID0gRmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBj dHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEg cGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyQ2hlY2tCb3hGbGFncy4N Cj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyQ2hlY2tCb3hGbGFncyhzZWxmLA0KPiA+IGN0eDpW ZnJTeW50YXhQYXJzZXIuVmZyQ2hlY2tCb3hGbGFnc0NvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAg IGZvciBGbGFnc0ZpZWxkQ3R4IGluIGN0eC5jaGVja2JveEZsYWdzRmllbGQoKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBjdHguTEZsYWdzIHw9IEZsYWdzRmllbGRDdHguTEZsYWcNCj4gPg0KPiA+ ICsgICAgICAgICAgICBjdHguSEZsYWdzIHw9IEZsYWdzRmllbGRDdHguSEZsYWcNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguSEZsYWdzLCBjdHguTEZsYWdzDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNjaGVja2JveEZsYWdzRmllbGQuDQo+ID4NCj4gPiAr ICAgIGRlZiB2aXNpdENoZWNrYm94RmxhZ3NGaWVsZChzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQ YXJzZXIuQ2hlY2tib3hGbGFnc0ZpZWxkQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgaWYgY3R4Lk51bWJlcigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg c2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkgIT0gMDoNCj4gPg0KPiA+ICsNCj4gc2VsZi5f X0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsDQo+ID4g Y3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC5EZWZhdWx0RmxhZygp ICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsDQo+ID4gY3R4LkQubGluZSwgY3R4LkQu dGV4dCkNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4Lk1hbnVmYWN0dXJpbmdGbGFnKCkgIT0g Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwNCj4gPiBjdHguTS5saW5lLCBjdHguTS50ZXh0 KQ0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguQ2hlY2tCb3hEZWZhdWx0RmxhZygpICE9IE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwMQ0KPiA+DQo+ID4gKyAg ICAgICAgZWxpZiBjdHguQ2hlY2tCb3hEZWZhdWx0TWZnRmxhZygpICE9IE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwMg0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguSEZsYWcgPSBjdHgucXVlc3Rpb25oZWFkZXJGbGFn c0ZpZWxkKCkuUUhGbGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4 LkhGbGFnLCBjdHguTEZsYWcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBh cnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudEFjdGlvbi4N Cj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50QWN0aW9uKHNlbGYsDQo+ID4gY3R4 OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRBY3Rpb25Db250ZXh0KToNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAg ICAgICBBT2JqID0gY3R4Lk9wT2JqDQo+ID4NCj4gPiArICAgICAgICBBT2JqLlNldExpbmVObyhj dHguc3RhcnQubGluZSkNCj4gPg0KPiA+ICsgICAgICAgIEFPYmouU2V0UXVlc3Rpb25Db25maWco c2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9k ZS5EYXRhID0gQU9iag0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5O b2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJBY3Rpb25GbGFncy4NCj4gPg0K PiA+ICsgICAgZGVmIHZpc2l0VmZyQWN0aW9uRmxhZ3Moc2VsZiwgY3R4OlZmclN5bnRheFBhcnNl ci5WZnJBY3Rpb25GbGFnc0NvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGZvciBGbGFnc0ZpZWxk Q3R4IGluIGN0eC5hY3Rpb25GbGFnc0ZpZWxkKCk6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4 LkhGbGFncyB8PSBGbGFnc0ZpZWxkQ3R4LkhGbGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICByZXR1cm4gY3R4LkhGbGFncw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjYWN0 aW9uRmxhZ3NGaWVsZC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0QWN0aW9uRmxhZ3NGaWVsZChz ZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuQWN0aW9uRmxhZ3NGaWVsZENvbnRleHQpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpICE9IDA6 DQo+ID4NCj4gPiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1VOU1VQUE9SVEVELA0KPiA+IGN0eC5OLmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBlbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5IRmxhZyA9IGN0eC5xdWVzdGlvbmhlYWRlckZs YWdzRmllbGQoKS5RSEZsYWcNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguSEZsYWcNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkNCj4gPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50TnVtZXJpY1R5cGUu DQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudE51bWVyaWNUeXBlKHNlbGYsDQo+ ID4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnROdW1lcmljVHlwZUNvbnRleHQpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4g Pg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnROdW1lcmljKCkgIT0gTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnROdW1lcmljKCku Tm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHgudmZyU3RhdGVtZW50T25lT2YoKSAhPSBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudE9u ZU9mKCkuTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rl DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFAtDQo+IGFyc2VyI3ZmclN0YXRlbWVudE51bWVyaWMu DQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudE51bWVyaWMoc2VsZiwNCj4gPiBj dHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE51bWVyaWNDb250ZXh0KToNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiAr ICAgICAgICBOT2JqID0gY3R4Lk9wT2JqDQo+ID4NCj4gPiArICAgICAgICBOT2JqLlNldExpbmVO byhjdHguc3RhcnQubGluZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19DdXJyZW50UXVlc3Rp b24gPSBOT2JqLkdldFF1ZXN0aW9uKCkNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3Rh cnQubGluZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0 VmFySW5mby5Jc0JpdFZhcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBHdWlkT2JqID0gQ0lmckd1 aWQoMCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBHdWlkT2JqLlNldEd1aWQoRURLSUlfSUZSX0JJ VF9WQVJTVE9SRV9HVUlEKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIEd1aWRPYmouU2V0TGluZU5v KExpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgR3VpZE9iai5TZXRTY29wZSgxKSAjIHBvcw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgIyBjaGVjayBkYXRhIHR5cGUNCj4gPg0KPiA+ ICsgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCAhPSBFRklfVkFS U1RPUkVfSURfSU5WQUxJRDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFl c3RWYXJJbmZvLklzQml0VmFyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBMRmxhZ3MgPSBF REtJSV9JRlJfTlVNRVJJQ19TSVpFX0JJVCAmDQo+ID4gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5W YXJUb3RhbFNpemUNCj4gPg0KPiA+ICsNCj4gPiBzZWxmLl9fRXJyb3JIYW5kbGVyKE5PYmouU2V0 RmxhZ3NGb3JCaXRGaWVsZChOT2JqLkdldEZsYWdzKCksTEZsYWdzKSwgTGluZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBEYXRhVHlwZVNp emUsIFJldHVybkNvZGUgPQ0KPiA+DQo+IGdDVmZyVmFyRGF0YVR5cGVEQi5HZXREYXRhVHlwZVNp emVCeURhdGFUeXBlKHNlbGYuX19DdXJyUWVzdFZhckluZm8uDQo+ID4gVmFyVHlwZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBMaW5l LCAnTnVtZXJpYyB2YXJpZCBpcyBub3QgdGhlDQo+ID4gdmFsaWQgZGF0YSB0eXBlJykNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgaWYgRGF0YVR5cGVTaXplICE9IDAgYW5kIERhdGFUeXBlU2l6 ZSAhPQ0KPiA+IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVG90YWxTaXplOg0KPiA+DQo+ID4g Kw0KPiA+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFM SURfUEFSQU1FVEVSLA0KPiA+IExpbmUsICdOdW1lcmljIHZhcmlkIGRvZXNuXCd0IHN1cHBvcnQg YXJyYXknKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKE5P YmouU2V0RmxhZ3MoTk9iai5HZXRGbGFncygpLA0KPiA+IHNlbGYuX19DdXJyUWVzdFZhckluZm8u VmFyVHlwZSksIExpbmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYu X19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQo+ID4NCj4gPiArDQo+ID4NCj4gc2VsZi5fX0Vy cm9ySGFuZGxlcihOT2JqLlNldEZsYWdzRm9yQml0RmllbGQoY3R4LnZmck51bWVyaWNGbGFncygp LkhGbGFncyxjdA0KPiA+IHgudmZyTnVtZXJpY0ZsYWdzKCkuTEZsYWdzLCBjdHgudmZyTnVtZXJp Y0ZsYWdzKCkuSXNEaXNwbGF5U3BlY2lmaWVkKSwNCj4gPiBjdHguRi5saW5lKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArDQo+ID4NCj4gc2VsZi5fX0Vycm9ySGFuZGxl cihOT2JqLlNldEZsYWdzKGN0eC52ZnJOdW1lcmljRmxhZ3MoKS5IRmxhZ3MsY3R4LnZmck51bQ0K PiA+IGVyaWNGbGFncygpLkxGbGFncywgY3R4LnZmck51bWVyaWNGbGFncygpLklzRGlzcGxheVNw ZWNpZmllZCksIGN0eC5GLmxpbmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBj dHguS2V5KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBLZXkgPSBzZWxmLl9fVHJh bnNOdW0oY3R4Lk51bWJlcigpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19Bc3NpZ25R dWVzdGlvbktleShOT2JqLEtleSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFNocmlu a1NpemUgPSAwDQo+ID4NCj4gPiArICAgICAgICBJc1N1cHBvcnRlZCA9IFRydWUNCj4gPg0KPiA+ ICsgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgVHlwZSA9IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlw ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICMgQmFzZSBvbiB0aGUgdHlwZSB0byBrbm93IHRoZSBh Y3R1YWwgdXNlZCBzaXplLCBzaHJpbmsgdGhlIGJ1ZmZlcg0KPiBzaXplDQo+ID4gYWxsb2NhdGUg YmVmb3JlLg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05V TV9TSVpFXzg6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFNocmlua1NpemUgPSAyMQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFNocmlua1NpemUgPSAxOA0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIFNocmlua1NpemUgPSAxMg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIFNocmlua1NpemUgPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgSXNTdXBwb3J0ZWQgPSBGYWxzZQ0KPiA+DQo+ID4gKyAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAj44CAUXVlc3Rpb24gc3RvcmVkIGlu IGJpdCBmaWVsZHMgc2F2ZWQgYXMgVUlOVDMyIHR5cGUsIHNvIHRoZQ0KPiA+IFNocmlua1NpemUg c2FtZSBhcyBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzIuDQo+ID4NCj4gPiArICAgICAgICAgICAg U2hyaW5rU2l6ZSA9IDEyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAjIyMjIyMj44CA Tk9iai0+U2hyaW5rQmluU2l6ZSAoU2hyaW5rU2l6ZSk7DQo+ID4NCj4gPiArICAgICAgICBpZiBJ c1N1cHBvcnRlZCA9PSBGYWxzZToNCj4gPg0KPiA+ICsNCj4gPiBzZWxmLl9fRXJyb3JIYW5kbGVy KFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPiBMaW5lLCAn TnVtZXJpYyBxdWVzdGlvbiBvbmx5IHN1cHBvcnQgVUlOVDgsIFVJTlQxNiwgVUlOVDMyIGFuZCBV SU5UNjQNCj4gPiBkYXRhIHR5cGUuJykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGN0 eC5Ob2RlLkRhdGEgPSBOT2JqDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g Y3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclNldE1pbk1heFN0ZXAu DQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclNldE1pbk1heFN0ZXAoc2VsZiwNCj4gPiBjdHg6 VmZyU3ludGF4UGFyc2VyLlZmclNldE1pbk1heFN0ZXBDb250ZXh0KToNCj4gPg0KPiA+ICsgICAg ICAgIEludERlY1N0eWxlID0gRmFsc2UNCj4gPg0KPiA+ICsgICAgICAgIGlmICgoc2VsZi5fX0N1 cnJRZXN0VmFySW5mby5Jc0JpdFZhcikgYW5kIChjdHguT3BPYmouR2V0T3BDb2RlKCkgPT0NCj4g PiBFRklfSUZSX05VTUVSSUNfT1ApIGFuZCAoKGN0eC5PcE9iai5HZXROdW1lcmljRmxhZ3MoKSAm DQo+ID4gRURLSUlfSUZSX0RJU1BMQVlfQklUKSA9PSAwKSkgb3IgXA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICgoc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxzZSkgYW5kDQo+ ID4gKGN0eC5PcE9iai5HZXRPcENvZGUoKSA9PSBFRklfSUZSX05VTUVSSUNfT1ApIGFuZA0KPiA+ ICgoY3R4Lk9wT2JqLkdldE51bWVyaWNGbGFncygpICYgRUZJX0lGUl9ESVNQTEFZKSA9PSAwKSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgSW50RGVjU3R5bGUgPSBUcnVlDQo+ID4NCj4gPiArICAg ICAgICBNaW5OZWdhdGl2ZSA9IEZhbHNlDQo+ID4NCj4gPiArICAgICAgICBNYXhOZWdhdGl2ZSA9 IEZhbHNlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgTWluID0gc2VsZi5fX1RyYW5zTnVt KGN0eC5JLnRleHQpDQo+ID4NCj4gPiArICAgICAgICBNYXggPSBzZWxmLl9fVHJhbnNOdW0oY3R4 LkEudGV4dCkNCj4gPg0KPiA+ICsgICAgICAgIFN0ZXAgPSBzZWxmLl9fVHJhbnNOdW0oY3R4LlMu dGV4dCkgaWYgY3R4LlN0ZXAoKSAhPSBOb25lIGVsc2UgMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgaWYgY3R4Lk4xICE9Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBNaW5OZWdh dGl2ZSA9IFRydWUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIEludERlY1N0eWxl ID09IEZhbHNlIGFuZCBNaW5OZWdhdGl2ZSA9PSBUcnVlOg0KPiA+DQo+ID4gKw0KPiA+IHNlbGYu X19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVS LA0KPiA+IGN0eC5JLmxpbmUsICdcJy1cJyBjYW5cJ3QgYmUgdXNlZCB3aGVuIG5vdCBpbiBpbnQg ZGVjaW1hbCB0eXBlLicpDQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJ bmZvLklzQml0VmFyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIChJbnREZWNTdHlsZSA9PSBG YWxzZSkgYW5kIChNaW4gPiAoMSA8PA0KPiA+IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVG90 YWxTaXplKSAtIDEpOiAjDQo+ID4NCj4gPiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4gY3R4LkkubGluZSwg J0JJVCB0eXBlIG1pbmltdW0gY2FuXCd0IHNtYWxsIHRoYW4gMCwgYmlnZ2VyIHRoYW4gMl5CaXRX aWR0aCAtMScpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgVHlwZSA9IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIEludERlY1N0eWxlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGlmIE1pbk5lZ2F0aXZlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiBNaW4gPiAweDgwMDAwMDAwMDAwMDAwMDA6DQo+ID4NCj4g PiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5W QUxJRF9QQVJBTUVURVIsDQo+ID4gY3R4LkkubGluZSwgJ0lOVDY0IHR5cGUgbWluaW11bSBjYW5c J3Qgc21hbGwgdGhhbiAtMHg4MDAwMDAwMDAwMDAwMDAwLCBiaWcNCj4gPiB0aGFuIDB4N0ZGRkZG RkZGRkZGRkZGRicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWluID4gMHg3RkZGRkZGRkZG RkZGRkZGOg0KPiA+DQo+ID4gKw0KPiA+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiA+IGN0eC5JLmxpbmUsICdJTlQ2NCB0 eXBlIG1pbmltdW0gY2FuXCd0IHNtYWxsIHRoYW4gLTB4ODAwMDAwMDAwMDAwMDAwMCwgYmlnDQo+ ID4gdGhhbiAweDdGRkZGRkZGRkZGRkZGRkYnKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgaWYgTWluTmVnYXRpdmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgTWlu ID0gfk1pbiArIDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgVHlw ZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBpZiBJbnREZWNTdHlsZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBp ZiBNaW5OZWdhdGl2ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg TWluID4gMHg4MDAwMDAwMDoNCj4gPg0KPiA+ICsNCj4gPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPiBjdHguSS5saW5l LCAnSU5UMzIgdHlwZSBtaW5pbXVtIGNhblwndCBzbWFsbCB0aGFuIC0weDgwMDAwMDAwLCBiaWcg dGhhbg0KPiA+IDB4N0ZGRkZGRkYnKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1pbiA+IDB4 N0ZGRkZGRkY6DQo+ID4NCj4gPiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4gY3R4LkkubGluZSwgJ0lOVDMy IHR5cGUgbWluaW11bSBjYW5cJ3Qgc21hbGwgdGhhbiAtMHg4MDAwMDAwMCwgYmlnIHRoYW4NCj4g PiAweDdGRkZGRkZGJykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIE1pbk5lZ2F0 aXZlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIE1pbiA9IH5NaW4gKyAxDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9U WVBFX05VTV9TSVpFXzE2Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW50RGVj U3R5bGU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWluTmVnYXRpdmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1pbiA+IDB4ODAwMDoN Cj4gPg0KPiA+ICsNCj4gPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPiBjdHguSS5saW5lLCAnSU5UMTYgdHlwZSBtaW5p bXVtIGNhblwndCBzbWFsbCB0aGFuIC0weDgwMDAsIGJpZyB0aGFuIDB4N0ZGRicpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgTWluID4gMHg3RkZGOg0KPiA+DQo+ID4gKw0KPiA+IHNlbGYuX19F cnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0K PiA+IGN0eC5JLmxpbmUsICdJTlQxNiB0eXBlIG1pbmltdW0gY2FuXCd0IHNtYWxsIHRoYW4gLTB4 ODAwMCwgYmlnIHRoYW4gMHg3RkZGJykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlm IE1pbk5lZ2F0aXZlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIE1pbiA9IH5N aW4gKyAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0g RUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBp ZiBJbnREZWNTdHlsZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBNaW5O ZWdhdGl2ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWluID4g MHg4MDoNCj4gPg0KPiA+ICsNCj4gPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPiBjdHguSS5saW5lLCAnSU5UOCB0eXBl IG1pbmltdW0gY2FuXCd0IHNtYWxsIHRoYW4gLTB4ODAsIGJpZyB0aGFuIDB4N0YnKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlmIE1pbiA+IDB4N0Y6DQo+ID4NCj4gPiArDQo+ID4gc2VsZi5fX0Vy cm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ ID4gY3R4LkkubGluZSwgJ0lOVDggdHlwZSBtaW5pbXVtIGNhblwndCBzbWFsbCB0aGFuIC0weDgw LCBiaWcgdGhhbiAweDdGJykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIE1pbk5l Z2F0aXZlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIE1pbiA9IH5NaW4gKyAx DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguTjIgIT0gTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBNYXhOZWdhdGl2ZSA9IFRydWUNCj4gPg0KPiA+ICsgICAgICAgIGlm IEludERlY1N0eWxlID09IEZhbHNlIGFuZCBNYXhOZWdhdGl2ZSA9PSBUcnVlOg0KPiA+DQo+ID4g Kw0KPiA+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFM SURfUEFSQU1FVEVSLA0KPiA+IGN0eC5BLmxpbmUsICcgXCctXCcgY2FuXCd0IGJlIHVzZWQgd2hl biBub3QgaW4gaW50IGRlY2ltYWwgdHlwZS4nKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5f X0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiAoSW50 RGVjU3R5bGUgPT0gRmFsc2UpIGFuZCAoTWF4ID4gKDEgPDwNCj4gPiBzZWxmLl9fQ3VyclFlc3RW YXJJbmZvLlZhclRvdGFsU2l6ZSkgLSAxKToNCj4gPg0KPiA+ICsNCj4gPiBzZWxmLl9fRXJyb3JI YW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPiBj dHguQS5saW5lLCAnQklUIHR5cGUgbWF4aW11bSBjYW5cJ3QgYmUgYmlnZ2VyIHRoYW4gMl5CaXRX aWR0aCAtMScpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgVHlwZSA9IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIEludERlY1N0eWxlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGlmIE1heE5lZ2F0aXZlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiBNYXggPiAweDgwMDAwMDAwMDAwMDAwMDA6DQo+ID4NCj4g PiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5W QUxJRF9QQVJBTUVURVIsDQo+ID4gY3R4LkEubGluZSwgJ0lOVDY0IHR5cGUgbWluaW11bSBjYW5c J3Qgc21hbGwgdGhhbiAtMHg4MDAwMDAwMDAwMDAwMDAwLCBiaWcNCj4gPiB0aGFuIDB4N0ZGRkZG RkZGRkZGRkZGRicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWF4ID4gMHg3RkZGRkZGRkZG RkZGRkZGOg0KPiA+DQo+ID4gKw0KPiA+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiA+IGN0eC5BLmxpbmUsICdJTlQ2NCB0 eXBlIG1pbmltdW0gY2FuXCd0IHNtYWxsIHRoYW4gLTB4ODAwMDAwMDAwMDAwMDAwMCwgYmlnDQo+ ID4gdGhhbiAweDdGRkZGRkZGRkZGRkZGRkYnKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgaWYgTWF4TmVnYXRpdmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgTWF4 ID0gfk1heCArIDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlm IE1heCA8IE1pbjogIw0KPiA+DQo+ID4gKw0KPiA+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiA+IGN0eC5BLmxpbmUsICdN YXhpbXVtIGNhblwndCBiZSBsZXNzIHRoYW4gTWluaW11bScpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05V TV9TSVpFXzMyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW50RGVjU3R5bGU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWF4TmVnYXRpdmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1heCA+IDB4ODAwMDAwMDA6DQo+ ID4NCj4gPiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4gY3R4LkEubGluZSwgJ0lOVDMyIHR5cGUgbWluaW11 bSBjYW5cJ3Qgc21hbGwgdGhhbiAtMHg4MDAwMDAwMCwgYmlnIHRoYW4NCj4gPiAweDdGRkZGRkZG JykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBNYXggPiAweDdGRkZGRkZGOg0KPiA+DQo+ID4g Kw0KPiA+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFM SURfUEFSQU1FVEVSLA0KPiA+IGN0eC5BLmxpbmUsICdJTlQzMiB0eXBlIG1pbmltdW0gY2FuXCd0 IHNtYWxsIHRoYW4gLTB4ODAwMDAwMDAsIGJpZyB0aGFuDQo+ID4gMHg3RkZGRkZGRicpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBNYXhOZWdhdGl2ZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICBNYXggPSB+TWF4ICsgMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgaWYgTWF4IDwgTWluOiAjDQo+ID4NCj4gPiArDQo+ID4gc2Vs Zi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVU RVIsDQo+ID4gY3R4LkEubGluZSwgJ01heGltdW0gY2FuXCd0IGJlIGxlc3MgdGhhbiBNaW5pbXVt JykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYg VHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBpZiBJbnREZWNTdHlsZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICBpZiBNYXhOZWdhdGl2ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgTWF4ID4gMHg4MDAwOg0KPiA+DQo+ID4gKw0KPiA+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiA+IGN0eC5BLmxpbmUs ICdJTlQxNiB0eXBlIG1pbmltdW0gY2FuXCd0IHNtYWxsIHRoYW4gLTB4ODAwMCwgYmlnIHRoYW4g MHg3RkZGJykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBNYXggPiAweDdGRkY6DQo+ID4NCj4g PiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5W QUxJRF9QQVJBTUVURVIsDQo+ID4gY3R4LkEubGluZSwgJ0lOVDE2IHR5cGUgbWluaW11bSBjYW5c J3Qgc21hbGwgdGhhbiAtMHg4MDAwLCBiaWcgdGhhbiAweDdGRkYnKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgaWYgTWF4TmVnYXRpdmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgTWF4ID0gfk1heCArIDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIGlmIE1heCA8IE1pbjogIw0KPiA+DQo+ID4gKw0KPiA+IHNlbGYuX19FcnJvckhh bmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiA+IGN0 eC5BLmxpbmUsICdNYXhpbXVtIGNhblwndCBiZSBsZXNzIHRoYW4gTWluaW11bScpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05V TV9TSVpFXzg6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBJbnREZWNTdHlsZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBNYXhOZWdhdGl2ZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWF4ID4gMHg4MDoNCj4gPg0KPiA+ ICsNCj4gPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZB TElEX1BBUkFNRVRFUiwNCj4gPiBjdHguQS5saW5lLCAnSU5UOCB0eXBlIG1pbmltdW0gY2FuXCd0 IHNtYWxsIHRoYW4gLTB4ODAsIGJpZyB0aGFuIDB4N0YnKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmIE1heCA+IDB4N0Y6DQo+ID4NCj4gPiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4gY3R4LkEubGluZSwg J0lOVDggdHlwZSBtaW5pbXVtIGNhblwndCBzbWFsbCB0aGFuIC0weDgwLCBiaWcgdGhhbiAweDdG JykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIE1heE5lZ2F0aXZlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIE1heCA9IH5NYXggKyAxDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBNYXggPCBNaW46ICMNCj4gPg0KPiA+ICsN Cj4gPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElE X1BBUkFNRVRFUiwNCj4gPiBjdHguQS5saW5lLCAnTWF4aW11bSBjYW5cJ3QgYmUgbGVzcyB0aGFu IE1pbmltdW0nKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5fX0N1cnJR ZXN0VmFySW5mby5Jc0JpdFZhcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguT3BPYmouU2V0 TWluTWF4U3RlcERhdGEoTWluLCBNYXgsIFN0ZXAsDQo+ID4gRUZJX0lGUl9UWVBFX05VTV9TSVpF XzMyKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBUeXBl ID0gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlDQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGN0eC5PcE9iai5TZXRNaW5NYXhTdGVwRGF0YShNaW4sIE1heCwgU3RlcCwNCj4gPiBF RklfSUZSX1RZUEVfTlVNX1NJWkVfNjQpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgVHlwZSA9 PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0 eC5PcE9iai5TZXRNaW5NYXhTdGVwRGF0YShNaW4sIE1heCwgU3RlcCwNCj4gPiBFRklfSUZSX1RZ UEVfTlVNX1NJWkVfMzIpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZS X1RZUEVfTlVNX1NJWkVfMTY6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5PcE9iai5T ZXRNaW5NYXhTdGVwRGF0YShNaW4sIE1heCwgU3RlcCwNCj4gPiBFRklfSUZSX1RZUEVfTlVNX1NJ WkVfMTYpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVN X1NJWkVfODoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4Lk9wT2JqLlNldE1pbk1heFN0 ZXBEYXRhKE1pbiwgTWF4LCBTdGVwLA0KPiA+IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84KQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5PcE9iag0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eSBWZnJTeW50YXhQYXJzZXIjdmZyTnVtZXJpY0ZsYWdzLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlz aXRWZnJOdW1lcmljRmxhZ3Moc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmck51bWVy aWNGbGFnc0NvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkxGbGFn cyA9IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSAmDQo+IEVGSV9JRlJfTlVNRVJJQ19T SVpFDQo+ID4NCj4gPiArICAgICAgICBWYXJTdG9yZVR5cGUgPQ0KPiA+IGdDVmZyRGF0YVN0b3Jh Z2UuR2V0VmFyU3RvcmVUeXBlKHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCkNCj4g Pg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAg SXNTZXRUeXBlID0gRmFsc2UNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBmb3IgRmxhZ3NGaWVsZEN0eCBpbiBj dHgubnVtZXJpY0ZsYWdzRmllbGQoKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguSEZsYWdz IHw9IEZsYWdzRmllbGRDdHguSEZsYWcNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguSXNEaXNw bGF5U3BlY2lmaWVkID0gRmxhZ3NGaWVsZEN0eC5Jc0Rpc3BsYXlTcGVjaWZpZWQNCj4gPg0KPiA+ ICsgICAgICAgICAgICBJc1NldFR5cGUgfD0gIEZsYWdzRmllbGRDdHguSXNTZXRUeXBlDQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgRmxhZ3NGaWVsZEN0eC5OdW1lcmljU2l6ZU9uZSgpICE9IE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8u SXNCaXRWYXIgPT0gRmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBjdHguTEZs YWdzID0gIChjdHguTEZsYWdzICYgfkVGSV9JRlJfTlVNRVJJQ19TSVpFKSB8DQo+ID4gRUZJX0lG Ul9OVU1FUklDX1NJWkVfMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIEZs YWdzRmllbGRDdHguTnVtZXJpY1NpemVUd28oKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4LkxGbGFncyAmIH5F RklfSUZSX05VTUVSSUNfU0laRSkgfA0KPiA+IEVGSV9JRlJfTlVNRVJJQ19TSVpFXzINCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4Lk51bWVyaWNTaXpl Rm91cigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJy UWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBjdHguTEZsYWdzID0gIChjdHguTEZsYWdzICYgfkVGSV9JRlJfTlVNRVJJQ19TSVpFKSB8 DQo+ID4gRUZJX0lGUl9OVU1FUklDX1NJWkVfNA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIEZsYWdzRmllbGRDdHguTnVtZXJpY1NpemVFaWdodCgpICE9IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIg PT0gRmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdzID0gIChj dHguTEZsYWdzICYgfkVGSV9JRlJfTlVNRVJJQ19TSVpFKSB8DQo+ID4gRUZJX0lGUl9OVU1FUklD X1NJWkVfOA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIEZsYWdzRmllbGRD dHguRGlzUGxheUludERlYygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlm IHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBjdHguTEZsYWdzID0gIChjdHguTEZsYWdzICYgfkVGSV9JRlJfRElT UExBWSkgfA0KPiA+IEVGSV9JRlJfRElTUExBWV9JTlRfREVDDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdzID0g IChjdHguTEZsYWdzICYgfkVES0lJX0lGUl9ESVNQTEFZX0JJVCkgfA0KPiA+IEVES0lJX0lGUl9E SVNQTEFZX0lOVF9ERUNfQklUDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg RmxhZ3NGaWVsZEN0eC5EaXNQbGF5VUludEhleCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdzID0gIChjdHguTEZsYWdzICYg fkVGSV9JRlJfRElTUExBWSkgfA0KPiA+IEVGSV9JRlJfRElTUExBWV9VSU5UX0RFQw0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg Y3R4LkxGbGFncyA9ICAoY3R4LkxGbGFncyAmIH5FREtJSV9JRlJfRElTUExBWV9CSVQpIHwNCj4g PiBFREtJSV9JRlJfRElTUExBWV9VSU5UX0RFQ19CSVQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4LkRpc1BsYXlVSW50SGV4KCkgIT0gTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZh ciA9PSBGYWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAg KGN0eC5MRmxhZ3MgJiB+RUZJX0lGUl9ESVNQTEFZKSB8DQo+ID4gRUZJX0lGUl9ESVNQTEFZX1VJ TlRfSEVYDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBjdHguTEZsYWdzID0gIChjdHguTEZsYWdzICYgfkVES0lJX0lGUl9ESVNQ TEFZX0JJVCkgfA0KPiA+IEVES0lJX0lGUl9ESVNQTEFZX1VJTlRfSEVYX0JJVA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9 PSBGYWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZv LlZhclN0b3JlSWQgIT0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQ6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIGlmIFZhclN0b3JlVHlwZSA9PQ0KPiA+IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5F RklfVkZSX1ZBUlNUT1JFX0JVRkZFUiBvciBWYXJTdG9yZVR5cGUNCj4gPT0NCj4gPiBFRklfVkZS X1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9FRkk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgIT0gKGN0eC5MRmxh Z3MgJg0KPiA+IEVGSV9JRlJfTlVNRVJJQ19TSVpFKToNCj4gPg0KPiA+ICsNCj4gPiBzZWxmLl9f RXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwN Cj4gPiBMaW5lLCAnTnVtZXJpYyBGbGFnIGlzIG5vdCBzYW1lIHRvIE51bWVyaWMgVmFyRGF0YSB0 eXBlJykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICMgdXBkYXRlIGRhdGEgdHlwZSBmb3IgbmFtZS92YWx1ZSBzdG9yZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBl ID0gY3R4LkxGbGFncyAmDQo+ID4gRUZJX0lGUl9OVU1FUklDX1NJWkUNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIFNpemUsIF8gPQ0KPiA+DQo+IGdDVmZyVmFyRGF0YVR5cGVEQi5HZXRE YXRhVHlwZVNpemVCeURhdGFUeXBlKHNlbGYuX19DdXJyUWVzdFZhckluZm8uDQo+ID4gVmFyVHlw ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX19DdXJyUWVzdFZhckluZm8u VmFyVG90YWxTaXplID0gU2l6ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgSXNTZXRUeXBl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5 cGUgPSBjdHguTEZsYWdzICYNCj4gPiBFRklfSUZSX05VTUVSSUNfU0laRQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZWxpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQg IT0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCj4gPiBhbmQgc2VsZi5fX0N1cnJRZXN0VmFySW5m by5Jc0JpdFZhcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTEZsYWdzICY9IEVES0lJX0lG Ul9ESVNQTEFZX0JJVA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5MRmxhZ3MgfD0gRURLSUlf SUZSX05VTUVSSUNfU0laRV9CSVQgJg0KPiA+IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVG90 YWxTaXplDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LkhGbGFncywg Y3R4LkxGbGFncw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0 IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjbnVtZXJpY0ZsYWdzRmll bGQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdE51bWVyaWNGbGFnc0ZpZWxkKHNlbGYsDQo+ID4g Y3R4OlZmclN5bnRheFBhcnNlci5OdW1lcmljRmxhZ3NGaWVsZENvbnRleHQpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAg ICAgaWYgY3R4Lk51bWJlcigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2Vs Zi5fX1RyYW5zTnVtKGN0eC5OLnRleHQpICE9IDA6DQo+ID4NCj4gPiArDQo+IHNlbGYuX19FcnJv ckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiA+IExpbmUp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguTnVtZXJpY1NpemVPbmUoKSAh PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8u SXNCaXRWYXIgPT0gRmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5Jc1NldFR5 cGUgPSBUcnVlDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsNCj4gPiBz ZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFN RVRFUiwNCj4gPiBMaW5lLCAnQ2FuIG5vdCBzcGVjaWZ5IHRoZSBzaXplIG9mIHRoZSBudW1lcmlj IHZhbHVlIGZvciBCSVQgZmllbGQnKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYg Y3R4Lk51bWVyaWNTaXplVHdvKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBz ZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBjdHguSXNTZXRUeXBlID0gVHJ1ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4gTGluZSwgJ0NhbiBub3Qgc3BlY2lmeSB0 aGUgc2l6ZSBvZiB0aGUgbnVtZXJpYyB2YWx1ZSBmb3IgQklUIGZpZWxkJykNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5OdW1lcmljU2l6ZUZvdXIoKSAhPSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0g RmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5Jc1NldFR5cGUgPSBUcnVlDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsNCj4gPiBzZWxmLl9fRXJyb3JI YW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPiBM aW5lLCAnQ2FuIG5vdCBzcGVjaWZ5IHRoZSBzaXplIG9mIHRoZSBudW1lcmljIHZhbHVlIGZvciBC SVQgZmllbGQnKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Lk51bWVyaWNT aXplRWlnaHQoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJy UWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGN0eC5Jc1NldFR5cGUgPSBUcnVlDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsNCj4gPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9J TlZBTElEX1BBUkFNRVRFUiwNCj4gPiBMaW5lLCAnQ2FuIG5vdCBzcGVjaWZ5IHRoZSBzaXplIG9m IHRoZSBudW1lcmljIHZhbHVlIGZvciBCSVQgZmllbGQnKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgaWYgY3R4LkRpc1BsYXlJbnREZWMoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGN0eC5Jc0Rpc3BsYXlTcGVjaWZpZWQgPSBUcnVlDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBpZiBjdHguRGlzUGxheVVJbnRIZXgoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGN0eC5Jc0Rpc3BsYXlTcGVjaWZpZWQgPSBUcnVlDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBpZiBjdHguRGlzUGxheVVJbnRIZXgoKSAhPSBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGN0eC5Jc0Rpc3BsYXlTcGVjaWZpZWQgPSBUcnVlDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBpZiBjdHgucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkgIT0gTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguSEZsYWcgPSBjdHgucXVlc3Rpb25oZWFkZXJG bGFnc0ZpZWxkKCkuUUhGbGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g Y3R4LkhGbGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRPbmVP Zi4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50T25lT2Yoc2VsZiwNCj4gPiBj dHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE9uZU9mQ29udGV4dCk6DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBPT2JqID0gY3R4Lk9wT2JqDQo+ID4NCj4gPiArICAgICAgICBM aW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIE9PYmouU2V0TGluZU5vKExp bmUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fQ3VycmVudFF1ZXN0aW9uID0gT09iai5HZXRR dWVzdGlvbigpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+ DQo+ID4gKyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCj4gPg0K PiA+ICsgICAgICAgICAgICBHdWlkT2JqID0gQ0lmckd1aWQoMCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBHdWlkT2JqLlNldEd1aWQoRURLSUlfSUZSX0JJVF9WQVJTVE9SRV9HVUlEKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIEd1aWRPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIEd1aWRPYmouU2V0U2NvcGUoMSkgIyBwb3MNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgICMgY2hlY2sgZGF0YSB0eXBlDQo+ID4NCj4gPiArICAgICAgICBpZiBz ZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQgIT0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFM SUQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0Jp dFZhcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgTEZsYWdzID0gRURLSUlfSUZSX05VTUVS SUNfU0laRV9CSVQgJg0KPiA+IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVG90YWxTaXplDQo+ ID4NCj4gPiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihPT2JqLlNldEZsYWdzRm9yQml0Rmll bGQoT09iai5HZXRGbGFncygpLExGbGFncyksIExpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgRGF0YVR5cGVTaXplLCBSZXR1cm5Db2Rl ID0NCj4gPg0KPiBnQ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShz ZWxmLl9fQ3VyclFlc3RWYXJJbmZvLg0KPiA+IFZhclR5cGUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgTGluZSwgJ09uZU9mIHZhcmlk IGlzIG5vdCB0aGUNCj4gdmFsaWQNCj4gPiBkYXRhIHR5cGUnKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBpZiBEYXRhVHlwZVNpemUgIT0gMCBhbmQgRGF0YVR5cGVTaXplICE9DQo+ID4gc2Vs Zi5fX0N1cnJRZXN0VmFySW5mby5WYXJUb3RhbFNpemU6DQo+ID4NCj4gPiArDQo+ID4gc2VsZi5f X0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIs DQo+ID4gTGluZSwgJ09uZU9mIHZhcmlkIGRvZXNuXCd0IHN1cHBvcnQgYXJyYXknKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKE9PYmouU2V0RmxhZ3MoT09i ai5HZXRGbGFncygpLA0KPiA+IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSksIExpbmUp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6 DQo+ID4NCj4gPiArDQo+ID4NCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihPT2JqLlNldEZsYWdzRm9y Qml0RmllbGQoY3R4LnZmck9uZW9mRmxhZ3NGaWVsZCgpLkhGbGFnDQo+ID4gcyxjdHgudmZyT25l b2ZGbGFnc0ZpZWxkKCkuTEZsYWdzKSwgY3R4LkYubGluZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVyKE9PYmouU2V0RmxhZ3Mo Y3R4LnZmck9uZW9mRmxhZ3NGaWVsZCgpLkhGbGFncywNCj4gPiBjdHgudmZyT25lb2ZGbGFnc0Zp ZWxkKCkuTEZsYWdzKSwgY3R4LkYubGluZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IFNocmlua1NpemUgPSAwDQo+ID4NCj4gPiArICAgICAgICBJc1N1cHBvcnRlZCA9IFRydWUNCj4g Pg0KPiA+ICsgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgVHlwZSA9IHNlbGYuX19DdXJyUWVzdFZhckluZm8u VmFyVHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICMgQmFzZSBvbiB0aGUgdHlwZSB0byBrbm93 IHRoZSBhY3R1YWwgdXNlZCBzaXplLCBzaHJpbmsgdGhlIGJ1ZmZlcg0KPiBzaXplDQo+ID4gYWxs b2NhdGUgYmVmb3JlLg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9U WVBFX05VTV9TSVpFXzg6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFNocmlua1NpemUgPSAy MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJ WkVfMTY6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFNocmlua1NpemUgPSAxOA0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIFNocmlua1NpemUgPSAxMg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIFNocmlua1NpemUgPSAwICMNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBJc1N1cHBvcnRlZCA9IEZhbHNlDQo+ID4N Cj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICPjgIBRdWVzdGlvbiBz dG9yZWQgaW4gYml0IGZpZWxkcyBzYXZlZCBhcyBVSU5UMzIgdHlwZSwgc28gdGhlDQo+ID4gU2hy aW5rU2l6ZSBzYW1lIGFzIEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMi4NCj4gPg0KPiA+ICsgICAg ICAgICAgICBTaHJpbmtTaXplID0gMTINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICMg T09iai5TaHJpbmtCaW5TaXplKFNocmlua1NpemUpDQo+ID4NCj4gPiArICAgICAgICBpZiBJc1N1 cHBvcnRlZCA9PSBGYWxzZToNCj4gPg0KPiA+ICsNCj4gPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPiBMaW5lLCAnT25l T2YgcXVlc3Rpb24gb25seSBzdXBwb3J0IFVJTlQ4LCBVSU5UMTYsIFVJTlQzMiBhbmQgVUlOVDY0 DQo+IGRhdGENCj4gPiB0eXBlLicpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBjdHgu Tm9kZS5EYXRhID0gT09iag0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0 eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJPbmVvZkZsYWdzRmllbGQu DQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmck9uZW9mRmxhZ3NGaWVsZChzZWxmLA0KPiA+IGN0 eDpWZnJTeW50YXhQYXJzZXIuVmZyT25lb2ZGbGFnc0ZpZWxkQ29udGV4dCk6DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBjdHguTEZsYWdzID0gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5W YXJUeXBlICYNCj4gRUZJX0lGUl9OVU1FUklDX1NJWkUNCj4gPg0KPiA+ICsgICAgICAgIFZhclN0 b3JlVHlwZSA9DQo+ID4gZ0NWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZVR5cGUoc2VsZi5fX0N1 cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkKQ0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5z dGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBJc1NldFR5cGUgPSBGYWxzZQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGZvciBGbGFnc0ZpZWxkQ3R4IGluIGN0eC5udW1lcmljRmxhZ3NGaWVsZCgpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGN0eC5IRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5IRmxhZw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGN0eC5Jc0Rpc3BsYXlTcGVjaWZpZWQgPSBGbGFnc0ZpZWxkQ3R4 LklzRGlzcGxheVNwZWNpZmllZA0KPiA+DQo+ID4gKyAgICAgICAgICAgIElzU2V0VHlwZSB8PSBG bGFnc0ZpZWxkQ3R4LklzU2V0VHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIEZsYWdzRmll bGRDdHguTnVtZXJpY1NpemVPbmUoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4LkxGbGFncyAmIH5FRklfSUZS X05VTUVSSUNfU0laRSkgfA0KPiA+IEVGSV9JRlJfTlVNRVJJQ19TSVpFXzENCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4Lk51bWVyaWNTaXplVHdvKCkg IT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFy SW5mby5Jc0JpdFZhciA9PSBGYWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGN0 eC5MRmxhZ3MgPSAgKGN0eC5MRmxhZ3MgJiB+RUZJX0lGUl9OVU1FUklDX1NJWkUpIHwNCj4gPiBF RklfSUZSX05VTUVSSUNfU0laRV8yDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgRmxhZ3NGaWVsZEN0eC5OdW1lcmljU2l6ZUZvdXIoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4LkxGbGFn cyAmIH5FRklfSUZSX05VTUVSSUNfU0laRSkgfA0KPiA+IEVGSV9JRlJfTlVNRVJJQ19TSVpFXzQN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4Lk51bWVy aWNTaXplRWlnaHQoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBzZWxm Ll9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4LkxGbGFncyAmIH5FRklfSUZSX05VTUVSSUNf U0laRSkgfA0KPiA+IEVGSV9JRlJfTlVNRVJJQ19TSVpFXzgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4LkRpc1BsYXlJbnREZWMoKSAhPSBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0 VmFyID09IEZhbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9 ICAoY3R4LkxGbGFncyAmIH5FRklfSUZSX0RJU1BMQVkpIHwNCj4gPiBFRklfSUZSX0RJU1BMQVlf SU5UX0RFQw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4LkxGbGFncyAmIH5FREtJSV9JRlJfRElT UExBWV9CSVQpIHwNCj4gPiBFREtJSV9JRlJfRElTUExBWV9JTlRfREVDX0JJVA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIEZsYWdzRmllbGRDdHguRGlzUGxheVVJbnRIZXgo KSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RW YXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg Y3R4LkxGbGFncyA9ICAoY3R4LkxGbGFncyAmIH5FRklfSUZSX0RJU1BMQVkpIHwNCj4gPiBFRklf SUZSX0RJU1BMQVlfVUlOVF9ERUMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAgKGN0eC5MRmxhZ3MgJiB+ RURLSUlfSUZSX0RJU1BMQVlfQklUKSB8DQo+ID4gRURLSUlfSUZSX0RJU1BMQVlfVUlOVF9ERUNf QklUDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgRmxhZ3NGaWVsZEN0eC5E aXNQbGF5VUludEhleCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIHNl bGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBjdHguTEZsYWdzID0gIChjdHguTEZsYWdzICYgfkVGSV9JRlJfRElTUExB WSkgfA0KPiA+IEVGSV9JRlJfRElTUExBWV9VSU5UX0hFWA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAo Y3R4LkxGbGFncyAmIH5FREtJSV9JRlJfRElTUExBWV9CSVQpIHwNCj4gPiBFREtJSV9JRlJfRElT UExBWV9VSU5UX0hFWF9CSVQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYu X19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkICE9IEVGSV9WQVJTVE9SRV9J RF9JTlZBTElEOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBWYXJTdG9yZVR5cGUgPT0N Cj4gPiBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVIgb3IgVmFy U3RvcmVUeXBlDQo+ID09DQo+ID4gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RP UkVfRUZJOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0 VmFySW5mby5WYXJUeXBlICE9IChjdHguTEZsYWdzICYNCj4gPiBFRklfSUZSX05VTUVSSUNfU0la RSk6DQo+ID4NCj4gPiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4gTGluZSwgJ051bWVyaWMgRmxhZyBpcyBu b3Qgc2FtZSB0byBOdW1lcmljIFZhckRhdGEgdHlwZScpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAjIHVwZGF0ZSBkYXRhIHR5 cGUgZm9yIG5hbWUvdmFsdWUgc3RvcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSA9IGN0eC5MRmxhZ3MgJg0KPiA+IEVGSV9JRlJf TlVNRVJJQ19TSVpFDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBTaXplLCBfID0NCj4g Pg0KPiBnQ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShzZWxmLl9f Q3VyclFlc3RWYXJJbmZvLg0KPiA+IFZhclR5cGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZSA9IFNpemUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbGlmIElzU2V0VHlwZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlID0gY3R4LkxGbGFncyAmDQo+ID4gRUZJX0lG Ul9OVU1FUklDX1NJWkUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgc2VsZi5f X0N1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkICE9IEVGSV9WQVJTVE9SRV9JRF9JTlZBTElEOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5MRmxhZ3MgJj0gRURLSUlfSUZSX0RJU1BMQVlfQklU DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LkxGbGFncyB8PSBFREtJSV9JRlJfTlVNRVJJQ19T SVpFX0JJVCAmDQo+ID4gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUb3RhbFNpemUNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguSEZsYWdzLCBjdHguTEZsYWdzDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdHJpbmdUeXBlLg0K PiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdHJpbmdUeXBlKHNlbGYsDQo+ID4g Y3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdHJpbmdUeXBlQ29udGV4dCk6DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ ID4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFBhc3N3b3JkKCkgIT0gTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRQYXNzd29yZCgpLk5v ZGUNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LnZmclN0YXRlbWVudFN0cmluZygpICE9IE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50U3Ry aW5nKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBfR0VUX0NVUlJRRVNUX0FSUkFZX1NJWkUoc2VsZik6DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBTaXplID0gMQ0KPiA+DQo+ID4gKyAgICAgICAgaWYg c2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIFNpemUgPSAxDQo+ID4NCj4gPiArICAgICAgICBpZiBz ZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIFNpemUgPSAyDQo+ID4NCj4gPiArICAgICAgICBpZiBz ZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMy Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIFNpemUgPSA0DQo+ID4NCj4gPiArICAgICAgICBpZiBz ZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIFNpemUgPSA4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gaW50KHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVG90YWxTaXplIC8g U2l6ZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBh cnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN0cmluZy4N Cj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50U3RyaW5nKHNlbGYsDQo+ID4gY3R4 OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdHJpbmdDb250ZXh0KToNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19Jc1N0cmluZ09wID0gVHJ1ZQ0KPiA+DQo+ID4gKyAg ICAgICAgU09iaiA9IGN0eC5PcE9iag0KPiA+DQo+ID4gKyAgICAgICAgU09iai5TZXRMaW5lTm8o Y3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fQ3VycmVudFF1ZXN0aW9u ID0gU09iai5HZXRRdWVzdGlvbigpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4 LkZMQUdTKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBIRmxhZ3MgPSBjdHgudmZy U3RyaW5nRmxhZ3NGaWVsZCgpLkhGbGFncw0KPiA+DQo+ID4gKyAgICAgICAgICAgIExGbGFncyA9 IGN0eC52ZnJTdHJpbmdGbGFnc0ZpZWxkKCkuTEZsYWdzDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fX0Vycm9ySGFuZGxlcihTT2JqLlNldEZsYWdzKEhGbGFncywgTEZsYWdzKSwgY3R4LkYu bGluZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5LZXkoKSAhPSBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIEtleSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVy KDApKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19Bc3NpZ25RdWVzdGlvbktleShTT2Jq LCBLZXkpDQo+ID4NCj4gPiArICAgICAgICAgICAgU3RyaW5nTWluU2l6ZSA9IHNlbGYuX19UcmFu c051bShjdHguTnVtYmVyKDEpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFN0cmluZ01heFNpemUg PSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigyKSkNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgU3RyaW5nTWluU2l6ZSA9IHNlbGYuX19UcmFuc051bShj dHguTnVtYmVyKDApKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFN0cmluZ01heFNpemUgPSBzZWxm Ll9fVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IFZhckFycmF5U2l6ZSA9IHNlbGYuX0dFVF9DVVJSUUVTVF9BUlJBWV9TSVpFKCkNCj4gPg0KPiA+ ICsgICAgICAgIGlmIFN0cmluZ01pblNpemUgPiAweEZGOg0KPiA+DQo+ID4gKw0KPiA+IHNlbGYu X19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVS LA0KPiA+IGN0eC5NaW4ubGluZSwgIlN0cmluZyBNaW5TaXplIHRha2VzIG9ubHkgb25lIGJ5dGUs IHdoaWNoIGNhbid0IGJlIGxhcmdlciB0aGFuDQo+ID4gMHhGRi4iKQ0KPiA+DQo+ID4gKyAgICAg ICAgaWYgVmFyQXJyYXlTaXplICE9IDAgYW5kIFN0cmluZ01pblNpemUgPiBWYXJBcnJheVNpemU6 DQo+ID4NCj4gPiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4gY3R4Lk1pbi5saW5lLCAiU3RyaW5nIE1pblNp emUgY2FuJ3QgYmUgbGFyZ2VyIHRoYW4gdGhlIG1heCBudW1iZXIgb2YNCj4gPiBlbGVtZW50cyBp biBzdHJpbmcgYXJyYXkuIikNCj4gPg0KPiA+ICsgICAgICAgIFNPYmouU2V0TWluU2l6ZShTdHJp bmdNaW5TaXplKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgU3RyaW5nTWF4U2l6 ZSA+IDB4RkY6DQo+ID4NCj4gPiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4gY3R4Lk1heC5saW5lLCAiU3Ry aW5nIE1heFNpemUgdGFrZXMgb25seSBvbmUgYnl0ZSwgd2hpY2ggY2FuJ3QgYmUgbGFyZ2VyDQo+ IHRoYW4NCj4gPiAweEZGLiIpDQo+ID4NCj4gPiArICAgICAgICBlbGlmIFZhckFycmF5U2l6ZSAh PSAwIGFuZCBTdHJpbmdNYXhTaXplID4gVmFyQXJyYXlTaXplOg0KPiA+DQo+ID4gKw0KPiA+IHNl bGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1F VEVSLA0KPiA+IGN0eC5NYXgubGluZSwgIlN0cmluZyBNYXhTaXplIGNhbid0IGJlIGxhcmdlciB0 aGFuIHRoZSBtYXggbnVtYmVyIG9mDQo+ID4gZWxlbWVudHMgaW4gc3RyaW5nIGFycmF5LiIpDQo+ ID4NCj4gPiArICAgICAgICBlbGlmIFN0cmluZ01heFNpemUgPCBTdHJpbmdNaW5TaXplOg0KPiA+ DQo+ID4gKw0KPiA+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X0lOVkFMSURfUEFSQU1FVEVSLA0KPiA+IGN0eC5NYXgubGluZSwgIlN0cmluZyBNYXhTaXplIGNh bid0IGJlIGxlc3MgdGhhbiBTdHJpbmcgTWluU2l6ZS4iKQ0KPiA+DQo+ID4gKyAgICAgICAgU09i ai5TZXRNYXhTaXplKFN0cmluZ01heFNpemUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBjdHguTm9kZS5EYXRhID0gU09iag0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fX0lzU3RyaW5nT3AgPSBGYWxzZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdHJpbmdGbGFn c0ZpZWxkLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdHJpbmdGbGFnc0ZpZWxkKHNlbGYs DQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdHJpbmdGbGFnc0ZpZWxkQ29udGV4dCk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+ DQo+ID4gKyAgICAgICAgZm9yIEZsYWdzRmllbGRDdHggaW4gY3R4LnN0cmluZ0ZsYWdzRmllbGQo KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguSEZsYWdzIHw9IEZsYWdzRmllbGRDdHguSEZs YWcNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTEZsYWdzIHw9IEZsYWdzRmllbGRDdHguTEZs YWcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguSEZsYWdzLCBjdHgu TEZsYWdzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNzdHJpbmdGbGFnc0ZpZWxkLg0K PiA+DQo+ID4gKyAgICBkZWYgdmlzaXRTdHJpbmdGbGFnc0ZpZWxkKHNlbGYsDQo+IGN0eDpWZnJT eW50YXhQYXJzZXIuU3RyaW5nRmxhZ3NGaWVsZENvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpICE9IDA6DQo+ID4NCj4gPiArDQo+IHNl bGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0K PiA+IGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHgucXVlc3Rpb25o ZWFkZXJGbGFnc0ZpZWxkKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg ICAgICBjdHguSEZsYWcgPSBjdHgucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkuUUhGbGFnDQo+ ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5MRmxhZyA9 IDB4MDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiAgY3R4LkhGbGFnLCBj dHguTEZsYWcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFBh c3N3b3JkLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRQYXNzd29yZChzZWxm LA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UGFzc3dvcmRDb250ZXh0KToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFBPYmogPSBjdHguT3BPYmoNCj4gPg0KPiA+ ICsgICAgICAgIFBPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5fX0N1cnJlbnRRdWVzdGlvbiA9IFBPYmouR2V0UXVlc3Rpb24oKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5LZXkoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIEtleSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX19Bc3NpZ25RdWVzdGlvbktleShQT2JqLCBLZXkpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgUGFzc1dvcmRNaW5TaXplID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIo MSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgUGFzc3dvcmRNYXhTaXplID0gc2VsZi5fX1RyYW5z TnVtKGN0eC5OdW1iZXIoMikpDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIFBhc3NXb3JkTWluU2l6ZSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDAp KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFBhc3N3b3JkTWF4U2l6ZSA9IHNlbGYuX19UcmFuc051 bShjdHguTnVtYmVyKDEpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LkZM QUdTKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBIRmxhZ3MgPSBjdHgudmZyUGFz c3dvcmRGbGFnc0ZpZWxkKCkuSEZsYWdzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX0Vy cm9ySGFuZGxlcihQT2JqLlNldEZsYWdzKEhGbGFncyksIGN0eC5GLmxpbmUpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBWYXJBcnJheVNpemUgPSBzZWxmLl9HRVRfQ1VSUlFFU1RfQVJS QVlfU0laRSgpDQo+ID4NCj4gPiArICAgICAgICBpZiBQYXNzV29yZE1pblNpemUgPiAweEZGOg0K PiA+DQo+ID4gKw0KPiA+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiA+IGN0eC5NaW4ubGluZSwgIlN0cmluZyBNaW5TaXpl IHRha2VzIG9ubHkgb25lIGJ5dGUsIHdoaWNoIGNhbid0IGJlIGxhcmdlciB0aGFuDQo+ID4gMHhG Ri4iKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgVmFyQXJyYXlTaXplICE9IDAgYW5kIFBhc3NXb3Jk TWluU2l6ZSA+IFZhckFycmF5U2l6ZToNCj4gPg0KPiA+ICsNCj4gPiBzZWxmLl9fRXJyb3JIYW5k bGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPiBjdHgu TWluLmxpbmUsICJTdHJpbmcgTWluU2l6ZSBjYW4ndCBiZSBsYXJnZXIgdGhhbiB0aGUgbWF4IG51 bWJlciBvZg0KPiA+IGVsZW1lbnRzIGluIHN0cmluZyBhcnJheS4iKQ0KPiA+DQo+ID4gKyAgICAg ICAgUE9iai5TZXRNaW5TaXplKFBhc3NXb3JkTWluU2l6ZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGlmIFBhc3N3b3JkTWF4U2l6ZSA+IDB4RkY6DQo+ID4NCj4gPiArDQo+ID4gc2Vs Zi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVU RVIsDQo+ID4gY3R4Lk1heC5saW5lLCAiU3RyaW5nIE1heFNpemUgdGFrZXMgb25seSBvbmUgYnl0 ZSwgd2hpY2ggY2FuJ3QgYmUgbGFyZ2VyDQo+IHRoYW4NCj4gPiAweEZGLiIpDQo+ID4NCj4gPiAr ICAgICAgICBlbGlmIFZhckFycmF5U2l6ZSAhPSAwIGFuZCBQYXNzd29yZE1heFNpemUgPiBWYXJB cnJheVNpemU6DQo+ID4NCj4gPiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4gY3R4Lk1heC5saW5lLCAiU3Ry aW5nIE1heFNpemUgY2FuJ3QgYmUgbGFyZ2VyIHRoYW4gdGhlIG1heCBudW1iZXIgb2YNCj4gPiBl bGVtZW50cyBpbiBzdHJpbmcgYXJyYXkuIikNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgUGFzc3dv cmRNYXhTaXplIDwgUGFzc1dvcmRNaW5TaXplOg0KPiA+DQo+ID4gKw0KPiA+IHNlbGYuX19FcnJv ckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiA+ IGN0eC5NYXgubGluZSwgIlN0cmluZyBNYXhTaXplIGNhbid0IGJlIGxlc3MgdGhhbiBTdHJpbmcg TWluU2l6ZS4iKQ0KPiA+DQo+ID4gKyAgICAgICAgUE9iai5TZXRNYXhTaXplKFBhc3N3b3JkTWF4 U2l6ZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBQT2Jq DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclBhc3N3b3JkRmxhZ3NGaWVsZC4NCj4gPg0KPiA+ICsg ICAgZGVmIHZpc2l0VmZyUGFzc3dvcmRGbGFnc0ZpZWxkKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRh eFBhcnNlci5WZnJQYXNzd29yZEZsYWdzRmllbGRDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBm b3IgRmxhZ3NGaWVsZEN0eCBpbiBjdHgucGFzc3dvcmRGbGFnc0ZpZWxkKCk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgY3R4LkhGbGFncyB8PSBGbGFnc0ZpZWxkQ3R4LkhGbGFnDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LkhGbGFncw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjcGFzc3dvcmRGbGFnc0ZpZWxkLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRQ YXNzd29yZEZsYWdzRmllbGQoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLlBhc3N3b3Jk RmxhZ3NGaWVsZENvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5O dW1iZXIoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuX19UcmFuc051 bShjdHguTnVtYmVyKCkpICE9IDA6DQo+ID4NCj4gPiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIo VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiA+IGN0eC5zdGFydC5saW5l KQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguSEZs YWcgPSBjdHgucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkuUUhGbGFnDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LkhGbGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+ID4gVmZy U3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudE9yZGVyZWRMaXN0Lg0KPiA+DQo+ID4gKyAgICBkZWYg dmlzaXRWZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdChzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50T3JkZXJlZExpc3RDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIE9MT2JqID0gY3R4Lk9wT2JqDQo+ID4NCj4gPiArICAgICAgICBPTE9iai5TZXRM aW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fQ3VycmVudFF1 ZXN0aW9uID0gT0xPYmouR2V0UXVlc3Rpb24oKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0lz T3JkZXJlZExpc3QgPSBUcnVlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZp c2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgVmFyQXJyYXlT aXplID0gc2VsZi5fR0VUX0NVUlJRRVNUX0FSUkFZX1NJWkUoKQ0KPiA+DQo+ID4gKyAgICAgICAg aWYgVmFyQXJyYXlTaXplID4gMHhGRjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBPTE9iai5TZXRN YXhDb250YWluZXJzKDB4RkYpDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIE9MT2JqLlNldE1heENvbnRhaW5lcnMoVmFyQXJyYXlTaXplKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Lk1heENvbnRhaW5lcnMoKSAhPSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIE1heENvbnRhaW5lcnMgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51 bWJlcigpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIE1heENvbnRhaW5lcnMgPiAweEZGOg0K PiA+DQo+ID4gKw0KPiA+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiA+IGN0eC5NLmxpbmUsICJPcmRlcmVkTGlzdCBNYXhD b250YWluZXJzIHRha2VzIG9ubHkgb25lIGJ5dGUsIHdoaWNoIGNhbid0IGJlDQo+ID4gbGFyZ2Vy IHRoYW4gMHhGRi4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgVmFyQXJyYXlTaXplICE9 IDAgYW5kIE1heENvbnRhaW5lcnMgPiBWYXJBcnJheVNpemU6DQo+ID4NCj4gPiArDQo+ID4gc2Vs Zi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVU RVIsDQo+ID4gY3R4Lk0ubGluZSwiT3JkZXJlZExpc3QgTWF4Q29udGFpbmVycyBjYW4ndCBiZSBs YXJnZXIgdGhhbiB0aGUgbWF4DQo+IG51bWJlcg0KPiA+IG9mIGVsZW1lbnRzIGluIGFycmF5LiIp DQo+ID4NCj4gPiArICAgICAgICAgICAgT0xPYmouU2V0TWF4Q29udGFpbmVycyhNYXhDb250YWlu ZXJzKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LkZMQUdTKCkgIT0gTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBIRmxhZ3MgPSBjdHgudmZyT3JkZXJlZExpc3RGbGFn cygpLkhGbGFncw0KPiA+DQo+ID4gKyAgICAgICAgICAgIExGbGFncyA9IGN0eC52ZnJPcmRlcmVk TGlzdEZsYWdzKCkuTEZsYWdzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFu ZGxlcihPTE9iai5TZXRGbGFncyhIRmxhZ3MsIExGbGFncyksIGN0eC5GLmxpbmUpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gT0xPYmoNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19Jc09yZGVyZWRMaXN0ID0gRmFsc2UNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjdmZyT3JkZXJlZExpc3RGbGFncy4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0 VmZyT3JkZXJlZExpc3RGbGFncyhzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyT3Jk ZXJlZExpc3RGbGFnc0NvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGZvciBG bGFnc0ZpZWxkQ3R4IGluIGN0eC5vcmRlcmVkbGlzdEZsYWdzRmllbGQoKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBjdHguSEZsYWdzIHw9IEZsYWdzRmllbGRDdHguSEZsYWcNCj4gPg0KPiA+ICsg ICAgICAgICAgICBjdHguTEZsYWdzIHw9IEZsYWdzRmllbGRDdHguTEZsYWcNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguSEZsYWdzLCBjdHguTEZsYWdzDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNvcmRlcmVkbGlzdEZsYWdzRmllbGQuDQo+ID4NCj4gPiAr ICAgIGRlZiB2aXNpdE9yZGVyZWRsaXN0RmxhZ3NGaWVsZChzZWxmLA0KPiA+IGN0eDpWZnJTeW50 YXhQYXJzZXIuT3JkZXJlZGxpc3RGbGFnc0ZpZWxkQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgaWYgY3R4Lk51bWJlcigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkgIT0gMDoNCj4gPg0KPiA+ICsNCj4g c2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQs DQo+ID4gY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC5xdWVzdGlv bmhlYWRlckZsYWdzRmllbGQoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5I RmxhZyA9IGN0eC5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKS5RSEZsYWcNCj4gPg0KPiA+ICsg ICAgICAgIGVsaWYgY3R4LlVuaVF1ZUZsYWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGN0eC5MRmxhZyA9IDB4MDENCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4Lk5vRW1wdHlG bGFnKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTEZsYWcgPSAweDAyDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gIGN0eC5IRmxhZywgY3R4LkxGbGFn DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnREYXRlLg0KPiA+DQo+ID4gKyAgICBkZWYg dmlzaXRWZnJTdGF0ZW1lbnREYXRlKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnREYXRlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBET2Jq ID0gY3R4Lk9wT2JqDQo+ID4NCj4gPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4g Pg0KPiA+ICsgICAgICAgIERPYmouU2V0TGluZU5vKExpbmUpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgaWYgY3R4LnZmclF1ZXN0aW9uSGVhZGVyKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUg PT0gRUZJX0lGUl9UWVBFX09USEVSOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9f Q3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX0RBVEUNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KPiA+DQo+ID4g Kw0KPiA+IHNlbGYuX19FcnJvckhhbmRsZXIoRE9iai5TZXRGbGFncyhFRklfSUZSX1FVRVNUSU9O X0ZMQUdfREVGQVVMVCwNCj4gPiBjdHgudmZyRGF0ZUZsYWdzKCkuTEZsYWdzKSwgY3R4LkYxLmxp bmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIFllYXIgPSBzZWxmLl9fVHJhbnNJZChjdHguU3RyaW5nSWRlbnRp ZmllcigwKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBZZWFyICs9ICcuJw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIFllYXIgKz0gc2VsZi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoMSkp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgTW9udGggPSBzZWxmLl9fVHJhbnNJ ZChjdHguU3RyaW5nSWRlbnRpZmllcigyKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBNb250aCAr PSAnLicNCj4gPg0KPiA+ICsgICAgICAgICAgICBNb250aCArPSBzZWxmLl9fVHJhbnNJZChjdHgu U3RyaW5nSWRlbnRpZmllcigzKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBE YXkgPSBzZWxmLl9fVHJhbnNJZChjdHguU3RyaW5nSWRlbnRpZmllcig0KSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBEYXkgKz0gJy4nDQo+ID4NCj4gPiArICAgICAgICAgICAgRGF5ICs9IHNlbGYu X19UcmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVyKDUpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQo+ID4NCj4gPiArDQo+ID4gc2Vs Zi5fX0Vycm9ySGFuZGxlcihET2JqLlNldEZsYWdzKEVGSV9JRlJfUVVFU1RJT05fRkxBR19ERUZB VUxULA0KPiA+IGN0eC52ZnJEYXRlRmxhZ3MoKS5MRmxhZ3MpLCBjdHguRjIubGluZSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBRSWQsIF8gPSBzZWxmLl9fQ1ZmclF1ZXN0aW9u REIuUmVnaXN0ZXJPbGREYXRlUXVlc3Rpb24oWWVhciwNCj4gPiBNb250aCwgRGF5LCBFRklfUVVF U1RJT05fSURfSU5WQUxJRCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBET2JqLlNldFF1ZXN0aW9u SWQoUUlkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIERPYmouU2V0RmxhZ3MoRUZJX0lGUl9RVUVT VElPTl9GTEFHX0RFRkFVTFQsDQo+ID4gUUZfREFURV9TVE9SQUdFX1RJTUUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgRE9iai5TZXRQcm9tcHQoc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkp KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIERPYmouU2V0SGVscChzZWxmLl9fVHJhbnNOdW0oY3R4 Lk51bWJlcigxKSkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgU2l6ZSA9IEVG SV9JRlJfREVGQVVMVC5WYWx1ZS5vZmZzZXQgKyBzaXplb2YgKEVGSV9ISUlfREFURSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBEZWZhdWx0T2JqID0gQ0lmckRlZmF1bHQoU2l6ZSwgRUZJX0hJSV9E RUZBVUxUX0NMQVNTX1NUQU5EQVJELA0KPiA+IEVGSV9JRlJfVFlQRV9EQVRFLCBjdHguVmFsKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIERlZmF1bHRPYmouU2V0TGluZU5vKExpbmUpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gRE9iag0KPiA+DQo+ID4gKyAg ICAgICAgZm9yIEN0eCBpbiBjdHgudmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYoKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUsIEN0eCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRh eFBhcnNlciNtaW5NYXhEYXRlU3RlcERlZmF1bHQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdE1p bk1heERhdGVTdGVwRGVmYXVsdChzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuTWluTWF4 RGF0ZVN0ZXBEZWZhdWx0Q29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBp ZiBjdHguRGVmYXVsdCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgTWluaW11bSA9 IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIE1h eGltdW0gPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBjdHguS2V5VmFsdWUgPT0gMDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4 LkRhdGUuWWVhciA9IHNlbGYuX19UcmFuc051bShjdHguTi50ZXh0KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBpZiBjdHguRGF0ZS5ZZWFyIDwgTWluaW11bSBvciBjdHguRGF0ZS5ZZWFyID4g TWF4aW11bToNCj4gPg0KPiA+ICsNCj4gPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNv ZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPiBjdHguTi5saW5lLCAiWWVhciBk ZWZhdWx0IHZhbHVlIG11c3QgYmUgYmV0d2VlbiBNaW4geWVhciBhbmQgTWF4IHllYXIuIikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBjdHguS2V5VmFsdWUgPT0gMToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgY3R4LkRhdGUuTW9udGggPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk4udGV4dCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgY3R4LkRhdGUuTW9udGggPCAxIG9yIGN0eC5E YXRlLk1vbnRoID4gMTI6DQo+ID4NCj4gPiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4gY3R4LkQubGluZSwg Ik1vbnRoIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIE1pbiAxIGFuZCBNYXggMTIuIikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBjdHguS2V5VmFsdWUgPT0gMjoNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgY3R4LkRhdGUuRGF5ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OLnRleHQp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIGN0eC5EYXRlLkRheSA8IDEgb3IgY3R4LkRh dGUuRGF5ID4gMzE6DQo+ID4NCj4gPiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4gY3R4LkQubGluZSwgIkRh eSBkZWZhdWx0IHZhbHVlIG11c3QgYmUgYmV0d2VlbiBNaW4gMSBhbmQgTWF4IDMxLiIpDQo+ID4N Cj4gPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQg YnkgVmZyU3ludGF4UGFyc2VyI3ZmckRhdGVGbGFncy4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0 VmZyRGF0ZUZsYWdzKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRGF0ZUZsYWdzQ29udGV4 dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZm9yIEZsYWdzRmllbGRDdHggaW4gY3R4 LmRhdGVGbGFnc0ZpZWxkKCk6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LkxGbGFncyB8PSBG bGFnc0ZpZWxkQ3R4LkxGbGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g Y3R4LkxGbGFncw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0 IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZGF0ZUZsYWdzRmllbGQu DQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdERhdGVGbGFnc0ZpZWxkKHNlbGYsIGN0eDpWZnJTeW50 YXhQYXJzZXIuRGF0ZUZsYWdzRmllbGRDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBpZiBjdHguTnVtYmVyKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHgu TEZsYWcgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiA+DQo+ID4gKyAgICAgICAg aWYgY3R4LlllYXJTdXBwcHJlc3NGbGFnKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBjdHguTEZsYWcgPSAweDAxDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguTW9udGhTdXBwcmVz c0ZsYWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MDIN Cj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5EYXlTdXBwcmVzc0ZsYWcoKSAhPSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MDQNCj4gPg0KPiA+ICsgICAgICAgIGlm IGN0eC5TdG9yYWdlTm9ybWFsRmxhZygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg Y3R4LkxGbGFnID0gMHgwMA0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LlN0b3JhZ2VUaW1lRmxh ZygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwMTANCj4g Pg0KPiA+ICsgICAgICAgIGlmIGN0eC5TdG9yYWdlV2FrZVVwRmxhZygpICE9IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgyMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIGN0eC5MRmxhZw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIj dmZyU3RhdGVtZW50VGltZS4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50VGlt ZShzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VGltZUNvbnRleHQp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgVE9iaiA9IGN0eC5PcE9iag0KPiA+DQo+ ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBUT2Jq LlNldExpbmVObyhMaW5lKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJR dWVzdGlvbkhlYWRlcigpICE9IE5vbmU6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlID09IEVGSV9JRlJfVFlQRV9PVEhF UjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJU eXBlID09IEVGSV9JRlJfVFlQRV9USU1FDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgY3R4LkZMQUdTKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsNCj4gPiBzZWxmLl9fRXJyb3JI YW5kbGVyKFRPYmouU2V0RmxhZ3MoRUZJX0lGUl9RVUVTVElPTl9GTEFHX0RFRkFVTFQsDQo+ID4g Y3R4LnZmclRpbWVGbGFncygpLkxGbGFncyksIGN0eC5GMS5saW5lKQ0KPiA+DQo+ID4gKyAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBIb3VyID0gc2VsZi5f X1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoMCkpDQo+ID4NCj4gPiArICAgICAgICAgICAg SG91ciArPSAnLicNCj4gPg0KPiA+ICsgICAgICAgICAgICBIb3VyICs9IHNlbGYuX19UcmFuc0lk KGN0eC5TdHJpbmdJZGVudGlmaWVyKDEpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIE1pbnV0ZSA9IHNlbGYuX19UcmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVyKDIpKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIE1pbnV0ZSArPSAnLicNCj4gPg0KPiA+ICsgICAgICAgICAgICBN aW51dGUgKz0gc2VsZi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoMykpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICAgICAgU2Vjb25kID0gc2VsZi5fX1RyYW5zSWQoY3R4LlN0 cmluZ0lkZW50aWZpZXIoNCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgU2Vjb25kICs9ICcuJw0K PiA+DQo+ID4gKyAgICAgICAgICAgIFNlY29uZCArPSBzZWxmLl9fVHJhbnNJZChjdHguU3RyaW5n SWRlbnRpZmllcig1KSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBjdHgu RkxBR1MoKSAhPSBOb25lOg0KPiA+DQo+ID4gKw0KPiA+IHNlbGYuX19FcnJvckhhbmRsZXIoVE9i ai5TZXRGbGFncyhFRklfSUZSX1FVRVNUSU9OX0ZMQUdfREVGQVVMVCwNCj4gPiBjdHgudmZyVGlt ZUZsYWdzKCkuTEZsYWdzKSwgY3R4LkYyLmxpbmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICAgICAgUUlkLCBfID0gc2VsZi5fX0NWZnJRdWVzdGlvbkRCLlJlZ2lzdGVyT2xkVGltZVF1 ZXN0aW9uKEhvdXIsDQo+ID4gTWludXRlLCBTZWNvbmQsIEVGSV9RVUVTVElPTl9JRF9JTlZBTElE KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFRPYmouU2V0UXVlc3Rpb25JZChRSWQpDQo+ID4NCj4g PiArICAgICAgICAgICAgVE9iai5TZXRGbGFncyhFRklfSUZSX1FVRVNUSU9OX0ZMQUdfREVGQVVM VCwNCj4gPiBRRl9USU1FX1NUT1JBR0VfVElNRSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBUT2Jq LlNldFByb21wdChzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkpDQo+ID4NCj4gPiArICAg ICAgICAgICAgVE9iai5TZXRIZWxwKHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDEpKSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBTaXplID0gRUZJX0lGUl9ERUZBVUxULlZh bHVlLm9mZnNldCArIHNpemVvZiAoRUZJX0hJSV9USU1FKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IERlZmF1bHRPYmogPSBDSWZyRGVmYXVsdChTaXplLCBFRklfSElJX0RFRkFVTFRfQ0xBU1NfU1RB TkRBUkQsDQo+ID4gRUZJX0lGUl9UWVBFX1RJTUUsIGN0eC5WYWwpDQo+ID4NCj4gPiArICAgICAg ICAgICAgRGVmYXVsdE9iai5TZXRMaW5lTm8oTGluZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBUT2JqDQo+ID4NCj4gPiArICAgICAgICBmb3IgQ3R4IGlu IGN0eC52ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZigpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX19JbnNlcnRDaGlsZChjdHguTm9kZSwgQ3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+ID4gVmZyU3ludGF4UGFyc2VyI21pbk1heFRp bWVTdGVwRGVmYXVsdC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0TWluTWF4VGltZVN0ZXBEZWZh dWx0KHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5NaW5NYXhUaW1lU3RlcERlZmF1bHRD b250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5EZWZhdWx0KCkg IT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBNaW5pbXVtID0gc2VsZi5fX1RyYW5zTnVt KGN0eC5OdW1iZXIoMCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgTWF4aW11bSA9IHNlbGYuX19U cmFuc051bShjdHguTnVtYmVyKDEpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGN0eC5LZXlW YWx1ZSA9PSAwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguVGltZS5Ib3VyID0NCj4g c2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIobGVuKGN0eC5OdW1iZXIoKSktDQo+ID4gMSkpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIGN0eC5UaW1lLkhvdXIgPiAyMzoNCj4gPg0KPiA+ ICsNCj4gPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZB TElEX1BBUkFNRVRFUiwNCj4gPiBjdHguTi5saW5lLCAiSG91ciBkZWZhdWx0IHZhbHVlIG11c3Qg YmUgYmV0d2VlbiAwIGFuZCAyMy4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGN0eC5LZXlW YWx1ZSA9PSAxOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguVGltZS5NaW51dGUgPQ0K PiA+IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKGxlbihjdHguTnVtYmVyKCkpLTEpKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBjdHguVGltZS5NaW51dGUgPiA1OToNCj4gPg0KPiA+ ICsNCj4gPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZB TElEX1BBUkFNRVRFUiwNCj4gPiBjdHguTi5saW5lLCAiTWludXRlIGRlZmF1bHQgdmFsdWUgbXVz dCBiZSBiZXR3ZWVuIDAgYW5kIDU5LiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgY3R4Lktl eVZhbHVlID09IDI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5UaW1lLlNlY29uZCA9 DQo+ID4gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIobGVuKGN0eC5OdW1iZXIoKSktMSkpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIGN0eC5UaW1lLlNlY29uZCA+IDU5Og0KPiA+DQo+ ID4gKw0KPiA+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lO VkFMSURfUEFSQU1FVEVSLA0KPiA+IGN0eC5OLmxpbmUsICJTZWNvbmQgZGVmYXVsdCB2YWx1ZSBt dXN0IGJlIGJldHdlZW4gMCBhbmQgNTkuIikNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyVGlt ZUZsYWdzLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJUaW1lRmxhZ3Moc2VsZiwgY3R4OlZm clN5bnRheFBhcnNlci5WZnJUaW1lRmxhZ3NDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBmb3IgRmxhZ3NGaWVsZEN0eCBpbiBjdHgudGltZUZsYWdzRmllbGQoKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBjdHguTEZsYWdzIHw9IEZsYWdzRmllbGRDdHguTEZsYWcNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTEZsYWdzDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBh cnNlciN0aW1lRmxhZ3NGaWVsZC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VGltZUZsYWdzRmll bGQoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5UaW1lRmxhZ3NGaWVsZENvbnRleHQpOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkp DQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguSG91clN1cHBwcmVzc0ZsYWcoKSAhPSBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MDENCj4gPg0KPiA+ICsgICAgICAg IGlmIGN0eC5NaW51dGVTdXBwcmVzc0ZsYWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGN0eC5MRmxhZyA9IDB4MDINCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5TZWNvbmRTdXBw cmVzc0ZsYWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4 MDQNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5TdG9yYWdlTm9ybWFsRmxhZygpICE9IE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwMA0KPiA+DQo+ID4gKyAgICAg ICAgaWYgY3R4LlN0b3JhZ2VUaW1lRmxhZygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAg ICAgY3R4LkxGbGFnID0gMHgxMA0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LlN0b3JhZ2VXYWtl VXBGbGFnKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTEZsYWcgPSAweDIw DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LkxGbGFnDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+ID4g VmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudENvbmRpdGlvbmFsLg0KPiA+DQo+ID4gKyAgICBk ZWYgdmlzaXRWZnJTdGF0ZW1lbnRDb25kaXRpb25hbChzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50Q29uZGl0aW9uYWxDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBp ZiBjdHgudmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdCgpIT0gTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0KCkuTm9kZQ0K PiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0KCkhPSBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFN1 cHByZXNzSWZTdGF0KCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVu dEdyYXlPdXRJZlN0YXQoKSE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUg PSBjdHgudmZyU3RhdGVtZW50R3JheU91dElmU3RhdCgpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAg IGlmIGN0eC52ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXQoKSE9IE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZT dGF0KCkuTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rl DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5DQo+ID4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudENvbmRpdGlv bmFsTmV3Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5l dyhzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Q29uZGl0aW9uYWxO ZXdDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdXBw cmVzc0lmU3RhdC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJ ZlN0YXQoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1cHByZXNz SWZTdGF0Q29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVt ZW50U3VwcHJlc3NJZlN0YXROZXcoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4 Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBh cnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50R3Jh eU91dElmU3RhdC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50R3JheU91dElm U3RhdChzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50R3JheU91dElm U3RhdENvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVu dEdyYXlPdXRJZlN0YXROZXcoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5v ZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN0YXRMaXN0Lg0K PiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdGF0TGlzdChzZWxmLA0KPiA+IGN0 eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdExpc3RDb250ZXh0KToNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiAr ICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50U3RhdCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50U3RhdCgpLk5vZGUNCj4gPg0KPiA+ ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoKSAhPSBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFF1ZXN0aW9ucygpLk5v ZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRDb25kaXRpb25hbCgpICE9 IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50 Q29uZGl0aW9uYWwoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50 TGFiZWwoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZm clN0YXRlbWVudExhYmVsKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRl bWVudEV4dGVuc2lvbigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUg PSBjdHgudmZyU3RhdGVtZW50RXh0ZW5zaW9uKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYg Y3R4LnZmclN0YXRlbWVudEludmFsaWQoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEludmFsaWQoKS5Ob2RlDQo+ID4NCj4gPiArICAg ICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3Zm clN0YXRlbWVudFN0YXRMaXN0T2xkLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1l bnRTdGF0TGlzdE9sZChzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 U3RhdExpc3RPbGRDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnREaXNhYmxl SWZTdGF0Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0 KHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0 Q29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBESU9iaiA9IENJZnJEaXNh YmxlSWYoKQ0KPiA+DQo+ID4gKyAgICAgICAgRElPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5l KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IERJT2JqDQo+ID4NCj4gPiArICAg ICAgICBjdHguTm9kZS5Db25kaXRpb24gPSAnZGlzYWJsZWlmJyArICcgJyArDQo+ID4gc2VsZi5f X0V4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBm b3IgQ3R4IGluIGN0eC52ZnJTdGF0ZW1lbnRTdGF0TGlzdCgpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX19JbnNlcnRDaGlsZChjdHguTm9kZSwgQ3R4KQ0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMg VmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+ID4gVmZyU3ludGF4UGFyc2VyI3ZmclN0 YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0 ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldyhzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXdDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIFNJT2JqID0gQ0lmclN1cHByZXNzSWYoKQ0KPiA+DQo+ID4gKyAgICAgICAgU0lP YmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUu RGF0YSA9IFNJT2JqDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5Db25kaXRpb24gPSAnc3Vw cHJlc3NpZicgKyAnICcgKw0KPiA+IHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJT dGF0ZW1lbnRFeHByZXNzaW9uKCkpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRy ZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgZm9yIEN0eCBpbiBjdHgudmZyU3RhdGVtZW50U3Rh dExpc3QoKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4Lk5v ZGUsIEN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRHcmF5T3V0SWZT dGF0TmV3Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0 TmV3KHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRHcmF5T3V0SWZT dGF0TmV3Q29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBHT0lPYmogPSBD SWZyR3JheU91dElmKCkNCj4gPg0KPiA+ICsgICAgICAgIEdPSU9iai5TZXRMaW5lTm8oY3R4LnN0 YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gR09JT2JqDQo+ID4N Cj4gPiArICAgICAgICBjdHguTm9kZS5Db25kaXRpb24gPSAnZ3JheW91dGlmJyArICcgJyArDQo+ ID4gc2VsZi5fX0V4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmclN0YXRlbWVudEV4cHJlc3Npb24o KSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiAr ICAgICAgICBmb3IgQ3R4IGluIGN0eC52ZnJTdGF0ZW1lbnRTdGF0TGlzdCgpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX19JbnNlcnRDaGlsZChjdHguTm9kZSwgQ3R4KQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5DQo+ID4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3Rh dC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0 KHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJ ZlN0YXRDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIElJT2JqID0gQ0lm ckluY29uc2lzdGVudElmKCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIo VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiA+IGN0eC5zdGFydC5saW5l KQ0KPiA+DQo+ID4gKyAgICAgICAgSUlPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAg IElJT2JqLlNldEVycm9yKHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpKQ0KPiA+DQo+ID4g KyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IElJT2JqDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9k ZS5Db25kaXRpb24gPSAnaW5jb25zaXN0ZW50aWYnICsgJyAnICsNCj4gPiBzZWxmLl9fRXh0cmFj dE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRh eFBhcnNlciN2ZnJTdGF0ZW1lbnRJbnZhbGlkLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJT dGF0ZW1lbnRJbnZhbGlkKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRJbnZhbGlkQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNp dCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVt ZW50SW52YWxpZEhpZGRlbi4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50SW52 YWxpZEhpZGRlbihzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW52 YWxpZEhpZGRlbkNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRD aGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+ID4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRl bWVudEludmFsaWRJbnZlbnRvcnkuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVu dEludmFsaWRJbnZlbnRvcnkoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudEludmFsaWRJbnZlbnRvcnlDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBz ZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNl ciN2ZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZhdWx0cy4NCj4gPg0KPiA+ICsgICAg ZGVmIHZpc2l0VmZyU3RhdGVtZW50SW52YWxpZFNhdmVSZXN0b3JlRGVmYXVsdHMoc2VsZiwNCj4g PiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1 bHRzQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBh cnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudExhYmVsLg0K PiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRMYWJlbChzZWxmLA0KPiA+IGN0eDpW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50TGFiZWxDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIExPYmogPSBDSWZyTGFiZWwoKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIExPYmouU2V0TGluZU5vKGN0 eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgTE9iai5TZXROdW1iZXIoc2VsZi5fX1Ry YW5zTnVtKGN0eC5OdW1iZXIoKSkpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0g TE9iag0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+ ID4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWV4LkJPYmpudEJhbm5lci4NCj4gPg0KPiA+ICsg ICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50QmFubmVyKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRCYW5uZXJDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBpZiBjdHguTGluZSgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgQk9iaiA9 IENJZnJCYW5uZXIoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIEJPYmouU2V0TGluZU5vKGN0eC5z dGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIEJPYmouU2V0VGl0bGUoc2VsZi5fX1Ry YW5zTnVtKGN0eC5OdW1iZXIoMCkpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIEJPYmouU2V0TGlu ZShzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkpDQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgY3R4LkxlZnQoKSAhPSBOb25lOiBCT2JqLlNldEFsaWduKDApDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgY3R4LkNlbnRlcigpICE9IE5vbmU6IEJPYmouU2V0QWxpZ24oMSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBjdHguUmlnaHQoKSAhPSBOb25lOiBCT2JqLlNldEFsaWduKDIpDQo+ ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IEJPYmoNCj4gPg0KPiA+ICsgICAg ICAgIGVsaWYgY3R4LlRpbWVvdXQoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFRP YmogPSBDSWZyVGltZW91dCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgVE9iai5TZXRMaW5lTm8o Y3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgVE9iai5TZXRUaW1lb3V0KHNl bGYuX19UcmFuc051bShjdHguTnVtYmVyKDIpKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHgu Tm9kZS5EYXRhID0gVE9iag0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0 eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRFeHRl bnNpb24uDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEV4dGVuc2lvbihzZWxm LA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXh0ZW5zaW9uQ29udGV4dCk6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBjdHguSXNTdHJ1Y3QgPSBGYWxzZQ0KPiA+ DQo+ID4gKyAgICAgICAgaWYgY3R4LkRhdGFUeXBlKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBjdHguVWludDY0KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgY3R4LlR5cGVOYW1lID0gJ1VJTlQ2NCcNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIGN0 eC5VaW50MzIoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguVHlwZU5h bWUgPSAnVUlOVDMyJw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgY3R4LlVpbnQxNigpICE9 IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5UeXBlTmFtZSA9ICdVSU5UMTYn DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBjdHguVWludDgoKSAhPSBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBjdHguVHlwZU5hbWUgPSAnVUlOVDgnDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxpZiBjdHguQm9vbGVhbigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGN0eC5UeXBlTmFtZSA9ICdCT09MRUFOJw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs aWYgY3R4LkVGSV9TVFJJTkdfSUQoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBjdHguVHlwZU5hbWUgPSAnRUZJX1NUUklOR19JRCcNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bGlmIGN0eC5FRklfSElJX0RBVEUoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBjdHguVHlwZU5hbWUgPSAnRUZJX0hJSV9EQVRFJw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBjdHguSXNTdHJ1Y3QgPSBUcnVlDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBjdHguRUZJ X0hJSV9USU1FKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LlR5cGVO YW1lID0gJ0VGSV9ISUlfVElNRScNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LklzU3Ry dWN0ID0gVHJ1ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgY3R4LkVGSV9ISUlfUkVGKCkg IT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LlR5cGVOYW1lID0gJ0VGSV9I SUlfUkVGJw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguSXNTdHJ1Y3QgPSBUcnVlDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4 LlR5cGVOYW1lID0gc2VsZi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoKSkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgY3R4LklzU3RydWN0ID0gVHJ1ZQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGN0eC5BcnJheU51bSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQo+ID4N Cj4gPiArICAgICAgICAgICAgY3R4LlR5cGVTaXplLCBSZXR1cm5Db2RlID0NCj4gPiBnQ1ZmclZh ckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlUeXBlTmFtZShjdHguVHlwZU5hbWUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguRC5s aW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5TaXplID0gY3R4LlR5cGVTaXplICogY3R4 LkFycmF5TnVtIGlmIGN0eC5BcnJheU51bSA+IDAgZWxzZQ0KPiA+IGN0eC5UeXBlU2l6ZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIEFycmF5VHlwZSA9IGN0eXBlcy5jX3VieXRlICogY3R4LlNpemUN Cj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguRGF0YUJ1ZmYgPSBBcnJheVR5cGUoKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGN0eC5TaXplKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgY3R4LkRhdGFCdWZmW2ldID0gMA0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIExpbmUg PSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgR3VpZE9iaiA9IENJZnJHdWlkKGN0 eC5TaXplKQ0KPiA+DQo+ID4gKyAgICAgICAgR3VpZE9iai5TZXRMaW5lTm8oTGluZSkNCj4gPg0K PiA+ICsgICAgICAgIEd1aWRPYmouU2V0R3VpZChjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkKQ0K PiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LlR5cGVOYW1lICE9IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgR3VpZE9iai5TZXREYXRhKGN0eC5EYXRhQnVmZikNCj4gPg0KPiA+ICsgICAgICAg ICMgdmZyU3RhdGVtZW50RXh0ZW5zaW9uDQo+ID4NCj4gPiArICAgICAgICBHdWlkT2JqLlNldFNj b3BlKDEpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gR3VpZE9iag0KPiA+DQo+ ID4gKyAgICAgICAgZm9yIEN0eCBpbiBjdHgudmZyU3RhdGVtZW50RXh0ZW5zaW9uKCk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fX0luc2VydENoaWxkKGN0eC5Ob2RlLCBDdHgpDQo+ID4N Cj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg IyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckV4dGVu c2lvbkRhdGEuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmckV4dGVuc2lvbkRhdGEoc2VsZiwN Cj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmckV4dGVuc2lvbkRhdGFDb250ZXh0KToNCj4gPg0K PiA+ICsgICAgICAgICcnJw0KPiA+DQo+ID4gKyAgICAgICAgVEZOYW1lID0gJycNCj4gPg0KPiA+ ICsgICAgICAgIElzQXJyYXkgPSBGYWxzZSBpZiBjdHguT3BlbkJyYWNrZXQoKSA9PSBOb25lIGVs c2UgVHJ1ZQ0KPiA+DQo+ID4gKyAgICAgICAgQXJyYXlJZHggPSAwDQo+ID4NCj4gPiArICAgICAg ICBjdHguSXNTdHJ1Y3QgPSBjdHgucGFyZW50Q3R4LklzU3RydWN0DQo+ID4NCj4gPiArICAgICAg ICBjdHguRGF0YUJ1ZmYgPSBjdHgucGFyZW50Q3R4LkRhdGFCdWZmDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgRGF0YSA9IHNlbGYuX19UcmFuc051bShjdHguTi50ZXh0KQ0KPiA+DQo+ID4g KyAgICAgICAgaWYgSXNBcnJheSA9PSBUcnVlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEFycmF5 SWR4ID0gc2VsZi5fX1RyYW5zTnVtKHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKSkNCj4g Pg0KPiA+ICsgICAgICAgIEJ5dGVPZmZzZXQgID0gQXJyYXlJZHggKiBjdHgucGFyZW50Q3R4LlR5 cGVTaXplDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguSXNTdHJ1Y3QgPT0gVHJ1ZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBURk5hbWUgKz0gY3R4LnBhcmVudEN0eC5UeXBlTmFtZQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihjdHguYXJyYXlOYW1lKCkpKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVEZOYW1lICs9ICcuJw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBURk5hbWUgKz0gY3R4LmFycmF5TmFtZShpKS5TdWJTdHJaDQo+ID4NCj4gPiAr ICAgICAgICAgICAgRmllbGRPZmZzZXQsIEZpZWxkVHlwZSwgRmllbGRTaXplLCBCaXRGaWVsZCwg XyA9DQo+ID4gZ0NWZnJWYXJEYXRhVHlwZURCLkdldERhdGFGaWVsZEluZm8oVEZOYW1lKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIEJpdEZpZWxkOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBNYXNrID0gKDEgPDwgRmllbGRTaXplKSAtIDENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg T2Zmc2V0ID0gaW50KEZpZWxkT2Zmc2V0IC8gOCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg UHJlQml0cyA9IEZpZWxkT2Zmc2V0ICUgOA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBNYXNr IDw8PSBQcmVCaXRzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEJlZ2luID0gMA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBFbmQgPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlm IEZpZWxkVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfODoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIERhdGEgPSBjdHlwZXMuY191Ynl0ZShEYXRhKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgaWYgQml0RmllbGQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgIyBTZXQgdGhlIHZhbHVlIHRvIHRoZSBiaXQgZmlsZWRzLg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIERhdGEgIDw8PSBQcmVCaXRzDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgVmFsdWUgPSAoVmFsdWUgJiAofk1hc2spKSB8IERhdGENCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICBCZWdpbiA9IEJ5dGVPZmZzZXQgKyBPZmZzZXQNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBFbmQgPSBCeXRlT2Zmc2V0ICsgT2Zmc2V0 ICsgc2l6ZW9mIChjdHlwZXMuY191Ynl0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBjdHguRGF0YUJ1ZmZbQmVnaW46IEVuZF0gPSBWYWx1ZQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBCZWdp biA9IEJ5dGVPZmZzZXQgKyBGaWVsZE9mZnNldA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIEVuZCA9IEJ5dGVPZmZzZXQgKyBGaWVsZE9mZnNldCArIEZpZWxkU2l6ZQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5EYXRhQnVmZltCZWdpbjogRW5kXSA9IERh dGENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYg RmllbGRUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIERhdGEgPSBjdHlwZXMuY191c2hvcnQoRGF0YSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIGlmIEJpdEZpZWxkOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICMgU2V0IHRoZSB2YWx1ZSB0byB0aGUgYml0IGZpbGVkcy4NCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICBEYXRhICA8PD0gUHJlQml0cw0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgIFZhbHVlID0gKFZhbHVlICYgKH5NYXNrKSkgfCBEYXRhDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgQmVnaW4gPSBCeXRlT2Zmc2V0ICsgT2Zmc2V0DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgRW5kID0gQnl0ZU9mZnNldCArIE9mZnNl dCArIHNpemVvZiAoY3R5cGVzLmNfdXNob3J0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIGN0eC5EYXRhQnVmZltCZWdpbjogRW5kXSA9IFZhbHVlDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIEJl Z2luID0gQnl0ZU9mZnNldCArIEZpZWxkT2Zmc2V0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgRW5kID0gQnl0ZU9mZnNldCArIEZpZWxkT2Zmc2V0ICsgRmllbGRTaXplDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgY3R4LkRhdGFCdWZmW0JlZ2luOiBFbmRdID0g RGF0YQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBp ZiBGaWVsZFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgRGF0YSA9IGN0eXBlcy5jX3Vsb25nKERhdGEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBpZiBCaXRGaWVsZDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAjIFNldCB0aGUgdmFsdWUgdG8gdGhlIGJpdCBmaWxlZHMuDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgRGF0YSAgPDw9IFByZUJpdHMNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICBWYWx1ZSA9IChWYWx1ZSAmICh+TWFzaykpIHwgRGF0YQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIEJlZ2luID0gQnl0ZU9mZnNldCArIE9mZnNldA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIEVuZCA9IEJ5dGVPZmZzZXQgKyBPZmZz ZXQgKyBzaXplb2YgKGN0eXBlcy5jX3Vsb25nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIGN0eC5EYXRhQnVmZltCZWdpbjogRW5kXSA9IFZhbHVlDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIEJl Z2luID0gQnl0ZU9mZnNldCArIEZpZWxkT2Zmc2V0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgRW5kID0gQnl0ZU9mZnNldCArIEZpZWxkT2Zmc2V0ICsgRmllbGRTaXplDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgY3R4LkRhdGFCdWZmW0JlZ2luOiBFbmRdID0g RGF0YQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBGaWVsZFR5cGUg PT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgRGF0YSA9IGN0eXBlcy5jX3Vsb25nbG9uZyhEYXRhKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgaWYgQml0RmllbGQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg IyBTZXQgdGhlIHZhbHVlIHRvIHRoZSBiaXQgZmlsZWRzLg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIERhdGEgIDw8PSBQcmVCaXRzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgVmFsdWUgPSAoVmFsdWUgJiAofk1hc2spKSB8IERhdGENCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICBCZWdpbiA9IEJ5dGVPZmZzZXQgKyBPZmZzZXQNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICBFbmQgPSBCeXRlT2Zmc2V0ICsgT2Zmc2V0ICsgc2l6 ZW9mIChjdHlwZXMuY191bG9uZ2xvbmcpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgY3R4LkRhdGFCdWZmW0JlZ2luOiBFbmRdID0gVmFsdWUNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgQmVnaW4g PSBCeXRlT2Zmc2V0ICsgRmllbGRPZmZzZXQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBFbmQgPSBCeXRlT2Zmc2V0ICsgRmllbGRPZmZzZXQgKyBGaWVsZFNpemUNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICBjdHguRGF0YUJ1ZmZbQmVnaW46IEVuZF0gPSBEYXRh DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGN0eC5EYXRhQnVmZltCeXRlT2Zmc2V0LCBCeXRlT2Zmc2V0ICsgY3R4LnBhcmVudEN0eC5U eXBlU2l6ZV0gPQ0KPiBEYXRhDQo+ID4NCj4gPiArICAgICAgICAnJycNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZy U3RhdGVtZW50TW9kYWwuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudE1vZGFs KHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRNb2RhbENvbnRleHQp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkN Cj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmck1vZGFsVGFnKCkuTm9kZQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJNb2Rh bFRhZy4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyTW9kYWxUYWcoc2VsZiwgY3R4OlZmclN5 bnRheFBhcnNlci5WZnJNb2RhbFRhZ0NvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgTU9iaiA9IENJZnJNb2RhbCgpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgTU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0Lmxp bmUpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gTU9iag0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBfX1NhdmVPcEhkckNvbmQoc2VsZiwgT3BIZHIsIENvbmQsIExpbmVObz0wKToNCj4g Pg0KPiA+ICsgICAgICAgIGlmIENvbmQgPT0gVHJ1ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBzZWxmLl9fQ0lmck9wSGRyW3NlbGYuX19DSWZyT3BIZHJJbmRleF0gIT0gTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5f X0NJZnJPcEhkcltzZWxmLl9fQ0lmck9wSGRySW5kZXhdID0gQ0lmck9wSGVhZGVyKE9wSGRyKSAj DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX0NJZnJPcEhkckxpbmVOb1tzZWxmLl9fQ0lm ck9wSGRySW5kZXhdID0gTGluZU5vDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBfX0luaXRPcEhkckNvbmQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9f Q0lmck9wSGRyLmFwcGVuZChOb25lKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0NJZnJPcEhk ckxpbmVOby5hcHBlbmQoMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9fU2V0U2F2 ZWRPcEhkclNjb3BlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgaWYgIHNlbGYuX19DSWZyT3BI ZHJbc2VsZi5fX0NJZnJPcEhkckluZGV4XSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX19DSWZyT3BIZHJbc2VsZi5fX0NJZnJPcEhkckluZGV4XS5TZXRTY29wZSgxKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBUcnVlDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g RmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9fQ2xlYXJTYXZlZE9QSGRyKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0NJZnJPcEhkcltzZWxmLl9fQ0lmck9wSGRy SW5kZXhdID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRFeHByZXNz aW9uLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYs DQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4dCk6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAjIFJvb3QgZXhwcmVzc2lvbiBleHRlbnNp b24gZnVuY3Rpb24gY2FsbGVkIGJ5IG90aGVyIGZ1bmN0aW9uLiAjIw0KPiA+DQo+ID4gKyAgICAg ICAgaWYgY3R4LkV4cEluZm8uUm9vdExldmVsID09IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fX0NJZnJPcEhkckluZGV4ICs9IDENCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxm Ll9fQ0lmck9wSGRySW5kZXggPj0gTUFYX0lGUl9FWFBSRVNTSU9OX0RFUFRIOg0KPiA+DQo+ID4g Kw0KPiA+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFM SURfUEFSQU1FVEVSLA0KPiA+IGN0eC5zdGFydC5saW5lLCAnVGhlIGRlcHRoIG9mIGV4cHJlc3Np b24gZXhjZWVkcyB0aGUgbWF4IHN1cHBvcnRlZCBsZXZlbCA4IScpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fX0luaXRPcEhkckNvbmQoKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHgu c3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5P UigpKSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAx DQo+ID4NCj4gPiArICAgICAgICAgICAgT09iaiA9IENJZnJPcihMaW5lKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgIyBFeHRlbmQgT3BDb2RlIFNjb3BlIG9ubHkgZm9yIHRoZSByb290 IGV4cHJlc3Npb24uDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguRXhwSW5mby5FeHBPcENvdW50 ID4gMSBhbmQgY3R4LkV4cEluZm8uUm9vdExldmVsID09IDA6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgc2VsZi5fX1NldFNhdmVkT3BIZHJTY29wZSgpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBFT2JqID0gQ0lmckVuZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIHNlbGYu X19DSWZyT3BIZHJMaW5lTm9bc2VsZi5fX0NJZnJPcEhkckluZGV4XSAhPSAwOg0KPiA+DQo+ID4g Kw0KPiBFT2JqLlNldExpbmVObyhzZWxmLl9fQ0lmck9wSGRyTGluZU5vW3NlbGYuX19DSWZyT3BI ZHJJbmRleF0pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguRXhwSW5mby5S b290TGV2ZWwgPT0gMDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fQ2xlYXJTYXZlZE9Q SGRyKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fQ0lmck9wSGRySW5kZXggPSBzZWxm Ll9fQ0lmck9wSGRySW5kZXggLSAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxm Ll9fQ29uc3RhbnRPbmx5SW5FeHByZXNzaW9uID0gRmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBjdHguRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRh eFBhcnNlciN2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlz aXRWZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBjdHguRXhwSW5mby5Sb290TGV2ZWwgPSBjdHgucGFyZW50Q3R4LkV4cEluZm8u Um9vdExldmVsICsgMQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9 IGN0eC5wYXJlbnRDdHguRXhwSW5mby5FeHBPcENvdW50DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgY3R4LnBhcmVudEN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPSBjdHguRXhwSW5mby5FeHBP cENvdW50DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LkV4cEluZm8N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQg YnkgVmZyU3ludGF4UGFyc2VyI2FuZFRlcm0uDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdEFuZFRl cm0oc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5BbmRUZXJtQ29udGV4dCk6DQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9 IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4o Y3R4LkFORCgpKSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3Vu dCArPSAxDQo+ID4NCj4gPiArICAgICAgICAgICAgQU9iaiA9IENJZnJBbmQoTGluZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBjdHguQ0lmckFuZExpc3QuYXBwZW5kKEFPYmopDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LkV4cEluZm8sIGN0eC5DSWZyQW5kTGlzdA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjYml0d2lzZW9yVGVybS4NCj4gPg0KPiA+ICsg ICAgZGVmIHZpc2l0Qml0d2lzZW9yVGVybShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkJpdHdp c2VvclRlcm1Db250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+ID4NCj4gPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gPg0KPiA+ICsg ICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihjdHguQml0V2lzZU9yKCkpKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsgICAg ICAgICAgICBCV09PYmogPSBDSWZyQml0V2lzZU9yKExpbmUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgY3R4LkNJZnJCaXRXaXNlT3JMaXN0LmFwcGVuZChCV09PYmopDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICByZXR1cm4gY3R4LkV4cEluZm8sIGN0eC5DSWZyQml0V2lzZU9yTGlzdA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjYml0d2lzZWFuZFRlcm0uDQo+ID4NCj4gPiAr ICAgIGRlZiB2aXNpdEJpdHdpc2VhbmRUZXJtKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNl ci5CaXR3aXNlYW5kVGVybUNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+ DQo+ID4gKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5CaXRXaXNlQW5kKCkpKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0K PiA+ICsgICAgICAgICAgICBCV0FPYmogPSBDSWZyQml0V2lzZUFuZChMaW5lKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGN0eC5DSWZyQml0V2lzZUFuZExpc3QuYXBwZW5kKEJXQU9iaikNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguRXhwSW5mbywgY3R4LkNJZnJCaXRX aXNlQW5kTGlzdA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0 IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZXF1YWxUZXJtLg0KPiA+ DQo+ID4gKyAgICBkZWYgdmlzaXRFcXVhbFRlcm0oc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5F cXVhbFRlcm1Db250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+ID4NCj4gPiArICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4LmVxdWFsVGVy bVN1cHBsZW1lbnRhcnkoKSkpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4 cE9wQ291bnQgKz0gMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5F eHBJbmZvLCBjdHguQ0lmckVxdWFsTGlzdCwgY3R4LkNJZnJOb3RFcXVhbExpc3QNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI2VxdWFsVGVybUVxdWFsUnVsZS4NCj4gPg0KPiA+ICsgICAg ZGVmIHZpc2l0RXF1YWxUZXJtRXF1YWxSdWxlKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNl ci5FcXVhbFRlcm1FcXVhbFJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBFT2JqID0gQ0lmckVxdWFsKGN0eC5z dGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkNJZnJFcXVhbExpc3QuYXBwZW5kKEVP YmopDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gRU9iag0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciNlcXVhbFRlcm1Ob3RFcXVhbFJ1bGUuDQo+ID4NCj4g PiArICAgIGRlZiB2aXNpdEVxdWFsVGVybU5vdEVxdWFsUnVsZShzZWxmLA0KPiA+IGN0eDpWZnJT eW50YXhQYXJzZXIuRXF1YWxUZXJtTm90RXF1YWxSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArICAg ICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgTkVPYmogPSBD SWZyTm90RXF1YWwoY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBjdHguQ0lmck5v dEVxdWFsTGlzdC5hcHBlbmQoTkVPYmopDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gTkVPYmoN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2NvbXBhcmVUZXJtLg0KPiA+DQo+ID4gKyAg ICBkZWYgdmlzaXRDb21wYXJlVGVybShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkNvbXBhcmVU ZXJtQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K PiA+DQo+ID4gKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5jb21wYXJlVGVybVN1 cHBsZW1lbnRhcnkoKSkpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9w Q291bnQgKz0gMQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5FeHBJbmZvLCBjdHguQ0lm ckxlc3NUaGFuTGlzdCwgY3R4LkNJZnJMZXNzRXF1YWxMaXN0LA0KPiA+IGN0eC5DSWZyR3JlYXRl clRoYW5MaXN0LCBjdHguQ0lmckdyZWF0ZXJFcXVhbExpc3QNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gVmZy U3ludGF4UGFyc2VyI2NvbXBhcmVUZXJtTGVzc1J1bGUuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNp dENvbXBhcmVUZXJtTGVzc1J1bGUoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLkNvbXBh cmVUZXJtTGVzc1J1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBMVE9iaiA9IENJZnJMZXNzVGhhbihjdHguc3Rh cnQubGluZSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5DSWZyTGVzc1RoYW5MaXN0LmFwcGVuZChM VE9iaikNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBMVE9iag0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+ IFZmclN5bnRheFBhcnNlciNjb21wYXJlVGVybUxlc3NFcXVhbFJ1bGUuDQo+ID4NCj4gPiArICAg IGRlZiB2aXNpdENvbXBhcmVUZXJtTGVzc0VxdWFsUnVsZShzZWxmLA0KPiA+IGN0eDpWZnJTeW50 YXhQYXJzZXIuQ29tcGFyZVRlcm1MZXNzRXF1YWxSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArICAg ICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgTEVPYmogPSBD SWZyTGVzc0VxdWFsKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkNJZnJM ZXNzRXF1YWxMaXN0LmFwcGVuZChMRU9iaikNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBMRU9i ag0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciNjb21wYXJlVGVybUdyZWF0ZXJS dWxlLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRDb21wYXJlVGVybUdyZWF0ZXJSdWxlKHNlbGYs DQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5Db21wYXJlVGVybUdyZWF0ZXJSdWxlQ29udGV4dCk6 DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAg ICAgICAgR1RPYmogPSBDSWZyR3JlYXRlclRoYW4oY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiAr ICAgICAgICBjdHguQ0lmckdyZWF0ZXJUaGFuTGlzdC5hcHBlbmQoR1RPYmopDQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gR1RPYmoNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gPiBWZnJTeW50YXhQYXJzZXIj Y29tcGFyZVRlcm1HcmVhdGVyRXF1YWxSdWxlLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRDb21w YXJlVGVybUdyZWF0ZXJFcXVhbFJ1bGUoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLkNv bXBhcmVUZXJtR3JlYXRlckVxdWFsUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIEdFT2JqID0gQ0lmckdyZWF0 ZXJFcXVhbChjdHguc3RhcnQubGluZSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5DSWZyR3JlYXRl ckVxdWFsTGlzdC5hcHBlbmQoR0VPYmopDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gR0VPYmoN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQg YnkgVmZyU3ludGF4UGFyc2VyI3NoaWZ0VGVybS4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0U2hp ZnRUZXJtKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuU2hpZnRUZXJtQ29udGV4dCk6DQo+ID4N Cj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAg Zm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5zaGlmdFRlcm1TdXBwbGVtZW50YXJ5KCkpKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBjdHguRXhwSW5mbywgY3R4LkNJZnJTaGlmdExlZnRMaXN0LCBjdHgu Q0lmclNoaWZ0UmlnaHRMaXN0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNzaGlmdFRlcm1MZWZ0Lg0KPiA+ DQo+ID4gKyAgICBkZWYgdmlzaXRTaGlmdFRlcm1MZWZ0KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJz ZXIuU2hpZnRUZXJtTGVmdENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIFNMT2JqID0gQ0lmclNoaWZ0TGVmdChjdHgu c3RhcnQubGluZSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5DSWZyU2hpZnRMZWZ0TGlzdC5hcHBl bmQoU0xPYmopDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gU0xPYmoNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI3NoaWZ0VGVybVJpZ2h0Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRT aGlmdFRlcm1SaWdodChzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlNoaWZ0VGVybVJpZ2h0 Q29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+ DQo+ID4gKyAgICAgICAgU1JPYmogPSBDSWZyU2hpZnRSaWdodChjdHguc3RhcnQubGluZSkNCj4g Pg0KPiA+ICsgICAgICAgIGN0eC5DSWZyU2hpZnRSaWdodExpc3QuYXBwZW5kKFNST2JqKQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIFNST2JqDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciNhZGRNaW51c1Rlcm0uDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdEFkZE1pbnVzVGVybShzZWxm LA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuQWRkTWludXNUZXJtQ29udGV4dCk6DQo+ID4NCj4g PiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgZm9y IGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5hZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5KCkpKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBjdHguRXhwSW5mbywgY3R4LkNJZnJBZGRMaXN0LCBjdHguQ0lmclN1 YnRyYWN0TGlzdA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0 IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjYWRkTWludXNUZXJtcEFk ZC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0QWRkTWludXNUZXJtcEFkZChzZWxmLA0KPiA+IGN0 eDpWZnJTeW50YXhQYXJzZXIuQWRkTWludXNUZXJtcEFkZENvbnRleHQpOg0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIEFPYmogPSBD SWZyQWRkKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkNJZnJBZGRMaXN0 LmFwcGVuZChBT2JqKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIEFPYmoNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQg YnkNCj4gVmZyU3ludGF4UGFyc2VyI2FkZE1pbnVzVGVybVN1YnRyYWN0Lg0KPiA+DQo+ID4gKyAg ICBkZWYgdmlzaXRBZGRNaW51c1Rlcm1TdWJ0cmFjdChzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQ YXJzZXIuQWRkTWludXNUZXJtU3VidHJhY3RDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBTT2JqID0gQ0lmclN1YnRy YWN0KGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkNJZnJTdWJ0cmFjdExp c3QuYXBwZW5kKFNPYmopDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gU09iag0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjbXVsdGRpdm1vZFRlcm0uDQo+ID4NCj4gPiArICAgIGRlZiB2 aXNpdE11bHRkaXZtb2RUZXJtKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5NdWx0ZGl2 bW9kVGVybUNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0 eCkNCj4gPg0KPiA+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihjdHgubXVsdGRpdm1v ZFRlcm1TdXBwbGVtZW50YXJ5KCkpKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguRXhwSW5m by5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguRXhwSW5mbywg Y3R4LkNJZnJNdWx0aXBseUxpc3QsIGN0eC5DSWZyRGl2aWRlTGlzdCwNCj4gPiBjdHguQ0lmck1v ZHVsb0xpc3QNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI211bHRkaXZtb2RUZXJtTXVs Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRNdWx0ZGl2bW9kVGVybU11bChzZWxmLA0KPiA+IGN0 eDpWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1NdWxDb250ZXh0KToNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBNT2JqID0g Q0lmck11bHRpcGx5KGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkNJZnJN dWx0aXBseUxpc3QuYXBwZW5kKE1PYmopDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gTU9iag0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjbXVsdGRpdm1vZFRlcm1EaXYuDQo+ID4NCj4g PiArICAgIGRlZiB2aXNpdE11bHRkaXZtb2RUZXJtRGl2KHNlbGYsDQo+ID4gY3R4OlZmclN5bnRh eFBhcnNlci5NdWx0ZGl2bW9kVGVybURpdkNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIERPYmogPSBDSWZyRGl2aWRl KGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkNJZnJEaXZpZGVMaXN0LmFw cGVuZChET2JqKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIERPYmoNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkN Cj4gVmZyU3ludGF4UGFyc2VyI211bHRkaXZtb2RUZXJtUm91bmQuDQo+ID4NCj4gPiArICAgIGRl ZiB2aXNpdE11bHRkaXZtb2RUZXJtTW9kdWxvKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNl ci5NdWx0ZGl2bW9kVGVybU1vZHVsb0NvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5MaW5lID0gY3R4LnN0YXJ0 LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIE1PYmogPSBDSWZyTW9kdWxvKGN0eC5MaW5lKQ0KPiA+ DQo+ID4gKyAgICAgICAgY3R4LkNJZnJNb2R1bG9MaXN0LmFwcGVuZChNT2JqKQ0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIE1PYmoNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2Nhc3RU ZXJtLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRDYXN0VGVybShzZWxmLCBjdHg6VmZyU3ludGF4 UGFyc2VyLkNhc3RUZXJtQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KSAjIw0KPiA+DQo+ID4gKyAgICAgICAgQ2FzdFR5cGUgPSAweEZGDQo+ID4NCj4g PiArICAgICAgICBpZiBjdHguQm9vbGVhbigpICE9IFtdOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IENhc3RUeXBlID0gMA0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguVWludDY0KCkgIT0gW106 DQo+ID4NCj4gPiArICAgICAgICAgICAgQ2FzdFR5cGUgPSAxDQo+ID4NCj4gPiArICAgICAgICBl bGlmIGN0eC5VaW50MzIoKSAhPSBbXToNCj4gPg0KPiA+ICsgICAgICAgICAgICBDYXN0VHlwZSA9 IDENCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LlVpbnQxNigpICE9IFtdOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIENhc3RUeXBlID0gMQ0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguVWlu dDgoKSAhPSBbXToNCj4gPg0KPiA+ICsgICAgICAgICAgICBDYXN0VHlwZSA9IDENCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAg ICAgICAgaWYgQ2FzdFR5cGUgPT0gMDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguVEJPYmog PSBDSWZyVG9Cb29sZWFuKExpbmUpDQo+ID4NCj4gPiArICAgICAgICBlbGlmIENhc3RUeXBlID09 IDE6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LlRVT2JqID0gQ0lmclRvVWludChMaW5lKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAx DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LlRCT2JqLCBjdHguVFVPYmoNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI2F0b21UZXJtLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRB dG9tVGVybShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkF0b21UZXJtQ29udGV4dCk6DQo+ID4N Cj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAg aWYgY3R4Lk5PVCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgTGluZSA9IGN0eC5z dGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICAgICAgTk9iaiA9IENJZnJOb3QoTGluZSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmckV4cHJlc3Npb25DYXRlbmF0ZS4NCj4g Pg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyRXhwcmVzc2lvbkNhdGVuYXRlKHNlbGYsDQo+ID4gY3R4 OlZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uQ2F0ZW5hdGVDb250ZXh0KToNCj4gPg0KPiA+ ICsgICAgICAgIGN0eC5FeHBJbmZvLlJvb3RMZXZlbCArPSAxDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgTGlu ZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBjdHguQ09iaiA9IENJZnJDYXRl bmF0ZShMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAx DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LkNPYmoNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckV4cHJlc3Npb25NYXRjaC4NCj4gPg0KPiA+ICsgICAg ZGVmIHZpc2l0VmZyRXhwcmVzc2lvbk1hdGNoKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNl ci5WZnJFeHByZXNzaW9uTWF0Y2hDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5FeHBJ bmZvLlJvb3RMZXZlbCArPSAxDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5l DQo+ID4NCj4gPiArICAgICAgICBjdHguTU9iaiA9IENJZnJNYXRjaChMaW5lKQ0KPiA+DQo+ID4g KyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gY3R4Lk1PYmoNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2Vy I3ZmckV4cHJlc3Npb25NYXRjaDIuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmckV4cHJlc3Np b25NYXRjaDIoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25NYXRj aDJDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gPg0K PiA+ICsgICAgICAgIEd1aWQgPSBjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkDQo+ID4NCj4gPiAr ICAgICAgICBjdHguTTJPYmogPSBDSWZyTWF0Y2gyKExpbmUsIEd1aWQpDQo+ID4NCj4gPiArICAg ICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIHJldHVybiBjdHguTTJPYmoNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3Zm ckV4cHJlc3Npb25QYXJlbi4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyRXhwcmVzc2lvblBh cmVuKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uUGFyZW5Db250 ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJFeHByZXNzaW9uQnVpbGRJbkZ1 bmN0aW9uLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJFeHByZXNzaW9uQnVpbGRJbkZ1bmN0 aW9uKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uQnVpbGRJbkZ1 bmN0aW9uQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2R1cEV4cC4NCj4gPg0KPiA+ ICsgICAgZGVmIHZpc2l0RHVwRXhwKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuRHVwRXhwQ29u dGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiAr ICAgICAgICBET2JqID0gQ0lmckR1cChMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1Nh dmVPcEhkckNvbmQoRE9iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQNCj4g PiA9PSAwKSwgTGluZSkgIw0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3Vu dCArPSAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LkV4cEluZm8N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZhcmVxdmFsRXhwLg0KPiA+DQo+ID4gKyAg ICBkZWYgdmlzaXRWYXJlcXZhbEV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZhcmVxdmFs RXhwQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBMaW5lID0gY3R4LnN0 YXJ0LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBSZXR1cm5Db2RlID0gVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX1VOU1VQUE9SVEVEDQo+ID4NCj4gPiArICAgICAgICBWYXJJZFN0ciA9ICd2YXInDQo+ ID4NCj4gPiArICAgICAgICBWYXJJZFN0ciArPSBzdHIoY3R4Lk51bWJlcigwKSkNCj4gPg0KPiA+ ICsgICAgICAgIFZhclN0b3JlSWQsIFJldHVybkNvZGUgPSBnQ1ZmckRhdGFTdG9yYWdlLkdldFZh clN0b3JlSWQoVmFySWRTdHIpDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXR1cm5Db2RlID09IFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRFRklORUQ6DQo+ID4NCj4gPiArICAgICAgICAgICAg cGFzcw0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBwYXNz DQo+ID4NCj4gPiArICAgICAgICBRSWQsIE1hc2ssIF8gPSBzZWxmLl9fQ1ZmclF1ZXN0aW9uREIu R2V0UXVlc3Rpb25JZChOb25lLCBWYXJJZFN0cikNCj4gPg0KPiA+ICsgICAgICAgIENvbnN0VmFs ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMSkpDQo+ID4NCj4gPiArICAgICAgICBpZiBj dHguRXF1YWwoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIE1hc2sgPT0gMDoN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgRUlWT2JqID0gQ0lmckVxSWRWYWwoTGluZSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNvbmQoRUlWT2JqLkdldEhl YWRlcigpLA0KPiA+IChjdHguRXhwSW5mby5FeHBPcENvdW50ID09IDApLCBMaW5lKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBFSVZPYmouU2V0UXVlc3Rpb25JZChRSWQsIFZhcklkU3RyLCBM aW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBFSVZPYmouU2V0VmFsdWUoQ29uc3RWYWwp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuSWRFcVZhbERvU3BlY2lhbChjdHguRXhwSW5mbywgTGluZSwgUUlkLCBWYXJJZFN0ciwgTWFz aywNCj4gPiBDb25zdFZhbCwgRUZJX0NPTVBBUkVfVFlQRS5FUVVBTCkNCj4gPg0KPiA+ICsgICAg ICAgIGVsaWYgY3R4Lkxlc3NFcXVhbCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5JZEVxVmFsRG9TcGVjaWFsKGN0eC5FeHBJbmZvLCBMaW5lLCBRSWQsIFZhcklkU3RyLCBN YXNrLA0KPiBDb25zdFZhbCwNCj4gPiBFRklfQ09NUEFSRV9UWVBFLkxFU1NfRVFVQUwpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC5MZXNzKCkgIT0gTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLklkRXFWYWxEb1NwZWNpYWwoY3R4LkV4cEluZm8sIExpbmUs IFFJZCwgVmFySWRTdHIsIE1hc2ssDQo+IENvbnN0VmFsLA0KPiA+IEVGSV9DT01QQVJFX1RZUEUu TEVTU19USEFOKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguR3JlYXRl ckVxdWFsKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLklkRXFWYWxEb1Nw ZWNpYWwoY3R4LkV4cEluZm8sIExpbmUsIFFJZCwgVmFySWRTdHIsIE1hc2ssDQo+IENvbnN0VmFs LA0KPiA+IEVGSV9DT01QQVJFX1RZUEUuR1JFQVRFUl9FUVVBTCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGVsaWYgY3R4LkdyZWF0ZXIoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuSWRFcVZhbERvU3BlY2lhbChjdHguRXhwSW5mbywgTGluZSwgUUlkLCBWYXJJ ZFN0ciwgTWFzaywNCj4gQ29uc3RWYWwsDQo+ID4gRUZJX0NPTVBBUkVfVFlQRS5HUkVBVEVSX1RI QU4pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4 LkV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIENvbnZl cnRJZEV4cHIoc2VsZiwgRXhwSW5mbywgTGluZU5vLCBRSWQsIFZhcklkU3RyLCBCaXRNYXNrKToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFFSMU9iaiA9IENJZnJRdWVzdGlvblJlZjEo TGluZU5vKQ0KPiA+DQo+ID4gKyAgICAgICAgUVIxT2JqLlNldFF1ZXN0aW9uSWQoUUlkLCBWYXJJ ZFN0ciwgTGluZU5vKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNvbmQoUVIx T2JqLkdldEhlYWRlcigpLCAoRXhwSW5mby5FeHBPcENvdW50DQo+ID09DQo+ID4gMCkpDQo+ID4N Cj4gPiArICAgICAgICBpZiBCaXRNYXNrICE9IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgVTMy T2JqID0gQ0lmclVpbnQzMihMaW5lTm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgVTMyT2JqLlNl dFZhbHVlKEJpdE1hc2spDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgQldBT2Jq ID0gQ0lmckJpdFdpc2VBbmQoTGluZU5vKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIFU4T2JqID0gQ0lmclVpbnQ4KExpbmVObykNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBC aXRNYXNrID09IERBVEVfWUVBUl9CSVRNQVNLOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBV OE9iai5TZXRWYWx1ZSAoMCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIEJpdE1hc2sgPT0g VElNRV9TRUNPTkRfQklUTUFTSzoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVThPYmouU2V0 VmFsdWUgKDB4MTApDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBCaXRNYXNrID09IERBVEVf REFZX0JJVE1BU0s6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFU4T2JqLlNldFZhbHVlICgw eDE4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgQml0TWFzayA9PSBUSU1FX0hPVVJfQklU TUFTSzoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVThPYmouU2V0VmFsdWUgKDApDQo+ID4N Cj4gPiArICAgICAgICAgICAgZWxpZiBCaXRNYXNrID09IFRJTUVfTUlOVVRFX0JJVE1BU0s6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIFU4T2JqLlNldFZhbHVlICgweDgpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICAgICAgU1JPYmogPSBDSWZyU2hpZnRSaWdodChMaW5lTm8pDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBFeHBJbmZvLkV4cE9wQ291bnQgKz0gNA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgSWRFcVZhbERvU3BlY2lhbChz ZWxmLCBFeHBJbmZvLCBMaW5lTm8sIFFJZCwgVmFySWRTdHIsIEJpdE1hc2ssDQo+ID4gQ29uc3RW YWwsIENvbXBhcmVUeXBlKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQ29u dmVydElkRXhwcihFeHBJbmZvLCBMaW5lTm8sIFFJZCwgVmFySWRTdHIsIEJpdE1hc2spDQo+ID4N Cj4gPiArICAgICAgICBpZiBDb25zdFZhbCA+IDB4RkY6DQo+ID4NCj4gPiArICAgICAgICAgICAg VTE2T2JqID0gQ0lmclVpbnQxNihMaW5lTm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgVTE2T2Jq LlNldFZhbHVlKENvbnN0VmFsKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBVOE9iaiA9IENJZnJVaW50OChMaW5lTm8pDQo+ID4NCj4gPiArICAgICAgICAg ICAgVThPYmouU2V0VmFsdWUoQ29uc3RWYWwpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkVRVUFMOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIEVPYmogPSBDSWZyRXF1YWwoTGluZU5vKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgaWYgQ29tcGFyZVR5cGUgPT0gRUZJX0NPTVBBUkVfVFlQRS5M RVNTX0VRVUFMOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIExFT2JqID0gQ0lmckxlc3NFcXVhbChM aW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBDb21wYXJlVHlwZSA9PSBF RklfQ09NUEFSRV9UWVBFLkxFU1NfVEhBTjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBMVE9iaiA9 IENJZnJMZXNzVGhhbihMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBD b21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJfRVFVQUw6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgR0VPYmogPSBDSWZyR3JlYXRlckVxdWFsKExpbmVObykNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGlmIENvbXBhcmVUeXBlID09IEVGSV9DT01QQVJFX1RZUEUuR1JF QVRFUl9USEFOOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEdUT2JqID0gQ0lmckdyZWF0ZXJUaGFu KExpbmVObykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIEV4cEluZm8uRXhwT3BDb3Vu dCArPSAyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNpZGVxdmFsRXhwLg0KPiA+DQo+ ID4gKyAgICBkZWYgdmlzaXRJZGVxdmFsRXhwKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuSWRl cXZhbEV4cENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5l DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAg ICAgICAgTWFzayA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKS5NYXNrDQo+ID4NCj4g PiArICAgICAgICBRSWQgPSBjdHgudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkuUUlkDQo+ID4N Cj4gPiArICAgICAgICBWYXJJZFN0ciA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKS5W YXJJZFN0cg0KPiA+DQo+ID4gKyAgICAgICAgTGluZU5vID0gY3R4LnZmclF1ZXN0aW9uRGF0YUZp ZWxkTmFtZSgpLkxpbmUNCj4gPg0KPiA+ICsgICAgICAgIENvbnN0VmFsID0gc2VsZi5fX1RyYW5z TnVtKGN0eC5OdW1iZXIoKSkNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5FcXVhbCgpICE9IE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgTWFzayA9PSAwOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBFSVZPYmogPSBDSWZyRXFJZFZhbChMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChFSVZPYmouR2V0SGVhZGVyKCksDQo+ID4gKGN0 eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0gMCksIExpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIEVJVk9iai5TZXRRdWVzdGlvbklkKFFJZCwgVmFySWRTdHIsIExpbmVObykNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgRUlWT2JqLlNldFZhbHVlKENvbnN0VmFsKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLklkRXFWYWxEb1Nw ZWNpYWwoY3R4LkV4cEluZm8sIExpbmUsIFFJZCwgVmFySWRTdHIsIE1hc2ssDQo+ID4gQ29uc3RW YWwsIEVGSV9DT01QQVJFX1RZUEUuRVFVQUwpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBlbGlmIGN0eC5MZXNzRXF1YWwoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuSWRFcVZhbERvU3BlY2lhbChjdHguRXhwSW5mbywgTGluZSwgUUlkLCBWYXJJZFN0ciwgTWFz aywNCj4gQ29uc3RWYWwsDQo+ID4gRUZJX0NPTVBBUkVfVFlQRS5MRVNTX0VRVUFMKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguTGVzcygpICE9IE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5JZEVxVmFsRG9TcGVjaWFsKGN0eC5FeHBJbmZvLCBMaW5lLCBR SWQsIFZhcklkU3RyLCBNYXNrLA0KPiBDb25zdFZhbCwNCj4gPiBFRklfQ09NUEFSRV9UWVBFLkxF U1NfVEhBTikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LkdyZWF0ZXJF cXVhbCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5JZEVxVmFsRG9TcGVj aWFsKGN0eC5FeHBJbmZvLCBMaW5lLCBRSWQsIFZhcklkU3RyLCBNYXNrLA0KPiBDb25zdFZhbCwN Cj4gPiBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJfRVFVQUwpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBlbGlmIGN0eC5HcmVhdGVyKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLklkRXFWYWxEb1NwZWNpYWwoY3R4LkV4cEluZm8sIExpbmUsIFFJZCwgVmFySWRT dHIsIE1hc2ssDQo+IENvbnN0VmFsLA0KPiA+IEVGSV9DT01QQVJFX1RZUEUuR1JFQVRFUl9USEFO KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5FeHBJbmZvDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBJZEVxSWREb1NwZWNpYWwoc2Vs ZiwgRXhwSW5mbywgTGluZU5vLCBRSWQxLCBWYXJJZFN0cjEsIE1hc2sxLCBRSWQyLA0KPiA+IFZh cklkU3RyMiwgTWFzazIsIENvbXBhcmVUeXBlKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuQ29udmVydElkRXhwcihFeHBJbmZvLCBMaW5lTm8sIFFJZDEsIFZhcklkU3RyMSwg TWFzazEpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkNvbnZlcnRJZEV4cHIoRXhwSW5mbywgTGlu ZU5vLCBRSWQyLCBWYXJJZFN0cjIsIE1hc2syKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgaWYgQ29tcGFyZVR5cGUgPT0gRUZJX0NPTVBBUkVfVFlQRS5FUVVBTDoNCj4gPg0KPiA+ICsg ICAgICAgICAgICBFT2JqID0gQ0lmckVxdWFsKExpbmVObykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGlmIENvbXBhcmVUeXBlID09IEVGSV9DT01QQVJFX1RZUEUuTEVTU19FUVVBTDoN Cj4gPg0KPiA+ICsgICAgICAgICAgICBMRU9iaiA9IENJZnJMZXNzRXF1YWwoTGluZU5vKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgQ29tcGFyZVR5cGUgPT0gRUZJX0NPTVBBUkVf VFlQRS5MRVNTX1RIQU46DQo+ID4NCj4gPiArICAgICAgICAgICAgTFRPYmogPSBDSWZyTGVzc1Ro YW4oTGluZU5vKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgQ29tcGFyZVR5cGUg PT0gRUZJX0NPTVBBUkVfVFlQRS5HUkVBVEVSX0VRVUFMOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IEdFT2JqID0gQ0lmckdyZWF0ZXJFcXVhbChMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJfVEhBTjoN Cj4gPg0KPiA+ICsgICAgICAgICAgICBHVE9iaiA9IENJZnJHcmVhdGVyVGhhbihMaW5lTm8pDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBFeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBw cm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjaWRlcWlkRXhwLg0KPiA+DQo+ID4gKyAgICBkZWYg dmlzaXRJZGVxaWRFeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5JZGVxaWRFeHBDb250ZXh0 KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiAr ICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIE1hc2sxID0g Y3R4LnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgwKS5NYXNrDQo+ID4NCj4gPiArICAgICAgICBR SWQxID0gY3R4LnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgwKS5RSWQNCj4gPg0KPiA+ICsgICAg ICAgIFZhcklkU3RyMSA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoMCkuVmFySWRTdHIN Cj4gPg0KPiA+ICsgICAgICAgIExpbmVObzEgPSBjdHgudmZyUXVlc3Rpb25EYXRhRmllbGROYW1l KDApLkxpbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIE1hc2syID0gY3R4LnZmclF1 ZXN0aW9uRGF0YUZpZWxkTmFtZSgxKS5NYXNrDQo+ID4NCj4gPiArICAgICAgICBRSWQyID0gY3R4 LnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgxKS5RSWQNCj4gPg0KPiA+ICsgICAgICAgIFZhcklk U3RyMiA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoMSkuVmFySWRTdHINCj4gPg0KPiA+ ICsgICAgICAgIExpbmVObzIgPSBjdHgudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKDEpLkxpbmUN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5FcXVhbCgpICE9IE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgTWFzazEgJiBNYXNrMjoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5JZEVxSWREb1NwZWNpYWwoY3R4LkV4cEluZm8sIExpbmUsIFFJZDEsIFZh cklkU3RyMSwgTWFzazEsDQo+IFFJZDIsDQo+ID4gVmFySWRTdHIyLCBNYXNrMiwgRUZJX0NPTVBB UkVfVFlQRS5FUVVBTCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBFSUlPYmogPSBDSWZyRXFJZElkKExpbmUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKEVJSU9iai5HZXRIZWFkZXIoKSwNCj4gPiAo Y3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwgTGluZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgRUlJT2JqLlNldFF1ZXN0aW9uSWQxKFFJZDEsIFZhcklkU3RyMSwgTGluZU5vMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgRUlJT2JqLlNldFF1ZXN0aW9uSWQxKFFJZDIsIFZhcklk U3RyMiwgTGluZU5vMikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhw T3BDb3VudCArPSAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC5MZXNz RXF1YWwoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSWRFcUlkRG9TcGVj aWFsKGN0eC5FeHBJbmZvLCBMaW5lLCBRSWQxLCBWYXJJZFN0cjEsIE1hc2sxLCBRSWQyLA0KPiA+ IFZhcklkU3RyMiwgTWFzazIsIEVGSV9DT01QQVJFX1RZUEUuTEVTU19FUVVBTCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4Lkxlc3MoKSAhPSBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuSWRFcUlkRG9TcGVjaWFsKGN0eC5FeHBJbmZvLCBMaW5lLCBRSWQx LCBWYXJJZFN0cjEsIE1hc2sxLCBRSWQyLA0KPiA+IFZhcklkU3RyMiwgTWFzazIsIEVGSV9DT01Q QVJFX1RZUEUuTEVTU19USEFOKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBj dHguR3JlYXRlckVxdWFsKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLklk RXFJZERvU3BlY2lhbChjdHguRXhwSW5mbywgTGluZSwgUUlkMSwgVmFySWRTdHIxLCBNYXNrMSwg UUlkMiwNCj4gPiBWYXJJZFN0cjIsIE1hc2syLCBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJfRVFV QUwpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC5HcmVhdGVyKCkgIT0g Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLklkRXFJZERvU3BlY2lhbChjdHguRXhw SW5mbywgTGluZSwgUUlkMSwgVmFySWRTdHIxLCBNYXNrMSwgUUlkMiwNCj4gPiBWYXJJZFN0cjIs IE1hc2syLCBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJfVEhBTikNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBjdHguRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgSWRFcUxpc3REb1NwZWNpYWwoc2VsZiwgRXhwSW5mbywgTGluZU5vLCBRSWQsIFZhcklk U3RyLCBNYXNrLCBMaXN0TGVuLA0KPiA+IFZhbHVlTGlzdCk6DQo+ID4NCj4gPiArICAgICAgICBp ZiBMaXN0TGVuID09IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBzZWxmLklkRXFWYWxEb1NwZWNpYWwoRXhwSW5mbywgTGluZU5v LCBRSWQsIFZhcklkU3RyLCBNYXNrLA0KPiBWYWx1ZUxpc3RbMF0sDQo+ID4gRUZJX0NPTVBBUkVf VFlQRS5FUVVBTCkNCj4gPg0KPiA+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIExpc3RMZW4p Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSWRFcVZhbERvU3BlY2lhbChFeHBJbmZvLCBM aW5lTm8sIFFJZCwgVmFySWRTdHIsIE1hc2ssDQo+ID4gVmFsdWVMaXN0W2ldLCBFRklfQ09NUEFS RV9UWVBFLkVRVUFMKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIE9PYmogPSBDSWZyT3IoTGluZU5v KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIEV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNpZGVxdmFsbGlzdEV4cC4NCj4gPg0KPiA+ICsgICAgZGVm IHZpc2l0SWRlcXZhbGxpc3RFeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5JZGVxdmFsbGlz dEV4cENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkN Cj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAg ICAgTWFzayA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKS5NYXNrDQo+ID4NCj4gPiAr ICAgICAgICBRSWQgPSBjdHgudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkuUUlkDQo+ID4NCj4g PiArICAgICAgICBWYXJJZFN0ciA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKS5WYXJJ ZFN0cg0KPiA+DQo+ID4gKyAgICAgICAgTGluZU5vID0gY3R4LnZmclF1ZXN0aW9uRGF0YUZpZWxk TmFtZSgpLkxpbmUNCj4gPg0KPiA+ICsgICAgICAgIFZhbHVlTGlzdCA9IFtdDQo+ID4NCj4gPiAr ICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4Lk51bWJlcigpKSk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgVmFsdWVMaXN0LmFwcGVuZChzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcihp KSkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBMaXN0TGVuID0gbGVuKFZhbHVlTGlz dCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIE1hc2sgIT0gMDoNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLklkRXFMaXN0RG9TcGVjaWFsKGN0eC5FeHBJbmZvLCBMaW5lTm8s IFFJZCwgVmFySWRTdHIsIE1hc2ssDQo+ID4gTGlzdExlbiwgVmFsdWVMaXN0KQ0KPiA+DQo+ID4g KyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBFSUxPYmogPSBDSWZyRXFJZExp c3QoTGluZSwgTGlzdExlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBRSWQgIT0gRUZJX1FV RVNUSU9OX0lEX0lOVkFMSUQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEVJTE9iai5TZXRR dWVzdGlvbklkKFFJZCwgVmFySWRTdHIsIExpbmVObykNCj4gPg0KPiA+ICsgICAgICAgICAgICBF SUxPYmouU2V0TGlzdExlbmd0aChMaXN0TGVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIEVJTE9i ai5TZXRWYWx1ZUxpc3QoVmFsdWVMaXN0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19T YXZlT3BIZHJDb25kKEVJTE9iai5HZXRIZWFkZXIoKSwNCj4gPiAoY3R4LkV4cEluZm8uRXhwT3BD b3VudCA9PSAwKSwgTGluZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBRSWQgPT0gRUZJX1FV RVNUSU9OX0lEX0lOVkFMSUQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEVJTE9iai5TZXRR dWVzdGlvbklkKFFJZCwgVmFySWRTdHIsIExpbmVObykNCj4gPg0KPiA+ICsgICAgICAgICAgICBj dHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHgu RXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBw cm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVS dWxlMS4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyUXVlc3Rpb25EYXRhRmllbGROYW1lUnVs ZTEoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFt ZVJ1bGUxQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBjdHguTGluZSA9IGN0eC5zdGFydC5s aW5lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4g KyAgICAgICAgY3R4LlZhcklkU3RyICs9IGN0eC5TTjEudGV4dA0KPiA+DQo+ID4gKyAgICAgICAg Y3R4LlZhcklkU3RyICs9ICdbJw0KPiA+DQo+ID4gKyAgICAgICAgY3R4LlZhcklkU3RyICs9IGN0 eC5JLnRleHQNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5WYXJJZFN0ciArPSAnXScNCj4gPg0KPiA+ ICsgICAgICAgIGN0eC5RSWQsIGN0eC5NYXNrLCBfID0gc2VsZi5fX0NWZnJRdWVzdGlvbkRCLkdl dFF1ZXN0aW9uSWQoTm9uZSwNCj4gPiBjdHguVmFySWRTdHIpDQo+ID4NCj4gPiArICAgICAgICBp ZiBzZWxmLl9fQ29uc3RhbnRPbmx5SW5FeHByZXNzaW9uOg0KPiA+DQo+ID4gKw0KPiBzZWxmLl9f RXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9DT05TVEFOVF9PTkxZLA0KPiA+ IGN0eC5TTjEubGluZSkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguUUlkLCBjdHguTWFz aywgY3R4LlZhcklkU3RyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMg VmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+ID4gVmZyU3ludGF4UGFyc2VyI3ZmclF1 ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUyLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJRdWVz dGlvbkRhdGFGaWVsZE5hbWVSdWxlMihzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZy UXVlc3Rpb25EYXRhRmllbGROYW1lUnVsZTJDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIGN0 eC5MaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBjdHguVmFySWRTdHIgKz0gY3R4LlNOMi50ZXh0 DQo+ID4NCj4gPiArICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4LmFycmF5TmFtZSgp KSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LlZhcklkU3RyICs9ICcuJw0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIHNlbGYuX19Db25zdGFudE9ubHlJbkV4cHJlc3Npb246DQo+ID4NCj4g PiArDQo+ID4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fQ09O U1RBTlRfT05MWSwNCj4gPiBjdHguU04yLmxpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4 LlZhcklkU3RyICs9IGN0eC5hcnJheU5hbWUoaSkuU3ViU3RyWg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgY3R4LlFJZCwgY3R4Lk1hc2ssIF8gPSBzZWxmLl9fQ1ZmclF1ZXN0aW9uREIu R2V0UXVlc3Rpb25JZChOb25lLA0KPiA+IGN0eC5WYXJJZFN0cikNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBjdHguUUlkLCBjdHguTWFzaywgY3R4LlZhcklkU3RyDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZm clN5bnRheFBhcnNlciNhcnJheU5hbWUuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdEFycmF5TmFt ZShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkFycmF5TmFtZUNvbnRleHQpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsg ICAgICAgIGN0eC5TdWJTdHIgKz0gc2VsZi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIo KSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5TdWJTdHJaICs9IHNlbGYuX19UcmFuc0lkKGN0eC5T dHJpbmdJZGVudGlmaWVyKCkpDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguTiAhPSBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIElkeCA9IHNlbGYuX19UcmFuc051bShjdHguTi50ZXh0KQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIElkeCA+IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGN0eC5TdWJTdHIgKz0gJ1snDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5TdWJT dHIgKz0gc3RyKElkeCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LlN1YlN0ciArPSAn XScNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguU3ViU3RyWiArPSAnWycN Cj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguU3ViU3RyWiArPSBzdHIoSWR4KQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGN0eC5TdWJTdHJaICs9ICddJw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgcmV0dXJuIGN0eC5TdWJTdHIsIGN0eC5TdWJTdHJaDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5 bnRheFBhcnNlciNxdWVzdGlvbnJlZjFFeHAuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFF1ZXN0 aW9ucmVmMUV4cChzZWxmLA0KPiA+IGN0eDpWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25yZWYxRXhw Q29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUgIw0KPiA+ DQo+ID4gKyAgICAgICAgUU5hbWUgPSBOb25lICMNCj4gPg0KPiA+ICsgICAgICAgIFFJZCA9IEVG SV9RVUVTVElPTl9JRF9JTlZBTElEDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRy ZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LlN0cmluZ0lkZW50aWZpZXIoKSAhPSBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFFOYW1lID0gc2VsZi5fX1RyYW5zSWQoY3R4LlN0 cmluZ0lkZW50aWZpZXIoKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBRSWQsIF8gLCBfID0gc2Vs Zi5fX0NWZnJRdWVzdGlvbkRCLkdldFF1ZXN0aW9uSWQoUU5hbWUpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBlbGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIFFJZCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBRUjFPYmogPSBDSWZyUXVlc3Rpb25SZWYxKExpbmUpDQo+ID4NCj4g PiArICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChRUjFPYmouR2V0SGVhZGVyKCksDQo+ID4g KGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0gMCksIExpbmUpDQo+ID4NCj4gPiArICAgICAgICBR UjFPYmouU2V0UXVlc3Rpb25JZChRSWQsIFFOYW1lLCBMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAg Y3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gY3R4LkV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3J1bGVy ZWZFeHAuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFJ1bGVyZWZFeHAoc2VsZiwgY3R4OlZmclN5 bnRheFBhcnNlci5SdWxlcmVmRXhwQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBMaW5lID0g Y3R4LnN0YXJ0LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQo+ID4NCj4gPiArICAgICAgICBSUk9iaiA9IENJZnJSdWxlUmVmKExpbmUpDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChSUk9iai5HZXRIZWFkZXIoKSwNCj4gKGN0eC5F eHBJbmZvLkV4cE9wQ291bnQNCj4gPiA9PSAwKSwgTGluZSkNCj4gPg0KPiA+ICsgICAgICAgIFJ1 bGVJZCA9DQo+ID4gc2VsZi5fX0NWZnJSdWxlc0RCLkdldFJ1bGVJZChzZWxmLl9fVHJhbnNJZChj dHguU3RyaW5nSWRlbnRpZmllcigpKSkNCj4gPg0KPiA+ICsgICAgICAgIFJST2JqLlNldFJ1bGVJ ZChSdWxlSWQpDQo+ID4NCj4gPiArICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDEN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguRXhwSW5mbw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9k dWNlZCBieSBWZnJTeW50YXhQYXJzZXIjc3RyaW5ncmVmMUV4cC4NCj4gPg0KPiA+ICsgICAgZGVm IHZpc2l0U3RyaW5ncmVmMUV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlN0cmluZ3JlZjFF eHBDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAg IFJlZlN0cmluZ0lkID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4gPg0KPiA+ICsg ICAgICAgIFNSMU9iaiA9IENJZnJTdHJpbmdSZWYxKExpbmUpDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLl9fU2F2ZU9wSGRyQ29uZChTUjFPYmouR2V0SGVhZGVyKCksDQo+IChjdHguRXhwSW5mby5F eHBPcENvdW50DQo+ID4gPT0gMCksIExpbmUpDQo+ID4NCj4gPiArICAgICAgICBTUjFPYmouU2V0 U3RyaW5nSWQoUmVmU3RyaW5nSWQpDQo+ID4NCj4gPiArICAgICAgICBjdHguRXhwSW5mby5FeHBP cENvdW50ICs9IDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguRXhw SW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjcHVzaHRoaXNFeHAuDQo+ID4NCj4g PiArICAgIGRlZiB2aXNpdFB1c2h0aGlzRXhwKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuUHVz aHRoaXNFeHBDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGlu ZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsg ICAgICAgIFRPYmogPSBDSWZyVGhpcyhMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1Nh dmVPcEhkckNvbmQoVE9iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQNCj4g PiA9PSAwKSwgTGluZSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQg Kz0gMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5FeHBJbmZvDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5 IFZmclN5bnRheFBhcnNlciNzZWN1cml0eUV4cC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0U2Vj dXJpdHlFeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5TZWN1cml0eUV4cENvbnRleHQpOg0K PiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgU09iaiA9IENJZnJT ZWN1cml0eShMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNvbmQoU09i ai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQNCj4gPiA9PSAwKSwgTGluZSkN Cj4gPg0KPiA+ICsgICAgICAgIFNPYmouU2V0UGVybWlzc2lvbnMoY3R4Lmd1aWREZWZpbml0aW9u KCkuR3VpZCkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5FeHBJbmZvDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5 bnRheFBhcnNlciNudW1lcmljVmFyU3RvcmVUeXBlLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRO dW1lcmljVmFyU3RvcmVUeXBlKHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5OdW1lcmlj VmFyU3RvcmVUeXBlQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRy ZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Lk51bWVyaWNTaXplT25lKCkgIT0gTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguVmFyVHlwZSA9IEVGSV9JRlJfTlVNRVJJQ19T SVpFXzENCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5OdW1lcmljU2l6ZVR3bygpICE9IE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LlZhclR5cGUgPSBFRklfSUZSX05VTUVSSUNfU0la RV8yDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguTnVtZXJpY1NpemVGb3VyKCkgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguVmFyVHlwZSA9IEVGSV9JRlJfTlVNRVJJQ19TSVpF XzQNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5OdW1lcmljU2l6ZUVpZ2h0KCkgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguVmFyVHlwZSA9IEVGSV9JRlJfTlVNRVJJQ19TSVpF XzgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguVmFyVHlwZQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBw cm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZ2V0RXhwLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlz aXRHZXRFeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5HZXRFeHBDb250ZXh0KToNCj4gPg0K PiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5CYXNlSW5mby5W YXJTdG9yZUlkID09IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgIyBzdXBwb3J0IERhdGUvVGlt ZSBxdWVzdGlvbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhcklkU3RyID0gY3R4LnZmclN0b3Jh Z2VWYXJJZCgpLlZhcklkU3RyDQo+ID4NCj4gPiArICAgICAgICAgICAgUUlkLCBNYXNrLCBRVHlw ZSA9IHNlbGYuX19DVmZyUXVlc3Rpb25EQi5HZXRRdWVzdGlvbklkKE5vbmUsDQo+ID4gVmFySWRT dHIsIEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIChRSWQgPT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQpIG9yIChNYXNrID09IDApIG9y IChRVHlwZSA9PQ0KPiA+IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMKToNCj4gPg0K PiA+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5T VVBQT1JURUQsDQo+ID4gTGluZSwgIkdldC9TZXQgb3Bjb2RlIGNhbid0IGdldCB0aGUgZW5vdWdo IHZhcnN0b3JlIGluZm9ybWF0aW9uIikNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBRVHlwZSA9 PSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX0RBVEU6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGN0eC5CYXNlSW5mby5WYXJUeXBlID0gRUZJX0lGUl9UWVBFX0RBVEUNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbGlmIFFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fVElNRToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUgPSBFRklfSUZS X1RZUEVfVElNRQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIE1hc2sgPT0g REFURV9ZRUFSX0JJVE1BU0s6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5m by5WYXJPZmZzZXQgPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBNYXNrID09IERBVEVf REFZX0JJVE1BU0s6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJP ZmZzZXQgPSAzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBNYXNrID09IFRJTUVfSE9VUl9C SVRNQVNLOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyT2Zmc2V0 ID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgTWFzayA9PSBUSU1FX01JTlVURV9CSVRN QVNLOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyT2Zmc2V0ID0g MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgTWFzayA9PSBUSU1FX1NFQ09ORF9CSVRNQVNL Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyT2Zmc2V0ID0gMg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArDQo+IHNlbGYuX19FcnJvckhh bmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiA+IExpbmUsICJH ZXQvU2V0IG9wY29kZSBjYW4ndCBnZXQgdGhlIGVub3VnaCB2YXJzdG9yZSBpbmZvcm1hdGlvbiIp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIFZhclR5cGUgPSBFRklfSUZSX1RZUEVfVU5ERUZJTkVEDQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgY3R4LkZMQUdTKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVmFy VHlwZSA9IGN0eC5udW1lcmljVmFyU3RvcmVUeXBlKCkuVmFyVHlwZQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIChnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlVHlwZShj dHguQmFzZUluZm8uVmFyU3RvcmVJZCkgPT0NCj4gPiBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJ X1ZGUl9WQVJTVE9SRV9OQU1FKSBhbmQgKFZhclR5cGUgPT0NCj4gPiBFRklfSUZSX1RZUEVfVU5E RUZJTkVEKToNCj4gPg0KPiA+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsDQo+ID4gTGluZSwgIkdldC9TZXQgb3Bjb2RlIGRvbid0 IHN1cHBvcnQgbmFtZSBzdHJpbmciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIFZhclR5cGUgIT0gRUZJX0lGUl9UWVBFX1VOREVGSU5FRDoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUgPSBWYXJUeXBlDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIFNpemUsIFJldHVybkNvZGUgPQ0KPiA+IGdDVmZyVmFyRGF0YVR5cGVEQi5HZXRE YXRhVHlwZVNpemVCeURhdGFUeXBlKGN0eC5CYXNlSW5mby5WYXJUeXBlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExpbmUsICJHZXQv U2V0IG9wY29kZSBjYW4ndCBnZXQNCj4gPiB2YXIgdHlwZSBzaXplIikNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclRvdGFsU2l6ZSA9IFNpemUNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICBTaXplLCBSZXR1cm5Db2RlID0NCj4gPiBnQ1ZmclZhckRh dGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShjdHguQmFzZUluZm8uVmFyVHlwZSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExp bmUsICJHZXQvU2V0IG9wY29kZSBjYW4ndCBnZXQNCj4gdmFyDQo+ID4gdHlwZSBzaXplIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBTaXplICE9IGN0eC5CYXNlSW5mby5W YXJUb3RhbFNpemU6DQo+ID4NCj4gPiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiA+IExpbmUsICJHZXQvU2V0IG9wY29kZSBk b24ndCBzdXBwb3J0IGRhdGEgYXJyYXkiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg Y3R4LkdPYmogPSBDSWZyR2V0KExpbmUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fU2F2ZU9w SGRyQ29uZChjdHguR09iai5HZXRIZWFkZXIoKSwNCj4gPiAoY3R4LkV4cEluZm8uRXhwT3BDb3Vu dCA9PSAwKSwgTGluZSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5HT2JqLlNldFZhckluZm8oY3R4 LkJhc2VJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAx DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LkdPYmoNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmckV4cHJlc3Npb25Db25zdGFudC4NCj4gPg0KPiA+ ICsgICAgZGVmIHZpc2l0VmZyRXhwcmVzc2lvbkNvbnN0YW50KHNlbGYsDQo+ID4gY3R4OlZmclN5 bnRheFBhcnNlci5WZnJFeHByZXNzaW9uQ29uc3RhbnRDb250ZXh0KToNCj4gPg0KPiA+ICsgICAg ICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5UcnVlU3ltYm9sKCkgIT0gTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBUT2JqID0gQ0lmclRydWUoTGluZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChUT2JqLkdldEhlYWRlcigpLA0KPiAo Y3R4LkV4cEluZm8uRXhwT3BDb3VudA0KPiA+ID09IDApLCBMaW5lKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgaWYgY3R4LkZhbHNlU3ltYm9sKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBGT2JqID0gQ0lmckZhbHNlKExpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5f X1NhdmVPcEhkckNvbmQoRk9iai5HZXRIZWFkZXIoKSwNCj4gKGN0eC5FeHBJbmZvLkV4cE9wQ291 bnQNCj4gPiA9PSAwKSwgTGluZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguRXhwSW5mby5F eHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5PbmUo KSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIE9PYmogPSBDSWZyT25lKExpbmUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNvbmQoT09iai5HZXRIZWFkZXIo KSwNCj4gKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQNCj4gPiA9PSAwKSwgTGluZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGlmIGN0eC5PbmVzKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBPT2JqID0gQ0lmck9uZXMoTGluZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9f U2F2ZU9wSGRyQ29uZChPT2JqLkdldEhlYWRlcigpLA0KPiAoY3R4LkV4cEluZm8uRXhwT3BDb3Vu dA0KPiA+ID09IDApLCBMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4 cE9wQ291bnQgKz0gMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Llplcm8o KSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFpPYmogPSBDSWZyWmVybyhMaW5lKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKFpPYmouR2V0SGVhZGVy KCksDQo+IChjdHguRXhwSW5mby5FeHBPcENvdW50DQo+ID4gPT0gMCksIExpbmUpDQo+ID4NCj4g PiArICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBpZiBjdHguVW5kZWZpbmVkKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBVT2JqID0gQ0lmclVuZGVmaW5lZChMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKFVPYmouR2V0SGVhZGVyKCksDQo+IChjdHguRXhwSW5m by5FeHBPcENvdW50DQo+ID4gPT0gMCksIExpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4 LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBp ZiBjdHguVmVyc2lvbigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgVk9iaiA9IENJ ZnJWZXJzaW9uKExpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNv bmQoVk9iai5HZXRIZWFkZXIoKSwNCj4gKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQNCj4gPiA9PSAw KSwgTGluZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9 IDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5OdW1iZXIoKSAhPSBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIFU2NE9iaiA9IENJZnJVaW50NjQoTGluZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBVNjRPYmouU2V0VmFsdWUoc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1i ZXIoKSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNvbmQoVTY0T2Jq LkdldEhlYWRlcigpLA0KPiA+IChjdHguRXhwSW5mby5FeHBPcENvdW50ID09IDApLCBMaW5lKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5FeHBJbmZvDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5 DQo+IFZmclN5bnRheFBhcnNlciN2ZnJFeHByZXNzaW9uVW5hcnlPcC4NCj4gPg0KPiA+ICsgICAg ZGVmIHZpc2l0VmZyRXhwcmVzc2lvblVuYXJ5T3Aoc2VsZiwNCj4gPiBjdHg6VmZyU3ludGF4UGFy c2VyLlZmckV4cHJlc3Npb25VbmFyeU9wQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2Vy I2xlbmd0aEV4cC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0TGVuZ3RoRXhwKHNlbGYsIGN0eDpW ZnJTeW50YXhQYXJzZXIuTGVuZ3RoRXhwQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBMaW5l ID0gY3R4LnN0YXJ0LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+ID4NCj4gPiArICAgICAgICBjdHguTE9iaiA9IENJZnJMZW5ndGgoTGluZSkNCj4gPg0K PiA+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiA+DQo+ID4gKyAgICAg ICAgcmV0dXJuIGN0eC5MT2JqDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNiaXR3aXNlbm90RXhwLg0KPiA+ DQo+ID4gKyAgICBkZWYgdmlzaXRCaXR3aXNlbm90RXhwKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJz ZXIuQml0d2lzZW5vdEV4cENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5z dGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+ DQo+ID4gKyAgICAgICAgY3R4LkJXTk9iaiA9IENJZnJCaXRXaXNlTm90KExpbmUpDQo+ID4NCj4g PiArICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBjdHguQldOT2JqDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNxdWVzdGlv bjIzcmVmRXhwLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRRdWVzdGlvbjIzcmVmRXhwKHNlbGYs DQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5RdWVzdGlvbjIzcmVmRXhwQ29udGV4dCk6DQo+ID4N Cj4gPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIFR5 cGUgPSAweDENCj4gPg0KPiA+ICsgICAgICAgIERldmljZVBhdGggPSBFRklfU1RSSU5HX0lEX0lO VkFMSUQNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4g PiArICAgICAgICBpZiBjdHguRGV2aWNlUGF0aCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgVHlwZSA9IDB4Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIERldmljZVBhdGggPSBzZWxm Ll9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg aWYgY3R4LlV1aWQoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFR5cGUgPSAweDMN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIFR5cGUgPT0gMHgxOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIFFSMk9iaiA9IENJZnJRdWVzdGlvblJlZjIoTGluZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChRUjJPYmouR2V0SGVhZGVyKCksDQo+ID4g KGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0gMCksIExpbmUpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBpZiBUeXBlID09IDB4MjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBRUjNfMk9i aiA9IENJZnJRdWVzdGlvblJlZjNfMihMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X19TYXZlT3BIZHJDb25kKFFSM18yT2JqLkdldEhlYWRlcigpLA0KPiA+IChjdHguRXhwSW5mby5F eHBPcENvdW50ID09IDApLCBMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFFSM18yT2JqLlNl dERldmljZVBhdGgoRGV2aWNlUGF0aCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlm IFR5cGUgPT0gMHgzOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFFSM18zT2JqID0gQ0lmclF1ZXN0 aW9uUmVmM18zKExpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNv bmQoUVIzXzNPYmouR2V0SGVhZGVyKCksDQo+ID4gKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0g MCksIExpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgUVIzXzNPYmouU2V0RGV2aWNlUGF0aChE ZXZpY2VQYXRoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFFSM18zT2JqLlNldEd1aWQoY3R4Lmd1 aWREZWZpbml0aW9uKCkuR3VpZCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5F eHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIGN0eC5FeHBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciNzdHJpbmdyZWYyRXhwLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRTdHJpbmdyZWYyRXhwKHNl bGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuU3RyaW5ncmVmMkV4cENvbnRleHQpOg0KPiA+DQo+ID4g KyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZp c2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LlNSMk9iaiA9IENJZnJTdHJp bmdSZWYyKExpbmUpDQo+ID4NCj4gPiArICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9 IDENCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguU1IyT2JqDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZm clN5bnRheFBhcnNlciN0b2Jvb2xFeHAuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFRvYm9vbEV4 cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlRvYm9vbEV4cENvbnRleHQpOg0KPiA+DQo+ID4g KyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZp c2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LlRCT2JqID0gQ0lmclRvQm9v bGVhbihMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAx DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LlRCT2JqDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN0 b3N0cmluZ0V4cC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VG9zdHJpbmdFeHAoc2VsZiwgY3R4 OlZmclN5bnRheFBhcnNlci5Ub3N0cmluZ0V4cENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAg TGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRy ZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LlRTT2JqID0gQ0lmclRvU3RyaW5nKExpbmUp DQo+ID4NCj4gPiArICAgICAgICBGbXQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0K PiA+DQo+ID4gKyAgICAgICAgY3R4LlRTT2JqLlNldEZvcm1hdChGbXQpDQo+ID4NCj4gPiArICAg ICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBjdHguVFNPYmoNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNp dCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3VuaW50RXhwLg0KPiA+ DQo+ID4gKyAgICBkZWYgdmlzaXRVbmludEV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlVu aW50RXhwQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAg ICAgICBjdHguVFVPYmogPSBDSWZyVG9VaW50KExpbmUpDQo+ID4NCj4gPiArICAgICAgICBjdHgu RXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguVFVP YmoNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3RvdXBwZXJFeHAuDQo+ID4NCj4gPiAr ICAgIGRlZiB2aXNpdFRvdXBwZXJFeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5Ub3VwcGVy RXhwQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAg ICBjdHguVFVPYmogPSBDSWZyVG9VcHBlcihMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkV4 cEluZm8uRXhwT3BDb3VudCArPSAxDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LlRVT2Jq DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN0b2x3ZXJFeHAuDQo+ID4NCj4gPiArICAg IGRlZiB2aXNpdFRvbHdlckV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlRvbHdlckV4cENv bnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4g PiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4 LlRMT2JqID0gQ0lmclRvTG93ZXIoTGluZSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5FeHBJbmZv LkV4cE9wQ291bnQgKz0gMQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5UTE9iag0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBw cm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjc2V0RXhwLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlz aXRTZXRFeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5TZXRFeHBDb250ZXh0KToNCj4gPg0K PiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5CYXNlSW5mby5W YXJTdG9yZUlkID09IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgIyBzdXBwb3J0IERhdGUvVGlt ZSBxdWVzdGlvbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhcklkU3RyID0gY3R4LnZmclN0b3Jh Z2VWYXJJZCgpLlZhcklkU3RyDQo+ID4NCj4gPiArICAgICAgICAgICAgUUlkLCBNYXNrLCBRVHlw ZSA9IHNlbGYuX19DVmZyUXVlc3Rpb25EQi5HZXRRdWVzdGlvbklkKE5vbmUsDQo+ID4gVmFySWRT dHIsIEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIChRSWQgPT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQpIG9yIChNYXNrID09IDApIG9y IChRVHlwZSA9PQ0KPiA+IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMKToNCj4gPg0K PiA+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5T VVBQT1JURUQsDQo+ID4gTGluZSwgIkdldC9TZXQgb3Bjb2RlIGNhbid0IGdldCB0aGUgZW5vdWdo IHZhcnN0b3JlIGluZm9ybWF0aW9uIikNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBRVHlwZSA9 PSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX0RBVEU6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGN0eC5CYXNlSW5mby5WYXJUeXBlID0gRUZJX0lGUl9UWVBFX0RBVEUNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbGlmIFFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fVElNRToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUgPSBFRklfSUZS X1RZUEVfVElNRQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIE1hc2sgPT0g REFURV9ZRUFSX0JJVE1BU0s6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5m by5WYXJPZmZzZXQgPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBNYXNrID09IERBVEVf REFZX0JJVE1BU0s6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJP ZmZzZXQgPSAzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBNYXNrID09IFRJTUVfSE9VUl9C SVRNQVNLOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyT2Zmc2V0 ID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgTWFzayA9PSBUSU1FX01JTlVURV9CSVRN QVNLOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyT2Zmc2V0ID0g MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgTWFzayA9PSBUSU1FX1NFQ09ORF9CSVRNQVNL Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyT2Zmc2V0ID0gMg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArDQo+IHNlbGYuX19FcnJvckhh bmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiA+IExpbmUsICJH ZXQvU2V0IG9wY29kZSBjYW4ndCBnZXQgdGhlIGVub3VnaCB2YXJzdG9yZSBpbmZvcm1hdGlvbiIp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIFZhclR5cGUgPSBFRklfSUZSX1RZUEVfVU5ERUZJTkVEDQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgY3R4LkZMQUdTKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVmFy VHlwZSA9IGN0eC5udW1lcmljVmFyU3RvcmVUeXBlKCkuVmFyVHlwZQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIChnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlVHlwZShj dHguQmFzZUluZm8uVmFyU3RvcmVJZCkgPT0NCj4gPiBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJ X1ZGUl9WQVJTVE9SRV9OQU1FKSBhbmQgKFZhclR5cGUgPT0NCj4gPiBFRklfSUZSX1RZUEVfVU5E RUZJTkVEKToNCj4gPg0KPiA+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsDQo+ID4gTGluZSwgIkdldC9TZXQgb3Bjb2RlIGRvbid0 IHN1cHBvcnQgbmFtZSBzdHJpbmciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIFZhclR5cGUgIT0gRUZJX0lGUl9UWVBFX1VOREVGSU5FRDoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUgPSBWYXJUeXBlDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIFNpemUsIFJldHVybkNvZGUgPQ0KPiA+IGdDVmZyVmFyRGF0YVR5cGVEQi5HZXRE YXRhVHlwZVNpemVCeURhdGFUeXBlKGN0eC5CYXNlSW5mby5WYXJUeXBlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExpbmUsICJHZXQv U2V0IG9wY29kZSBjYW4ndCBnZXQNCj4gPiB2YXIgdHlwZSBzaXplIikNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclRvdGFsU2l6ZSA9IFNpemUNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICBTaXplLCBSZXR1cm5Db2RlID0NCj4gPiBnQ1ZmclZhckRh dGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShjdHguQmFzZUluZm8uVmFyVHlwZSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExp bmUsICJHZXQvU2V0IG9wY29kZSBjYW4ndCBnZXQNCj4gdmFyDQo+ID4gdHlwZSBzaXplIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBTaXplICE9IGN0eC5CYXNlSW5mby5W YXJUb3RhbFNpemU6DQo+ID4NCj4gPiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiA+IExpbmUsICJHZXQvU2V0IG9wY29kZSBk b24ndCBzdXBwb3J0IGRhdGEgYXJyYXkiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg Y3R4LlRTT2JqID0gQ0lmclNldChMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1NhdmVP cEhkckNvbmQoY3R4LlRTT2JqLkdldEhlYWRlcigpLA0KPiA+IChjdHguRXhwSW5mby5FeHBPcENv dW50ID09IDApLCBMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LlRTT2JqLlNldFZhckluZm8o Y3R4LkJhc2VJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCAr PSAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LlRTT2JqDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5DQo+ID4gVmZyU3ludGF4UGFyc2VyI3ZmckV4cHJlc3Npb25UZXJuYXJ5T3AuDQo+ ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmckV4cHJlc3Npb25UZXJuYXJ5T3Aoc2VsZiwNCj4gPiBj dHg6VmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25UZXJuYXJ5T3BDb250ZXh0KToNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eSBWZnJTeW50YXhQYXJzZXIjY29uZGl0aW9uYWxFeHAuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNp dENvbmRpdGlvbmFsRXhwKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuQ29uZGl0aW9uYWxF eHBDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAg IGN0eC5DT2JqID0gQ0lmckNvbmRpdGlvbmFsKExpbmUpDQo+ID4NCj4gPiArICAgICAgICBjdHgu RXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguQ09i ag0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZmluZEV4cC4NCj4gPg0KPiA+ICsgICAg ZGVmIHZpc2l0RmluZEV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkZpbmRFeHBDb250ZXh0 KToNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIEZPYmogPSBD SWZyRmluZChMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgRm9ybWF0ID0gMA0KPiA+DQo+ID4gKyAg ICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5maW5kRm9ybWF0KCkpKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBGb3JtYXQgPSBjdHguZmluZEZvcm1hdChpKS5Gb3JtYXQNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIEZPYmouU2V0Rm9ybWF0KEZvcm1hdCkNCj4gPg0KPiA+ICsg ICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIEZPYmoNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2ZpbmRGb3JtYXQuDQo+ID4N Cj4gPiArICAgIGRlZiB2aXNpdEZpbmRGb3JtYXQoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5G aW5kRm9ybWF0Q29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LlNlbnNpdGl2ZSgpICE9IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgY3R4LkZvcm1hdCA9IDB4MDANCj4gPg0KPiA+ICsgICAgICAgIGVs aWYgY3R4Lkluc2Vuc2l0aXZlKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHgu Rm9ybWF0ID0gMHgwMQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Gb3JtYXQNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJv ZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI21pZEV4cC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0 TWlkRXhwKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuTWlkRXhwQ29udGV4dCk6DQo+ID4NCj4g PiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu dmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBjdHguTU9iaiA9IENJZnJNaWQo TGluZSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5NT2JqDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN0b2tlbkV4 cC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VG9rZW5FeHAoc2VsZiwgY3R4OlZmclN5bnRheFBh cnNlci5Ub2tlbkV4cENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFy dC5saW5lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ ID4gKyAgICAgICAgY3R4LlRPYmogPSBDSWZyVG9rZW4oTGluZSkNCj4gPg0KPiA+ICsgICAgICAg IGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0 eC5UT2JqDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNzcGFuRXhwLg0KPiA+DQo+ID4g KyAgICBkZWYgdmlzaXRTcGFuRXhwKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuU3BhbkV4cENv bnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4g PiArICAgICAgICBGbGFncyA9IDANCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQo+ID4NCj4gPiArICAgICAgICBmb3IgRmxhZ3NDdHggaW4gY3R4LnNwYW5GbGFncygp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIEZsYWdzIHw9IEZsYWdzQ3R4LkZsYWcNCj4gPg0KPiA+ ICsgICAgICAgIGN0eC5TT2JqID0gQ0lmclNwYW4oTGluZSkNCj4gPg0KPiA+ICsgICAgICAgIGN0 eC5TT2JqLlNldEZsYWdzKEZsYWdzKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhw T3BDb3VudCArPSAxDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LlNPYmoNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI3NwYW5GbGFncy4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0 U3BhbkZsYWdzKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuU3BhbkZsYWdzQ29udGV4dCk6DQo+ ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAg ICAgaWYgY3R4Lk51bWJlcigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LkZs YWcgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxp ZiBjdHguTGFzdE5vbk1hdGNoKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHgu RmxhZyA9IDB4MDANCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LkZpcnN0Tm9uTWF0Y2goKSAh PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5GbGFnID0gMHgwMQ0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIGN0eC5GbGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2 ZnJFeHByZXNzaW9uTWFwLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJFeHByZXNzaW9uTWFw KHNlbGYsDQo+ID4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uTWFwQ29udGV4dCk6 DQo+ID4NCj4gPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBjdHguTU9iaiA9 IENJZnJNYXAoTGluZSkNCj4gPg0KPiA+ICsgICAgICAgIEVPYmogPSBDSWZyRW5kKCkNCj4gPg0K PiA+ICsgICAgICAgIExpbmUgPSAoTm9uZSBpZiBjdHguc3RvcCBpcyBOb25lIGVsc2UgY3R4LnN0 b3ApLmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIEVPYmouU2V0TGluZU5vKExpbmUpDQo+ID4NCj4g PiArICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBjdHguTU9iag0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19HZXRUZXh0 KHNlbGYsIGN0eCk6DQo+ID4NCj4gPiArICAgICAgICBpZiBjdHggPT0gTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gY3R4LnRleHQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIF9fVHJhbnNJZChzZWxmLCBTdHJpbmdJZGVudGlmaWVyVG9rZW4sIERlZmF1bHRWYWx1 ZT1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIFN0cmluZ0lkZW50aWZpZXJUb2tlbiA9PSBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBEZWZhdWx0VmFsdWUNCj4gPg0KPiA+ ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHN0cihTdHJpbmdJ ZGVudGlmaWVyVG9rZW4pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfX1RyYW5zTnVt KHNlbGYsIE51bWJlclRva2VuLCBEZWZhdWx0VmFsdWU9MCk6DQo+ID4NCj4gPiArICAgICAgICBp ZiBOdW1iZXJUb2tlbiA9PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBEZWZh dWx0VmFsdWUNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg U3RyVG9rZW4gPSBzdHIoTnVtYmVyVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgJzB4 JyBpbiBTdHJUb2tlbjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgTnVtYmVyVG9rZW4gPSBp bnQoU3RyVG9rZW4sIDApDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgTnVtYmVyVG9rZW4gPSBpbnQoU3RyVG9rZW4pDQo+ID4NCj4gPiArICAg ICAgICAjIGVycm9yIGhhbmRsZSAsIHZhbHVlIGlzIHRvbyBsYXJnZSB0byBzdG9yZQ0KPiA+DQo+ ID4gKyAgICAgICAgcmV0dXJuIE51bWJlclRva2VuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBfX0Fzc2lnblF1ZXN0aW9uS2V5KHNlbGYsIE9wT2JqLCBLZXkpOg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgaWYgS2V5ID09IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuDQo+ID4NCj4gPiArICAgICAgICBpZiBPcE9iai5HZXRGbGFncygpICYgRUZJX0lGUl9G TEFHX0NBTExCQUNLOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICMgaWYgdGhlIHF1ZXN0aW9uIGlz IG5vdCBDQUxMQkFDSyBpZ25vcmUgdGhlIGtleS4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9fQ1ZmclF1ZXN0aW9uREIuVXBkYXRlUXVlc3Rpb25JZChPcE9iai5HZXRRdWVzdGlvbklkKCks DQo+ID4gS2V5KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIE9wT2JqLlNldFF1ZXN0aW9uSWQoS2V5 KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBfX0V4dHJhY3RPcmlnaW5hbFRleHQoc2VsZiwgY3R4KToNCj4gPg0KPiA+ICsgICAgICAgIFNv dXJjZSA9IGN0eC5zdGFydC5nZXRUb2tlblNvdXJjZSgpDQo+ID4NCj4gPiArICAgICAgICBJbnB1 dFN0cmVhbSA9IFNvdXJjZS5pbnB1dFN0cmVhbQ0KPiA+DQo+ID4gKyAgICAgICAgc3RhcnQsIHN0 b3AgID0gY3R4LnN0YXJ0LnN0YXJ0LCBjdHguc3RvcC5zdG9wDQo+ID4NCj4gPiArICAgICAgICBU ZXh0ID0gSW5wdXRTdHJlYW0uZ2V0VGV4dChzdGFydCwgc3RvcCkNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBUZXh0LnJlcGxhY2UoJ1xuJywgJycpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBfX0NoZWNrRHVwbGljYXRlRGVmYXVsdFZhbHVlKHNlbGYsIERlZmF1bHRJZCwgTGluZSwg VG9rZW5WYWx1ZSk6DQo+ID4NCj4gPiArICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oc2Vs Zi5fX1VzZWREZWZhdWx0QXJyYXkpKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLl9f VXNlZERlZmF1bHRBcnJheVtpXSA9PSBEZWZhdWx0SWQ6DQo+ID4NCj4gPiArDQo+ID4NCj4gZ0NW ZnJFcnJvckhhbmRsZS5IYW5kbGVXYXJuaW5nKEVGSV9WRlJfV0FSTklOR19DT0RFLlZGUl9XQVJO SU4NCj4gPiBHX0RFRkFVTFRfVkFMVUVfUkVERUZJTkVELCBMaW5lLCBUb2tlblZhbHVlKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgbGVuKHNlbGYuX19Vc2VkRGVmYXVsdEFycmF5 KSA+PSBFRklfSUZSX01BWF9ERUZBVUxUX1RZUEUgLSAxOg0KPiA+DQo+ID4gKw0KPiA+DQo+IGdD VmZyRXJyb3JIYW5kbGUuSGFuZGxlRXJyb3IoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFM X0VSUk9SLA0KPiA+IExpbmUsIFRva2VuVmFsdWUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLl9fVXNlZERlZmF1bHRBcnJheS5hcHBlbmQoRGVmYXVsdElkKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgX19FcnJvckhhbmRsZXIoc2VsZiwgUmV0dXJuQ29kZSwgTGlu ZU51bSwgVG9rZW5WYWx1ZT1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19QYXJzZXJT dGF0dXMgKz0gZ0NWZnJFcnJvckhhbmRsZS5IYW5kbGVFcnJvcihSZXR1cm5Db2RlLA0KPiA+IExp bmVOdW0sIFRva2VuVmFsdWUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfX0NvbXBh cmVFcnJvckhhbmRsZXIoc2VsZiwgUmV0dXJuQ29kZSwgRXhwZWN0ZWRDb2RlLA0KPiBMaW5lTnVt LA0KPiA+IFRva2VuVmFsdWU9Tm9uZSwgRXJyb3JNc2c9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAg ICBpZiBSZXR1cm5Db2RlICE9IEV4cGVjdGVkQ29kZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9fUGFyc2VyU3RhdHVzICs9IDENCj4gPg0KPiA+ICsgICAgICAgICAgICBnQ1ZmckVycm9y SGFuZGxlLlByaW50TXNnKExpbmVOdW0sICdFcnJvcicsIEVycm9yTXNnLCBUb2tlblZhbHVlKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19JbnNlcnRDaGlsZChzZWxmLCBQYXJlbnRO b2RlOiBWZnJUcmVlTm9kZSwgQ2hpbGRDdHgpOg0KPiA+DQo+ID4gKyAgICAgICAgaWYgQ2hpbGRD dHggIT0gTm9uZSBhbmQgQ2hpbGRDdHguTm9kZSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIFBhcmVudE5vZGUuaW5zZXJ0Q2hpbGQoQ2hpbGRDdHguTm9kZSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIEdldFJvb3Qoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g c2VsZi5fX1Jvb3QNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldFF1ZXN0aW9uREIo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5fX0NWZnJRdWVzdGlvbkRCDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBEdW1wSnNvbihzZWxmLCBGaWxlTmFtZSk6DQo+ ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgd2l0aCBvcGVuKEZp bGVOYW1lLCAndycpIGFzIGY6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJ3tc bicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgXCJEYXRhU3RydWN0XCIg OiB7XG4nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwTm9kZSA9IGdDVmZyVmFyRGF0YVR5 cGVEQi5HZXREYXRhVHlwZUxpc3QoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICB3aGlsZSBw Tm9kZSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAg IFwie31cIiA6IFtcbicuZm9ybWF0KHN0cihwTm9kZS5UeXBlTmFtZSkpKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgRk5vZGUgPSBwTm9kZS5NZW1iZXJzDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICB3aGlsZSBGTm9kZSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIHtcbicpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIk5hbWVcIjoNCj4gXCJ7fVwiLFxuJy5mb3Jt YXQoc3RyKEZOb2RlLkZpZWxkTmFtZSkpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGlmIEZOb2RlLkFycmF5TnVtID4gMDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlR5cGVcIjoNCj4gPg0KPiBcInt9W3t9XVwiLFxu Jy5mb3JtYXQoc3RyKEZOb2RlLkZpZWxkVHlwZS5UeXBlTmFtZSksc3RyKEZOb2RlLkFycmF5TnVt KSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlR5cGVcIjoNCj4g PiBcInt9XCIsXG4nLmZvcm1hdChzdHIoRk5vZGUuRmllbGRUeXBlLlR5cGVOYW1lKSkpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIk9mZnNldFwi OiB7fVxuJy5mb3JtYXQoc3RyKEZOb2RlLk9mZnNldCkpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGlmIEZOb2RlLk5leHQgPT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgfVxuJykNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKCcgICAgICB9LCBcbicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgRk5vZGUgPSBGTm9kZS5OZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBp ZiBwTm9kZS5OZXh0ID09IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg Zi53cml0ZSgnICAgIF1cbicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICBdLFxuJykNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBmLndyaXRlKCcgIH0sXG4nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBmLndyaXRlKCcgIFwiRGF0YVN0cnVjdEF0dHJpYnV0ZVwiOiB7XG4nKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwTm9kZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5HZXREYXRhVHlwZUxp c3QoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgIFwie31cIicuZm9ybWF0KHN0 cihwTm9kZS5UeXBlTmFtZSkpICsgJzoge1xuJykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIGYud3JpdGUoJyAgICAgICAgXCJBbGlnbm1lbnRcIjoge30sXG4nLmZvcm1hdChzdHIocE5v ZGUuQWxpZ24pKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAg ICAgXCJUb3RhbFNpemVcIjoge31cbicuZm9ybWF0KHN0cihwTm9kZS5Ub3RhbFNpemUpKSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIHBOb2RlLk5leHQgPT0gTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICB9XG4nKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICB9LFxuJykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRl KCcgIH0sXG4nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgIFwiVmFyRGVm aW5lXCIgOiB7XG4nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwVnNOb2RlID0gZ0NWZnJE YXRhU3RvcmFnZS5HZXRCdWZmZXJWYXJTdG9yZUxpc3QoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICB3aGlsZSBwVnNOb2RlICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKCcgICAgXCJ7fVwiJy5mb3JtYXQoc3RyKHBWc05vZGUuVmFyU3RvcmVOYW1lKSkg KyAnOiB7XG4nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg ICBcIlR5cGVcIjoNCj4gPiBcInt9XCIsXG4nLmZvcm1hdChzdHIocFZzTm9kZS5EYXRhVHlwZS5U eXBlTmFtZSkpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg ICBcIkF0dHJpYnV0ZXNcIjoNCj4ge30sXG4nLmZvcm1hdChzdHIocFZzTm9kZS5BdHRyaWJ1dGVz KSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiVmFy U3RvcmVJZFwiOg0KPiA+IHt9LFxuJy5mb3JtYXQoc3RyKHBWc05vZGUuVmFyU3RvcmVJZCkpKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlZlbmRvckd1 aWRcIjogJyArICdcInt9LCB7fSwNCj4gPiB7fSwnLmZvcm1hdCgnMHgleCclKHBWc05vZGUuR3Vp ZC5EYXRhMSksJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTIpLA0KPiA+ICcweCV4JyUocFZzTm9k ZS5HdWlkLkRhdGEzKSkgXA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKyAnIHsgJyAr ICAne30sIHt9LCB7fSwge30sIHt9LCB7fSwge30sDQo+ID4ge30nLmZvcm1hdCgnMHgleCclKHBW c05vZGUuR3VpZC5EYXRhNFswXSksDQo+ID4gJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTRbMV0p LCAnMHgleCclKHBWc05vZGUuR3VpZC5EYXRhNFsyXSksDQo+ID4gJzB4JXgnJShwVnNOb2RlLkd1 aWQuRGF0YTRbM10pLCBcDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAnMHgleCclKHBW c05vZGUuR3VpZC5EYXRhNFs0XSksDQo+ID4gJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTRbNV0p LCAnMHgleCclKHBWc05vZGUuR3VpZC5EYXRhNFs2XSksDQo+ID4gJzB4JXgnJShwVnNOb2RlLkd1 aWQuRGF0YTRbN10pKSArICcgfX1cIlxuJykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IGlmIHBWc05vZGUuTmV4dCA9PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGYud3JpdGUoJyAgICAgIH1cbicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIH0s XG4nKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcFZzTm9kZSA9 IHBWc05vZGUuTmV4dA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgIH0sXG4n KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgIFwiRGF0YVwiIDogW1xuJykN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcFZzTm9kZSA9IGdDVmZyQnVmZmVyQ29uZmlnLkdl dFZhckl0ZW1MaXN0KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgd2hpbGUgcFZzTm9kZSAh PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgcFZzTm9kZS5JZCA9PSBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHBWc05vZGUgPSBwVnNOb2Rl Lk5leHQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgcEluZm9Ob2RlID0gcFZzTm9kZS5JbmZvU3RyTGlzdA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgcEluZm9Ob2RlICE9IE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAge1xuJykNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiVmVuZG9y R3VpZFwiOiAnICsgJ1wie30sIHt9LA0KPiA+IHt9LCcuZm9ybWF0KCcweCV4JyUocFZzTm9kZS5H dWlkLkRhdGExKSwnMHgleCclKHBWc05vZGUuR3VpZC5EYXRhMiksDQo+ID4gJzB4JXgnJShwVnNO b2RlLkd1aWQuRGF0YTMpKSBcDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKyAn IHsgJyArICAne30sIHt9LCB7fSwge30sIHt9LCB7fSwge30sDQo+ID4ge30nLmZvcm1hdCgnMHgl eCclKHBWc05vZGUuR3VpZC5EYXRhNFswXSksDQo+ID4gJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0 YTRbMV0pLCAnMHgleCclKHBWc05vZGUuR3VpZC5EYXRhNFsyXSksDQo+ID4gJzB4JXgnJShwVnNO b2RlLkd1aWQuRGF0YTRbM10pLCBcDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg JzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTRbNF0pLA0KPiA+ICcweCV4JyUocFZzTm9kZS5HdWlk LkRhdGE0WzVdKSwgJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTRbNl0pLA0KPiA+ICcweCV4JyUo cFZzTm9kZS5HdWlkLkRhdGE0WzddKSkgKyAnIH19XCIsXG4nKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJWYXJOYW1lXCI6DQo+ID4gXCJ7fVwi LFxuJy5mb3JtYXQoc3RyKHBWc05vZGUuTmFtZSkpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJEZWZhdWx0U3RvcmVcIjoNCj4gPiBcInt9XCIs XG4nLmZvcm1hdChzdHIocFZzTm9kZS5JZCkpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJTaXplXCI6IFwie31cIixcbicuZm9ybWF0KHN0cihw SW5mb05vZGUuV2lkdGgpKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndy aXRlKCcgICAgICAgIFwiT2Zmc2V0XCI6IHt9LFxuJy5mb3JtYXQoc3RyKHBJbmZvTm9kZS5PZmZz ZXQpKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAjZi53cml0ZSgnICAgICAg ICBcIlZhbHVlXCI6DQo+IFwie31cIlxuJy5mb3JtYXQoc3RyKHBJbmZvTm9kZS5WYWx1ZSkpKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBJbmZvTm9kZS5UeXBlID09IEVG SV9JRlJfVFlQRV9EQVRFOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAgIFwiVmFsdWVcIjoNCj4gPiBcInt9L3t9L3t9XCJcbicuZm9ybWF0KHBJ bmZvTm9kZS5WYWx1ZS5kYXRlLlllYXIsDQo+ID4gcEluZm9Ob2RlLlZhbHVlLmRhdGUuTW9udGgs IHBJbmZvTm9kZS5WYWx1ZS5kYXRlLkRheSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgaWYgcEluZm9Ob2RlLlR5cGUgPT0gRUZJX0lGUl9UWVBFX1RJTUU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJWYWx1ZVwiOg0K PiA+IFwie306e306e31cIlxuJy5mb3JtYXQocEluZm9Ob2RlLlZhbHVlLnRpbWUuSG91ciwNCj4g PiBwSW5mb05vZGUuVmFsdWUudGltZS5NaW51dGUsIHBJbmZvTm9kZS5WYWx1ZS50aW1lLlNlY29u ZCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgcEluZm9Ob2RlLlR5cGUg PT0gRUZJX0lGUl9UWVBFX1JFRjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZi53cml0ZSgnICAgICAgICBcIlZhbHVlXCI6DQo+ID4gXCJ7fTt7fTsnLmZvcm1hdChwSW5m b05vZGUuVmFsdWUucmVmLlF1ZXN0aW9uSWQsDQo+ID4gcEluZm9Ob2RlLlZhbHVlLnJlZi5Gb3Jt SWQpICsgICd7JyArICd7fSwge30sDQo+ID4NCj4ge30sJy5mb3JtYXQoJzB4JXgnJShwSW5mb05v ZGUuVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGExKSwnMHgleCclKHBJbmZvDQo+ID4gTm9kZS5W YWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTIpLA0KPiA+ICcweCV4JyUocEluZm9Ob2RlLlZhbHVl LnJlZi5Gb3JtU2V0R3VpZC5EYXRhMykpIFwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKyAnIHsgJyArICAne30sIHt9LCB7fSwge30sIHt9LCB7fSwge30sDQo+ID4ge30n LmZvcm1hdCgnMHgleCclKHBJbmZvTm9kZS5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRbMF0p LA0KPiA+ICcweCV4JyUocEluZm9Ob2RlLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFsxXSks DQo+ID4gJzB4JXgnJShwSW5mb05vZGUuVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGE0WzJdKSwN Cj4gPiAnMHgleCclKHBJbmZvTm9kZS5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRbM10pLCBc DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICcweCV4JyUocEluZm9Ob2Rl LlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFs0XSksDQo+ID4gJzB4JXgnJShwSW5mb05vZGUu VmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGE0WzVdKSwNCj4gPiAnMHgleCclKHBJbmZvTm9kZS5W YWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRbNl0pLA0KPiA+ICcweCV4JyUocEluZm9Ob2RlLlZh bHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFs3XSkpICsgJyB9fScgKw0KPiA+ICc7e31cbicuZm9y bWF0KHBJbmZvTm9kZS5WYWx1ZS5yZWYuRGV2aWNlUGF0aCkpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgaWYgcEluZm9Ob2RlLlR5cGUgPT0gRUZJX0lGUl9UWVBFX1NUUklORzoN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBc IlZhbHVlXCI6DQo+ID4gXCJ7fVwiXG4nLmZvcm1hdChwSW5mb05vZGUuVmFsdWUuc3RyaW5nKSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBwSW5mb05vZGUuVHlwZSA9PSBF RklfSUZSX1RZUEVfTlVNX1NJWkVfODoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAgICBcIlZhbHVlXCI6DQo+IFwie31cIlxuJy5mb3JtYXQocElu Zm9Ob2RlLlZhbHVlLnU4KSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBw SW5mb05vZGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJWYWx1ZVwiOg0KPiBc Int9XCJcbicuZm9ybWF0KHBJbmZvTm9kZS5WYWx1ZS51MTYpKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGlmIHBJbmZvTm9kZS5UeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0la RV8zMjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAg ICAgICBcIlZhbHVlXCI6DQo+IFwie31cIlxuJy5mb3JtYXQocEluZm9Ob2RlLlZhbHVlLnUzMikp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgcEluZm9Ob2RlLlR5cGUgPT0g RUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiVmFsdWVcIjoNCj4gXCJ7fVwiXG4nLmZvcm1hdChw SW5mb05vZGUuVmFsdWUudTY0KSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBp ZiBwSW5mb05vZGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfQk9PTEVBTjoNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlZhbHVlXCI6IFwie31c IlxuJy5mb3JtYXQocEluZm9Ob2RlLlZhbHVlLmIpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIH0sXG4nKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIHBJbmZvTm9kZSA9IHBJbmZvTm9kZS5OZXh0DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBwVnNOb2RlID0gcFZzTm9kZS5OZXh0DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIHtcbicpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJWZW5kb3JHdWlkXCI6IFwiTkFcIixcbicpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJWYXJOYW1lXCI6IFwiTkFc IixcbicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJEZWZh dWx0U3RvcmVcIjogXCJOQVwiLFxuJykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgICBcIlNpemVcIjogMCxcbicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYu d3JpdGUoJyAgICAgICAgXCJPZmZzZXRcIjogMCxcbicpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGYud3JpdGUoJyAgICAgICAgXCJWYWx1ZVwiOiBcIjB4MDBcIlxuJykNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgfVxuJykNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgZi53cml0ZSgnICBdXG4nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRl KCd9XG4nKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGYuY2xvc2UoKQ0KPiA+ DQo+ID4gKyAgICAgICAgZXhjZXB0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIEVka0xvZ2dlci5l cnJvcigiVmZyQ29tcGlsZXIiLCBGSUxFX09QRU5fRkFJTFVSRSwgIkZpbGUgb3Blbg0KPiA+IGZh aWxlZCBmb3IgJXMiICUgRmlsZU5hbWUsIE5vbmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBEdW1wWWFtbChzZWxmLCBSb290LCBGaWxlTmFtZSk6DQo+ID4NCj4gPiArICAgICAgICB0 cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgd2l0aCBvcGVuKEZpbGVOYW1lLCAndycpIGFzIGY6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyMjIERPIE5PVCBSRU1PVkUgLS0g VkZSIE1vZGVcbicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuRHVtcFlhbWxEZnMo Um9vdCwgZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBmLmNsb3NlKCkNCj4gPg0KPiA+ICsgICAg ICAgIGV4Y2VwdDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBFZGtMb2dnZXIuZXJyb3IoIlZmckNv bXBpbGVyIiwgRklMRV9PUEVOX0ZBSUxVUkUsICJGaWxlIG9wZW4NCj4gPiBmYWlsZWQgZm9yICVz IiAlIEZpbGVOYW1lLCBOb25lKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgRHVtcFlh bWxEZnMoc2VsZiwgUm9vdCwgZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBS b290Lk9wQ29kZSAhPSBOb25lOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IFJvb3QuT3BDb2RlID09IEVGSV9JRlJfRk9STV9TRVRfT1A6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGYud3JpdGUoJ0Zvcm1zZXQ6XG4nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndy aXRlKCcgIEd1aWQ6ICB7JyArICd7fSwge30sDQo+ID4ge30sJy5mb3JtYXQoJzB4JXgnJShJbmZv Lkd1aWQuRGF0YTEpLCcweCV4JyUoSW5mby5HdWlkLkRhdGEyKSwNCj4gPiAnMHgleCclKEluZm8u R3VpZC5EYXRhMykpIFwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICsgJyB7ICcgKyAg J3t9LCB7fSwge30sIHt9LCB7fSwge30sIHt9LA0KPiA+IHt9Jy5mb3JtYXQoJzB4JXgnJShJbmZv Lkd1aWQuRGF0YTRbMF0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFsxXSksDQo+ID4gJzB4JXgn JShJbmZvLkd1aWQuRGF0YTRbMl0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFszXSksIFwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzRdKSwg JzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbNV0pLA0KPiA+ICcweCV4JyUoSW5mby5HdWlkLkRhdGE0 WzZdKSwgJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbN10pKSArICcgfX1cbicpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgVGl0bGU6ICB7fSAgIyBUaXRsZSBTVFJJTkdfSURc bicuZm9ybWF0KEluZm8uRm9ybVNldFRpdGxlKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg Zi53cml0ZSgnICBIZWxwOiAge30gICMgSGVscCBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uSGVs cCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGZvciBHdWlkIGluIFJvb3QuRGF0YS5HZXRD bGFzc0d1aWQoKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgQ2xh c3NHdWlkOiAgeycgKyAne30sIHt9LA0KPiA+IHt9LCcuZm9ybWF0KCcweCV4JyUoR3VpZC5EYXRh MSksJzB4JXgnJShHdWlkLkRhdGEyKSwNCj4gJzB4JXgnJShHdWlkLkRhdGEzKSkNCj4gPiBcDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICArICcgeyAnICsgICd7fSwge30sIHt9LCB7fSwg e30sIHt9LCB7fSwge30nLmZvcm1hdCgnMHgleCclKEd1aWQuRGF0YTRbMF0pLA0KPiA+ICcweCV4 JyUoR3VpZC5EYXRhNFsxXSksICcweCV4JyUoR3VpZC5EYXRhNFsyXSksICcweCV4JyUoR3VpZC5E YXRhNFszXSksIFwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICcweCV4JyUoR3VpZC5E YXRhNFs0XSksICcweCV4JyUoR3VpZC5EYXRhNFs1XSksDQo+ID4gJzB4JXgnJShHdWlkLkRhdGE0 WzZdKSwgJzB4JXgnJShHdWlkLkRhdGE0WzddKSkgKyAnIH19XG4nKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfVkFSU1RPUkVfT1A6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgLSB2YXJzdG9yZTpcbicpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIHZhcmlkOiAge31cbicuZm9ybWF0 KEluZm8uVmFyU3RvcmVJZCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAg ICAgIG5hbWU6ICB7fVxuJy5mb3JtYXQoSW5mby5OYW1lKSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAgc2l6ZTogIHt9XG4nLmZvcm1hdChJbmZvLlNpemUpKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICBndWlkOiAgeycgKyAne30sIHt9 LA0KPiA+IHt9LCcuZm9ybWF0KCcweCV4JyUoSW5mby5HdWlkLkRhdGExKSwnMHgleCclKEluZm8u R3VpZC5EYXRhMiksDQo+ID4gJzB4JXgnJShJbmZvLkd1aWQuRGF0YTMpKSBcDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICArICcgeyAnICsgICd7fSwge30sIHt9LCB7fSwge30sIHt9LCB7 fSwNCj4gPiB7fScuZm9ybWF0KCcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzBdKSwgJzB4JXgnJShJ bmZvLkd1aWQuRGF0YTRbMV0pLA0KPiA+ICcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzJdKSwgJzB4 JXgnJShJbmZvLkd1aWQuRGF0YTRbM10pLCBcDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAnMHgleCclKEluZm8uR3VpZC5EYXRhNFs0XSksICcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzVd KSwNCj4gPiAnMHgleCclKEluZm8uR3VpZC5EYXRhNFs2XSksICcweCV4JyUoSW5mby5HdWlkLkRh dGE0WzddKSkgKyAnIH19XG4nKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IFJvb3QuT3BDb2RlID09IEVGSV9JRlJfVkFSU1RPUkVfRUZJX09QOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBmLndyaXRlKCcgIC0gZWZpdmFyc3RvcmU6XG4nKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICB2YXJpZDogIHt9XG4nLmZvcm1hdChJbmZvLlZhclN0b3Jl SWQpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICBuYW1lOiAge31c bicuZm9ybWF0KEluZm8uTmFtZSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgIHNpemU6ICB7fVxuJy5mb3JtYXQoSW5mby5TaXplKSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgZi53cml0ZSgnICAgICAgZ3VpZDogIHsnICsgJ3t9LCB7fSwNCj4gPiB7fSwnLmZv cm1hdCgnMHgleCclKEluZm8uR3VpZC5EYXRhMSksJzB4JXgnJShJbmZvLkd1aWQuRGF0YTIpLA0K PiA+ICcweCV4JyUoSW5mby5HdWlkLkRhdGEzKSkgXA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgKyAnIHsgJyArICAne30sIHt9LCB7fSwge30sIHt9LCB7fSwge30sDQo+ID4ge30nLmZv cm1hdCgnMHgleCclKEluZm8uR3VpZC5EYXRhNFswXSksICcweCV4JyUoSW5mby5HdWlkLkRhdGE0 WzFdKSwNCj4gPiAnMHgleCclKEluZm8uR3VpZC5EYXRhNFsyXSksICcweCV4JyUoSW5mby5HdWlk LkRhdGE0WzNdKSwgXA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgJzB4JXgnJShJbmZv Lkd1aWQuRGF0YTRbNF0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFs1XSksDQo+ID4gJzB4JXgn JShJbmZvLkd1aWQuRGF0YTRbNl0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFs3XSkpICsgJyB9 fVxuJykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgYXR0cmlidXRl OiAge31cbicuZm9ybWF0KEluZm8uQXR0cmlidXRlcykpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9WQVJTVE9SRV9OQU1FX1ZBTFVF X09QOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8o KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgIC0gbmFtZXZhbHVldmFyc3Rv cmU6XG4nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICB2YXJpZDog IHt9XG4nLmZvcm1hdChJbmZvLlZhclN0b3JlSWQpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAjIGYud3JpdGUoJyAgICAgIG5hbWU6ICB7fVxuJy5mb3JtYXQoSW5mby5OYW1lKSkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgZ3VpZDogIHsnICsgJ3t9LCB7fSwN Cj4gPiB7fSwnLmZvcm1hdCgnMHgleCclKEluZm8uR3VpZC5EYXRhMSksJzB4JXgnJShJbmZvLkd1 aWQuRGF0YTIpLA0KPiA+ICcweCV4JyUoSW5mby5HdWlkLkRhdGEzKSkgXA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgKyAnIHsgJyArICAne30sIHt9LCB7fSwge30sIHt9LCB7fSwge30s DQo+ID4ge30nLmZvcm1hdCgnMHgleCclKEluZm8uR3VpZC5EYXRhNFswXSksICcweCV4JyUoSW5m by5HdWlkLkRhdGE0WzFdKSwNCj4gPiAnMHgleCclKEluZm8uR3VpZC5EYXRhNFsyXSksICcweCV4 JyUoSW5mby5HdWlkLkRhdGE0WzNdKSwgXA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg JzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbNF0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFs1XSks DQo+ID4gJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbNl0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRh NFs3XSkpICsgJyB9fVxuJykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBS b290Lk9wQ29kZSA9PSBFRklfSUZSX0ZPUk1fT1A6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYu d3JpdGUoJyAgLSBmb3JtOlxuJykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5D b25kaXRpb24gIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIEZvcm1JZDogIHt9ICAjIEZvcm1JZA0K PiBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uRm9ybUlkKSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAgRm9ybVRpdGxlOiAge30gICMgRm9ybVRpdGxlDQo+ID4gU1RS SU5HX0lEXG4nLmZvcm1hdChJbmZvLkZvcm1UaXRsZSkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9GT1JNX01BUF9PUDoNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgSW5mbywgTWV0aG9kTWFwTGlzdCA9IFJvb3QuRGF0YS5HZXRJ bmZvKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAtIGZvcm1tYXA6XG4n KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgY29uZGl0aW9uOiAg e31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg Zi53cml0ZSgnICAgICAgRm9ybUlkOiAge30gICMgRm9ybUlkDQo+IFNUUklOR19JRFxuJy5mb3Jt YXQoSW5mby5Gb3JtSWQpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmb3IgTWV0aG9kTWFw IGluICBNZXRob2RNYXBMaXN0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgbWFwdGl0bGU6ICB7fVxuJy5mb3JtYXQoTWV0aG9kTWFwLk1ldGhvZFRpdGxlKSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIG1hcGd1aWQ6ICB7 JyArICd7fSwge30sDQo+ID4NCj4ge30sJy5mb3JtYXQoJzB4JXgnJShNZXRob2RNYXAuTWV0aG9k SWRlbnRpZmllci5EYXRhMSksJzB4JXgnJShNZXRob2QNCj4gPiBNYXAuTWV0aG9kSWRlbnRpZmll ci5EYXRhMiksDQo+ID4gJzB4JXgnJShNZXRob2RNYXAuTWV0aG9kSWRlbnRpZmllci5EYXRhMykp IFwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICsgJyB7ICcgKyAgJ3t9LCB7fSwge30s IHt9LCB7fSwge30sIHt9LA0KPiA+IHt9Jy5mb3JtYXQoJzB4JXgnJShNZXRob2RNYXAuTWV0aG9k SWRlbnRpZmllci5EYXRhNFswXSksDQo+ID4gJzB4JXgnJShNZXRob2RNYXAuTWV0aG9kSWRlbnRp Zmllci5EYXRhNFsxXSksDQo+ID4gJzB4JXgnJShNZXRob2RNYXAuTWV0aG9kSWRlbnRpZmllci5E YXRhNFsyXSksDQo+ID4gJzB4JXgnJShNZXRob2RNYXAuTWV0aG9kSWRlbnRpZmllci5EYXRhNFsz XSksIFwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICcweCV4JyUoTWV0aG9kTWFwLk1l dGhvZElkZW50aWZpZXIuRGF0YTRbNF0pLA0KPiA+ICcweCV4JyUoTWV0aG9kTWFwLk1ldGhvZElk ZW50aWZpZXIuRGF0YTRbNV0pLA0KPiA+ICcweCV4JyUoTWV0aG9kTWFwLk1ldGhvZElkZW50aWZp ZXIuRGF0YTRbNl0pLA0KPiA+ICcweCV4JyUoTWV0aG9kTWFwLk1ldGhvZElkZW50aWZpZXIuRGF0 YTRbN10pKSArICcgfX1cbicpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg Um9vdC5PcENvZGUgPT0gRUZJX0lGUl9JTUFHRV9PUDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg Zi53cml0ZSgnICAgICAgLSBpbWFnZTpcbicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlm IFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9u KSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIElkOiAge30g IyBJbWFnZUlkXG4nLmZvcm1hdChJbmZvLklkKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX1JVTEVfT1A6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgIC0gcnVsZTpcbicpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3Qu Q29uZGl0aW9uKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAg IFJ1bGVJZDogIHt9ICMgUnVsZUlkXG4nLmZvcm1hdChJbmZvLlJ1bGVJZCkpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9TVUJUSVRM RV9PUDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZv KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSBzdWJ0aXRsZTpc bicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0 aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAgICAgIHByb21wdDogIHt9ICAjIFN0YXRlbWVudCBQcm9tcHQN Cj4gPiBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uU3RhdGVtZW50LlByb21wdCkpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9URVhU X09QOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8o KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAtIHRleHQ6XG4nKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGNvbmRpdGlvbjog IHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGYud3JpdGUoJyAgICAgICAgICBwcm9tcHQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0DQo+ID4g U1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlN0YXRlbWVudC5Qcm9tcHQpKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgaGVscDogIHt9ICAjIFN0YXRlbWVudCBI ZWxwDQo+ID4gU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlN0YXRlbWVudC5IZWxwKSkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHRleHQ6ICB7fSAgIyBTdGF0 ZW1lbnQgSGVscA0KPiA+IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5UZXh0VHdvKSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX0FD VElPTl9PUDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJ bmZvKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSBhY3Rpb246 XG4nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGNvbmRp dGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGYud3JpdGUoJyAgICAgICAgICBwcm9tcHQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0 DQo+ID4gU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLkhlYWRlci5Qcm9tcHQpKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgaGVscDogIHt9ICAj IFN0YXRlbWVudCBIZWxwDQo+ID4gU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLkhl YWRlci5IZWxwKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAg IHF1ZXN0aW9uaWQ6ICB7fSAgIyBRdWVzdGlvbg0KPiA+IFF1ZXN0aW9uSWRcbicuZm9ybWF0KElu Zm8uUXVlc3Rpb24uUXVlc3Rpb25JZCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3Jp dGUoJyAgICAgICAgICB2YXJzdG9yZWlkOiAge30gICMgUXVlc3Rpb24NCj4gPiBWYXJTdG9yZUlk XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3JlSWQpKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICAgICAgZmxhZ3M6ICB7fSAgIyBRdWVzdGlvbg0KPiA+IEZs YWdzXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLkZsYWdzKSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAgICAgIHF1ZXN0aW9uY29uZmlnOiAge30gICMNCj4gPiBRdWVz dGlvbkNvbmZpZ1xuJy5mb3JtYXQoSW5mby5RdWVzdGlvbkNvbmZpZykpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9PTkVfT0ZfT1A6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIC0gb25lb2Y6XG4nKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGNvbmRpdGlvbjogIHt9 XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBwcm9tcHQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJv bXB0DQo+ID4gU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLkhlYWRlci5Qcm9tcHQp KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgaGVscDogIHt9 ICAjIFN0YXRlbWVudCBIZWxwDQo+ID4gU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9u LkhlYWRlci5IZWxwKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg ICAgIHF1ZXN0aW9uaWQ6ICB7fSAgIyBRdWVzdGlvbg0KPiA+IFF1ZXN0aW9uSWRcbicuZm9ybWF0 KEluZm8uUXVlc3Rpb24uUXVlc3Rpb25JZCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYu d3JpdGUoJyAgICAgICAgICB2YXJzdG9yZWlkOiAge30gICMgUXVlc3Rpb24NCj4gPiBWYXJTdG9y ZUlkXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3JlSWQpKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFybmFtZTogIHt9ICAjIFF1ZXN0aW9uIFZh ck5hbWUNCj4gPiBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJbmZv LlZhck5hbWUpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAg dmFyb2Zmc2V0OiAge30gICMgUXVlc3Rpb24NCj4gPiBWYXJPZmZzZXRcbicuZm9ybWF0KEluZm8u UXVlc3Rpb24uVmFyU3RvcmVJbmZvLlZhck9mZnNldCkpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGYud3JpdGUoJyAgICAgICAgICBmbGFnczogIHt9ICAjIFF1ZXN0aW9uDQo+ID4gRmxhZ3Nc bicuZm9ybWF0KEluZm8uUXVlc3Rpb24uRmxhZ3MpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfT05FX09GX09QVElPTl9PUDoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIC0gb3B0aW9uOiAge31cbicu Zm9ybWF0KEluZm8uT3B0aW9uKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5D b25kaXRpb24gIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAg ICAgICBvcHRpb24gZmxhZzogIHt9XG4nLmZvcm1hdChJbmZvLkZsYWdzKSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICBvcHRpb24gdHlwZTogIHt9XG4n LmZvcm1hdChJbmZvLlR5cGUpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBpZiB0eXBlKFJvb3QuRGF0YSkgPT0gQ0lmck9uZU9mT3B0aW9uOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJfVFlQRV9EQVRFOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICAgICAgb3B0aW9u IHZhbHVlOg0KPiA+IHt9L3t9L3t9XG4nLmZvcm1hdChJbmZvLlZhbHVlLmRhdGUuWWVhciwgSW5m by5WYWx1ZS5kYXRlLk1vbnRoLA0KPiA+IEluZm8uVmFsdWUuZGF0ZS5EYXkpKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJfVFlQRV9USU1FOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICAgICAg b3B0aW9uIHZhbHVlOg0KPiA+IHt9Ont9Ont9XG4nLmZvcm1hdChJbmZvLlZhbHVlLnRpbWUuSG91 ciwgSW5mby5WYWx1ZS50aW1lLk1pbnV0ZSwNCj4gPiBJbmZvLlZhbHVlLnRpbWUuU2Vjb25kKSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIEluZm8uVHlwZSA9PSBFRklfSUZSX1RZ UEVfUkVGOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAg ICAgICAgICAgb3B0aW9uIHZhbHVlOg0KPiA+IHt9O3t9OycuZm9ybWF0KEluZm8uVmFsdWUucmVm LlF1ZXN0aW9uSWQsIEluZm8uVmFsdWUucmVmLkZvcm1JZCkgKyAgJ3snICsgJ3t9LCB7fSwNCj4g Pg0KPiB7fSwnLmZvcm1hdCgnMHgleCclKEluZm8uVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGEx KSwnMHgleCclKEluZm8uVmFsdWUucg0KPiA+IGVmLkZvcm1TZXRHdWlkLkRhdGEyKSwgJzB4JXgn JShJbmZvLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhMykpIFwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICArICcgeyAnICsgICd7fSwge30sIHt9LCB7fSwge30sIHt9LCB7fSwN Cj4gPiB7fScuZm9ybWF0KCcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRb MF0pLA0KPiA+ICcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRbMV0pLA0K PiA+ICcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRbMl0pLA0KPiA+ICcw eCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRbM10pLCBcDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgJzB4JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3JtU2V0R3Vp ZC5EYXRhNFs0XSksDQo+ID4gJzB4JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRh NFs1XSksDQo+ID4gJzB4JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFs2XSks DQo+ID4gJzB4JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFs3XSkpICsgJyB9 fScgKw0KPiA+ICc7e31cbicuZm9ybWF0KEluZm8uVmFsdWUucmVmLkRldmljZVBhdGgpKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJfVFlQRV9T VFJJTkc6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg ICAgICAgICBvcHRpb24gdmFsdWU6ICB7fVxuJy5mb3JtYXQoSW5mby5WYWx1ZS5zdHJpbmcpKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJfVFlQ RV9OVU1fU0laRV84Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgICAgICAgICAgb3B0aW9uIHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uVmFsdWUudTgp KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJf VFlQRV9OVU1fU0laRV8xNjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndy aXRlKCcgICAgICAgICAgICAgIG9wdGlvbiB2YWx1ZTogIHt9XG4nLmZvcm1hdChJbmZvLlZhbHVl LnUxNikpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBJbmZvLlR5cGUgPT0gRUZJ X0lGUl9UWVBFX05VTV9TSVpFXzMyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoJyAgICAgICAgICAgICAgb3B0aW9uIHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8u VmFsdWUudTMyKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIEluZm8uVHlwZSA9 PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICBvcHRpb24gdmFsdWU6ICB7fVxuJy5mb3JtYXQo SW5mby5WYWx1ZS51NjQpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5U eXBlID09IEVGSV9JRlJfVFlQRV9CT09MRUFOOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIGYud3JpdGUoJyAgICAgICAgICAgICAgb3B0aW9uIHZhbHVlOiAge31cbicuZm9ybWF0 KEluZm8uVmFsdWUuYikpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlm IHR5cGUoUm9vdC5EYXRhKSA9PSBDSWZyT25lT2ZPcHRpb24yOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICB2YWx1ZTogIHsnKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgVmFsdWVUeXBlID0gUm9vdC5EYXRhLkdldFZhbHVlVHlwZSgp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBWYWx1ZVR5cGUgPT0gRUZJX0lGUl9U WVBFX1NUUklORzoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiBy YW5nZSgwLCBsZW4oSW5mby5WYWx1ZSktMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoJ3t9LCcuZm9ybWF0KEluZm8uVmFsdWVbaV0uc3RyaW5nKSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCd7fScuZm9ybWF0KEluZm8u VmFsdWVbbGVuKEluZm8uVmFsdWUpLTFdLnN0cmluZykgKyAnfVxuJykNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIFZhbHVlVHlwZSA9PSBFRklfSUZSX1RZUEVf TlVNX1NJWkVfODoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiBy YW5nZSgwLCBsZW4oSW5mby5WYWx1ZSktMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoJ3t9LCcuZm9ybWF0KEluZm8uVmFsdWVbaV0udTgpKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ3t9Jy5mb3JtYXQoSW5mby5WYWx1 ZVtsZW4oSW5mby5WYWx1ZSktMV0udTgpICsgJ31cbicpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBpZiBWYWx1ZVR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpF XzE2Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAs IGxlbihJbmZvLlZhbHVlKS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZi53cml0ZSgne30sJy5mb3JtYXQoSW5mby5WYWx1ZVtpXS51MTYpKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ3t9Jy5mb3JtYXQoSW5mby5WYWx1ZVtsZW4o SW5mby5WYWx1ZSktMV0udTE2KSArICd9XG4nKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgaWYgVmFsdWVUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4o SW5mby5WYWx1ZSktMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYu d3JpdGUoJ3t9LCcuZm9ybWF0KEluZm8uVmFsdWVbaV0udTMyKSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICBmLndyaXRlKCd7fScuZm9ybWF0KEluZm8uVmFsdWVbbGVuKEluZm8u VmFsdWUpLTFdLnUzMikgKyAnfVxuJykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIGlmIFZhbHVlVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKEluZm8u VmFsdWUpLTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRl KCd7fSwnLmZvcm1hdChJbmZvLlZhbHVlW2ldLnU2NCkpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgZi53cml0ZSgne30nLmZvcm1hdChJbmZvLlZhbHVlW2xlbihJbmZvLlZhbHVl KS0xXS51NjQpICsgJ31cbicpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBpZiBWYWx1ZVR5cGUgPT0gRUZJX0lGUl9UWVBFX0JPT0xFQU46DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKEluZm8uVmFsdWUpLTEp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCd7fSwnLmZv cm1hdChJbmZvLlZhbHVlW2ldLmIpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoJ3t9Jy5mb3JtYXQoSW5mby5WYWx1ZVtsZW4oSW5mby5WYWx1ZSktMV0uYikgKyAn fVxuJykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBS b290Lk9wQ29kZSA9PSBFRklfSUZSX0RFRkFVTFRfT1A6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGYud3JpdGUoJyAgICAgICAgICAtIGRlZmF1bHQ6XG4nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICBjb25kaXRpb246ICB7fVxuJy5mb3JtYXQoUm9v dC5Db25kaXRpb24pKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAg ICAgICAgIHR5cGU6ICB7fVxuJy5mb3JtYXQoSW5mby5UeXBlKSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICBkZWZhdWx0SWQ6ICB7fVxuJy5mb3JtYXQo SW5mby5EZWZhdWx0SWQpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiB0eXBlKFJvb3Qu RGF0YSkgPT0gQ0lmckRlZmF1bHQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBJ bmZvLlR5cGUgPT0gRUZJX0lGUl9UWVBFX0RBVEU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICB2YWx1ZTogIHt9L3t9L3t9XG4nLmZvcm1h dChJbmZvLlZhbHVlLmRhdGUuWWVhciwNCj4gPiBJbmZvLlZhbHVlLmRhdGUuTW9udGgsIEluZm8u VmFsdWUuZGF0ZS5EYXkpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5U eXBlID09IEVGSV9JRlJfVFlQRV9USU1FOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGYud3JpdGUoJyAgICAgICAgICAgICAgdmFsdWU6ICB7fTp7fTp7fVxuJy5mb3JtYXQoSW5m by5WYWx1ZS50aW1lLkhvdXIsDQo+ID4gSW5mby5WYWx1ZS50aW1lLk1pbnV0ZSwgSW5mby5WYWx1 ZS50aW1lLlNlY29uZCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBJbmZvLlR5 cGUgPT0gRUZJX0lGUl9UWVBFX1JFRjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKCcgICAgICAgICAgICAgIG9wdGlvbiB2YWx1ZToNCj4gPiB7fTt7fTsnLmZvcm1h dChJbmZvLlZhbHVlLnJlZi5RdWVzdGlvbklkLCBJbmZvLlZhbHVlLnJlZi5Gb3JtSWQpICsgICd7 JyArICd7fSwge30sDQo+ID4NCj4ge30sJy5mb3JtYXQoJzB4JXgnJShJbmZvLlZhbHVlLnJlZi5G b3JtU2V0R3VpZC5EYXRhMSksJzB4JXgnJShJbmZvLlZhbHVlLnINCj4gPiBlZi5Gb3JtU2V0R3Vp ZC5EYXRhMiksICcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTMpKSBcDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKyAnIHsgJyArICAne30sIHt9LCB7fSwg e30sIHt9LCB7fSwge30sDQo+ID4ge30nLmZvcm1hdCgnMHgleCclKEluZm8uVmFsdWUucmVmLkZv cm1TZXRHdWlkLkRhdGE0WzBdKSwNCj4gPiAnMHgleCclKEluZm8uVmFsdWUucmVmLkZvcm1TZXRH dWlkLkRhdGE0WzFdKSwNCj4gPiAnMHgleCclKEluZm8uVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRh dGE0WzJdKSwNCj4gPiAnMHgleCclKEluZm8uVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGE0WzNd KSwgXA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICcweCV4JyUoSW5mby5WYWx1 ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRbNF0pLA0KPiA+ICcweCV4JyUoSW5mby5WYWx1ZS5yZWYu Rm9ybVNldEd1aWQuRGF0YTRbNV0pLA0KPiA+ICcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNl dEd1aWQuRGF0YTRbNl0pLA0KPiA+ICcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQu RGF0YTRbN10pKSArICcgfX0nICsNCj4gPiAnO3t9XG4nLmZvcm1hdChJbmZvLlZhbHVlLnJlZi5E ZXZpY2VQYXRoKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIEluZm8uVHlwZSA9 PSBFRklfSUZSX1RZUEVfU1RSSU5HOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoJyAgICAgICAgICAgICAgdmFsdWU6ICB7fVxuJy5mb3JtYXQoSW5mby5WYWx1ZS5z dHJpbmcpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVG SV9JRlJfVFlQRV9OVU1fU0laRV84Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoJyAgICAgICAgICAgICAgdmFsdWU6ICB7fVxuJy5mb3JtYXQoSW5mby5WYWx1ZS51 OCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBJbmZvLlR5cGUgPT0gRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzE2Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYu d3JpdGUoJyAgICAgICAgICAgICAgdmFsdWU6ICB7fVxuJy5mb3JtYXQoSW5mby5WYWx1ZS51MTYp KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJf VFlQRV9OVU1fU0laRV8zMjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndy aXRlKCcgICAgICAgICAgICAgIHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uVmFsdWUudTMyKSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIEluZm8uVHlwZSA9PSBFRklfSUZSX1RZ UEVfTlVNX1NJWkVfNjQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgICAgICAgICB2YWx1ZTogIHt9XG4nLmZvcm1hdChJbmZvLlZhbHVlLnU2NCkpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBJbmZvLlR5cGUgPT0gRUZJX0lGUl9UWVBF X0JPT0xFQU46DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAg ICAgICAgICAgICB2YWx1ZTogIHt9XG4nLmZvcm1hdChJbmZvLlZhbHVlLmIpKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiB0eXBlKFJvb3QuRGF0YSkgPT0gQ0lmckRl ZmF1bHQzOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAg ICAgICB2YWx1ZTogIHsnKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgVmFsdWVUeXBl ID0gUm9vdC5EYXRhLkdldFZhbHVlVHlwZSgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBpZiBWYWx1ZVR5cGUgPT0gRUZJX0lGUl9UWVBFX1NUUklORzoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oSW5mby5WYWx1ZSktMSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ3t9LCcuZm9ybWF0 KEluZm8uVmFsdWVbaV0uc3RyaW5nKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKCd7fScuZm9ybWF0KEluZm8uVmFsdWVbbGVuKEluZm8uVmFsdWUpLTFdLnN0cmlu ZykgKyAnfVxuJykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlm IFZhbHVlVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfODoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oSW5mby5WYWx1ZSktMSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ3t9LCcuZm9ybWF0 KEluZm8uVmFsdWVbaV0udTgpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYu d3JpdGUoJ3t9Jy5mb3JtYXQoSW5mby5WYWx1ZVtsZW4oSW5mby5WYWx1ZSktMV0udTgpICsgJ31c bicpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBWYWx1ZVR5 cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihJbmZvLlZhbHVlKS0xKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30sJy5mb3JtYXQoSW5mby5W YWx1ZVtpXS51MTYpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo J3t9Jy5mb3JtYXQoSW5mby5WYWx1ZVtsZW4oSW5mby5WYWx1ZSktMV0udTE2KSArICd9XG4nKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgVmFsdWVUeXBlID09 IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oSW5mby5WYWx1ZSktMSk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ3t9LCcuZm9ybWF0KEluZm8uVmFsdWVb aV0udTMyKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCd7fScu Zm9ybWF0KEluZm8uVmFsdWVbbGVuKEluZm8uVmFsdWUpLTFdLnUzMikgKyAnfVxuJykNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIFZhbHVlVHlwZSA9PSBFRklf SUZSX1RZUEVfTlVNX1NJWkVfNjQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg Zm9yIGkgaW4gcmFuZ2UoMCwgbGVuKEluZm8uVmFsdWUpLTEpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCd7fSwnLmZvcm1hdChJbmZvLlZhbHVlW2ldLnU2 NCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30nLmZvcm1h dChJbmZvLlZhbHVlW2xlbihJbmZvLlZhbHVlKS0xXS51NjQpICsgJ31cbicpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBWYWx1ZVR5cGUgPT0gRUZJX0lGUl9U WVBFX0JPT0xFQU46DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4g cmFuZ2UoMCwgbGVuKEluZm8uVmFsdWUpLTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmLndyaXRlKCd7fSwnLmZvcm1hdChJbmZvLlZhbHVlW2ldLmIpKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ3t9Jy5mb3JtYXQoSW5mby5WYWx1 ZVtsZW4oSW5mby5WYWx1ZSktMV0uYikgKyAnfVxuJykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX09SREVSRURfTElTVF9PUDoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSBvcmRlcmVkbGlzdDpcbicpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0aW9uOiAg e31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHByb21wdDogIHt9ICAjIFN0YXRlbWVudCBQ cm9tcHQNCj4gPiBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uSGVhZGVyLlByb21w dCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBoZWxwOiAg e30gICMgU3RhdGVtZW50IEhlbHANCj4gPiBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uUXVlc3Rp b24uSGVhZGVyLkhlbHApKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAg ICAgICAgcXVlc3Rpb25pZDogIHt9ICAjIFF1ZXN0aW9uDQo+ID4gUXVlc3Rpb25JZFxuJy5mb3Jt YXQoSW5mby5RdWVzdGlvbi5RdWVzdGlvbklkKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg Zi53cml0ZSgnICAgICAgICAgIHZhcnN0b3JlaWQ6ICB7fSAgIyBRdWVzdGlvbg0KPiA+IFZhclN0 b3JlSWRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJZCkpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBtYXhDb250YWluZXJzOiAge31cbicuZm9y bWF0KEluZm8uTWF4Q29udGFpbmVycykpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3Jp dGUoJyAgICAgICAgICBmbGFnczogIHt9XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLkZsYWdzKSkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklf SUZSX05VTUVSSUNfT1A6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRh dGEuR2V0SW5mbygpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIC0g bnVtZXJpYzpcbicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9u ICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAg ICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHByb21wdDogIHt9ICAjIFN0YXRlbWVu dCBQcm9tcHQNCj4gPiBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uSGVhZGVyLlBy b21wdCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBoZWxw OiAge30gICMgU3RhdGVtZW50IEhlbHANCj4gPiBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uUXVl c3Rpb24uSGVhZGVyLkhlbHApKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICAgICAgcXVlc3Rpb25pZDogIHt9ICAjIFF1ZXN0aW9uDQo+ID4gUXVlc3Rpb25JZFxuJy5m b3JtYXQoSW5mby5RdWVzdGlvbi5RdWVzdGlvbklkKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgZi53cml0ZSgnICAgICAgICAgIHZhcnN0b3JlaWQ6ICB7fSAgIyBRdWVzdGlvbg0KPiA+IFZh clN0b3JlSWRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJZCkpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB2YXJuYW1lOiAge30gICMgUXVlc3Rp b24gVmFyTmFtZQ0KPiA+IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9y ZUluZm8uVmFyTmFtZSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAg ICAgICB2YXJvZmZzZXQ6ICB7fSAgIyBRdWVzdGlvbg0KPiA+IFZhck9mZnNldFxuJy5mb3JtYXQo SW5mby5RdWVzdGlvbi5WYXJTdG9yZUluZm8uVmFyT2Zmc2V0KSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGZsYWdzOiAge30gICMgUXVlc3Rpb24NCj4gPiBG bGFnc1xuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5GbGFncykpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5HZXRWYXJUeXBlKCkgPT0gRUZJX0lGUl9U WVBFX05VTV9TSVpFXzY0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgn ICAgICAgICAgIG1heHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uRGF0YS51NjQuTWF4VmFsdWUp KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIG1pbnZh bHVlOiAge31cbicuZm9ybWF0KEluZm8uRGF0YS51NjQuTWluVmFsdWUpKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHN0ZXA6ICB7fVxuJy5mb3JtYXQo SW5mby5EYXRhLnU2NC5TdGVwKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgaWYgUm9vdC5EYXRhLkdldFZhclR5cGUoKSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgbWF4dmFs dWU6ICB7fVxuJy5mb3JtYXQoSW5mby5EYXRhLnUzMi5NYXhWYWx1ZSkpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgbWludmFsdWU6ICB7fVxuJy5mb3Jt YXQoSW5mby5EYXRhLnUzMi5NaW5WYWx1ZSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKCcgICAgICAgICAgc3RlcDogIHt9XG4nLmZvcm1hdChJbmZvLkRhdGEudTMyLlN0 ZXApKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEu R2V0VmFyVHlwZSgpID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBtYXh2YWx1ZTogIHt9XG4nLmZvcm1h dChJbmZvLkRhdGEudTE2Lk1heFZhbHVlKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoJyAgICAgICAgICBtaW52YWx1ZTogIHt9XG4nLmZvcm1hdChJbmZvLkRhdGEudTE2 Lk1pblZhbHVlKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAg ICAgICBzdGVwOiAge31cbicuZm9ybWF0KEluZm8uRGF0YS51MTYuU3RlcCkpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5HZXRWYXJUeXBlKCkgPT0g RUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAgICAgbWF4dmFsdWU6ICB7fVxuJy5mb3JtYXQoSW5mby5EYXRhLnU4Lk1h eFZhbHVlKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAg ICBtaW52YWx1ZTogIHt9XG4nLmZvcm1hdChJbmZvLkRhdGEudTguTWluVmFsdWUpKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHN0ZXA6ICB7fVxuJy5m b3JtYXQoSW5mby5EYXRhLnU4LlN0ZXApKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfQ0hFQ0tCT1hfT1A6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgIC0gY2hlY2tib3g6XG4nKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1hdChS b290LkNvbmRpdGlvbikpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAg ICAgICBwcm9tcHQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0DQo+ID4gU1RSSU5HX0lEXG4nLmZv cm1hdChJbmZvLlF1ZXN0aW9uLkhlYWRlci5Qcm9tcHQpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBmLndyaXRlKCcgICAgICAgICAgaGVscDogIHt9ICAjIFN0YXRlbWVudCBIZWxwDQo+ID4g U1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLkhlYWRlci5IZWxwKSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHF1ZXN0aW9uaWQ6ICB7fSAgIyBR dWVzdGlvbg0KPiA+IFF1ZXN0aW9uSWRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uUXVlc3Rpb25J ZCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB2YXJzdG9y ZWlkOiAge30gICMgUXVlc3Rpb24NCj4gPiBWYXJTdG9yZUlkXG4nLmZvcm1hdChJbmZvLlF1ZXN0 aW9uLlZhclN0b3JlSWQpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAg ICAgICAgdmFybmFtZTogIHt9ICAjIFF1ZXN0aW9uIFZhck5hbWUNCj4gPiBTVFJJTkdfSURcbicu Zm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJbmZvLlZhck5hbWUpKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFyb2Zmc2V0OiAge30gICMgUXVlc3Rp b24NCj4gPiBWYXJPZmZzZXRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJbmZvLlZh ck9mZnNldCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBm bGFnczogIHt9ICAjIEZsYWdzXG4nLmZvcm1hdChJbmZvLkZsYWdzKSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX1RJTUVfT1A6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIC0gdGltZTpcbicpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0aW9uOiAge31cbicu Zm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgICAgIHF1ZXN0aW9uaWQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0DQo+ID4gU1RS SU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlF1ZXN0aW9uSWQpKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFyc3RvcmVpZDogIHt9ICAjIFF1ZXN0 aW9uDQo+ID4gVmFyU3RvcmVJZFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUlkKSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHZhcm5hbWU6DQo+ ID4ge31cbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJbmZvLlZhck5hbWUpKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFyb2Zmc2V0Og0KPiA+ IHt9XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3JlSW5mby5WYXJPZmZzZXQpKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgcHJvbXB0OiAge30gICMg U3RhdGVtZW50IFByb21wdA0KPiA+IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5I ZWFkZXIuUHJvbXB0KSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg ICAgIGhlbHA6ICB7fSAgIyBTdGF0ZW1lbnQgSGVscA0KPiA+IFNUUklOR19JRFxuJy5mb3JtYXQo SW5mby5RdWVzdGlvbi5IZWFkZXIuSGVscCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYu d3JpdGUoJyAgICAgICAgICBmbGFnczogIHt9XG4nLmZvcm1hdChJbmZvLkZsYWdzKSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX0RB VEVfT1A6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5m bygpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIC0gZGF0ZTpcbicp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0aW9u OiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgZi53cml0ZSgnICAgICAgICAgIHF1ZXN0aW9uaWQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0 DQo+ID4gU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlF1ZXN0aW9uSWQpKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFyc3RvcmVpZDogIHt9 ICAjIFF1ZXN0aW9uDQo+ID4gVmFyU3RvcmVJZFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJT dG9yZUlkKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHZh cm5hbWU6DQo+ID4ge31cbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJbmZvLlZhck5h bWUpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFyb2Zm c2V0Og0KPiA+IHt9XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3JlSW5mby5WYXJPZmZz ZXQpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgcHJvbXB0 OiAge30gICMgU3RhdGVtZW50IFByb21wdA0KPiA+IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5R dWVzdGlvbi5IZWFkZXIuUHJvbXB0KSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgICAgIGhlbHA6ICB7fSAgIyBTdGF0ZW1lbnQgSGVscA0KPiA+IFNUUklOR19JRFxu Jy5mb3JtYXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuSGVscCkpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGYud3JpdGUoJyAgICAgICAgICBmbGFnczogIHt9XG4nLmZvcm1hdChJbmZvLkZsYWdz KSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBSb290 Lk9wQ29kZSA9PSBFRklfSUZSX1NUUklOR19PUDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg SW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53 cml0ZSgnICAgICAgLSBzdHJpbmc6XG4nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBS b290LkNvbmRpdGlvbiAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53 cml0ZSgnICAgICAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBwcm9tcHQ6ICB7 fSAgIyBTdGF0ZW1lbnQgUHJvbXB0DQo+ID4gU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0 aW9uLkhlYWRlci5Qcm9tcHQpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICAgICAgaGVscDogIHt9ICAjIFN0YXRlbWVudCBIZWxwDQo+ID4gU1RSSU5HX0lEXG4nLmZv cm1hdChJbmZvLlF1ZXN0aW9uLkhlYWRlci5IZWxwKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgZi53cml0ZSgnICAgICAgICAgIHF1ZXN0aW9uaWQ6ICB7fSAgIyBRdWVzdGlvbg0KPiA+IFF1 ZXN0aW9uSWRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uUXVlc3Rpb25JZCkpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB2YXJzdG9yZWlkOiAge30gICMgUXVl c3Rpb24NCj4gPiBWYXJTdG9yZUlkXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3JlSWQp KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFybmFtZTog IHt9ICAjIFF1ZXN0aW9uIFZhck5hbWUNCj4gPiBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uUXVl c3Rpb24uVmFyU3RvcmVJbmZvLlZhck5hbWUpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAgICAgdmFyb2Zmc2V0OiAge30gICMgUXVlc3Rpb24NCj4gPiBWYXJPZmZz ZXRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJbmZvLlZhck9mZnNldCkpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBmbGFnczogIHt9ICAjIFF1 ZXN0aW9uDQo+ID4gRmxhZ3NcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uRmxhZ3MpKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgc3RyaW5nZmxhZ3M6ICB7fVxu Jy5mb3JtYXQoSW5mby5GbGFncykpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgICAgICBzdHJpbmdtaW5zaXplOiAge31cbicuZm9ybWF0KEluZm8uTWluU2l6ZSkpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBzdHJpbmdtYXhzaXpl OiAge31cbicuZm9ybWF0KEluZm8uTWF4U2l6ZSkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9QQVNTV09SRF9PUDoNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSBwYXNzd29yZDpcbicpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9y bWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgn ICAgICAgICAgIHByb21wdDogIHt9ICAjIFN0YXRlbWVudCBQcm9tcHQNCj4gPiBTVFJJTkdfSURc bicuZm9ybWF0KEluZm8uUXVlc3Rpb24uSGVhZGVyLlByb21wdCkpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBoZWxwOiAge30gICMgU3RhdGVtZW50IEhlbHAN Cj4gPiBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uSGVhZGVyLkhlbHApKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgcXVlc3Rpb25pZDogIHt9 ICAjIFF1ZXN0aW9uDQo+ID4gUXVlc3Rpb25JZFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5RdWVz dGlvbklkKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHZh cnN0b3JlaWQ6ICB7fSAgIyBRdWVzdGlvbg0KPiA+IFZhclN0b3JlSWRcbicuZm9ybWF0KEluZm8u UXVlc3Rpb24uVmFyU3RvcmVJZCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgICAgICB2YXJuYW1lOiAge30gICMgUXVlc3Rpb24gVmFyTmFtZQ0KPiA+IFNUUklOR19J RFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUluZm8uVmFyTmFtZSkpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB2YXJvZmZzZXQ6ICB7fSAgIyBR dWVzdGlvbg0KPiA+IFZhck9mZnNldFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUlu Zm8uVmFyT2Zmc2V0KSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg ICAgIGZsYWdzOiAge30gICMgUXVlc3Rpb24NCj4gPiBGbGFnc1xuJy5mb3JtYXQoSW5mby5RdWVz dGlvbi5GbGFncykpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAg ICBtaW5zaXplOiAge31cbicuZm9ybWF0KEluZm8uTWluU2l6ZSkpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBtYXhzaXplOiAge31cbicuZm9ybWF0KEluZm8u TWF4U2l6ZSkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9SRVNFVF9CVVRUT05fT1A6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgIC0gcmVzZXRidXR0b246XG4nKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1h dChSb290LkNvbmRpdGlvbikpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAg ICAgICAgICBwcm9tcHQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0DQo+ID4gU1RSSU5HX0lEXG4n LmZvcm1hdChJbmZvLlN0YXRlbWVudC5Qcm9tcHQpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBmLndyaXRlKCcgICAgICAgICAgaGVscDogIHt9ICAjIFN0YXRlbWVudCBIZWxwDQo+ID4gU1RS SU5HX0lEXG4nLmZvcm1hdChJbmZvLlN0YXRlbWVudC5IZWxwKSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGRlZmF1bHRpZDogIHt9XG4nLmZvcm1hdChJbmZv LkRlZmF1bHRJZCkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgUm9vdC5P cENvZGUgPT0gRUZJX0lGUl9SRUZfT1A6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEluZm8g PSBSb290LkRhdGEuR2V0SW5mbygpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgIC0gZ290bzpcbicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29u ZGl0aW9uICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgdHlwZShSb290LkRhdGEpID09IENJ ZnJSZWY0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAg IGZvcm1pZDogIHt9XG4nLmZvcm1hdChJbmZvLkZvcm1JZCkpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgZm9ybXNldGlkOiAgeycgKyAne30sIHt9LA0K PiA+IHt9LCcuZm9ybWF0KCcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTEpLCcweCV4JyUoSW5m by5Gb3JtU2V0SWQuRGF0YTIpLA0KPiA+ICcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTMpKSBc DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICArICcgeyAnICsgICd7fSwge30sIHt9LCB7 fSwge30sIHt9LCB7fSwNCj4gPiB7fScuZm9ybWF0KCcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0 YTRbMF0pLA0KPiA+ICcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTRbMV0pLCAnMHgleCclKElu Zm8uRm9ybVNldElkLkRhdGE0WzJdKSwNCj4gPiAnMHgleCclKEluZm8uRm9ybVNldElkLkRhdGE0 WzNdKSwgXA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgJzB4JXgnJShJbmZvLkZvcm1T ZXRJZC5EYXRhNFs0XSksDQo+ID4gJzB4JXgnJShJbmZvLkZvcm1TZXRJZC5EYXRhNFs1XSksICcw eCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTRbNl0pLA0KPiA+ICcweCV4JyUoSW5mby5Gb3JtU2V0 SWQuRGF0YTRbN10pKSArICcgfX1cbicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAgICAgcXVlc3Rpb25pZDogIHt9XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9u SWQpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGRl dmljZXBhdGg6ICB7fVxuJy5mb3JtYXQoSW5mby5EZXZpY2VQYXRoKSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgdHlwZShSb290LkRhdGEpID09IENJZnJSZWYzOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGZvcm1pZDog IHt9XG4nLmZvcm1hdChJbmZvLkZvcm1JZCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKCcgICAgICAgICAgZm9ybXNldGlkOiAgeycgKyAne30sIHt9LA0KPiA+IHt9LCcu Zm9ybWF0KCcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTEpLCcweCV4JyUoSW5mby5Gb3JtU2V0 SWQuRGF0YTIpLA0KPiA+ICcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTMpKSBcDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICArICcgeyAnICsgICd7fSwge30sIHt9LCB7fSwge30sIHt9 LCB7fSwNCj4gPiB7fScuZm9ybWF0KCcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTRbMF0pLA0K PiA+ICcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTRbMV0pLCAnMHgleCclKEluZm8uRm9ybVNl dElkLkRhdGE0WzJdKSwNCj4gPiAnMHgleCclKEluZm8uRm9ybVNldElkLkRhdGE0WzNdKSwgXA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgJzB4JXgnJShJbmZvLkZvcm1TZXRJZC5EYXRh NFs0XSksDQo+ID4gJzB4JXgnJShJbmZvLkZvcm1TZXRJZC5EYXRhNFs1XSksICcweCV4JyUoSW5m by5Gb3JtU2V0SWQuRGF0YTRbNl0pLA0KPiA+ICcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTRb N10pKSArICcgfX1cbicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICAgICAgcXVlc3Rpb25pZDogIHt9XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uSWQpKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiB0eXBlKFJvb3QuRGF0YSkgPT0g Q0lmclJlZjI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAg ICAgZm9ybWlkOiAge31cbicuZm9ybWF0KEluZm8uRm9ybUlkKSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBxdWVzdGlvbmlkOiAge31cbicuZm9ybWF0 KEluZm8uUXVlc3Rpb25JZCkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGlmIHR5cGUoUm9vdC5EYXRhKSA9PSBDSWZyUmVmOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAgICAgIGZvcm1pZDogIHt9XG4nLmZvcm1hdChJbmZvLkZvcm1J ZCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgcXVl c3Rpb25pZDoNCj4ge31cbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uUXVlc3Rpb25JZCkpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBwcm9t cHQ6ICB7fVxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuUHJvbXB0KSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGhlbHA6ICB7fVxuJy5mb3JtYXQo SW5mby5RdWVzdGlvbi5IZWFkZXIuSGVscCkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9SRUZSRVNIX09QOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgLSByZWZyZXNoOlxuJykNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gIT0gTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICAgICAgY29uZGl0aW9uOiAge31cbicu Zm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgICAgICAgICBpbnRlcnZhbDogIHt9ICAjDQo+ID4gUmVmcmVzaEludGVydmFsXG4n LmZvcm1hdChJbmZvLlJlZnJlc2hJbnRlcnZhbCkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9WQVJTVE9SRV9ERVZJQ0VfT1A6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICAtIHZhcnN0b3JlZGV2aWNl OlxuJykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gIT0gTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICAgICAg Y29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICBkZXZpY2VwYXRoOiAge30gICMNCj4g PiBEZXZpY2VQYXRoXG4nLmZvcm1hdChJbmZvLkRldmljZVBhdGgpKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfUkVGUkVTSF9JRF9P UDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIC0gcmVmcmVzaGd1 aWQ6XG4nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAg ICBjb25kaXRpb246ICB7fVxuJy5mb3JtYXQoUm9vdC5Db25kaXRpb24pKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIGV2ZW50Z3JvdXBpZDogIHsnICsg J3t9LCB7fSwNCj4gPg0KPiB7fSwnLmZvcm1hdCgnMHgleCclKEluZm8uUmVmcmVzaEV2ZW50R3Jv dXBJZC5EYXRhMSksJzB4JXgnJShJbmZvLlJlZnJlc2gNCj4gPiBFdmVudEdyb3VwSWQuRGF0YTIp LCAnMHgleCclKEluZm8uUmVmcmVzaEV2ZW50R3JvdXBJZC5EYXRhMykpIFwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICsgJyB7ICcgKyAgJ3t9LCB7fSwge30sIHt9LCB7fSwge30sIHt9 LA0KPiA+IHt9Jy5mb3JtYXQoJzB4JXgnJShJbmZvLlJlZnJlc2hFdmVudEdyb3VwSWQuRGF0YTRb MF0pLA0KPiA+ICcweCV4JyUoSW5mby5SZWZyZXNoRXZlbnRHcm91cElkLkRhdGE0WzFdKSwNCj4g PiAnMHgleCclKEluZm8uUmVmcmVzaEV2ZW50R3JvdXBJZC5EYXRhNFsyXSksDQo+ID4gJzB4JXgn JShJbmZvLlJlZnJlc2hFdmVudEdyb3VwSWQuRGF0YTRbM10pLCBcDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAnMHgleCclKEluZm8uUmVmcmVzaEV2ZW50R3JvdXBJZC5EYXRhNFs0XSks DQo+ID4gJzB4JXgnJShJbmZvLlJlZnJlc2hFdmVudEdyb3VwSWQuRGF0YTRbNV0pLA0KPiA+ICcw eCV4JyUoSW5mby5SZWZyZXNoRXZlbnRHcm91cElkLkRhdGE0WzZdKSwNCj4gPiAnMHgleCclKElu Zm8uUmVmcmVzaEV2ZW50R3JvdXBJZC5EYXRhNFs3XSkpICsgJyB9fVxuJykNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX1dBUk5JTkdf SUZfT1A6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5m bygpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICAtIHdhcm5p bmdpZjpcbicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9 IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAg ICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICAgICAgd2FybmluZzogIHt9XG4nLmZv cm1hdChJbmZvLldhcm5pbmcpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICAgICAgICAgIHRpbWVPdXQ6ICB7fVxuJy5mb3JtYXQoSW5mby5UaW1lT3V0KSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX0dV SURfT1A6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5m bygpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIHR5cGUoUm9vdC5EYXRhKSA9PSBDSWZy TGFiZWw6ICMgdHlwZShJbmZvKSA9PQ0KPiA+IEVGSV9JRlJfR1VJRF9MQUJFTA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSBsYWJlbDpcbicpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBjb25kaXRpb246 ICB7fVxuJy5mb3JtYXQoUm9vdC5Db25kaXRpb24pKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGxhYmVsbnVtYmVyOiAge30gICMN Cj4gPiBMYWJlbE51bWJlclxuJy5mb3JtYXQoSW5mby5OdW1iZXIpKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBpZiB0eXBlKFJvb3QuRGF0YSkgPT0gQ0lmckJhbm5lcjoN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIC0gYmFubmVyOlxu JykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAg IGNvbmRpdGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdGl0bGU6ICB7 fVxuJy5mb3JtYXQoSW5mby5UaXRsZSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAgICAgbGluZW51bWJlcjogIHt9XG4nLmZvcm1hdChJbmZvLkxpbmVOdW1i ZXIpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGFs aWduOiAge31cbicuZm9ybWF0KEluZm8uQWxpZ25tZW50KSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgaWYgdHlwZShSb290LkRhdGEpID09IENJZnJUaW1lb3V0Og0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSBiYW5uZXI6XG4nKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29u ZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB0aW1lb3V0OiAge31c bicuZm9ybWF0KEluZm8uVGltZU91dCkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGlmIHR5cGUoUm9vdC5EYXRhKSA9PSBDSWZyQ2xhc3M6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKCcgIENsYXNzOiAge31cbicuZm9ybWF0KEluZm8uQ2xhc3Mp KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiB0eXBlKFJvb3QuRGF0 YSkgPT0gQ0lmclN1YkNsYXNzOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0 ZSgnICBTdWJDbGFzczogIHt9XG4nLmZvcm1hdChJbmZvLlN1YkNsYXNzKSkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgdHlwZShSb290LkRhdGEpID09IENJZnJHdWlk Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSBndWlkb3A6 XG4nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gIT0g Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAg ICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBndWlkOiAgeycgKyAne30sIHt9 LA0KPiA+IHt9LCcuZm9ybWF0KCcweCV4JyUoSW5mby5HdWlkLkRhdGExKSwnMHgleCclKEluZm8u R3VpZC5EYXRhMiksDQo+ID4gJzB4JXgnJShJbmZvLkd1aWQuRGF0YTMpKSBcDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICArICcgeyAnICsgICd7fSwge30sIHt9LCB7fSwge30sIHt9LCB7 fSwNCj4gPiB7fScuZm9ybWF0KCcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzBdKSwgJzB4JXgnJShJ bmZvLkd1aWQuRGF0YTRbMV0pLA0KPiA+ICcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzJdKSwgJzB4 JXgnJShJbmZvLkd1aWQuRGF0YTRbM10pLCBcDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAnMHgleCclKEluZm8uR3VpZC5EYXRhNFs0XSksICcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzVd KSwNCj4gPiAnMHgleCclKEluZm8uR3VpZC5EYXRhNFs2XSksICcweCV4JyUoSW5mby5HdWlkLkRh dGE0WzddKSkgKyAnIH19XG4nKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgaWYgUm9vdC5DaGlsZCAhPSBbXToNCj4gPg0KPiA+ICsgICAgICAgICAgICBmb3IgQ2hp bGROb2RlIGluIFJvb3QuQ2hpbGQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJvb3Qu T3BDb2RlIGluIENvbmRpdGlvbk9wczoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlm IENoaWxkTm9kZS5PcENvZGUgaW4gQ29uZGl0aW9uT3BzOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIENoaWxkTm9kZS5Db25kaXRpb24gPSBSb290LkNvbmRpdGlvbiArICcgfCAn ICsNCj4gPiBDaGlsZE5vZGUuQ29uZGl0aW9uDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIENoaWxkTm9kZS5Db25k aXRpb24gPSBSb290LkNvbmRpdGlvbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLkR1bXBZYW1sRGZzKENoaWxkTm9kZSwgZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2RlbCBWZnJTeW50YXhQYXJz ZXINCj4gPiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCj4gPiBkaWZmIC0tZ2l0IGEvQmFz ZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyVHJlZS5weQ0KPiA+IGIvQmFzZVRv b2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyVHJlZS5weQ0KPiA+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uMzRmOWNlNGUzMw0KPiA+IC0tLSAvZGV2 L251bGwNCj4gPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJU cmVlLnB5DQo+ID4gQEAgLTAsMCArMSw4OCBAQA0KPiA+ICtmcm9tIFZmckNvbXBpbGVyLkNvbW1v bkN0eXBlcyBpbXBvcnQgKg0KPiA+DQo+ID4gK2Zyb20gVmZyQ29tcGlsZXIuVmZyRm9ybVBrZyBp bXBvcnQgKg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyMgSWZyIHJlbGF0ZWQgSW5mbyAtPiBjdHlw ZXMgb2JqDQo+ID4NCj4gPiArI+OAgGNvbmRpdGlvbmFsIEluZm8NCj4gPg0KPiA+ICsjIFN0cnVj dHVyZSBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgVmZyVHJl ZU5vZGUoKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIE9wY29kZTogaW50PU5v bmUpIC0+IE5vbmU6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk9wQ29kZSA9 IE9wY29kZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5EYXRhID0gTm9uZSAjIHNhdmUgY2xhc3Mg b3IgYnl0ZXMNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQ29uZGl0aW9uID0gTm9uZQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5FeHByZXNzaW9uID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5QYXJlbnQgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkNoaWxkID0gW10NCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGhhc0NvbmRpdGlvbihzZWxmKSAt PmJvb2w6DQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLkNvbmRpdGlvbiA9PSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBGYWxzZQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVHJ1ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAjIEdldCBkYXRhIGZyb20gY3R5cGVzIHRvIGJ5dGVzLg0KPiA+DQo+ID4gKyAgICBkZWYg c3RydWN0MnN0cmVhbShzZWxmLCBzKSAtPiBieXRlczoNCj4gPg0KPiA+ICsgICAgICAgIGxlbmd0 aCA9IHNpemVvZihzKQ0KPiA+DQo+ID4gKyAgICAgICAgcCA9IGNhc3QocG9pbnRlcihzKSwgUE9J TlRFUihjX2NoYXIgKiBsZW5ndGgpKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHAuY29udGVu dHMucmF3DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBoYXNDaGlsZChzZWxmKSAtPiBi b29sOg0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5DaGlsZCA9PSBbXToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gRmFsc2UNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIFRydWUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IGlzRmluYWxDaGlsZChzZWxmKSAtPiBib29sOg0KPiA+DQo+ID4gKyAgICAgICAgUGFyVHJlZSA9 IHNlbGYuUGFyZW50DQo+ID4NCj4gPiArICAgICAgICBpZiBQYXJUcmVlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIFBhclRyZWUuQ2hpbGRbLTFdID09IHNlbGY6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiBUcnVlDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gRmFsc2UNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGluc2VydENoaWxkKHNlbGYs IE5ld05vZGUsIHBvczogaW50PU5vbmUpIC0+IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICBpZiBs ZW4oc2VsZi5DaGlsZCkgPT0gMDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkNoaWxkLmFw cGVuZChOZXdOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBub3QgcG9zOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBMYXN0VHJlZSA9IHNl bGYuQ2hpbGRbLTFdDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuQ2hpbGQuYXBwZW5k KE5ld05vZGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5DaGlsZC5pbnNlcnQocG9zLCBOZXdOb2RlKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgTmV3Tm9kZS5QYXJlbnQgPSBzZWxmDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICMgbGFzdE5vZGUuaW5zZXJ0UmVsKG5ld05vZGUpDQo+ID4NCj4g PiArICAgIGRlZiBpbnNlcnRSZWwoc2VsZiwgbmV3Tm9kZSkgLT4gTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgIGlmIHNlbGYuUGFyZW50Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBhcmVudFRyZWUg PSBzZWxmLlBhcmVudA0KPiA+DQo+ID4gKyAgICAgICAgICAgIG5ld19pbmRleCA9IHBhcmVudFRy ZWUuQ2hpbGQuaW5kZXgoc2VsZikgKyAxDQo+ID4NCj4gPiArICAgICAgICAgICAgcGFyZW50VHJl ZS5DaGlsZC5pbnNlcnQobmV3X2luZGV4LCBuZXdOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5OZXh0UmVsID0gbmV3Tm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgbmV3Tm9kZS5MYXN0UmVsID0g c2VsZg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgZGVsZXRlTm9k ZShzZWxmLCBkZWxldGVrZXk6IHN0cikgLT4gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgIEZpbmRT dGF0dXMsIERlbGV0ZVRyZWUgPSBzZWxmLkZpbmROb2RlKGRlbGV0ZWtleSkNCj4gPg0KPiA+ICsg ICAgICAgIGlmIEZpbmRTdGF0dXM6DQo+ID4NCj4gPiArICAgICAgICAgICAgcGFyZW50VHJlZSA9 IERlbGV0ZVRyZWUuUGFyZW50DQo+ID4NCj4gPiArICAgICAgICAgICAgbGFzdFRyZWUgPSBEZWxl dGVUcmVlLkxhc3RSZWwNCj4gPg0KPiA+ICsgICAgICAgICAgICBuZXh0VHJlZSA9IERlbGV0ZVRy ZWUuTmV4dFJlbA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHBhcmVudFRyZWU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIGluZGV4ID0gcGFyZW50VHJlZS5DaGlsZC5pbmRleChEZWxldGVU cmVlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBkZWwgcGFyZW50VHJlZS5DaGlsZFtpbmRl eF0NCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBsYXN0VHJlZSBhbmQgbmV4dFRyZWU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIGxhc3RUcmVlLk5leHRSZWwgPSBuZXh0VHJlZQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBuZXh0VHJlZS5MYXN0UmVsID0gbGFzdFRyZWUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbGlmIGxhc3RUcmVlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBs YXN0VHJlZS5OZXh0UmVsID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgbmV4dFRy ZWU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIG5leHRUcmVlLkxhc3RSZWwgPSBOb25lDQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIERlbGV0ZVRyZWUNCj4gPg0KPiA+ICsgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgcHJpbnQoJ0NvdWxkIG5vdCBmaW5kIHRoZSB0 YXJnZXQgdHJlZScpDQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIE5vbmUNCj4gPg0KPiA+ IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJVdGls aXR5LnB5DQo+ID4gYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJVdGls aXR5LnB5DQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi4x YTJiZjk5NWRjDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2Uv UHl0aG9uL1ZmckNvbXBpbGVyL1ZmclV0aWxpdHkucHkNCj4gPiBAQCAtMCwwICsxLDE5OTEgQEAN Cj4gPiArZnJvbSBhc3QgaW1wb3J0IFBhc3MsIFJldHVybg0KPiA+DQo+ID4gK2Zyb20gYXN5bmNp by53aW5kb3dzX2V2ZW50cyBpbXBvcnQgTlVMTA0KPiA+DQo+ID4gK2Zyb20gY3R5cGVzLndpbnR5 cGVzIGltcG9ydCBTSVpFTA0KPiA+DQo+ID4gK2Zyb20gbXNpbGliLnNjaGVtYSBpbXBvcnQgRXJy b3INCj4gPg0KPiA+ICtmcm9tIHRraW50ZXIgaW1wb3J0IE4NCj4gPg0KPiA+ICtmcm9tIHR1cnRs ZSBpbXBvcnQgZ290bw0KPiA+DQo+ID4gK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0DQo+ID4NCj4g PiArZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBOb25DYWxsYWJsZU1hZ2ljTW9jaw0KPiA+DQo+ ID4gK2Zyb20geG1scnBjLmNsaWVudCBpbXBvcnQgYm9vbGVhbg0KPiA+DQo+ID4gK2Zyb20gVmZy Q29tcGlsZXIuVmZyRXJyb3IgaW1wb3J0ICoNCj4gPg0KPiA+ICtmcm9tIFZmckNvbXBpbGVyLkNv bW1vbkN0eXBlcyBpbXBvcnQgKg0KPiA+DQo+ID4gK2Zyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBh YnN0cmFjdG1ldGhvZA0KPiA+DQo+ID4gK2ltcG9ydCBjdHlwZXMNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICtpbXBvcnQgc3lzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArVkZSX1BBQ0tfU0hPVyA9IDB4 MDINCj4gPg0KPiA+ICtWRlJfUEFDS19BU1NJR04gPSAweDAxDQo+ID4NCj4gPiArVkZSX1BBQ0tf UFVTSCA9IDB4MDQNCj4gPg0KPiA+ICtWRlJfUEFDS19QT1AgPSAweDA4DQo+ID4NCj4gPiArREVG QVVMVF9QQUNLX0FMSUdOID0gMHg4DQo+ID4NCj4gPiArREVGQVVMVF9BTElHTiA9IDENCj4gPg0K PiA+ICtNQVhfTkFNRV9MRU4gPSA2NA0KPiA+DQo+ID4gK01BWF9CSVRfV0lEVEggPSAzMg0KPiA+ DQo+ID4gK0VGSV9WQVJTVE9SRV9JRF9NQVggPSAweEZGRkYNCj4gPg0KPiA+ICtFRklfQklUU19T SElGVF9QRVJfVUlOVDMyID0gMHg1DQo+ID4NCj4gPiArRUZJX0JJVFNfUEVSX1VJTlQzMiA9ICgx IDw8IEVGSV9CSVRTX1NISUZUX1BFUl9VSU5UMzIpDQo+ID4NCj4gPiArRUZJX0ZSRUVfVkFSU1RP UkVfSURfQklUTUFQX1NJWkUgPSBpbnQoDQo+ID4NCj4gPiArICAgIChFRklfVkFSU1RPUkVfSURf TUFYICsgMSkgLyBFRklfQklUU19QRVJfVUlOVDMyKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK2NsYXNzIFNWZnJQYWNrU3RhY2tOb2RlKG9iamVjdCk6DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBJZGVudGlmaWVyLCBOdW1iZXIpOg0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5JZGVudGlmaWVyID0gSWRlbnRpZmllcg0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5OdW1iZXIgPSBOdW1iZXINCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTmV4dCA9 IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIE1hdGNoKHNlbGYsIElkZW50aWZp ZXIpOg0KPiA+DQo+ID4gKyAgICAgICAgaWYgSWRlbnRpZmllciA9PSBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBUcnVlDQo+ID4NCj4gPiArICAgICAgICBlbGlmIHNlbGYuSWRl bnRpZmllciA9PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBGYWxzZQ0KPiA+ DQo+ID4gKyAgICAgICAgZWxpZiBzZWxmLklkZW50aWZpZXIgPT0gSWRlbnRpZmllcjoNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gVHJ1ZQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gRmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICtjbGFzcyBTVmZyRGF0YVR5cGUob2JqZWN0KToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFR5cGVOYW1lPScnKToNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuVHlwZU5hbWUgPSBUeXBlTmFtZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5UeXBl ID0gMA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5BbGlnbiA9IDENCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuVG90YWxTaXplID0gMA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5IYXNCaXRGaWVsZCA9 IEZhbHNlDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk1lbWJlcnMgPSBOb25lDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLk5leHQgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArY2xhc3MgU1ZmckRhdGFGaWVsZChvYmplY3QpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgX19pbml0X18oc2VsZiwgRmllbGROYW1lPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5GaWVsZE5hbWUgPSBGaWVsZE5hbWUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRmllbGRU eXBlID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5PZmZzZXQgPSAwDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLkFycmF5TnVtID0gMA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5Jc0JpdEZp ZWxkID0gRmFsc2UNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQml0V2lkdGggPSAwDQo+ID4NCj4g PiArICAgICAgICBzZWxmLkJpdE9mZnNldCA9IDANCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTmV4 dCA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJbnRlcm5hbFR5cGVzKCk6DQo+ ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBUeXBlTmFtZSwgVHlwZSwgU2l6ZSwgQWxp Z24pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5UeXBlTmFtZSA9IFR5cGVOYW1lDQo+ID4NCj4g PiArICAgICAgICBzZWxmLlR5cGUgPSBUeXBlDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNpemUg PSBTaXplDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkFsaWduID0gQWxpZ24NCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICtnSW50ZXJuYWxUeXBlc1RhYmxlID0gWw0KPiA+DQo+ID4gKyAgICBJbnRlcm5h bFR5cGVzKCJVSU5UNjQiLCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgc2l6ZW9mKGN0eXBlcy5jX3Vsb25nbG9uZyksIHNpemVvZihjdHlwZXMu Y191bG9uZ2xvbmcpKSwNCj4gPg0KPiA+ICsgICAgSW50ZXJuYWxUeXBlcygiVUlOVDMyIiwgRUZJ X0lGUl9UWVBFX05VTV9TSVpFXzMyLA0KPiA+IHNpemVvZihjdHlwZXMuY191bG9uZyksDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgc2l6ZW9mKGN0eXBlcy5jX3Vsb25nKSksDQo+ID4NCj4g PiArICAgIEludGVybmFsVHlwZXMoIlVJTlQxNiIsIEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNiwN Cj4gPiBzaXplb2YoY3R5cGVzLmNfdXNob3J0KSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICBzaXplb2YoY3R5cGVzLmNfdXNob3J0KSksDQo+ID4NCj4gPiArICAgIEludGVybmFsVHlwZXMo IlVJTlQ4IiwgRUZJX0lGUl9UWVBFX05VTV9TSVpFXzgsDQo+ID4gc2l6ZW9mKGN0eXBlcy5jX3Vi eXRlKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICBzaXplb2YoY3R5cGVzLmNfdWJ5dGUp KSwNCj4gPg0KPiA+ICsgICAgSW50ZXJuYWxUeXBlcygiQk9PTEVBTiIsIEVGSV9JRlJfVFlQRV9C T09MRUFOLA0KPiA+IHNpemVvZihjdHlwZXMuY191Ynl0ZSksDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgc2l6ZW9mKGN0eXBlcy5jX3VieXRlKSksDQo+ID4NCj4gPiArICAgIEludGVybmFs VHlwZXMoIkVGSV9HVUlEIiwgRUZJX0lGUl9UWVBFX09USEVSLCBzaXplb2YoRUZJX0dVSUQpLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgIHNpemVvZihjX3VieXRlICogOCkpLA0KPiA+DQo+ ID4gKyAgICBJbnRlcm5hbFR5cGVzKCJFRklfSElJX0RBVEUiLCBFRklfSUZSX1RZUEVfREFURSwN Cj4gc2l6ZW9mKEVGSV9ISUlfREFURSksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgc2l6 ZW9mKGN0eXBlcy5jX3VzaG9ydCkpLA0KPiA+DQo+ID4gKyAgICBJbnRlcm5hbFR5cGVzKCJFRklf U1RSSU5HX0lEIiwgRUZJX0lGUl9UWVBFX1NUUklORywNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICBzaXplb2YoY3R5cGVzLmNfdXNob3J0KSwgc2l6ZW9mKGN0eXBlcy5jX3VzaG9ydCkpLA0K PiA+DQo+ID4gKyAgICBJbnRlcm5hbFR5cGVzKCJFRklfSElJX1RJTUUiLCBFRklfSUZSX1RZUEVf VElNRSwNCj4gc2l6ZW9mKEVGSV9ISUlfVElNRSksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgc2l6ZW9mKGN0eXBlcy5jX3VieXRlKSksDQo+ID4NCj4gPiArICAgIEludGVybmFsVHlwZXMo IkVGSV9ISUlfUkVGIiwgRUZJX0lGUl9UWVBFX1JFRiwgc2l6ZW9mKEVGSV9ISUlfUkVGKSwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICBzaXplb2YoRUZJX0dVSUQpKSwNCj4gPg0KPiA+ICtd DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ1ZmclZhckRhdGFUeXBlREIob2JqZWN0KToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5fX1BhY2tBbGlnbiA9IERFRkFVTFRfUEFDS19BTElHTg0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5fX1BhY2tTdGFjayA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu X19EYXRhVHlwZUxpc3QgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fTmV3RGF0YVR5 cGUgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fQ3VyckRhdGFUeXBlID0gTm9uZQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0N1cnJEYXRhRmllbGQgPSBOb25lDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLl9fRmlyc3ROZXdEYXRhVHlwZU5hbWUgPSBOb25lDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLkludGVybmFsVHlwZXNMaXN0SW5pdCgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBJbnRlcm5hbFR5cGVzTGlzdEluaXQoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oZ0ludGVybmFsVHlwZXNUYWJsZSkpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHBOZXdUeXBlID0gU1ZmckRhdGFUeXBlKCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBwTmV3VHlwZS5UeXBlTmFtZSA9IGdJbnRlcm5hbFR5cGVzVGFibGVbaV0u VHlwZU5hbWUNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTmV3VHlwZS5UeXBlID0gZ0ludGVybmFs VHlwZXNUYWJsZVtpXS5UeXBlDQo+ID4NCj4gPiArICAgICAgICAgICAgcE5ld1R5cGUuQWxpZ24g PSBnSW50ZXJuYWxUeXBlc1RhYmxlW2ldLkFsaWduDQo+ID4NCj4gPiArICAgICAgICAgICAgcE5l d1R5cGUuVG90YWxTaXplID0gZ0ludGVybmFsVHlwZXNUYWJsZVtpXS5TaXplDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgZ0ludGVybmFsVHlwZXNUYWJsZVtpXS5UeXBlTmFt ZSA9PSAnRUZJX0hJSV9EQVRFJzoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcFllYXJGaWVs ZCAgPSBTVmZyRGF0YUZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcE1vbnRoRmll bGQgID0gU1ZmckRhdGFGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBEYXlGaWVs ZCAgPSBTVmZyRGF0YUZpZWxkKCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcFllYXJGaWVsZC5GaWVsZE5hbWUgPSAnWWVhcicNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcFllYXJGaWVsZC5GaWVsZFR5cGUsIF8gPSBzZWxmLkdldERhdGFUeXBlKCdVSU5UMTYnKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwWWVhckZpZWxkLk9mZnNldCA9IDANCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcFllYXJGaWVsZC5OZXh0ID0gcE1vbnRoRmllbGQNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcFllYXJGaWVsZC5BcnJheU51bSA9IDANCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcFllYXJGaWVsZC5Jc0JpdEZpZWxkID0gRmFsc2UNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcE1vbnRoRmllbGQuRmllbGROYW1lID0gJ01vbnRoJw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwTW9udGhGaWVsZC5GaWVsZFR5cGUsIF8gPSBzZWxm LkdldERhdGFUeXBlKCdVSU5UOCcpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBNb250aEZp ZWxkLk9mZnNldCA9IDINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcE1vbnRoRmllbGQuTmV4 dCA9IHBEYXlGaWVsZA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwTW9udGhGaWVsZC5BcnJh eU51bSA9IDANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcE1vbnRoRmllbGQuSXNCaXRGaWVs ZCA9IEZhbHNlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBEYXlGaWVs ZC5GaWVsZE5hbWUgPSAnRGF5Jw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwRGF5RmllbGQu RmllbGRUeXBlLCBfID0gc2VsZi5HZXREYXRhVHlwZSgnVUlOVDgnKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBwRGF5RmllbGQuT2Zmc2V0ID0gMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBwRGF5RmllbGQuTmV4dCA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcERheUZp ZWxkLkFycmF5TnVtID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwRGF5RmllbGQuSXNC aXRGaWVsZCA9IEZhbHNlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBO ZXdUeXBlLk1lbWJlcnMgPSBwWWVhckZpZWxkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxpZiBnSW50ZXJuYWxUeXBlc1RhYmxlW2ldLlR5cGVOYW1lID09ICdFRklfSElJX1RJ TUUnOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwSG91cnNGaWVsZCAgPSBTVmZyRGF0YUZp ZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcE1pbnV0ZXNGaWVsZCAgPSBTVmZyRGF0 YUZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcFNlY29uZHNGaWVsZCAgPSBTVmZy RGF0YUZpZWxkKCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcEhvdXJz RmllbGQuRmllbGROYW1lID0gJ0hvdXJzJw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwSG91 cnNGaWVsZC5GaWVsZFR5cGUsIF8gPSBzZWxmLkdldERhdGFUeXBlKCdVSU5UOCcpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBIb3Vyc0ZpZWxkLk9mZnNldCA9IDANCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcEhvdXJzRmllbGQuTmV4dCA9IHBNaW51dGVzRmllbGQNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcEhvdXJzRmllbGQuQXJyYXlOdW0gPSAwDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHBIb3Vyc0ZpZWxkLklzQml0RmllbGQgPSBGYWxzZQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBwTWludXRlc0ZpZWxkLkZpZWxkTmFtZSA9ICdNaW51dGVz Jw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwTWludXRlc0ZpZWxkLkZpZWxkVHlwZSwgXyA9 IHNlbGYuR2V0RGF0YVR5cGUoJ1VJTlQ4JykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcE1p bnV0ZXNGaWVsZC5PZmZzZXQgPSAxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBNaW51dGVz RmllbGQuTmV4dCA9IHBTZWNvbmRzRmllbGQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcE1p bnV0ZXNGaWVsZC5BcnJheU51bSA9IDANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcE1pbnV0 ZXNGaWVsZC5Jc0JpdEZpZWxkID0gRmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcFNlY29uZHNGaWVsZC5GaWVsZE5hbWUgPSAnU2Vjb25kcycNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcFNlY29uZHNGaWVsZC5GaWVsZFR5cGUsIF8gPSBzZWxmLkdldERhdGFU eXBlKCdVSU5UOCcpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBTZWNvbmRzRmllbGQuT2Zm c2V0ID0gMg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwU2Vjb25kc0ZpZWxkLk5leHQgPSBO b25lDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBTZWNvbmRzRmllbGQuQXJyYXlOdW0gPSAw DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBTZWNvbmRzRmllbGQuSXNCaXRGaWVsZCA9IEZh bHNlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBOZXdUeXBlLk1lbWJl cnMgPSBwSG91cnNGaWVsZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYg Z0ludGVybmFsVHlwZXNUYWJsZVtpXS5UeXBlTmFtZSA9PSAnRUZJX0hJSV9SRUYnOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBwUXVlc3Rpb25JZEZpZWxkICA9IFNWZnJEYXRhRmllbGQoKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwRm9ybUlkRmllbGQgID0gU1ZmckRhdGFGaWVsZCgp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBGb3JtU2V0R3VpZEZpZWxkICA9IFNWZnJEYXRh RmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwRGV2aWNlUGF0aEZpZWxkID0gU1Zm ckRhdGFGaWVsZCgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBRdWVz dGlvbklkRmllbGQuRmllbGROYW1lID0gJ1F1ZXN0aW9uSWQnDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHBRdWVzdGlvbklkRmllbGQuRmllbGRUeXBlLCBfID0gc2VsZi5HZXREYXRhVHlwZSgn VUlOVDE2JykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcFF1ZXN0aW9uSWRGaWVsZC5PZmZz ZXQgPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBRdWVzdGlvbklkRmllbGQuTmV4dCA9 IHBGb3JtSWRGaWVsZA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwUXVlc3Rpb25JZEZpZWxk LkFycmF5TnVtID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwUXVlc3Rpb25JZEZpZWxk LklzQml0RmllbGQgPSBGYWxzZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBwRm9ybUlkRmllbGQuRmllbGROYW1lID0gJ0Zvcm1JZCcNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcEZvcm1JZEZpZWxkLkZpZWxkVHlwZSwgXyA9IHNlbGYuR2V0RGF0YVR5cGUoJ1VJTlQx NicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBGb3JtSWRGaWVsZC5PZmZzZXQgPSAyDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHBGb3JtSWRGaWVsZC5OZXh0ID0gcEZvcm1TZXRHdWlk RmllbGQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcEZvcm1JZEZpZWxkLkFycmF5TnVtID0g MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwRm9ybUlkRmllbGQuSXNCaXRGaWVsZCA9IEZh bHNlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBGb3JtU2V0R3VpZEZp ZWxkLkZpZWxkTmFtZSA9ICdGb3JtU2V0R3VpZCcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cEZvcm1TZXRHdWlkRmllbGQuRmllbGRUeXBlLCBfID0gc2VsZi5HZXREYXRhVHlwZSgnRUZJX0dV SUQnKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwRm9ybVNldEd1aWRGaWVsZC5PZmZzZXQg PSA0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBGb3JtU2V0R3VpZEZpZWxkLk5leHQgPSBw RGV2aWNlUGF0aEZpZWxkDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBGb3JtU2V0R3VpZEZp ZWxkLkFycmF5TnVtID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwRm9ybVNldEd1aWRG aWVsZC5Jc0JpdEZpZWxkID0gRmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcERldmljZVBhdGhGaWVsZC5GaWVsZE5hbWUgPSAnRGV2aWNlUGF0aCcNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcERldmljZVBhdGhGaWVsZC5GaWVsZFR5cGUsIF8gPQ0KPiBzZWxm LkdldERhdGFUeXBlKCdFRklfU1RSSU5HX0lEJykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cERldmljZVBhdGhGaWVsZC5PZmZzZXQgPSAyMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBw RGV2aWNlUGF0aEZpZWxkLk5leHQgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBE ZXZpY2VQYXRoRmllbGQuQXJyYXlOdW0gPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBE ZXZpY2VQYXRoRmllbGQuSXNCaXRGaWVsZCA9IEZhbHNlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHBOZXdUeXBlLk1lbWJlcnMgPSBwUXVlc3Rpb25JZEZpZWxkDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgcE5ld1R5cGUuTmV4dCA9IE5vbmUNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9fUmVnaXN0ZXJOZXdUeXBlKHBOZXdUeXBlKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHBOZXdUeXBlID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgR2V0RGF0YVR5cGVMaXN0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNl bGYuX19EYXRhVHlwZUxpc3QNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFBhY2soc2Vs ZiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgTGluZU51bSwNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgQWN0aW9uLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICBJZGVudGlmaWVyPU5vbmUsDQo+ID4N Cj4gPiArICAgICAgICAgICAgIE51bWJlcj1ERUZBVUxUX1BBQ0tfQUxJR04pOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgaWYgQWN0aW9uICYgVkZSX1BBQ0tfU0hPVzoNCj4gPg0KPiA+ ICsgICAgICAgICAgICBNc2cgPSBzdHIuZm9ybWF0KCd2YWx1ZSBvZiBwcmFnbWEgcGFjayhzaG93 KSA9PSAlZCcgJQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYu X19QYWNrQWxpZ24pKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGdDVmZyRXJyb3JIYW5kbGUuUHJp bnRNc2coTGluZU51bSwgJ1dhcm5pbmcnLCBNc2cpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBpZiBBY3Rpb24gJiBWRlJfUEFDS19QVVNIOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBO ZXcgPSBTVmZyUGFja1N0YWNrTm9kZShJZGVudGlmaWVyLCBzZWxmLl9fUGFja0FsaWduKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIHBOZXcgPT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHBOZXcuTmV4dCA9IHNlbGYuX19QYWNrU3RhY2sNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9fUGFja1N0YWNrID0gcE5ldw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgaWYgQWN0aW9uICYgVkZSX1BBQ0tfUE9QOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHBOb2RlID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuX19QYWNrU3RhY2sg PT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZ0NWZnJFcnJvckhhbmRsZS5Qcmlu dE1zZyhMaW5lTnVtLCAnRXJyb3InLCAnI3ByYWdtYQ0KPiBwYWNrKHBvcC4uLikgOg0KPiA+IG1v cmUgcG9wcyB0aGFuIHB1c2hlcycpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg cE5vZGUgPSBzZWxmLl9fUGFja1N0YWNrDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUgcE5v ZGUgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgcE5vZGUuTWF0Y2goSWRl bnRpZmllcikgPT0gVHJ1ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX19Q YWNrQWxpZ24gPSBwTm9kZS5OdW1iZXINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuX19QYWNrU3RhY2sgPSBwTm9kZS5OZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBO b2RlID0gcE5vZGUuTmV4dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgQWN0aW9u ICYgVkZSX1BBQ0tfQVNTSUdOOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFBhY2tBbGlnbiA9IChO dW1iZXIgKyBOdW1iZXIgJSAyKSBpZiAoTnVtYmVyID4gMSkgZWxzZSBOdW1iZXINCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBQYWNrQWxpZ24gPT0gMCBvciBQYWNrQWxpZ24gPiAxNjoNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgZ0NWZnJFcnJvckhhbmRsZS5QcmludE1zZyhMaW5lTnVtLCAn RXJyb3InLCAiZXhwZWN0ZWQgcHJhZ21hDQo+ID4gcGFyYW1ldGVyIHRvIGJlICcxJywgJzInLCAn NCcsICc4Jywgb3IgJzE2JyIpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5fX1BhY2tBbGlnbiA9IFBhY2tBbGlnbg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUND RVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBEZWNsYXJlRGF0YVR5cGVCZWdpbihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHBOZXdUeXBlID0gU1ZmckRhdGFUeXBlKCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBOZXdUeXBlLlR5cGVOYW1lID0gJycNCj4gPg0KPiA+ ICsgICAgICAgIHBOZXdUeXBlLlR5cGUgPSBFRklfSUZSX1RZUEVfT1RIRVINCj4gPg0KPiA+ICsg ICAgICAgIHBOZXdUeXBlLkFsaWduID0gREVGQVVMVF9BTElHTg0KPiA+DQo+ID4gKyAgICAgICAg cE5ld1R5cGUuVG90YWxTaXplID0gMA0KPiA+DQo+ID4gKyAgICAgICAgcE5ld1R5cGUuSGFzQml0 RmllbGQgPSBGYWxzZQ0KPiA+DQo+ID4gKyAgICAgICAgcE5ld1R5cGUuTWVtYmVycyA9IE5vbmUN Cj4gPg0KPiA+ICsgICAgICAgIHBOZXdUeXBlLk5leHQgPSBOb25lDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLl9fTmV3RGF0YVR5cGUgPSBwTmV3VHlwZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgU2V0TmV3VHlwZVR5cGUoc2VsZiwgVHlwZSk6DQo+ID4NCj4gPiArICAgICAgICBpZiBz ZWxmLl9fTmV3RGF0YVR5cGUgPT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9SX1NLSVBFRA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgaWYgVHlwZSA9PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuX19OZXdEYXRhVHlwZS5UeXBlID0gVHlwZSAgIyBuZWVkIHRvIGxp bWl0IHRoZSB2YWx1ZSBvZiB0aGUNCj4gdHlwZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBTZXROZXdUeXBlVG90YWxTaXplKHNlbGYsIFNpemUpOg0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5fX05ld0RhdGFUeXBlLlRvdGFsU2l6ZSA9IFNpemUNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldE5ld1R5cGVBbGlnbihzZWxmLCBBbGlnbik6DQo+ID4N Cj4gPiArICAgICAgICBzZWxmLl9fTmV3RGF0YVR5cGUuQWxpZ24gPSBBbGlnbg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0TmV3VHlwZU5hbWUoc2VsZiwgVHlwZU5hbWUpOg0KPiA+ DQo+ID4gKyAgICAgICAgaWYgc2VsZi5fX05ld0RhdGFUeXBlID09IE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9FUlJPUl9TS0lQRUQN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIFR5cGVOYW1lID09IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9F UlJPUg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgbGVuKFR5cGVOYW1lKSA+PSBN QVhfTkFNRV9MRU46DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgcFR5cGUgPSBzZWxmLl9fRGF0YVR5cGVMaXN0DQo+ID4NCj4gPiArICAgICAgICB3aGlsZSBw VHlwZSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHBUeXBlLlR5cGVOYW1lID09 IFR5cGVOYW1lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBUeXBlID0gcFR5 cGUuTmV4dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX05ld0RhdGFUeXBl LlR5cGVOYW1lID0gVHlwZU5hbWUNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19B bGlnblN0dWZmKHNlbGYsIFNpemUsIEFsaWduKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBB bGlnbiAtIChTaXplKSAlIChBbGlnbikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIERl Y2xhcmVEYXRhVHlwZUVuZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYuX19OZXdE YXRhVHlwZS5UeXBlTmFtZSA9PSAnJzoNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYuX19OZXdEYXRhVHlwZS5Ub3RhbFNp emUgJSBzZWxmLl9fTmV3RGF0YVR5cGUuQWxpZ24gIT0gMDoNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9fTmV3RGF0YVR5cGUuVG90YWxTaXplICs9IHNlbGYuX19BbGlnblN0dWZmKA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9fTmV3RGF0YVR5cGUuVG90YWxTaXplLCBzZWxm Ll9fTmV3RGF0YVR5cGUuQWxpZ24pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxm Ll9fUmVnaXN0ZXJOZXdUeXBlKHNlbGYuX19OZXdEYXRhVHlwZSkNCj4gPg0KPiA+ICsgICAgICAg IGlmIHNlbGYuX19GaXJzdE5ld0RhdGFUeXBlTmFtZSA9PSBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuX19GaXJzdE5ld0RhdGFUeXBlTmFtZSA9IHNlbGYuX19OZXdEYXRhVHlwZS5U eXBlTmFtZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX05ld0RhdGFUeXBl ID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIHR3byBkZWZpbml0aW9ucw0KPiA+ DQo+ID4gKyAgICBkZWYgR2V0RGF0YVR5cGVTaXplQnlUeXBlTmFtZShzZWxmLCBUeXBlTmFtZSk6 DQo+ID4NCj4gPiArICAgICAgICBTaXplID0gMA0KPiA+DQo+ID4gKyAgICAgICAgcERhdGFUeXBl ID0gc2VsZi5fX0RhdGFUeXBlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgcERhdGFUeXBl ICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgcERhdGFUeXBlLlR5cGVOYW1lID09 IFR5cGVOYW1lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBTaXplID0gcERhdGFUeXBlLlRv dGFsU2l6ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gU2l6ZSwgVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsgICAgICAgICAgICBwRGF0YVR5cGUg PSBwRGF0YVR5cGUuTmV4dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFNp emUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRFRklORUQNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIEdldERhdGFUeXBlU2l6ZUJ5RGF0YVR5cGUoc2VsZiwgRGF0YVR5cGUpOg0K PiA+DQo+ID4gKyAgICAgICAgU2l6ZSA9IDANCj4gPg0KPiA+ICsgICAgICAgIERhdGFUeXBlID0g RGF0YVR5cGUgJiAweDBGDQo+ID4NCj4gPiArICAgICAgICAjIEZvciB1c2VyIGRlZmluZWQgZGF0 YSB0eXBlLCB0aGUgc2l6ZSBjYW4ndCBiZSBnb3QgYnkgdGhpcyBmdW5jdGlvbi4NCj4gPg0KPiA+ ICsgICAgICAgIGlmIERhdGFUeXBlID09IEVGSV9JRlJfVFlQRV9PVEhFUjoNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gU2l6ZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MN Cj4gPg0KPiA+ICsgICAgICAgIHBEYXRhVHlwZSA9IHNlbGYuX19EYXRhVHlwZUxpc3QNCj4gPg0K PiA+ICsgICAgICAgIHdoaWxlIHBEYXRhVHlwZSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIERhdGFUeXBlID09IHBEYXRhVHlwZS5UeXBlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBTaXplID0gcERhdGFUeXBlLlRvdGFsU2l6ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gU2l6ZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ ICsgICAgICAgICAgICBwRGF0YVR5cGUgPSBwRGF0YVR5cGUuTmV4dA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIFNpemUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRF RklORUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9fRXh0cmFjdFN0cnVjdFR5cGVO YW1lKHNlbGYsIFZhclN0cik6DQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaW5kZXggPSBWYXJTdHIuaW5kZXgoJy4nKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhj ZXB0IFZhbHVlRXJyb3I6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZhclN0ciwgbGVu KFZhclN0cikNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIFZhclN0clswOmluZGV4XSwgaW5kZXggKyAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBfX0V4dHJhY3RGaWVsZE5hbWVBbmRBcnJhcnkoc2VsZiwgVmFyU3RyLCBzKToNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIEFycmF5SWR4ID0gSU5WQUxJRF9BUlJBWV9JTkRF WA0KPiA+DQo+ID4gKyAgICAgICAgc19jb3B5ID0gcw0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUg KHMgPCBsZW4oVmFyU3RyKSBhbmQgVmFyU3RyW3NdICE9ICcuJyBhbmQgVmFyU3RyW3NdICE9ICdb Jw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgIGFuZCBWYXJTdHJbc10gIT0gJ10nKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzICs9IDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIEZO YW1lID0gVmFyU3RyW3NfY29weTpzXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYg cyA9PSBsZW4oVmFyU3RyKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gQXJyYXlJZHgs IHMsIEZOYW1lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZWxpZiBWYXJTdHJbc10gPT0gJy4nOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHMgKz0gMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBBcnJheUlkeCwgcywg Rk5hbWUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBlbGlmIFZhclN0cltzXSA9PSAnWyc6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcyArPSAxDQo+ID4NCj4gPiArICAgICAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBlID0gcyArIFZhclN0cltzOl0uaW5kZXgoJ10nKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gTm9uZSwgTm9uZSwgTm9uZSwNCj4gPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fREFUQV9TVFJJTkdfRVJST1INCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBBcnJheVN0ciA9IFZhclN0cltzOmVdDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIEFycmF5SWR4ID0gaW50KEFycmF5U3RyKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBpZiBWYXJTdHJbZV0gPT0gJ10nOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgZSArPSAxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIGUgPCBsZW4oVmFyU3RyKSBh bmQgKFZhclN0cltlXSA9PSAnLicpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZSAr PSAxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBBcnJheUlkeCwgZSwgRk5hbWUs DQo+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBlbGlmIFZhclN0cltzXSA9PSAnXSc6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIE5vbmUsIE5vbmUsIE5vbmUsDQo+ID4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0RB VEFfU1RSSU5HX0VSUk9SDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gQXJy YXlJZHgsIHMsIEZOYW1lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0VHlwZUZpZWxkKHNlbGYsIEZOYW1lLCBUeXBlKToN Cj4gPg0KPiA+ICsgICAgICAgIGlmIEZOYW1lID09IE5vbmUgb3IgVHlwZSA9PSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f RkFUQUxfRVJST1INCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBGaWVsZCA9IFR5cGUu TWVtYmVycw0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgKHBGaWVsZCAhPSBOb25lKToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBUeXBlLlR5cGUgPT0gRUZJX0lGUl9UWVBF X1RJTUU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIEZOYW1lID09ICdIb3VyJzoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEZOYW1lID0gJ0hvdXJzJw0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBlbGlmIEZOYW1lID09ICdNaW51dGUnOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgRk5hbWUgPT0gJ01pbnV0ZXMnDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGVsaWYgRk5hbWUgPT0gJ1NlY29uZCc6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBG TmFtZSA9ICdTZWNvbmRzJw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHBGaWVsZC5GaWVsZE5h bWUgPT0gRk5hbWU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEZpZWxkID0gcEZpZWxkDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBGaWVsZCwgVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBwRmllbGQg PSBwRmllbGQuTmV4dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIE5vbmUs IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRFRklORUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIElzVGhpc0JpdEZpZWxkKHNlbGYsIFZhclN0ck5hbWUpOg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgVE5hbWUsIGkgPSBzZWxmLl9fRXh0cmFjdFN0cnVjdFR5cGVOYW1l KFZhclN0ck5hbWUpDQo+ID4NCj4gPiArICAgICAgICBwVHlwZSwgUmV0dXJuQ29kZSA9IHNlbGYu R2V0RGF0YVR5cGUoVE5hbWUpDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBOb25lLCBSZXR1cm5Db2RlDQo+ID4NCj4gPiArICAgICAgICBwRmllbGQgPSBOb25lDQo+ ID4NCj4gPiArICAgICAgICB3aGlsZSAoaSA8IGxlbihWYXJTdHJOYW1lKSk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgIyBpIHN0YXJ0IGZyb20gZmllbGQNCj4gPg0KPiA+ICsgICAgICAgICAgICBf LCBpLCBGTmFtZSwgUmV0dXJuQ29kZSA9IHNlbGYuX19FeHRyYWN0RmllbGROYW1lQW5kQXJyYXJ5 KA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBWYXJTdHJOYW1lLCBpKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NF U1M6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBSZXR1cm5Db2RlDQo+ ID4NCj4gPiArICAgICAgICAgICAgcEZpZWxkLCBSZXR1cm5Db2RlID0gc2VsZi5HZXRUeXBlRmll bGQoRk5hbWUsIHBUeXBlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIFJldHVybkNvZGUgIT0g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBOb25lLCBSZXR1cm5Db2RlDQo+ID4NCj4gPiArICAgICAgICAgICAgcFR5cGUg PSBwRmllbGQuRmllbGRUeXBlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBwRmll bGQgIT0gTm9uZSBhbmQgcEZpZWxkLklzQml0RmllbGQ6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIFRydWUsIFJldHVybkNvZGUNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBSZXR1cm5Db2RlDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiBHZXRGaWVsZE9mZnNldChzZWxmLCBGaWVsZCwgQXJyYXlJZHgsIElzQml0 RmllbGQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgRmllbGQgPT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gTm9uZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX0ZBVEFMX0VSUk9SDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiAoQXJyYXlJ ZHggIT0gSU5WQUxJRF9BUlJBWV9JTkRFWCkgYW5kIChGaWVsZC5BcnJheU51bSA9PSAwIG9yDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBGaWVsZC5BcnJheU51bSA8PSBBcnJheUlkeCk6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIE5vbmUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9FUlJPUl9BUlJBUllfTlVNDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBJZHggPSAwIGlmIEFycmF5SWR4ID09IElOVkFMSURf QVJSQVlfSU5ERVggZWxzZSBBcnJheUlkeA0KPiA+DQo+ID4gKyAgICAgICAgaWYgSXNCaXRGaWVs ZDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBPZmZzZXQgPSBGaWVsZC5CaXRPZmZzZXQgKyBGaWVs ZC5GaWVsZFR5cGUuVG90YWxTaXplICogSWR4ICogOA0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBPZmZzZXQgPSBGaWVsZC5PZmZzZXQgKyBGaWVsZC5GaWVs ZFR5cGUuVG90YWxTaXplICogSWR4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gT2Zmc2V0LCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgX19HZXRGaWVsZFdpZHRoKHNlbGYsIEZpZWxkKToNCj4gPg0KPiA+ ICsgICAgICAgIGlmIEZpZWxkID09IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IDANCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBGaWVsZC5GaWVsZFR5cGUuVHlwZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19HZXRGaWVsZFNpemUoc2VsZiwgRmllbGQsIEFycmF5 SWR4LCBCaXRGaWVsZCk6DQo+ID4NCj4gPiArICAgICAgICBpZiBGaWVsZCA9PSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxf RVJST1INCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIChBcnJheUlkeCA9PSBJTlZB TElEX0FSUkFZX0lOREVYKSBhbmQgKEZpZWxkLkFycmF5TnVtICE9IDApOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBGaWVsZC5GaWVsZFR5cGUuVG90YWxTaXplICogRmllbGQuQXJyYXlO dW0NCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgQml0RmllbGQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBGaWVs ZC5CaXRXaWR0aA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiBGaWVsZC5GaWVsZFR5cGUuVG90YWxTaXplDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBHZXREYXRhRmllbGRJbmZvKHNlbGYsIFZhclN0cik6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICAjIFZhclN0ciAtPiBUeXBlLkZpZWxkDQo+ID4NCj4gPiAr ICAgICAgICBPZmZzZXQgPSAwDQo+ID4NCj4gPiArICAgICAgICBUeXBlID0gRUZJX0lGUl9UWVBF X09USEVSDQo+ID4NCj4gPiArICAgICAgICBTaXplID0gMA0KPiA+DQo+ID4gKyAgICAgICAgQml0 RmllbGQgPSBGYWxzZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgVE5hbWUsIGkgPSBz ZWxmLl9fRXh0cmFjdFN0cnVjdFR5cGVOYW1lKFZhclN0cikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIHBUeXBlLCBSZXR1cm5Db2RlID0gc2VsZi5HZXREYXRhVHlwZShUTmFtZSkNCj4g Pg0KPiA+ICsgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X1NVQ0NFU1M6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIE9mZnNldCwgVHlwZSwgU2l6 ZSwgQml0RmllbGQsIFJldHVybkNvZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIEJp dEZpZWxkLCBSZXR1cm5Db2RlID0gc2VsZi5Jc1RoaXNCaXRGaWVsZChWYXJTdHIpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9TVUNDRVNTOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBPZmZzZXQsIFR5 cGUsIFNpemUsIEJpdEZpZWxkLCBSZXR1cm5Db2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICAj44CAaWYgaXQgaXMgbm90IHN0cnVjdCBkYXRhIHR5cGUNCj4gPg0KPiA+ICsgICAgICAg IFR5cGUgPSBwVHlwZS5UeXBlDQo+ID4NCj4gPiArICAgICAgICBTaXplID0gcFR5cGUuVG90YWxT aXplDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICB3aGlsZSAoaSA8IGxlbihWYXJTdHIp KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBBcnJheUlkeCwgaSwgRk5hbWUsIFJldHVybkNvZGUg PQ0KPiBzZWxmLl9fRXh0cmFjdEZpZWxkTmFtZUFuZEFycmFyeSgNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgVmFyU3RyLCBpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIFJldHVybkNvZGUg IT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiBPZmZzZXQsIFR5cGUsIFNpemUsIEJpdEZpZWxkLCBSZXR1cm5Db2RlDQo+ ID4NCj4gPiArICAgICAgICAgICAgcEZpZWxkLCBSZXR1cm5Db2RlID0gc2VsZi5HZXRUeXBlRmll bGQoRk5hbWUsIHBUeXBlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIFJldHVybkNvZGUgIT0g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBPZmZzZXQsIFR5cGUsIFNpemUsIEJpdEZpZWxkLCBSZXR1cm5Db2RlDQo+ID4N Cj4gPiArICAgICAgICAgICAgcFR5cGUgPSBwRmllbGQuRmllbGRUeXBlDQo+ID4NCj4gPiArICAg ICAgICAgICAgVG1wLCBSZXR1cm5Db2RlID0gc2VsZi5HZXRGaWVsZE9mZnNldChwRmllbGQsIEFy cmF5SWR4LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcEZpZWxkLklzQml0RmllbGQpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg UmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIE9mZnNldCwgVHlwZSwgU2l6ZSwgQml0RmllbGQsIFJl dHVybkNvZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBCaXRGaWVsZCBh bmQgcEZpZWxkLklzQml0RmllbGQgPT0gRmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IE9mZnNldCA9IGludChPZmZzZXQgKyBUbXAgKiA4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIE9mZnNldCA9IGludChPZmZzZXQgKyBUbXAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgVHlwZSA9IHNlbGYuX19HZXRGaWVs ZFdpZHRoKHBGaWVsZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBTaXplID0gc2VsZi5fX0dldEZp ZWxkU2l6ZShwRmllbGQsIEFycmF5SWR4LCBCaXRGaWVsZCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBPZmZzZXQsIFR5cGUsIFNpemUsIEJpdEZpZWxkLA0KPiA+IFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBfX1JlZ2lzdGVyTmV3VHlwZShzZWxmLCBOZXcpOg0KPiA+DQo+ID4gKyAgICAgICAgTmV3Lk5l eHQgPSBzZWxmLl9fRGF0YVR5cGVMaXN0DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fRGF0YVR5 cGVMaXN0ID0gTmV3DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4NCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIERhdGFUeXBlQWRkRmllbGQoc2VsZiwgRmllbGROYW1lLCBUeXBlTmFtZSwg QXJyYXlOdW0sDQo+ID4gRmllbGRJblVuaW9uKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIHBGaWVsZFR5cGUsIFJldHVybkNvZGUgPSBzZWxmLkdldERhdGFUeXBlKFR5cGVOYW1lKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gUmV0 dXJuQ29kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgTWF4RGF0YVR5cGVTaXplID0g c2VsZi5fX05ld0RhdGFUeXBlLlRvdGFsU2l6ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgaWYgbGVuKEZpZWxkTmFtZSkgPj0gTUFYX05BTUVfTEVOOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9Q QVJBTUVURVINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBUbXAgPSBzZWxmLl9fTmV3 RGF0YVR5cGUuTWVtYmVycw0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgcFRtcCAhPSBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHBUbXAuRmllbGROYW1lID09IEZpZWxkTmFtZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9S RURFRklORUQNCj4gPg0KPiA+ICsgICAgICAgICAgICBwVG1wID0gcFRtcC5OZXh0DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBBbGlnbiA9IG1pbihzZWxmLl9fUGFja0FsaWduLCBwRmll bGRUeXBlLkFsaWduKQ0KPiA+DQo+ID4gKyAgICAgICAgcE5ld0ZpZWxkID0gU1ZmckRhdGFGaWVs ZCgpDQo+ID4NCj4gPiArICAgICAgICBpZiBwTmV3RmllbGQgPT0gTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VS Q0VTDQo+ID4NCj4gPiArICAgICAgICBwTmV3RmllbGQuRmllbGROYW1lID0gRmllbGROYW1lDQo+ ID4NCj4gPiArICAgICAgICBwTmV3RmllbGQuRmllbGRUeXBlID0gcEZpZWxkVHlwZQ0KPiA+DQo+ ID4gKyAgICAgICAgcE5ld0ZpZWxkLkFycmF5TnVtID0gQXJyYXlOdW0NCj4gPg0KPiA+ICsgICAg ICAgIHBOZXdGaWVsZC5Jc0JpdEZpZWxkID0gRmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGlmIHNlbGYuX19OZXdEYXRhVHlwZS5Ub3RhbFNpemUgJSBBbGlnbiA9PSAwOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHBOZXdGaWVsZC5PZmZzZXQgPSBzZWxmLl9fTmV3RGF0YVR5cGUu VG90YWxTaXplDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHBOZXdGaWVsZC5PZmZzZXQgPSBzZWxmLl9fTmV3RGF0YVR5cGUuVG90YWxTaXplICsNCj4gPiBz ZWxmLl9fQWxpZ25TdHVmZigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fX05ld0Rh dGFUeXBlLlRvdGFsU2l6ZSwgQWxpZ24pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBp ZiBzZWxmLl9fTmV3RGF0YVR5cGUuTWVtYmVycyA9PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX19OZXdEYXRhVHlwZS5NZW1iZXJzID0gcE5ld0ZpZWxkDQo+ID4NCj4gPiArICAg ICAgICAgICAgcE5ld0ZpZWxkLk5leHQgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHBUbXAgPSBzZWxmLl9fTmV3RGF0YVR5cGUuTWVtYmVycw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlIHBUbXAuTmV4dCAhPSBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwVG1wID0gcFRtcC5OZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAg cFRtcC5OZXh0ID0gcE5ld0ZpZWxkDQo+ID4NCj4gPiArICAgICAgICAgICAgcE5ld0ZpZWxkLk5l eHQgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fTmV3RGF0YVR5 cGUuQWxpZ24gPSBtaW4oDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX1BhY2tBbGlnbiwg bWF4KHBGaWVsZFR5cGUuQWxpZ24sIHNlbGYuX19OZXdEYXRhVHlwZS5BbGlnbikpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBpZiBGaWVsZEluVW5pb246DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgTWF4RGF0YVR5cGVTaXplIDwgcE5ld0ZpZWxkLkZpZWxkVHlwZS5Ub3RhbFNpemU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX19OZXdEYXRhVHlwZS5Ub3RhbFNpemUg PSBwTmV3RmllbGQuRmllbGRUeXBlLlRvdGFsU2l6ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBO ZXdGaWVsZC5PZmZzZXQgPSAwDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIE51bSA9IEFycmF5TnVtIGlmIEFycmF5TnVtICE9IDAgZWxzZSAxDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fX05ld0RhdGFUeXBlLlRvdGFsU2l6ZSA9IHBOZXdGaWVsZC5P ZmZzZXQgKyAoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBOZXdGaWVsZC5GaWVsZFR5cGUu VG90YWxTaXplKSAqIE51bQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBEYXRhVHlwZUFkZEJpdEZpZWxkKHNlbGYsIEZpZWxkTmFtZSwgVHlwZU5hbWUsIFdpZHRo LA0KPiA+IEZpZWxkSW5Vbmlvbik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwRmll bGRUeXBlLCBSZXR1cm5Db2RlID0gc2VsZi5HZXREYXRhVHlwZShUeXBlTmFtZSkNCj4gPg0KPiA+ ICsgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NF U1M6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFJldHVybkNvZGUNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGlmIFdpZHRoID4gTUFYX0JJVF9XSURUSDoNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0JJVF9XSURUSF9FUlJP Ug0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgV2lkdGggPiAocEZpZWxkVHlwZS5U b3RhbFNpemUpICogODoNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0JJVF9XSURUSF9FUlJPUg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgaWYgKEZpZWxkTmFtZSAhPSBOb25lKSBhbmQgKGxlbihGaWVsZE5hbWUpID49IE1BWF9OQU1F X0xFTik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9JTlZBTElEX1BBUkFNRVRFUg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYg V2lkdGggPT0gMCBhbmQgRmllbGROYW1lICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcFRtcCA9IHNlbGYuX19OZXdEYXRhVHlwZS5NZW1iZXJz DQo+ID4NCj4gPiArICAgICAgICB3aGlsZSBwVG1wICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgRmllbGROYW1lICE9IE5vbmUgYW5kIHBUbXAuRmllbGROYW1lID09IEZpZWxkTmFt ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9SRURFRklORUQNCj4gPg0KPiA+ICsgICAgICAgICAgICBwVG1wID0gcFRtcC5OZXh0DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBBbGlnbiA9IG1pbihzZWxmLl9fUGFja0FsaWdu LCBwRmllbGRUeXBlLkFsaWduKQ0KPiA+DQo+ID4gKyAgICAgICAgVXBkYXRlVG90YWxTaXplID0g RmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBOZXdGaWVsZCA9IFNWZnJEYXRh RmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgcE5ld0ZpZWxkID09IE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JF U09VUkNFUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgTWF4RGF0YVR5cGVTaXplID0g c2VsZi5fX05ld0RhdGFUeXBlLlRvdGFsU2l6ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgcE5ld0ZpZWxkLkZpZWxkTmFtZSA9IEZpZWxkTmFtZQ0KPiA+DQo+ID4gKyAgICAgICAgcE5l d0ZpZWxkLkZpZWxkVHlwZSA9IHBGaWVsZFR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHBOZXdGaWVs ZC5Jc0JpdEZpZWxkID0gVHJ1ZQ0KPiA+DQo+ID4gKyAgICAgICAgcE5ld0ZpZWxkLkJpdFdpZHRo ID0gV2lkdGgNCj4gPg0KPiA+ICsgICAgICAgIHBOZXdGaWVsZC5BcnJheU51bSA9IDANCj4gPg0K PiA+ICsgICAgICAgIHBOZXdGaWVsZC5CaXRPZmZzZXQgPSAwDQo+ID4NCj4gPiArICAgICAgICBw TmV3RmllbGQuT2Zmc2V0ID0gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2Vs Zi5fX05ld0RhdGFUeXBlLk1lbWJlcnMgPT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9fTmV3RGF0YVR5cGUuTWVtYmVycyA9IHBOZXdGaWVsZA0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHBOZXdGaWVsZC5OZXh0ID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBwVG1wID0gc2VsZi5fX05ld0RhdGFUeXBlLk1lbWJlcnMNCj4gPg0K PiA+ICsgICAgICAgICAgICB3aGlsZSBwVG1wLk5leHQgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcFRtcCA9IHBUbXAuTmV4dA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBUbXAu TmV4dCA9IHBOZXdGaWVsZA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOZXdGaWVsZC5OZXh0ID0g Tm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgRmllbGRJblVuaW9uOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHBOZXdGaWVsZC5PZmZzZXQgPSAwDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgTWF4RGF0YVR5cGVTaXplIDwgcE5ld0ZpZWxkLkZpZWxkVHlwZS5Ub3RhbFNpemU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX19OZXdEYXRhVHlwZS5Ub3RhbFNpemUg PSBwTmV3RmllbGQuRmllbGRUeXBlLlRvdGFsU2l6ZQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAjIENoZWNrIHdoZXRoZXIgdGhlIGJpdCBmaWVsZHMgY2Fu IGJlIGNvbnRhaW5lZCB3aXRoaW4gb25lDQo+IEZpZWxkVHlwZS4NCj4gPg0KPiA+ICsgICAgICAg ICAgICBjb25kMSA9IChwVG1wICE9IE5vbmUpIGFuZCAocFRtcC5Jc0JpdEZpZWxkKSBhbmQgKA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwVG1wLkZpZWxkVHlwZS5UeXBlTmFtZSA9PSBwTmV3 RmllbGQuRmllbGRUeXBlLlR5cGVOYW1lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGNvbmQyID0g KHBUbXAgIT0gTm9uZSkgYW5kIChwVG1wLkJpdE9mZnNldCAtIHBUbXAuT2Zmc2V0ICogOCArDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBUbXAuQml0 V2lkdGggKyBwTmV3RmllbGQuQml0V2lkdGggPD0NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcE5ld0ZpZWxkLkZpZWxkVHlwZS5Ub3RhbFNpemUgKiA4 KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGNvbmQxIGFuZCBjb25kMjoNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcE5ld0ZpZWxkLkJpdE9mZnNldCA9IHBUbXAuQml0T2Zmc2V0ICsgcFRt cC5CaXRXaWR0aA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwTmV3RmllbGQuT2Zmc2V0ID0g cFRtcC5PZmZzZXQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgcE5l d0ZpZWxkLkJpdFdpZHRoID09IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBwTmV3 RmllbGQuQml0V2lkdGggPSBwTmV3RmllbGQuRmllbGRUeXBlLlRvdGFsU2l6ZSAqIDggLSAoDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgcE5ld0ZpZWxkLkJpdE9mZnNldCAtIHBU bXAuT2Zmc2V0ICogOCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBwTmV3RmllbGQuQml0T2Zmc2V0ID0gc2VsZi5fX05ld0RhdGFUeXBlLlRv dGFsU2l6ZSAqIDgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVXBkYXRlVG90YWxTaXplID0g VHJ1ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgVXBkYXRlVG90YWxTaXplOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuX19OZXdEYXRhVHlwZS5Ub3RhbFNpemUgJSBB bGlnbiA9PSAwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwTmV3RmllbGQuT2Zmc2V0ID0g c2VsZi5fX05ld0RhdGFUeXBlLlRvdGFsU2l6ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBOZXdGaWVsZC5PZmZzZXQgPSBzZWxmLl9fTmV3 RGF0YVR5cGUuVG90YWxTaXplICsNCj4gPiBzZWxmLl9fQWxpZ25TdHVmZigNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYuX19OZXdEYXRhVHlwZS5Ub3RhbFNpemUsIEFsaWduKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19OZXdEYXRhVHlwZS5Ub3RhbFNpemUgPSBwTmV3 RmllbGQuT2Zmc2V0ICsNCj4gPiBwTmV3RmllbGQuRmllbGRUeXBlLlRvdGFsU2l6ZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX05ld0RhdGFUeXBlLkFsaWduID0gbWluKA0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19QYWNrQWxpZ24sIG1heChwRmllbGRUeXBlLkFs aWduLCBzZWxmLl9fTmV3RGF0YVR5cGUuQWxpZ24pKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5f X05ld0RhdGFUeXBlLkhhc0JpdEZpZWxkID0gVHJ1ZQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBHZXREYXRhVHlwZShzZWxmLCBUeXBlTmFtZSk6DQo+ID4NCj4gPiArICAgICAgICBp ZiBUeXBlTmFtZSA9PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBOb25lLCBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRVJST1JfU0tJUEVEDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBEYXRhVHlwZSA9IHNlbGYuX19EYXRhVHlwZUxpc3QNCj4gPg0KPiA+ICsgICAg ICAgIHdoaWxlIERhdGFUeXBlICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgRGF0 YVR5cGUuVHlwZU5hbWUgPT0gVHlwZU5hbWU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBEYXRhVHlwZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ ICsgICAgICAgICAgICBEYXRhVHlwZSA9IERhdGFUeXBlLk5leHQNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVEDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBEYXRhVHlwZUhhc0JpdEZpZWxkKHNlbGYsIFR5cGVOYW1l KToNCj4gPg0KPiA+ICsgICAgICAgIGlmIFR5cGVOYW1lID09IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIEZhbHNlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwVHlw ZSA9IHNlbGYuX19EYXRhVHlwZUxpc3QNCj4gPg0KPiA+ICsgICAgICAgIHdoaWxlIHBUeXBlICE9 IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgcFR5cGUuVHlwZU5hbWUgPT0gVHlwZU5h bWU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGJyZWFrDQo+ID4NCj4gPiArICAgICAgICAg ICAgcFR5cGUgPSBwVHlwZS5OZXh0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBw VHlwZSA9PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBGYWxzZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcFRtcCA9IHBUeXBlLk1lbWJlcnMNCj4gPg0KPiA+ICsg ICAgICAgIHdoaWxlIHBUbXAgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBwVG1w LklzQml0RmllbGQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBUcnVlDQo+ID4N Cj4gPiArICAgICAgICAgICAgcFRtcCA9IHBUbXAuTmV4dA0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIEZhbHNlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBEdW1wKHNlbGYsIEZpbGVO YW1lKToNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICB3aXRo IG9wZW4oRmlsZU5hbWUsICd3JykgYXMgZjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53 cml0ZSgiUGFja0FsaWduID0gIiArIHN0cihzZWxmLl9fUGFja0FsaWduKSArICdcbicpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHBOb2RlID0gc2VsZi5fX0RhdGFUeXBlTGlzdA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgZi53cml0ZSgnc3RydWN0IHt9IDogQWxpZ24gOiB7fSAgVG90YWxTaXpl IDoNCj4gPiAnLmZvcm1hdChzdHIocE5vZGUuVHlwZU5hbWUpLCBzdHIocE5vZGUuQWxpZ24pKSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyUjeFxuJyUocE5vZGUuVG90 YWxTaXplKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICMgZi53cml0ZSgiIHN0cnVj dCAiICsgc3RyKHBOb2RlLlR5cGVOYW1lKSArICIgOiAiICsgIiBBbGlnbiAiICsNCj4gPiBzdHIo cE5vZGUuQWxpZ24pKSArICIgVG90YWxTaXplICIgKyBzdHIoJyUjeCclcE5vZGUuVG90YWxTaXpl KSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ3N0cnVjdCB7fSBcbicu Zm9ybWF0KHN0cihwTm9kZS5UeXBlTmFtZSkpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgRk5vZGUgPSBwTm9kZS5NZW1iZXJzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICB3 aGlsZShGTm9kZSAhPSBOb25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBp ZiBGTm9kZS5BcnJheU51bSA+IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGYud3JpdGUoJ0ZpZWxkTmFtZSA6IHt9ICwgT2Zmc2V0IDoge30sIEFycmF5TnVtIDoge30g LA0KPiA+IEZpZWxkVHlwZU5hbWUgOiB7fSAsIElzQml0RmllbGQgOiB7fSBcbiAnLmZvcm1hdChz dHIoRk5vZGUuRmllbGROYW1lKSwNCj4gPiBzdHIoRk5vZGUuT2Zmc2V0KSwgc3RyKEZOb2RlLkFy cmF5TnVtKSwgc3RyKEZOb2RlLkZpZWxkVHlwZS5UeXBlTmFtZSksDQo+ID4gc3RyKEZOb2RlLklz Qml0RmllbGQpKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCdGaWVsZE5hbWUgOiB7 fSAsIE9mZnNldCA6IHt9LCBGaWVsZFR5cGVOYW1lIDoge30gLA0KPiA+IElzQml0RmllbGQgOiB7 fSBcbiAnLmZvcm1hdChzdHIoRk5vZGUuRmllbGROYW1lKSwgc3RyKEZOb2RlLk9mZnNldCksDQo+ ID4gc3RyKEZOb2RlLkZpZWxkVHlwZS5UeXBlTmFtZSksIHN0cihGTm9kZS5Jc0JpdEZpZWxkKSkp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgRk5vZGUgPSBGTm9kZS5OZXh0DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCdcbicpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gPg0KPiA+ICsgICAgICAgICAg ICBmLmNsb3NlKCkNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcHJpbnQoImVycm9yIikNCj4gPg0KPiA+ICsgICAgICAgICAgICBw YXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgU1ZmckRlZmF1bHRTdG9yZU5vZGUob2Jq ZWN0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICBPYmpBZGRyPU5vbmUsDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICBSZWZOYW1lPScnLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgRGVmYXVsdFN0 b3JlTmFtZUlkPTAsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICBEZWZhdWx0SWQ9MCk6DQo+ ID4NCj4gPiArICAgICAgICBzZWxmLk9iakFkZHIgPSBPYmpBZGRyDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLlJlZk5hbWUgPSBSZWZOYW1lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkRlZmF1bHRT dG9yZU5hbWVJZCA9IERlZmF1bHRTdG9yZU5hbWVJZA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5E ZWZhdWx0SWQgPSBEZWZhdWx0SWQNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTmV4dCA9IE5vbmUN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDVmZyRGVmYXVsdFN0b3Jl KG9iamVjdCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19EZWZhdWx0U3RvcmVMaXN0ID0gTm9uZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgUmVnaXN0ZXJEZWZhdWx0U3RvcmUoc2VsZiwgT2JqQWRk cjogRUZJX0lGUl9ERUZBVUxUU1RPUkUsDQo+ID4gUmVmTmFtZSwgRGVmYXVsdFN0b3JlTmFtZUlk LCBEZWZhdWx0SWQpOg0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmVmTmFtZSA9PSAnJyBvciBSZWZO YW1lID09IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5v ZGUgPSBzZWxmLl9fRGVmYXVsdFN0b3JlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgcE5v ZGUgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBwTm9kZS5SZWZOYW1lID09IFJl Zk5hbWU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fUkVERUZJTkVEDQo+ID4NCj4gPiArICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5O ZXh0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9IFNWZnJEZWZhdWx0U3Rv cmVOb2RlKE9iakFkZHIsIFJlZk5hbWUsDQo+ID4gRGVmYXVsdFN0b3JlTmFtZUlkLCBEZWZhdWx0 SWQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBwTm9kZSA9PSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZP Ul9SRVNPVVJDRVMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlLk5leHQgPSBz ZWxmLl9fRGVmYXVsdFN0b3JlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0RlZmF1bHRT dG9yZUxpc3QgPSBwTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBEZWZhdWx0SWRSZWdpc3RlcmVkKHNlbGYsIERlZmF1bHRJZCk6DQo+ID4NCj4gPiArICAg ICAgICBwTm9kZSA9IHNlbGYuX19EZWZhdWx0U3RvcmVMaXN0DQo+ID4NCj4gPiArICAgICAgICB3 aGlsZSBwTm9kZSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHBOb2RlLkRlZmF1 bHRJZCA9PSBEZWZhdWx0SWQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBUcnVl DQo+ID4NCj4gPiArICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gRmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIFJlUmVnaXN0ZXJEZWZhdWx0U3RvcmVCeUlkKHNlbGYsIERlZmF1bHRJZCwgUmVmTmFtZSwN Cj4gPiBEZWZhdWx0U3RvcmVOYW1lSWQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg cE5vZGUgPSBzZWxmLl9fRGVmYXVsdFN0b3JlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUg cE5vZGUgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBwTm9kZS5EZWZhdWx0SWQg PT0gRGVmYXVsdElkOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBicmVhaw0KPiA+DQo+ID4g KyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgaWYgcE5vZGUgPT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gTm9u ZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOREVGSU5FRA0KPiA+DQo+ID4gKyAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBwTm9kZS5EZWZhdWx0U3RvcmVOYW1lSWQg PT0gRUZJX1NUUklOR19JRF9JTlZBTElEOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwTm9k ZS5EZWZhdWx0U3RvcmVOYW1lSWQgPT0gRGVmYXVsdFN0b3JlTmFtZUlkDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHBOb2RlLlJlZk5hbWUgPSBSZWZOYW1lDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGlmIHBOb2RlLk9iakFkZHIgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIHBOb2RlLk9iakFkZHIuRGVmYXVsdE5hbWUgPSBEZWZhdWx0U3RvcmVOYW1lSWQNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gTm9uZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHBOb2RlLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f U1VDQ0VTUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0RGVmYXVsdElkKHNlbGYs IFJlZk5hbWUpOg0KPiA+DQo+ID4gKyAgICAgICAgcFRtcCA9IHNlbGYuX19EZWZhdWx0U3RvcmVM aXN0DQo+ID4NCj4gPiArICAgICAgICB3aGlsZShwVG1wICE9IE5vbmUpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIHBUbXAuUmVmTmFtZSA9PSBSZWZOYW1lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBEZWZhdWx0SWQgPSBwVG1wLkRlZmF1bHRJZA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gRGVmYXVsdElkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHBUbXAgPSBwVG1wLk5leHQNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVEDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBCdWZmZXJWYXJTdG9yZUFsdENvbmZpZ0FkZChzZWxmLCBE ZWZhdWx0SWQsIEJhc2VJbmZvLA0KPiBWYXJTdG9yZU5hbWUsDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBWYXJTdG9yZUd1aWQsIFR5cGUsIFZhbHVlKToNCj4g Pg0KPiA+ICsgICAgICAgIGlmIFZhclN0b3JlTmFtZSA9PSBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4gPg0K PiA+ICsgICAgICAgIHBOb2RlID0gc2VsZi5fX0RlZmF1bHRTdG9yZUxpc3QNCj4gPg0KPiA+ICsg ICAgICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgcE5v ZGUuRGVmYXVsdElkID09IERlZmF1bHRJZDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgYnJl YWsNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gPg0KPiA+ICsg ICAgICAgIGlmIHBOb2RlID09IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRFRklORUQNCj4gPg0KPiA+ICsgICAgICAgICMgcE5v ZGUuRGVmYXVsdElkIHNwcmludGYgKE5ld0FsdENmZywgIiUwNHgiLCBwTm9kZS0+bURlZmF1bHRJ ZCkNCj4gPg0KPiA+ICsgICAgICAgIGdDVmZyQnVmZmVyQ29uZmlnLk9wZW4oKQ0KPiA+DQo+ID4g KyAgICAgICAgaWYgZ0NWZnJCdWZmZXJDb25maWcuU2VsZWN0KFZhclN0b3JlTmFtZSwgVmFyU3Rv cmVHdWlkKSA9PSAwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFJldHVybnZhbHVlID0gZ0NWZnJC dWZmZXJDb25maWcuV3JpdGUoJ2EnLCBWYXJTdG9yZU5hbWUsDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYXJTdG9yZUd1aWQsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwTm9kZS5EZWZhdWx0SWQsIFR5cGUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlSW5mby5JbmZvLlZhck9mZnNldCwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEJhc2VJbmZvLlZhclRvdGFsU2l6ZSwgVmFsdWUpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg UmV0dXJudmFsdWUgIT0gMDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZ0NWZnJCdWZmZXJD b25maWcuQ2xvc2UoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJu Q29kZShSZXR1cm52YWx1ZSkNCj4gPg0KPiA+ICsgICAgICAgIGdDVmZyQnVmZmVyQ29uZmlnLkNs b3NlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f U1VDQ0VTUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2Ns YXNzIEVGSV9WRlJfVkFSU1RPUkVfVFlQRShFbnVtKToNCj4gPg0KPiA+ICsgICAgRUZJX1ZGUl9W QVJTVE9SRV9JTlZBTElEID0gMA0KPiA+DQo+ID4gKyAgICBFRklfVkZSX1ZBUlNUT1JFX0JVRkZF UiA9IDENCj4gPg0KPiA+ICsgICAgRUZJX1ZGUl9WQVJTVE9SRV9FRkkgPSAyDQo+ID4NCj4gPiAr ICAgIEVGSV9WRlJfVkFSU1RPUkVfTkFNRSA9IDMNCj4gPg0KPiA+ICsgICAgRUZJX1ZGUl9WQVJT VE9SRV9CVUZGRVJfQklUUyA9IDQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtj bGFzcyBFZmlWYXIoKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNl bGYsIFZhck5hbWU9MCwgVmFyU2l6ZT0wKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRWZpVmFy TmFtZSA9IFZhck5hbWUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRWZpVmFyU2l6ZSA9IFZhclNp emUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtERUZBVUxUX05BTUVfVEFCTEVf SVRFTVMgPSAxMDI0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgU1Zm clZhclN0b3JhZ2VOb2RlKCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRf XyhzZWxmLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgVmFyU3RvcmVOYW1lPScnLA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgVmFyU3RvcmVJZD0wLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgR3VpZD1Ob25lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgQXR0cmlidXRl cz0wLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgRmxhZz1UcnVlLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgRWZpVmFsdWU9Tm9uZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg IERhdGFUeXBlPU5vbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICBCaXRzVmFyc3RvcmU9 RmFsc2UpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5HdWlkID0gR3VpZA0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5WYXJTdG9yZU5hbWUgPSBWYXJTdG9yZU5hbWUNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuVmFyU3RvcmVJZCA9IFZhclN0b3JlSWQNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuQXNzaWduZWRGbGFnID0gRmxhZw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5BdHRy aWJ1dGVzID0gQXR0cmlidXRlcw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5OZXh0ID0gTm9uZQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5FZmlWYXIgPSBFZmlWYWx1ZQ0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5EYXRhVHlwZSA9IERhdGFUeXBlDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk5hbWVT cGFjZSA9IFtdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBFZmlWYWx1ZSAhPSBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVmFyc3RvcmVUeXBlID0NCj4gPiBFRklf VkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9FRkkNCj4gPg0KPiA+ICsgICAgICAg IGVsaWYgRGF0YVR5cGUgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBCaXRzVmFy c3RvcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuVmFyc3RvcmVUeXBlID0NCj4g PiBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVJfQklUUw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu VmFyc3RvcmVUeXBlID0NCj4gPiBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9S RV9CVUZGRVINCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5WYXJzdG9yZVR5cGUgPQ0KPiA+IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZB UlNUT1JFX05BTUUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBTQ29uZmlnSXRlbSgpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgIE5hbWU9Tm9uZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIEd1 aWQ9Tm9uZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIElkPU5vbmUsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICBUeXBlPU5vbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICBP ZmZzZXQ9Tm9uZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIFdpZHRoPU5vbmUsDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICBWYWx1ZT1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuTmFtZSA9IE5hbWUgICMgdmFyc3RvcmUgbmFtZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5H dWlkID0gR3VpZCAgIyB2YXJzdG9yZSBndWlkLCB2YXJzdG9yZSBuYW1lICsgZ3VpZCBkZXNpZGUg b25lDQo+ID4gdmFyc3RvcmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuSWQgPSBJZCAgIyBkZWZh dWx0IElEDQo+ID4NCj4gPiArICAgICAgICBpZiBUeXBlICE9IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgIyBsaXN0IG9mIE9mZnNldC9WYWx1ZSBpbiB0aGUgdmFyc3RvcmUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLkluZm9TdHJMaXN0ID0gU0NvbmZpZ0luZm8oVHlwZSwgT2Zmc2V0 LCBXaWR0aCwgVmFsdWUpDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuSW5mb1N0ckxpc3QgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk5l eHQgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgU0NvbmZp Z0luZm8oKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFR5 cGUsIE9mZnNldCwgV2lkdGgsIFZhbHVlOiBFRklfSUZSX1RZUEVfVkFMVUUpOg0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5UeXBlID0gVHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5PZmZzZXQg PSBPZmZzZXQNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuV2lkdGggPSBXaWR0aA0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5OZXh0ID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5WYWx1ZSA9 IFZhbHVlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ1ZmckJ1ZmZlckNvbmZpZyhvYmpl Y3QpOg0KPiA+DQo+ID4gKyAgICBfX21ldGFjbGFzc19fID0gQUJDTWV0YQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBzZWxm Ll9fSXRlbUxpc3RIZWFkID0gTm9uZSAgIyBTQ29uZmlnSXRlbQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5fX0l0ZW1MaXN0VGFpbCA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19JdGVt TGlzdFBvcyA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldFZhckl0ZW1M aXN0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19JdGVtTGlzdEhlYWQN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgQGFic3RyYWN0bWV0aG9kDQo+ID4NCj4gPiArICAg IGRlZiBPcGVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0l0ZW1MaXN0UG9zID0g c2VsZi5fX0l0ZW1MaXN0SGVhZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBAYWJzdHJhY3Rt ZXRob2QNCj4gPg0KPiA+ICsgICAgZGVmIENsb3NlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5fX0l0ZW1MaXN0UG9zID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBAYWJz dHJhY3RtZXRob2QNCj4gPg0KPiA+ICsgICAgZGVmIFNlbGVjdChzZWxmLCBOYW1lLCBHdWlkLCBJ ZD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIE5hbWUgPT0gTm9uZSBvciBHdWlkID09IE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX0l0ZW1MaXN0UG9zID0gc2VsZi5fX0l0 ZW1MaXN0SGVhZA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiAwDQo+ID4NCj4gPiArICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHAgPSBzZWxmLl9fSXRlbUxpc3RIZWFk DQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUgcCAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBpZiBwLk5hbWUgIT0gTmFtZSBvciBwLkd1aWQuX19jbXBfXyhHdWlkKSA9PSBG YWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHAgPSBwLk5leHQNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGlmIElkICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBwLklkID09 IE5vbmUgb3IgcC5JZCAhPSBJZDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBw ID0gcC5OZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgZWxpZiBwLklkICE9IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBwID0gcC5OZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBjb250aW51ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9fSXRlbUxpc3RQb3Mg PSBwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiAwDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBAYWJzdHJhY3RtZXRob2QNCj4g Pg0KPiA+ICsgICAgZGVmIFJlZ2lzdGVyKHNlbGYsIE5hbWUsIEd1aWQsIElkPU5vbmUpOg0KPiA+ DQo+ID4gKyAgICAgICAgaWYgc2VsZi5TZWxlY3QoTmFtZSwgR3VpZCkgPT0gMDoNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gMQ0KPiA+DQo+ID4gKyAgICAgICAgcE5ldyA9IFNDb25maWdJ dGVtKE5hbWUsIEd1aWQsIElkKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgcE5ldyA9PSBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiAyDQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxm Ll9fSXRlbUxpc3RIZWFkID09IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX0l0 ZW1MaXN0SGVhZCA9IHBOZXcNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fSXRlbUxpc3RU YWlsID0gcE5ldw0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9fSXRlbUxpc3RUYWlsLk5leHQgPSBwTmV3DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fX0l0ZW1MaXN0VGFpbCA9IHBOZXcNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19JdGVt TGlzdFBvcyA9IHBOZXcNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiAwDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIEBhYnN0cmFjdG1ldGhvZA0KPiA+DQo+ID4gKyAgICBkZWYgV3JpdGUoc2Vs ZiwgTW9kZSwgTmFtZSwgR3VpZCwgSWQsIFR5cGUsIE9mZnNldCwgV2lkdGgsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICBWYWx1ZTogRUZJX0lGUl9UWVBFX1ZBTFVFKToNCj4gPg0KPiA+ICsgICAg ICAgIFJldCA9IHNlbGYuU2VsZWN0KE5hbWUsIEd1aWQpDQo+ID4NCj4gPiArICAgICAgICBpZiBS ZXQgIT0gMDoNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gUmV0DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBpZiBNb2RlID09ICdhJzogICMgYWRkDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgc2VsZi5TZWxlY3QoTmFtZSwgR3VpZCwgSWQpICE9IDA6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHBJdGVtID0gU0NvbmZpZ0l0ZW0oTmFtZSwgR3VpZCwgSWQsIFR5cGUsIE9m ZnNldCwgV2lkdGgsIFZhbHVlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBwSXRlbSA9 PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDINCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0l0ZW1MaXN0SGVhZCA9PSBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0l0ZW1MaXN0SGVhZCA9 IHBJdGVtDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9fSXRlbUxpc3RUYWls ID0gcEl0ZW0NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYuX19JdGVtTGlzdFRhaWwuTmV4dCA9IHBJdGVtDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9fSXRlbUxpc3RUYWlsID0gcEl0ZW0NCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fX0l0ZW1MaXN0UG9zID0gcEl0 ZW0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAjIHRyYW52ZXJzZSB0aGUgbGlzdCB0byBmaW5kIG91dCBpZiB0aGVyZSdz IGFscmVhZHkgdGhlIHZhbHVlIGZvciB0aGUNCj4gPiBzYW1lIG9mZnNldA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBwSW5mbyA9IHNlbGYuX19JdGVtTGlzdFBvcy5JbmZvU3RyTGlzdA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICB3aGlsZSBwSW5mbyAhPSBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgaWYgcEluZm8uT2Zmc2V0ID09IE9mZnNldDoNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgcEluZm8gPSBwSW5mby5OZXh0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHBJbmZvID0gU0NvbmZpZ0luZm8oVHlwZSwgT2Zmc2V0LCBXaWR0aCwgVmFsdWUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIHBJbmZvID09IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICByZXR1cm4gMg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBwSW5mby5OZXh0ID0gc2VsZi5fX0l0ZW1MaXN0UG9zLkluZm9TdHJMaXN0DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX19JdGVtTGlzdFBvcy5JbmZvU3RyTGlzdCA9IHBJ bmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIE1vZGUgPT0gJ2QnOiAgIyBk ZWxldGUNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLl9fSXRlbUxpc3RIZWFkID09IHNl bGYuX19JdGVtTGlzdFBvczoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fX0l0ZW1M aXN0SGVhZCA9IHNlbGYuX19JdGVtTGlzdFBvcy5OZXh0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICAgICAgcEl0ZW0gPSBzZWxmLl9fSXRlbUxpc3RIZWFkDQo+ID4NCj4gPiArICAgICAg ICAgICAgd2hpbGUgcEl0ZW0uTmV4dCAhPSBzZWxmLl9fSXRlbUxpc3RQb3M6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHBJdGVtID0gcEl0ZW0uTmV4dA0KPiA+DQo+ID4gKyAgICAgICAgICAg IHBJdGVtLk5leHQgPSBzZWxmLl9fSXRlbUxpc3RQb3MuTmV4dA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIHNlbGYuX19JdGVtTGlzdFRhaWwgPT0gc2VsZi5fX0l0ZW1MaXN0 UG9zOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9fSXRlbUxpc3RUYWlsID0gcEl0 ZW0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fSXRlbUxpc3RQb3Mg PSBwSXRlbS5OZXh0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIE1vZGUgPT0g J2knOiAgIyBzZXQgaW5mbw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIElkICE9IE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX19JdGVtTGlzdFBvcy5JZCA9IElkDQo+ID4N Cj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiAxDQo+ID4N Cj4gPiArICAgICAgICByZXR1cm4gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2dDVmZyQnVmZmVy Q29uZmlnID0gQ1ZmckJ1ZmZlckNvbmZpZygpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3Mg RUZJX1ZBUlNUT1JFX0lORk8oU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0K PiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgnVmFyU3RvcmVJ ZCcsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICgnSW5mbycsIFZhclN0b3JlSW5mb05v ZGUpLA0KPiA+DQo+ID4gKyAgICAgICAgKCdWYXJUeXBlJywgY191aW50OCksDQo+ID4NCj4gPiAr ICAgICAgICAoJ1ZhclRvdGFsU2l6ZScsIGNfdWludDMyKSwNCj4gPg0KPiA+ICsgICAgICAgICgn SXNCaXRWYXInLCBjX2Jvb2wpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBfX2luaXRfXyhzZWxmLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgVmFy U3RvcmVJZD1FRklfVkFSU1RPUkVfSURfSU5WQUxJRCwNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgIFZhck5hbWU9RUZJX1NUUklOR19JRF9JTlZBTElELA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgVmFyT2Zmc2V0PUVGSV9WQVJPRkZTRVRfSU5WQUxJRCwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgIFZhclR5cGU9RUZJX0lGUl9UWVBFX09USEVSLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgVmFyVG90YWxTaXplPTAsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICBJc0Jp dFZhcj1GYWxzZSk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZhclN0b3Jl SWQgPSBWYXJTdG9yZUlkDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkluZm8uVmFyTmFtZSA9IFZh ck5hbWUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuSW5mby5WYXJPZmZzZXQgPSBWYXJPZmZzZXQN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVmFyVG90YWxTaXplID0gVmFyVG90YWxTaXplDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLklzQml0VmFyID0gSXNCaXRWYXINCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuVmFyVHlwZSA9IFZhclR5cGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICtjbGFzcyBCdWZmZXJWYXJTdG9yZUZpZWxkSW5mb05vZGUoKToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIEJhc2VJbmZvOiBFRklfVkFSU1RPUkVfSU5GTyk6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZhclN0b3JlSW5mbyA9IEVGSV9W QVJTVE9SRV9JTkZPKCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVmFyU3RvcmVJbmZvLlZhclR5 cGUgPSBCYXNlSW5mby5WYXJUeXBlDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZhclN0b3JlSW5m by5WYXJUb3RhbFNpemUgPSBCYXNlSW5mby5WYXJUb3RhbFNpemUNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuVmFyU3RvcmVJbmZvLkluZm8uVmFyT2Zmc2V0ID0gQmFzZUluZm8uSW5mby5WYXJPZmZz ZXQNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVmFyU3RvcmVJbmZvLlZhclN0b3JlSWQgPSBCYXNl SW5mby5WYXJTdG9yZUlkDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk5leHQgPSBOb25lDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgQ1ZmckRhdGFTdG9yYWdlKG9iamVj dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuX19CdWZmZXJWYXJTdG9yZUxpc3QgPSBOb25lICAjIFNWZnJWYXJT dG9yYWdlTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0VmaVZhclN0b3JlTGlzdCA9IE5v bmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19OYW1lVmFyU3RvcmVMaXN0ID0gTm9uZQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5fX0N1cnJWYXJTdG9yYWdlTm9kZSA9IE5vbmUNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuX19OZXdWYXJTdG9yYWdlTm9kZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuX19CdWZmZXJGaWVsZEluZm9MaXN0SGVhZCA9IE5vbmUNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuX19tQnVmZmVyRmllbGRJbmZvTGlzdFRhaWwgPSBOb25lDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLl9fRnJlZVZhclN0b3JlSWRCaXRNYXAgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAg Zm9yIGkgaW4gcmFuZ2UoMCwgRUZJX0ZSRUVfVkFSU1RPUkVfSURfQklUTUFQX1NJWkUpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19GcmVlVmFyU3RvcmVJZEJpdE1hcC5hcHBlbmQoMCkN Cj4gPg0KPiA+ICsgICAgICAgICNRdWVzdGlvbiBJRDAgaXMgcmVzZXJ2ZWQNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuX19GcmVlVmFyU3RvcmVJZEJpdE1hcFswXSA9IDB4ODAwMDAwMDANCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEJ1ZmZlclZhclN0b3JlTGlzdChzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLl9fQnVmZmVyVmFyU3RvcmVMaXN0DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBfX0NoZWNrR3VpZEZpZWxkKHNlbGYsIHBOb2RlLCBTdG9y ZUd1aWQsIEhhc0ZvdW5kT25lLA0KPiA+IFJldHVybkNvZGUpOg0KPiA+DQo+ID4gKyAgICAgICAg aWYgU3RvcmVHdWlkICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgI+OAgElmIGhhcyBn dWlkIGluZm8sIGNvbXBhcmUgdGhlIGd1aWQgZmlsZWQuDQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgcE5vZGUuR3VpZC5fX2NtcF9fKFN0b3JlR3VpZCk6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuX19DdXJyVmFyU3RvcmFnZU5vZGUgPSBwTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBSZXR1cm5Db2RlID0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUsIFJldHVybkNvZGUsIEhhc0ZvdW5k T25lDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICPjgIBu b3QgaGFzIEd1aWQgZmllbGQsIGNoZWNrIHdoZXRoZXIgdGhpcyBuYW1lIGlzIHRoZSBvbmx5IG9u ZS4NCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBIYXNGb3VuZE9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgIyAgVGhlIG5hbWUgaGFzIGNvbmZsaWN0LCByZXR1cm4gbmFtZSByZWRlZmlu ZWQuDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFJldHVybkNvZGUgPQ0KPiA+IFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9WQVJTVE9SRV9OQU1FX1JFREVGSU5FRF9FUlJPUg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZSwgUmV0dXJuQ29kZSwgSGFzRm91bmRPbmUNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fQ3VyclZhclN0b3JhZ2VOb2Rl ID0gcE5vZGUNCj4gPg0KPiA+ICsgICAgICAgICAgICBIYXNGb3VuZE9uZSA9IFRydWUNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBGYWxzZSwgUmV0dXJuQ29kZSwgSGFzRm91bmRPbmUNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9fR2V0VmFyU3RvcmVCeURhdGFUeXBlKHNlbGYsIERh dGFUeXBlTmFtZSwgVmFyR3VpZCk6DQo+ID4NCj4gPiArICAgICAgICBNYXRjaE5vZGUgPSBOb25l DQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9IHNlbGYuX19CdWZmZXJWYXJTdG9yZUxpc3QNCj4g Pg0KPiA+ICsgICAgICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgcE5vZGUuRGF0YVR5cGUuVHlwZU5hbWUgIT0gRGF0YVR5cGVOYW1lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgY29udGludWUNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBWYXJHdWlkICE9IE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIHBOb2RlLkd1aWQuX19jbXBfXyhWYXJHdWlk KToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHJldHVybiBwTm9kZSwgVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBNYXRjaE5vZGUgPT0gTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIE1hdGNoTm9kZSA9IHBOb2RlDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAjIE1vcmUgdGhhbiBv bmUgdmFyc3RvcmVzIHJlZmVycmVkIHRoZSBzYW1lIGRhdGEgc3RydWN0dXJlcw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsDQo+ID4gVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX1ZBUlNUT1JFX0RBVEFUWVBFX1JFREVGSU5FRF9FUlJPUg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg aWYgTWF0Y2hOb2RlID09IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIE1hdGNo Tm9kZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOREVGSU5FRA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIE1hdGNoTm9kZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIiIiDQo+ID4NCj4gPiArICAgICAg IEJhc2Ugb24gdGhlIGlucHV0IHN0b3JlIG5hbWUgYW5kIGd1aWQgdG8gZmluZCB0aGUgdmFyc3Rv cmUgaWQuDQo+ID4NCj4gPiArICAgICAgIElmIGJvdGggbmFtZSBhbmQgZ3VpZCBhcmUgaW5wdXRl ZCwgYmFzZSBvbiB0aGUgbmFtZSBhbmQgZ3VpZCB0bw0KPiA+DQo+ID4gKyAgICAgICBmb3VuZCB0 aGUgdmFyc3RvcmUuIElmIG9ubHkgbmFtZSBpbnB1dGVkLCBiYXNlIG9uIHRoZSBuYW1lIHRvDQo+ ID4NCj4gPiArICAgICAgIGZvdW5kIHRoZSB2YXJzdG9yZSBhbmQgZ28gb24gdG8gY2hlY2sgd2hl dGhlciBtb3JlIHRoYW4gb25lDQo+IHZhcnN0b3JlDQo+ID4NCj4gPiArICAgICAgIGhhcyB0aGUg c2FtZSBuYW1lLiBJZiBvbmx5IGhhcyBmb3VuZCBvbmUgdmFyc3RvcmUsIHJldHVybiB0aGlzDQo+ ID4NCj4gPiArICAgICAgIHZhcnN0b3JlOyBpZiBtb3JlIHRoYW4gb25lIHZhcnN0b3JlIGhhcyBz YW1lIG5hbWUsIHJldHVybiB2YXJzdG9yZQ0KPiA+DQo+ID4gKyAgICAgICBuYW1lIHJlZGVmaW5l ZCBlcnJvci4gSWYgbm8gdmFyc3RvcmUgZm91bmQgYnkgdmFyc3RvcmUgbmFtZSwgY2FsbA0KPiA+ DQo+ID4gKyAgICAgICBmdW5jdGlvbiBHZXRWYXJTdG9yZUJ5RGF0YVR5cGUgYW5kIHVzZSBpbnB1 dGVkIHZhcnN0b3JlIG5hbWUgYXMNCj4gPg0KPiA+ICsgICAgICAgZGF0YSB0eXBlIG5hbWUgdG8g c2VhcmNoLg0KPiA+DQo+ID4gKyAgICAgICAiIiINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIEdldFZhclN0b3JlSWQoc2VsZiwgU3RvcmVOYW1lLCBTdG9yZUd1aWQ9Tm9uZSk6DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBSZXR1cm5Db2RlID0gTm9uZQ0KPiA+DQo+ID4gKyAg ICAgICAgSGFzRm91bmRPbmUgPSBGYWxzZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0N1cnJW YXJTdG9yYWdlTm9kZSA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBOb2Rl ID0gc2VsZi5fX0J1ZmZlclZhclN0b3JlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgcE5v ZGUgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBwTm9kZS5WYXJTdG9yZU5hbWUg PT0gU3RvcmVOYW1lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBSZXN1bHQsIFJldHVybkNv ZGUsIEhhc0ZvdW5kT25lID0gc2VsZi5fX0NoZWNrR3VpZEZpZWxkKA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgcE5vZGUsIFN0b3JlR3VpZCwgSGFzRm91bmRPbmUsIFJldHVybkNvZGUp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJlc3VsdDoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIFZhclN0b3JlSWQgPSBzZWxmLl9fQ3VyclZhclN0b3JhZ2VOb2RlLlZhclN0 b3JlSWQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHJldHVybiBWYXJTdG9yZUlkLCBS ZXR1cm5Db2RlDQo+ID4NCj4gPiArICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9IHNlbGYuX19FZmlWYXJTdG9yZUxpc3QN Cj4gPg0KPiA+ICsgICAgICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgcE5vZGUuVmFyU3RvcmVOYW1lID09IFN0b3JlTmFtZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgUmVzdWx0LCBSZXR1cm5Db2RlLCBIYXNGb3VuZE9uZSA9IHNlbGYuX19DaGVj a0d1aWRGaWVsZCgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHBOb2RlLCBTdG9yZUd1 aWQsIEhhc0ZvdW5kT25lLCBSZXR1cm5Db2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBp ZiBSZXN1bHQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBWYXJTdG9yZUlkID0gc2Vs Zi5fX0N1cnJWYXJTdG9yYWdlTm9kZS5WYXJTdG9yZUlkDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICByZXR1cm4gVmFyU3RvcmVJZCwgUmV0dXJuQ29kZQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5v ZGUgPSBzZWxmLl9fTmFtZVZhclN0b3JlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgcE5v ZGUgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBwTm9kZS5WYXJTdG9yZU5hbWUg PT0gU3RvcmVOYW1lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBSZXN1bHQsIFJldHVybkNv ZGUsIEhhc0ZvdW5kT25lID0gc2VsZi5fX0NoZWNrR3VpZEZpZWxkKA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgcE5vZGUsIFN0b3JlR3VpZCwgSGFzRm91bmRPbmUsIFJldHVybkNvZGUp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJlc3VsdDoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIFZhclN0b3JlSWQgPSBzZWxmLl9fQ3VyclZhclN0b3JhZ2VOb2RlLlZhclN0 b3JlSWQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHJldHVybiBWYXJTdG9yZUlkLCBS ZXR1cm5Db2RlDQo+ID4NCj4gPiArICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBIYXNGb3VuZE9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBWYXJTdG9yZUlkID0gc2VsZi5fX0N1cnJWYXJTdG9yYWdlTm9kZS5WYXJTdG9yZUlk DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZhclN0b3JlSWQsIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBWYXJTdG9y ZUlkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlLCBS ZXR1cm5Db2RlID0gc2VsZi5fX0dldFZhclN0b3JlQnlEYXRhVHlwZShTdG9yZU5hbWUsDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU3RvcmVHdWlkKSAgIw0KPiA+DQo+ID4gKyAgICAgICAgaWYgcE5vZGUgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fQ3VyclZhclN0b3JhZ2VOb2RlID0gcE5vZGUN Cj4gPg0KPiA+ICsgICAgICAgICAgICBWYXJTdG9yZUlkID0gcE5vZGUuVmFyU3RvcmVJZA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFZhclN0b3JlSWQsIFJldHVybkNvZGUN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9fR2V0RnJlZVZhclN0b3JlSWQoc2VsZiwg VmFyVHlwZSk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBJbmRleCA9IDANCj4gPg0K PiA+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIEVGSV9GUkVFX1ZBUlNUT1JFX0lEX0JJVE1B UF9TSVpFKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLl9fRnJlZVZhclN0b3JlSWRC aXRNYXBbaV0gIT0gMHhGRkZGRkZGRjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgSW5kZXgg PSBpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGJyZWFrDQo+ID4NCj4gPiArICAgICAgICBp ZiBJbmRleCA9PSBFRklfRlJFRV9WQVJTVE9SRV9JRF9CSVRNQVBfU0laRToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIE9mZnNldCA9IDANCj4gPg0KPiA+ICsgICAgICAgIE1hc2sgPSAweDgw MDAwMDAwDQo+ID4NCj4gPiArICAgICAgICB3aGlsZSBNYXNrICE9IDA6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgKHNlbGYuX19GcmVlVmFyU3RvcmVJZEJpdE1hcFtJbmRleF0gJiBNYXNrKSA9 PSAwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9fRnJlZVZhclN0b3JlSWRCaXRN YXBbSW5kZXhdIHw9IE1hc2sNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIChJbmRl eCA8PCBFRklfQklUU19TSElGVF9QRVJfVUlOVDMyKSArIE9mZnNldA0KPiA+DQo+ID4gKyAgICAg ICAgICAgIE1hc2sgPj49IDENCj4gPg0KPiA+ICsgICAgICAgICAgICBPZmZzZXQgKz0gMQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIEVGSV9WQVJTVE9SRV9JRF9JTlZBTElEDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBfX0NoZWNrVmFyU3RvcmVJZEZyZWUoc2VsZiwgVmFyU3RvcmVJ ZCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBJbmRleCA9IGludChWYXJTdG9yZUlk IC8gRUZJX0JJVFNfUEVSX1VJTlQzMikNCj4gPg0KPiA+ICsgICAgICAgIE9mZnNldCA9IFZhclN0 b3JlSWQgJSBFRklfQklUU19QRVJfVUlOVDMyDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gKHNl bGYuX19GcmVlVmFyU3RvcmVJZEJpdE1hcFtJbmRleF0gJg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAoMHg4MDAwMDAwMCA+PiBPZmZzZXQpKSA9PSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBfX01hcmtWYXJTdG9yZUlkVXNlZChzZWxmLCBWYXJTdG9yZUlkKToNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIEluZGV4ID0gaW50KFZhclN0b3JlSWQgLyBFRklfQklUU19Q RVJfVUlOVDMyKQ0KPiA+DQo+ID4gKyAgICAgICAgT2Zmc2V0ID0gVmFyU3RvcmVJZCAlIEVGSV9C SVRTX1BFUl9VSU5UMzINCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19GcmVlVmFyU3RvcmVJZEJp dE1hcFtJbmRleF0gfD0gKDB4ODAwMDAwMDAgPj4gT2Zmc2V0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgRGVjbGFyZUJ1ZmZlclZhclN0b3JlKHNlbGYsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmVOYW1lLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEd1aWQsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRGF0YVR5cGVEQiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBUeXBlTmFtZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW YXJTdG9yZUlkLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElzQml0 VmFyU3RvcmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cj0w LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsYWc9VHJ1ZSk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBTdG9yZU5hbWUgPT0gTm9uZSBvciBHdWlk ID09IE5vbmUgb3IgRGF0YVR5cGVEQiA9PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4gPg0KPiA+ICsgICAg ICAgIF8sIFJldHVybkNvZGUgPSBzZWxmLkdldFZhclN0b3JlSWQoU3RvcmVOYW1lLCBHdWlkKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSA9PSBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgRGF0YVR5cGUsIFJldHVybkNvZGUgPSBEYXRhVHlwZURCLkdldERhdGFUeXBlKFR5cGVO YW1lKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gUmV0dXJuQ29kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgVmFyU3RvcmVJ ZCA9PSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBWYXJT dG9yZUlkID0gc2VsZi5fX0dldEZyZWVWYXJTdG9yZUlkKA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVIpDQo+ID4N Cj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuX19DaGVj a1ZhclN0b3JlSWRGcmVlKFZhclN0b3JlSWQpID09IEZhbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1ZBUlNUT1JFSURfUkVERUZJ TkVEDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX01hcmtWYXJTdG9yZUlkVXNlZChWYXJT dG9yZUlkKQ0KPiA+DQo+ID4gKyAgICAgICAgcE5ldyA9IFNWZnJWYXJTdG9yYWdlTm9kZShTdG9y ZU5hbWUsIFZhclN0b3JlSWQsIEd1aWQsIEF0dHIsIEZsYWcsDQo+ID4gTm9uZSwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVR5cGUsIElzQml0VmFyU3Rv cmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBwTmV3ID09IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9S X1JFU09VUkNFUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5ldy5OZXh0ID0gc2Vs Zi5fX0J1ZmZlclZhclN0b3JlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX0J1ZmZlclZh clN0b3JlTGlzdCA9IHBOZXcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGdDVmZy QnVmZmVyQ29uZmlnLlJlZ2lzdGVyKFN0b3JlTmFtZSwgR3VpZCkgIT0gMDoNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIERlY2xhcmVOYW1lVmFy U3RvcmVCZWdpbihzZWxmLCBTdG9yZU5hbWUsIFZhclN0b3JlSWQpOg0KPiA+DQo+ID4gKyAgICAg ICAgaWYgU3RvcmVOYW1lID09IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgXywgUmV0dXJuQ29kZSA9IHNlbGYuR2V0VmFyU3RvcmVJZChTdG9yZU5hbWUpDQo+ ID4NCj4gPiArICAgICAgICBpZiBSZXR1cm5Db2RlID09IFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9TVUNDRVNTOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fUkVERUZJTkVEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBWYXJT dG9yZUlkID09IEVGSV9WQVJTVE9SRV9JRF9JTlZBTElEOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IFZhclN0b3JlSWQgPSBzZWxmLl9fR2V0RnJlZVZhclN0b3JlSWQoDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX05BTUUpDQo+ ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuX19D aGVja1ZhclN0b3JlSWRGcmVlKFZhclN0b3JlSWQpID09IEZhbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1ZBUlNUT1JFSURfUkVE RUZJTkVEDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX01hcmtWYXJTdG9yZUlkVXNlZChW YXJTdG9yZUlkKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUgPSBTVmZyVmFy U3RvcmFnZU5vZGUoU3RvcmVOYW1lLCBWYXJTdG9yZUlkKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgaWYgcE5vZGUgPT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLl9fTmV3VmFyU3RvcmFnZU5vZGUgPSBwTm9kZQ0KPiA+DQo+ ID4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBEZWNsYXJlTmFtZVZhclN0b3JlRW5kKHNlbGYsIEd1 aWQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX05ld1ZhclN0b3JhZ2VOb2RlLkd1aWQgPSBH dWlkDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fTmV3VmFyU3RvcmFnZU5vZGUuTmV4dCA9IHNl bGYuX19OYW1lVmFyU3RvcmVMaXN0DQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fTmFtZVZhclN0 b3JlTGlzdCA9IHNlbGYuX19OZXdWYXJTdG9yYWdlTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fX05ld1ZhclN0b3JhZ2VOb2RlID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgTmFtZVRhYmxlQWRkSXRlbShzZWxmLCBJdGVtKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu X19OZXdWYXJTdG9yYWdlTm9kZS5OYW1lU3BhY2UuYXBwZW5kKEl0ZW0pDQo+ID4NCj4gPiArICAg ICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgZGVmIEdldE5hbWVWYXJTdG9yZUluZm8oc2VsZiwgQmFzZUluZm8sIElu ZGV4KToNCj4gPg0KPiA+ICsgICAgICAgIGlmIEJhc2VJbmZvID09IE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5fX0N1cnJWYXJTdG9yYWdlTm9k ZSA9PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fR0VUX05WVkFSU1RPUkVfRVJST1INCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIEJhc2VJbmZvLkluZm8uVmFyTmFtZSA9DQo+ID4gc2VsZi5fX0N1cnJWYXJTdG9yYWdlTm9k ZS5OYW1lU3BhY2VbSW5kZXhdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIEdldFZhclN0b3JlVHlwZShzZWxmLCBWYXJTdG9yZUlkKToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIFZhclN0b3JlVHlwZSA9DQo+ID4gRUZJX1ZGUl9WQVJTVE9SRV9UWVBF LkVGSV9WRlJfVkFSU1RPUkVfSU5WQUxJRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg aWYgVmFyU3RvcmVJZCA9PSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRDoNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gVmFyU3RvcmVUeXBlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBwTm9kZSA9IHNlbGYuX19CdWZmZXJWYXJTdG9yZUxpc3QNCj4gPg0KPiA+ICsgICAgICAgIHdo aWxlIHBOb2RlICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgcE5vZGUuVmFyU3Rv cmVJZCA9PSBWYXJTdG9yZUlkOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBWYXJTdG9yZVR5 cGUgPSBwTm9kZS5WYXJzdG9yZVR5cGUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IFZhclN0b3JlVHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUgPSBzZWxmLl9fRWZpVmFyU3RvcmVM aXN0DQo+ID4NCj4gPiArICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIHBOb2RlLlZhclN0b3JlSWQgPT0gVmFyU3RvcmVJZDoNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgVmFyU3RvcmVUeXBlID0gcE5vZGUuVmFyc3RvcmVUeXBlDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiBWYXJTdG9yZVR5cGUNCj4gPg0KPiA+ICsgICAgICAg ICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBO b2RlID0gc2VsZi5fX05hbWVWYXJTdG9yZUxpc3QNCj4gPg0KPiA+ICsgICAgICAgIHdoaWxlIHBO b2RlICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgcE5vZGUuVmFyU3RvcmVJZCA9 PSBWYXJTdG9yZUlkOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBWYXJTdG9yZVR5cGUgPSBw Tm9kZS5WYXJzdG9yZVR5cGUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIFZhclN0 b3JlVHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFZhclN0b3JlVHlwZQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgR2V0VmFyU3RvcmVOYW1lKHNlbGYsIFZhclN0b3JlSWQpOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUgPSBzZWxmLl9fQnVmZmVyVmFyU3RvcmVM aXN0DQo+ID4NCj4gPiArICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIHBOb2RlLlZhclN0b3JlSWQgPT0gVmFyU3RvcmVJZDoNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHBOb2RlLlZhclN0b3JlTmFtZSwNCj4gPiBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2RlID0gcE5v ZGUuTmV4dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUgPSBzZWxmLl9fRWZp VmFyU3RvcmVMaXN0DQo+ID4NCj4gPiArICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIHBOb2RlLlZhclN0b3JlSWQgPT0gVmFyU3RvcmVJZDoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHBOb2RlLlZhclN0b3JlTmFtZSwNCj4gPiBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBO b2RlID0gcE5vZGUuTmV4dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUgPSBz ZWxmLl9fTmFtZVZhclN0b3JlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgcE5vZGUgIT0g Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBwTm9kZS5WYXJTdG9yZUlkID09IFZhclN0 b3JlSWQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBwTm9kZS5WYXJTdG9yZU5h bWUsDQo+ID4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsgICAg ICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVEDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRCdWZmZXJWYXJTdG9yZURhdGFU eXBlTmFtZShzZWxmLCBWYXJTdG9yZUlkKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IERhdGFUeXBlTmFtZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIGlmIFZhclN0b3JlSWQgPT0g RUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIERh dGFUeXBlTmFtZSwNCj4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9IHNlbGYuX19CdWZmZXJWYXJTdG9yZUxp c3QNCj4gPg0KPiA+ICsgICAgICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgcE5vZGUuVmFyU3RvcmVJZCA9PSBWYXJTdG9yZUlkOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBEYXRhVHlwZU5hbWUgPSBwTm9kZS5EYXRhVHlwZS5UeXBlTmFtZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gRGF0YVR5cGVOYW1lLCBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUu TmV4dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIERhdGFUeXBlTmFtZSwg VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOREVGSU5FRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBkZWYgR2V0RWZpVmFyU3RvcmVJbmZvKHNlbGYsIEJhc2VJbmZvOiBFRklfVkFSU1RPUkVf SU5GTyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBCYXNlSW5mbyA9PSBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f RkFUQUxfRVJST1INCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYuX19DdXJy VmFyU3RvcmFnZU5vZGUgPT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX0dFVF9FRklWQVJTVE9SRV9FUlJPUg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgQmFzZUluZm8uSW5mby5WYXJOYW1lID0NCj4gPiBzZWxmLl9fQ3Vy clZhclN0b3JhZ2VOb2RlLkVmaVZhci5FZmlWYXJOYW1lDQo+ID4NCj4gPiArICAgICAgICBCYXNl SW5mby5WYXJUb3RhbFNpemUgPSBzZWxmLl9fQ3VyclZhclN0b3JhZ2VOb2RlLkVmaVZhci5FZmlW YXJTaXplDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBCYXNlSW5mby5WYXJUb3Rh bFNpemUgPT0gMToNCj4gPg0KPiA+ICsgICAgICAgICAgICBCYXNlSW5mby5WYXJUeXBlID0gRUZJ X0lGUl9UWVBFX05VTV9TSVpFXzgNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgQmFzZUluZm8uVmFy VG90YWxTaXplID09IDI6DQo+ID4NCj4gPiArICAgICAgICAgICAgQmFzZUluZm8uVmFyVHlwZSA9 IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNg0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBCYXNlSW5m by5WYXJUb3RhbFNpemUgPT0gNDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBCYXNlSW5mby5WYXJU eXBlID0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyDQo+ID4NCj4gPiArICAgICAgICBlbGlmIEJh c2VJbmZvLlZhclRvdGFsU2l6ZSA9PSA4Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIEJhc2VJbmZv LlZhclR5cGUgPSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQNCj4gPg0KPiA+ICsgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9GQVRBTF9FUlJPUg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBHZXRWYXJTdG9yZUd1aWQoc2VsZiwgVmFyU3RvcmVJZCk6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBWYXJHdWlkID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgVmFyU3RvcmVJ ZCA9PSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRDoNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gVmFyR3VpZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUgPSBzZWxmLl9f QnVmZmVyVmFyU3RvcmVMaXN0DQo+ID4NCj4gPiArICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHBOb2RlLlZhclN0b3JlSWQgPT0gVmFyU3RvcmVJ ZDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVmFyR3VpZCA9IHBOb2RlLkd1aWQNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIFZhckd1aWQNCj4gPg0KPiA+ICsgICAgICAgICAg ICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBOb2Rl ID0gc2VsZi5fX0VmaVZhclN0b3JlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgcE5vZGUg IT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBwTm9kZS5WYXJTdG9yZUlkID09IFZh clN0b3JlSWQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFZhckd1aWQgPSBwTm9kZS5HdWlk DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBWYXJHdWlkDQo+ID4NCj4gPiArICAg ICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBwTm9kZSA9IHNlbGYuX19OYW1lVmFyU3RvcmVMaXN0DQo+ID4NCj4gPiArICAgICAgICB3aGls ZSBwTm9kZSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHBOb2RlLlZhclN0b3Jl SWQgPT0gVmFyU3RvcmVJZDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVmFyR3VpZCA9IHBO b2RlLkd1aWQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIFZhckd1aWQNCj4gPg0K PiA+ICsgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBWYXJHdWlkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBB ZGRCdWZmZXJWYXJTdG9yZUZpZWxkSW5mbyhzZWxmLCBCYXNlSW5mbzogRUZJX1ZBUlNUT1JFX0lO Rk8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5ldyA9IEJ1ZmZlclZhclN0b3Jl RmllbGRJbmZvTm9kZShCYXNlSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIGlmIHBOZXcgPT0gTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X0ZBVEFMX0VSUk9SDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLl9fQnVm ZmVyRmllbGRJbmZvTGlzdEhlYWQgPT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9fQnVmZmVyRmllbGRJbmZvTGlzdEhlYWQgPSBwTmV3DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fX21CdWZmZXJGaWVsZEluZm9MaXN0VGFpbCA9IHBOZXcNCj4gPg0KPiA+ICsgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX21CdWZmZXJGaWVsZEluZm9MaXN0 VGFpbC5OZXh0ID0gcE5ldw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19tQnVmZmVyRmll bGRJbmZvTGlzdFRhaWwgPSBwTmV3DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICtjbGFzcyBDVmZyU3RyaW5nREIob2JqZWN0KToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5f X1N0cmluZ0ZpbGVOYW1lID0gJycNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldFZh clN0b3JlTmFtZUZyb21TdHJpbmdJZChzZWxmLCBTdHJpbmdJZCk6DQo+ID4NCj4gPiArICAgICAg ICBpZiBzZWxmLl9fU3RyaW5nRmlsZU5hbWUgPT0gJyc6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBmID0gb3BlbihzZWxmLl9fU3RyaW5nRmlsZU5hbWUpDQo+ID4NCj4gPiArICAgICAgICAgICAg U3RyaW5nUHRyID0gZi5yZWFkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBmLmNsb3NlKCkNCj4g Pg0KPiA+ICsgICAgICAgIGV4Y2VwdCBJT0Vycm9yOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBy aW50KCdFcnJvcicpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZ0NWZnJTdHJpbmdEQiA9IENWZnJT dHJpbmdEQigpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArRUZJX1JVTEVfSURfU1RBUlQgPSAweDAx DQo+ID4NCj4gPiArRUZJX1JVTEVfSURfSU5WQUxJRCA9IDB4MDANCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBTVmZyUnVsZU5vZGUoKToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFJ1bGVOYW1lPU5vbmUsIFJ1bGVJZD0wKToNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuUnVsZUlkID0gUnVsZUlkDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLlJ1bGVOYW1lID0gUnVsZU5hbWUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTmV4dCA9IE5v bmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDVmZyUnVsZXNEQihv YmplY3QpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICBzZWxmLl9fUnVsZUxpc3QgPSBOb25lDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLl9fRnJlZVJ1bGVJZCA9IEVGSV9WQVJTVE9SRV9JRF9TVEFSVA0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgUmVnaXN0ZXJSdWxlKHNlbGYsIFJ1bGVOYW1lKToNCj4gPg0KPiA+ ICsgICAgICAgIGlmIFJ1bGVOYW1lID09IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTmV3ID0gU1ZmclJ1bGVOb2RlKFJ1 bGVOYW1lLCBzZWxmLl9fRnJlZVJ1bGVJZCkNCj4gPg0KPiA+ICsgICAgICAgIGlmIHBOZXcgPT0g Tm9uZTogcmV0dXJuDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fRnJlZVJ1bGVJZCArPSAxDQo+ ID4NCj4gPiArICAgICAgICBwTmV3Lk5leHQgPSBzZWxmLl9fUnVsZUxpc3QNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuX19SdWxlTGlzdCA9IHBOZXcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIEdldFJ1bGVJZChzZWxmLCBSdWxlTmFtZSk6DQo+ID4NCj4gPiArICAgICAgICBpZiBSdWxl TmFtZSA9PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgcE5vZGUgPSBzZWxmLl9fUnVsZUxpc3QNCj4gPg0KPiA+ICsgICAg ICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgcE5vZGUu UnVsZU5hbWUgPT0gUnVsZU5hbWU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBw Tm9kZS5SdWxlSWQNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBFRklfUlVMRV9JRF9JTlZBTElEDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArRUZJX1FVRVNUSU9OX0lEX01BWCA9IDB4 RkZGRg0KPiA+DQo+ID4gK0VGSV9GUkVFX1FVRVNUSU9OX0lEX0JJVE1BUF9TSVpFID0gaW50KA0K PiA+DQo+ID4gKyAgICAoRUZJX1FVRVNUSU9OX0lEX01BWCArIDEpIC8gRUZJX0JJVFNfUEVSX1VJ TlQzMikNCj4gPg0KPiA+ICtFRklfUVVFU1RJT05fSURfSU5WQUxJRCA9IDB4MA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9RVUVTSU9OX1RZUEUoRW51bSk6DQo+ ID4NCj4gPiArICAgIFFVRVNUSU9OX05PUk1BTCA9IDANCj4gPg0KPiA+ICsgICAgUVVFU1RJT05f REFURSA9IDENCj4gPg0KPiA+ICsgICAgUVVFU1RJT05fVElNRSA9IDINCj4gPg0KPiA+ICsgICAg UVVFU1RJT05fUkVGID0gMw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNz IFNWZnJRdWVzdGlvbk5vZGUoKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5p dF9fKHNlbGYsIE5hbWU9Tm9uZSwgVmFySWRTdHI9Tm9uZSwgQml0TWFzaz0wKTogICMNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuTmFtZSA9IE5hbWUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVmFy SWRTdHIgPSBWYXJJZFN0cg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5RdWVzdGlvbklkID0gRUZJ X1FVRVNUSU9OX0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQml0TWFzayA9IEJp dE1hc2sNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTmV4dCA9IE5vbmUNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK0RBVEVfWUVBUl9CSVRNQVNLID0gMHgwMDAwRkZG Rg0KPiA+DQo+ID4gK0RBVEVfTU9OVEhfQklUTUFTSyA9IDB4MDBGRjAwMDANCj4gPg0KPiA+ICtE QVRFX0RBWV9CSVRNQVNLID0gMHhGRjAwMDAwMA0KPiA+DQo+ID4gK1RJTUVfSE9VUl9CSVRNQVNL ID0gMHgwMDAwMDBGRg0KPiA+DQo+ID4gK1RJTUVfTUlOVVRFX0JJVE1BU0sgPSAweDAwMDBGRjAw DQo+ID4NCj4gPiArVElNRV9TRUNPTkRfQklUTUFTSyA9IDB4MDBGRjAwMDANCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDVmZyUXVlc3Rpb25EQihvYmplY3QpOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICBzZWxmLl9fRnJlZVFJZEJpdE1hcCA9IFtdDQo+ID4NCj4gPiArICAgICAgICBmb3IgaSBp biByYW5nZSgwLCBFRklfRlJFRV9RVUVTVElPTl9JRF9CSVRNQVBfU0laRSk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fX0ZyZWVRSWRCaXRNYXAuYXBwZW5kKDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICAjIFF1ZXN0aW9uIElEIDAgaXMgcmVzZXJ2ZWQuDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLl9fRnJlZVFJZEJpdE1hcFswXSA9IDB4ODAwMDAwMDANCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19RdWVzdGlvbkxpc3QgPSBOb25lDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBGaW5kUXVlc3Rpb25CeU5hbWUoc2VsZiwgTmFtZSk6DQo+ID4N Cj4gPiArICAgICAgICBpZiBOYW1lID09IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgcE5vZGUgPSBzZWxmLl9fUXVlc3Rpb25MaXN0DQo+ID4NCj4gPiArICAg ICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHBOb2Rl Lk5hbWUgPT0gTmFtZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArICAgICAgICAgICAgcE5vZGUgPSBw Tm9kZS5OZXh0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1VOREVGSU5FRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYg RmluZFF1ZXN0aW9uQnlJZChzZWxmLCBRdWVzdGlvbklkKToNCj4gPg0KPiA+ICsgICAgICAgIGlm IFF1ZXN0aW9uSWQgPT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQ6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUgPSBzZWxmLl9fUXVlc3Rpb25MaXN0 DQo+ID4NCj4gPiArICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIHBOb2RlLlF1ZXN0aW9uSWQgPT0gUXVlc3Rpb25JZDoNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4N Cj4gPiArICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOREVGSU5FRA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19HZXRGcmVlUXVlc3Rpb25JZChzZWxmKToNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIEluZGV4ID0gMA0KPiA+DQo+ID4gKyAgICAgICAg Zm9yIGkgaW4gcmFuZ2UoMCwgRUZJX0ZSRUVfUVVFU1RJT05fSURfQklUTUFQX1NJWkUpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuX19GcmVlUUlkQml0TWFwW2ldICE9IDB4RkZGRkZG RkY6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEluZGV4ID0gaQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBicmVhaw0KPiA+DQo+ID4gKyAgICAgICAgaWYgSW5kZXggPT0gRUZJX0ZSRUVf UVVFU1RJT05fSURfQklUTUFQX1NJWkU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIEVG SV9RVUVTVElPTl9JRF9JTlZBTElEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBPZmZz ZXQgPSAwDQo+ID4NCj4gPiArICAgICAgICBNYXNrID0gMHg4MDAwMDAwMA0KPiA+DQo+ID4gKyAg ICAgICAgd2hpbGUgTWFzayAhPSAwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIChzZWxmLl9f RnJlZVFJZEJpdE1hcFtJbmRleF0gJiBNYXNrKSA9PSAwOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLl9fRnJlZVFJZEJpdE1hcFtJbmRleF0gfD0gTWFzaw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gKEluZGV4IDw8IEVGSV9CSVRTX1NISUZUX1BFUl9VSU5UMzIpICsg T2Zmc2V0DQo+ID4NCj4gPiArICAgICAgICAgICAgTWFzayA+Pj0gMQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIE9mZnNldCArPSAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g RUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9f Q2hlY2tRdWVzdGlvbklkRnJlZShzZWxmLCBRSWQpOg0KPiA+DQo+ID4gKyAgICAgICAgSW5kZXgg PSBpbnQoUUlkIC8gRUZJX0JJVFNfUEVSX1VJTlQzMikNCj4gPg0KPiA+ICsgICAgICAgIE9mZnNl dCA9IFFJZCAlIEVGSV9CSVRTX1BFUl9VSU5UMzINCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiAo c2VsZi5fX0ZyZWVRSWRCaXRNYXBbSW5kZXhdICYgKDB4ODAwMDAwMDAgPj4gT2Zmc2V0KSkgPT0g MA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19NYXJrUXVlc3Rpb25JZFVzZWQoc2Vs ZiwgUUlkKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIEluZGV4ID0gaW50KFFJZCAv IEVGSV9CSVRTX1BFUl9VSU5UMzIpDQo+ID4NCj4gPiArICAgICAgICBPZmZzZXQgPSBRSWQgJSBF RklfQklUU19QRVJfVUlOVDMyDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fRnJlZVFJZEJpdE1h cFtJbmRleF0gfD0gKDB4ODAwMDAwMDAgPj4gT2Zmc2V0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBkZWYgX19NYXJrUXVlc3Rpb25JZFVudXNlZChzZWxmLCBRSWQpOg0KPiA+DQo+ID4gKyAg ICAgICAgSW5kZXggPSBpbnQoUUlkIC8gRUZJX0JJVFNfUEVSX1VJTlQzMikNCj4gPg0KPiA+ICsg ICAgICAgIE9mZnNldCA9IFFJZCAlIEVGSV9CSVRTX1BFUl9VSU5UMzINCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuX19GcmVlUUlkQml0TWFwW0luZGV4XSAmPSB+KDB4ODAwMDAwMDAgPj4gT2Zmc2V0 KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgUmVnaXN0ZXJRdWVzdGlvbihzZWxmLCBO YW1lLCBWYXJJZFN0ciwgUXVlc3Rpb25JZCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBpZiAoTmFtZSAhPSBOb25lKSBhbmQgKHNlbGYuRmluZFF1ZXN0aW9uQnlOYW1lKE5hbWUpID09 DQo+ID4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJ TkVEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5v ZGUoTmFtZSwgVmFySWRTdHIpDQo+ID4NCj4gPiArICAgICAgICBpZiBwTm9kZSA9PSBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLA0KPiA+IFZmclJldHVybkNv ZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgaWYgUXVlc3Rpb25JZCA9PSBFRklfUVVFU1RJT05fSURfSU5WQUxJRDoNCj4gPg0KPiA+ ICsgICAgICAgICAgICBRdWVzdGlvbklkID0gc2VsZi5fX0dldEZyZWVRdWVzdGlvbklkKCkNCj4g Pg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2VsZi5fX0No ZWNrUXVlc3Rpb25JZEZyZWUoUXVlc3Rpb25JZCkgPT0gRmFsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLA0KPiA+IFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9RVUVTVElPTklEX1JFREVGSU5FRA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX19NYXJr UXVlc3Rpb25JZFVzZWQoUXVlc3Rpb25JZCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IHBOb2RlLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+ID4NCj4gPiArICAgICAgICBwTm9kZS5O ZXh0ID0gc2VsZi5fX1F1ZXN0aW9uTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX1F1ZXN0 aW9uTGlzdCA9IHBOb2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAjIGdDRm9ybVBr Zy5Eb1BlbmRpbmdBc3NpZ24NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBR dWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgVXBkYXRlUXVlc3Rpb25JZChzZWxmLCBRSWQsIE5ld1FJZCk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBRSWQgPT0gTmV3UUlkOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICMgZG9uJ3QgdXBkYXRlDQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBpZiBzZWxmLl9fQ2hlY2tRdWVzdGlvbklkRnJlZShOZXdRSWQpID09IEZhbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVE RUZJTkVEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9IHNlbGYuX19RdWVz dGlvbkxpc3QNCj4gPg0KPiA+ICsgICAgICAgIFRlbXBMaXN0ID0gW10NCj4gPg0KPiA+ICsgICAg ICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgcE5vZGUu UXVlc3Rpb25JZCA9PSBRSWQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFRlbXBMaXN0LmFw cGVuZChwTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGxlbihUZW1wTGlzdCkgPT0gMDoNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOREVGSU5F RA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fX01hcmtRdWVzdGlvbklkVW51 c2VkKFFJZCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGZvciBwTm9kZSBpbiBUZW1w TGlzdDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZS5RdWVzdGlvbklkID0gTmV3UUlkDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9fTWFya1F1ZXN0aW9uSWRVc2VkKE5l d1FJZCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICMgZ0NGb3JtUGtnLkRvUGVuZGlu Z0Fzc2lnbg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRRdWVzdGlvbklkKHNl bGYsIE5hbWUsIFZhcklkU3RyPU5vbmUsIFFUeXBlPU5vbmUpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgUXVlc3Rpb25JZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQo+ID4NCj4g PiArICAgICAgICBCaXRNYXNrID0gMHgwMDAwMDAwMA0KPiA+DQo+ID4gKyAgICAgICAgaWYgUVR5 cGUgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBRVHlwZSA9IEVGSV9RVUVTSU9OX1RZ UEUuUVVFU1RJT05fTk9STUFMDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBOYW1l ID09IE5vbmUgYW5kIFZhcklkU3RyID09IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIFF1ZXN0aW9uSWQsIEJpdE1hc2ssIFFUeXBlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBwTm9kZSA9IHNlbGYuX19RdWVzdGlvbkxpc3QNCj4gPg0KPiA+ICsgICAgICAgIHdoaWxl IHBOb2RlICE9IE5vbmU6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgTmFt ZSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBwTm9kZS5OYW1lICE9IE5h bWU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgVmFySWRTdHIgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgaWYgcE5vZGUuVmFySWRTdHIgIT0gVmFySWRTdHI6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgUXVlc3Rpb25J ZCA9IHBOb2RlLlF1ZXN0aW9uSWQNCj4gPg0KPiA+ICsgICAgICAgICAgICBCaXRNYXNrID0gcE5v ZGUuQml0TWFzaw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIFFUeXBlICE9IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIFFUeXBlID0gcE5vZGUuUVR5cGUNCj4gPg0KPiA+ICsgICAg ICAgICAgICBicmVhaw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFF1ZXN0 aW9uSWQsIEJpdE1hc2ssIFFUeXBlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBSZWdp c3Rlck5ld0RhdGVRdWVzdGlvbihzZWxmLCBOYW1lLCBCYXNlVmFySWQsIFF1ZXN0aW9uSWQpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgQmFzZVZhcklkID09ICcnIGFuZCBOYW1l ID09IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgUXVlc3Rpb25JZCA9PSBFRklfUVVF U1RJT05fSURfSU5WQUxJRDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgUXVlc3Rpb25JZCA9 IHNlbGYuX19HZXRGcmVlUXVlc3Rpb25JZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0NoZWNrUXVlc3Rpb25JZEZyZWUo UXVlc3Rpb25JZCkgPT0gRmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICByZXR1 cm4gUXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9fTWFya1F1ZXN0aW9uSWRVc2VkKFF1ZXN0aW9uSWQp DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBWYXJJZFN0 ckxpc3QgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgQmFzZVZhcklkICE9ICcnOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoQmFzZVZhcklkICsgJy5ZZWFyJykN Cj4gPg0KPiA+ICsgICAgICAgICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKEJhc2VWYXJJZCArICcu TW9udGgnKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoQmFzZVZh cklkICsgJy5EYXknKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKE5hbWUgKyAnLlllYXInKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoTmFtZSArICcuTW9udGgnKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoTmFtZSArICcuRGF5JykN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlTGlzdCA9IFtdDQo+ID4NCj4gPiAr ICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTmFtZSwgVmFySWRTdHJMaXN0WzBdLA0K PiA+IERBVEVfWUVBUl9CSVRNQVNLKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgcE5vZGUgIT0gTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZUxpc3QuYXBwZW5kKHBOb2RlKQ0KPiA+DQo+ ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25J ZCwNCj4gPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOYW1lLCBW YXJJZFN0ckxpc3RbMV0sDQo+ID4gREFURV9NT05USF9CSVRNQVNLKQ0KPiA+DQo+ID4gKyAgICAg ICAgaWYgcE5vZGUgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZUxpc3QuYXBw ZW5kKHBOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gUXVlc3Rpb25JZCwNCj4gPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZP Ul9SRVNPVVJDRVMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlID0gU1ZmclF1 ZXN0aW9uTm9kZShOYW1lLCBWYXJJZFN0ckxpc3RbMl0sDQo+ID4gREFURV9EQVlfQklUTUFTSykN Cj4gPg0KPiA+ICsgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsDQo+ID4gVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBpZiBRdWVzdGlvbklkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIFF1ZXN0aW9uSWQgPSBzZWxmLl9fR2V0RnJlZVF1ZXN0aW9uSWQoKQ0KPiA+DQo+ ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLl9fQ2hlY2tR dWVzdGlvbklkRnJlZShRdWVzdGlvbklkKSA9PSBGYWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9SRURFRklO RUQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fTWFya1F1ZXN0aW9uSWRVc2VkKFF1ZXN0 aW9uSWQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3RbMF0uUXVlc3Rp b25JZCA9IFF1ZXN0aW9uSWQNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlTGlzdFsxXS5RdWVzdGlv bklkID0gUXVlc3Rpb25JZA0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzJdLlF1ZXN0aW9u SWQgPSBRdWVzdGlvbklkDQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3RbMF0uUVR5cGUgPSBF RklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX0RBVEUNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlTGlz dFsxXS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fREFURQ0KPiA+DQo+ID4gKyAg ICAgICAgcE5vZGVMaXN0WzJdLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9EQVRF DQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3RbMF0uTmV4dCA9IHBOb2RlTGlzdFsxXQ0KPiA+ DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzFdLk5leHQgPSBwTm9kZUxpc3RbMl0NCj4gPg0KPiA+ ICsgICAgICAgIHBOb2RlTGlzdFsyXS5OZXh0ID0gc2VsZi5fX1F1ZXN0aW9uTGlzdA0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5fX1F1ZXN0aW9uTGlzdCA9IHBOb2RlTGlzdFswXQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgIyBEb1BlbmRpbmdBc3NpZ24NCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgUmVnaXN0ZXJOZXdUaW1lUXVlc3Rpb24oc2VsZiwg TmFtZSwgQmFzZVZhcklkLCBRdWVzdGlvbklkKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIEJhc2VW YXJJZCA9PSAnJyBhbmQgTmFtZSA9PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIFF1 ZXN0aW9uSWQgPT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQ6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIFF1ZXN0aW9uSWQgPSBzZWxmLl9fR2V0RnJlZVF1ZXN0aW9uSWQoKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIHNlbGYuX19D aGVja1F1ZXN0aW9uSWRGcmVlKFF1ZXN0aW9uSWQpID09IEZhbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9SRURFRklORUQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fX01hcmtRdWVzdGlv bklkVXNlZChRdWVzdGlvbklkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlv bklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgVmFySWRTdHJMaXN0ID0gW10NCj4gPg0KPiA+ICsgICAgICAgIGlmIEJhc2VW YXJJZCAhPSAnJzoNCj4gPg0KPiA+ICsgICAgICAgICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKEJh c2VWYXJJZCArICcuSG91cicpDQo+ID4NCj4gPiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFw cGVuZChCYXNlVmFySWQgKyAnLk1pbnV0ZScpDQo+ID4NCj4gPiArICAgICAgICAgICAgVmFySWRT dHJMaXN0LmFwcGVuZChCYXNlVmFySWQgKyAnLlNlY29uZCcpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBl bmQoTmFtZSArICcuSG91cicpDQo+ID4NCj4gPiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFw cGVuZChOYW1lICsgJy5NaW51dGUnKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhcklkU3RyTGlz dC5hcHBlbmQoTmFtZSArICcuU2Vjb25kJykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IHBOb2RlTGlzdCA9IFtdDQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5v ZGUoTmFtZSwgVmFySWRTdHJMaXN0WzBdLA0KPiA+IFRJTUVfSE9VUl9CSVRNQVNLKQ0KPiA+DQo+ ID4gKyAgICAgICAgaWYgcE5vZGUgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9k ZUxpc3QuYXBwZW5kKHBOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwNCj4gPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fT1VUX0ZPUl9SRVNPVVJDRVMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBOb2Rl ID0gU1ZmclF1ZXN0aW9uTm9kZShOYW1lLCBWYXJJZFN0ckxpc3RbMV0sDQo+ID4gVElNRV9NSU5V VEVfQklUTUFTSykNCj4gPg0KPiA+ICsgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkNCj4gPg0KPiA+ICsgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsDQo+ID4gVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTmFtZSwgVmFySWRTdHJMaXN0 WzJdLA0KPiA+IFRJTUVfU0VDT05EX0JJVE1BU0spDQo+ID4NCj4gPiArICAgICAgICBpZiBwTm9k ZSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2RlTGlzdC5hcHBlbmQocE5vZGUp DQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBR dWVzdGlvbklkLA0KPiA+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNF Uw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgUXVlc3Rpb25JZCA9PSBFRklfUVVF U1RJT05fSURfSU5WQUxJRDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBRdWVzdGlvbklkID0gc2Vs Zi5fX0dldEZyZWVRdWVzdGlvbklkKCkNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgc2VsZi5fX0NoZWNrUXVlc3Rpb25JZEZyZWUoUXVlc3Rpb25JZCkg PT0gRmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVEDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fX01hcmtRdWVzdGlvbklkVXNlZChRdWVzdGlvbklkKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgcE5vZGVMaXN0WzBdLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+ID4NCj4g PiArICAgICAgICBwTm9kZUxpc3RbMV0uUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4gPg0KPiA+ ICsgICAgICAgIHBOb2RlTGlzdFsyXS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiA+DQo+ID4g KyAgICAgICAgcE5vZGVMaXN0WzBdLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9U SU1FDQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3RbMV0uUVR5cGUgPSBFRklfUVVFU0lPTl9U WVBFLlFVRVNUSU9OX1RJTUUNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlTGlzdFsyXS5RVHlwZSA9 IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fVElNRQ0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVM aXN0WzBdLk5leHQgPSBwTm9kZUxpc3RbMV0NCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlTGlzdFsx XS5OZXh0ID0gcE5vZGVMaXN0WzJdDQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3RbMl0uTmV4 dCA9IHNlbGYuX19RdWVzdGlvbkxpc3QNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19RdWVzdGlv bkxpc3QgPSBwTm9kZUxpc3RbMF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICMgRG9Q ZW5kaW5nQXNzaWduDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IFJlZ2lzdGVyUmVmUXVlc3Rpb24oc2VsZiwgTmFtZSwgQmFzZVZhcklkLCBRdWVzdGlvbklkKToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIEJhc2VWYXJJZCA9PSAnJyBhbmQgTmFt ZSA9PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIFZhcklkU3RyTGlzdCA9IFtdDQo+ID4NCj4gPiArICAgICAgICBpZiBCYXNlVmFySWQg IT0gJyc6DQo+ID4NCj4gPiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChCYXNlVmFy SWQgKyAnLlF1ZXN0aW9uSWQnKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5h cHBlbmQoQmFzZVZhcklkICsgJy5Gb3JtSWQnKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhcklk U3RyTGlzdC5hcHBlbmQoQmFzZVZhcklkICsgJy5Gb3JtU2V0R3VpZCcpDQo+ID4NCj4gPiArICAg ICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChCYXNlVmFySWQgKyAnLkRldmljZVBhdGgnKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBWYXJJZFN0ckxpc3QuYXBwZW5kKEJhc2VWYXJJZCArICcuUXVlc3Rpb25JZCcpDQo+ID4NCj4g PiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChCYXNlVmFySWQgKyAnLkZvcm1JZCcp DQo+ID4NCj4gPiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChCYXNlVmFySWQgKyAn LkZvcm1TZXRHdWlkJykNCj4gPg0KPiA+ICsgICAgICAgICAgICBWYXJJZFN0ckxpc3QuYXBwZW5k KEJhc2VWYXJJZCArICcuRGV2aWNlUGF0aCcpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBwTm9kZUxpc3QgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUgPSBTVmZyUXVlc3Rpb25O b2RlKE5hbWUsIFZhcklkU3RyTGlzdFswXSkNCj4gPg0KPiA+ICsgICAgICAgIGlmIHBOb2RlICE9 IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkNCj4g Pg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFF1ZXN0 aW9uSWQsDQo+ID4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTmFt ZSwgVmFySWRTdHJMaXN0WzFdKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgcE5vZGUgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZUxpc3QuYXBwZW5kKHBOb2RlKQ0KPiA+DQo+ID4g KyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwN Cj4gPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOYW1lLCBWYXJJ ZFN0ckxpc3RbMl0pDQo+ID4NCj4gPiArICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHBOb2RlTGlzdC5hcHBlbmQocE5vZGUpDQo+ID4NCj4gPiArICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLA0KPiA+IFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgcE5vZGUgPSBTVmZyUXVlc3Rpb25Ob2RlKE5hbWUsIFZhcklkU3RyTGlz dFszXSkNCj4gPg0KPiA+ICsgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsDQo+ID4gVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBpZiBRdWVzdGlvbklkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIFF1ZXN0aW9uSWQgPSBzZWxmLl9fR2V0RnJlZVF1ZXN0aW9uSWQoKQ0K PiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLl9f Q2hlY2tRdWVzdGlvbklkRnJlZShRdWVzdGlvbklkKSA9PSBGYWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9S RURFRklORUQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9fTWFya1F1ZXN0aW9uSWRVc2Vk KFF1ZXN0aW9uSWQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3RbMF0u UXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlTGlzdFsxXS5R dWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzJdLlF1 ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3RbM10uUXVl c3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBOb2Rl TGlzdFswXS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fUkVGDQo+ID4NCj4gPiAr ICAgICAgICBwTm9kZUxpc3RbMV0uUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX1JF Rg0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzJdLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQ RS5RVUVTVElPTl9SRUYNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlTGlzdFszXS5RVHlwZSA9IEVG SV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fUkVGDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBwTm9kZUxpc3RbMF0uTmV4dCA9IHBOb2RlTGlzdFsxXQ0KPiA+DQo+ID4gKyAgICAgICAgcE5v ZGVMaXN0WzFdLk5leHQgPSBwTm9kZUxpc3RbMl0NCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlTGlz dFsyXS5OZXh0ID0gcE5vZGVMaXN0WzNdDQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3RbM10u TmV4dCA9IHNlbGYuX19RdWVzdGlvbkxpc3QNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX19RdWVz dGlvbkxpc3QgPSBwTm9kZUxpc3RbMF0NCj4gPg0KPiA+ICsgICAgICAgIHggPSBzZWxmLl9fUXVl c3Rpb25MaXN0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAjIERvUGVuZGluZ0Fzc2ln bg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBSZWdpc3Rlck9sZERhdGVRdWVzdGlvbihzZWxmLCBZZWFyVmFySWQsIE1vbnRoVmFySWQsIERh eVZhcklkLA0KPiA+IFF1ZXN0aW9uSWQpOg0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0ID0g W10NCj4gPg0KPiA+ICsgICAgICAgIGlmIFllYXJWYXJJZCA9PSAnJyBvciBNb250aFZhcklkID09 ICcnIG9yIERheVZhcklkID09ICcnIG9yIFllYXJWYXJJZCA9PQ0KPiA+IE5vbmUgb3IgTW9udGhW YXJJZCA9PSBOb25lIG9yIERheVZhcklkID09IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9FUlJPUl9TS0lQRUQN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShO b25lLCBZZWFyVmFySWQsIERBVEVfWUVBUl9CSVRNQVNLKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYg cE5vZGUgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZUxpc3QuYXBwZW5kKHBO b2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQsDQo+ID4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X09VVF9GT1JfUkVTT1VSQ0VTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9 IFNWZnJRdWVzdGlvbk5vZGUoTm9uZSwgTW9udGhWYXJJZCwNCj4gPiBEQVRFX01PTlRIX0JJVE1B U0spDQo+ID4NCj4gPiArICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHBOb2RlTGlzdC5hcHBlbmQocE5vZGUpDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBFRklfUVVFU1RJT05fSURfSU5WQUxJRCwNCj4g PiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOb25lLCBEYXlWYXJJ ZCwgREFURV9EQVlfQklUTUFTSykNCj4gPg0KPiA+ICsgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkNCj4gPg0KPiA+ ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIEVGSV9RVUVTVElP Tl9JRF9JTlZBTElELA0KPiA+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09V UkNFUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgUXVlc3Rpb25JZCA9PSBFRklf UVVFU1RJT05fSURfSU5WQUxJRDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBRdWVzdGlvbklkID0g c2VsZi5fX0dldEZyZWVRdWVzdGlvbklkKCkNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgc2VsZi5fX0NoZWNrUXVlc3Rpb25JZEZyZWUoUXVlc3Rpb25J ZCkgPT0gRmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBFRklfUVVFU1RJ T05fSURfSU5WQUxJRCwNCj4gPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVEDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fX01hcmtRdWVzdGlvbklkVXNlZChRdWVzdGlvbklk KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzBdLlF1ZXN0aW9uSWQg PSBRdWVzdGlvbklkDQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3RbMV0uUXVlc3Rpb25JZCA9 IFF1ZXN0aW9uSWQNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlTGlzdFsyXS5RdWVzdGlvbklkID0g UXVlc3Rpb25JZA0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzBdLlFUeXBlID0gRUZJX1FV RVNJT05fVFlQRS5RVUVTVElPTl9EQVRFDQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3RbMV0u UVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX0RBVEUNCj4gPg0KPiA+ICsgICAgICAg IHBOb2RlTGlzdFsyXS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fREFURQ0KPiA+ DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzBdLk5leHQgPSBwTm9kZUxpc3RbMV0NCj4gPg0KPiA+ ICsgICAgICAgIHBOb2RlTGlzdFsxXS5OZXh0ID0gcE5vZGVMaXN0WzJdDQo+ID4NCj4gPiArICAg ICAgICBwTm9kZUxpc3RbMl0uTmV4dCA9IHNlbGYuX19RdWVzdGlvbkxpc3QNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuX19RdWVzdGlvbkxpc3QgPSBwTm9kZUxpc3RbMF0NCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgICMgRG9QZW5kaW5nQXNzaWduDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gUXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIFJlZ2lzdGVyT2xkVGltZVF1ZXN0aW9uKHNlbGYsIEhvdXJW YXJJZCwgTWludXRlVmFySWQsDQo+IFNlY29uZFZhcklkLA0KPiA+IFF1ZXN0aW9uSWQpOg0KPiA+ DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0ID0gW10NCj4gPg0KPiA+ICsgICAgICAgIGlmIEhvdXJW YXJJZCA9PSAnJyBvciBNaW51dGVWYXJJZCA9PSAnJyBvciBTZWNvbmRWYXJJZCA9PSAnJyBvcg0K PiBIb3VyVmFySWQNCj4gPiA9PSBOb25lIG9yIE1pbnV0ZVZhcklkID09IE5vbmUgb3IgU2Vjb25k VmFySWQgPT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwg VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9SX1NLSVBFRA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgcE5vZGUgPSBTVmZyUXVlc3Rpb25Ob2RlKE5vbmUsIEhvdXJWYXJJZCwNCj4g VElNRV9IT1VSX0JJVE1BU0spDQo+ID4NCj4gPiArICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2RlTGlzdC5hcHBlbmQocE5vZGUpDQo+ID4NCj4gPiAr ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBFRklfUVVFU1RJT05f SURfSU5WQUxJRCwNCj4gPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJD RVMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9k ZShOb25lLCBNaW51dGVWYXJJZCwNCj4gPiBUSU1FX01JTlVURV9CSVRNQVNLKQ0KPiA+DQo+ID4g KyAgICAgICAgaWYgcE5vZGUgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZUxp c3QuYXBwZW5kKHBOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQsDQo+ID4gVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTm9uZSwgU2Vjb25kVmFySWQsDQo+ID4gVElN RV9TRUNPTkRfQklUTUFTSykNCj4gPg0KPiA+ICsgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkNCj4gPg0KPiA+ICsg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIEVGSV9RVUVTVElPTl9J RF9JTlZBTElELA0KPiA+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNF Uw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgUXVlc3Rpb25JZCA9PSBFRklfUVVF U1RJT05fSURfSU5WQUxJRDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBRdWVzdGlvbklkID0gc2Vs Zi5fX0dldEZyZWVRdWVzdGlvbklkKCkNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgc2VsZi5fX0NoZWNrUXVlc3Rpb25JZEZyZWUoUXVlc3Rpb25JZCkg PT0gRmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBFRklfUVVFU1RJT05f SURfSU5WQUxJRCwNCj4gPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVEDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fX01hcmtRdWVzdGlvbklkVXNlZChRdWVzdGlvbklkKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzBdLlF1ZXN0aW9uSWQgPSBR dWVzdGlvbklkDQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3RbMV0uUXVlc3Rpb25JZCA9IFF1 ZXN0aW9uSWQNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlTGlzdFsyXS5RdWVzdGlvbklkID0gUXVl c3Rpb25JZA0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzBdLlFUeXBlID0gRUZJX1FVRVNJ T05fVFlQRS5RVUVTVElPTl9USU1FDQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3RbMV0uUVR5 cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX1RJTUUNCj4gPg0KPiA+ICsgICAgICAgIHBO b2RlTGlzdFsyXS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fVElNRQ0KPiA+DQo+ ID4gKyAgICAgICAgcE5vZGVMaXN0WzBdLk5leHQgPSBwTm9kZUxpc3RbMV0NCj4gPg0KPiA+ICsg ICAgICAgIHBOb2RlTGlzdFsxXS5OZXh0ID0gcE5vZGVMaXN0WzJdDQo+ID4NCj4gPiArICAgICAg ICBwTm9kZUxpc3RbMl0uTmV4dCA9IHNlbGYuX19RdWVzdGlvbkxpc3QNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuX19RdWVzdGlvbkxpc3QgPSBwTm9kZUxpc3RbMF0NCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgICMgRG9QZW5kaW5nQXNzaWduDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g UXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgZGVmIFByaW50QWxsUXVlc3Rpb24oc2VsZiwgRmlsZU5hbWUpOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgd2l0aCBvcGVuKEZpbGVOYW1lLCAndycpIGFzIGY6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcE5vZGUgPSBzZWxmLl9fUXVlc3Rpb25MaXN0DQo+ID4N Cj4gPiArICAgICAgICAgICAgd2hpbGUocE5vZGUgIT0gTm9uZSk6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJ1F1ZXN0aW9uIFZhcklkIGlzIHt9IGFuZCBR dWVzdGlvbklkIGlzDQo+ID4gJy5mb3JtYXQocE5vZGUuVmFySWRTdHIpKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBmLndyaXRlKCclZFxuJyUocE5vZGUuUXVlc3Rpb25JZCkpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICMgZi53cml0ZSgnJSN4XG4nJShwTm9kZS5RdWVzdGlvbklkKSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBmLmNsb3NlKCkNCj4gPiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUNCj4gPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGls ZXIvbWFpbi5weQ0KPiA+IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvbWFp bi5weQ0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uNjI0 Y2ZlM2FhOA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5 dGhvbi9WZnJDb21waWxlci9tYWluLnB5DQo+ID4gQEAgLTAsMCArMSwyNyBAQA0KPiA+ICtmcm9t IGRpc3R1dGlscy5maWxlbGlzdCBpbXBvcnQgRmlsZUxpc3QNCj4gPg0KPiA+ICtmcm9tIHBpY2ts ZXRvb2xzIGltcG9ydCB1aW50OA0KPiA+DQo+ID4gK2ltcG9ydCBzeXMNCj4gPg0KPiA+ICtmcm9t IHRraW50ZXIudHRrIGltcG9ydCBUcmVldmlldw0KPiA+DQo+ID4gK2Zyb20gYW50bHI0IGltcG9y dCoNCj4gPg0KPiA+ICtmcm9tIFZmckNvbXBpbGVyLlZmclN5bnRheExleGVyIGltcG9ydCBWZnJT eW50YXhMZXhlcg0KPiA+DQo+ID4gK2Zyb20gVmZyQ29tcGlsZXIuVmZyU3ludGF4UGFyc2VyIGlt cG9ydCBWZnJTeW50YXhQYXJzZXINCj4gPg0KPiA+ICtmcm9tIFZmckNvbXBpbGVyLlZmclN5bnRh eFZpc2l0b3IgaW1wb3J0IFZmclN5bnRheFZpc2l0b3INCj4gPg0KPiA+ICtmcm9tIFZmckNvbXBp bGVyLlZmckVycm9yIGltcG9ydCAqDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZGVmIFZmclBhcnNl KEluZmlsZSwgWWFtbE91dEZpbGUsIEpzb25PdXRGaWxlKToNCj4gPg0KPiA+ICsgICAgZ0NWZnJF cnJvckhhbmRsZS5TZXRJbnB1dEZpbGUgKEluZmlsZSkNCj4gPg0KPiA+ICsgICAgSW5wdXRTdHJl YW0gPSBGaWxlU3RyZWFtKEluZmlsZSkNCj4gPg0KPiA+ICsgICAgTGV4ZXIgPSBWZnJTeW50YXhM ZXhlcihJbnB1dFN0cmVhbSkNCj4gPg0KPiA+ICsgICAgU3RyZWFtID0gQ29tbW9uVG9rZW5TdHJl YW0oTGV4ZXIpDQo+ID4NCj4gPiArICAgIFBhcnNlciA9IFZmclN5bnRheFBhcnNlcihTdHJlYW0p DQo+ID4NCj4gPiArICAgIFRyZWUgPSBQYXJzZXIudmZyUHJvZ3JhbSgpDQo+ID4NCj4gPiArICAg IFZpc2l0b3IgPSBWZnJTeW50YXhWaXNpdG9yKCkNCj4gPg0KPiA+ICsgICAgVmlzaXRvci52aXNp dChUcmVlKQ0KPiA+DQo+ID4gKyAgICBWaXNpdG9yLkR1bXBZYW1sKFZpc2l0b3IuR2V0Um9vdCgp LCBZYW1sT3V0RmlsZSkNCj4gPg0KPiA+ICsgICAgVmlzaXRvci5EdW1wSnNvbihKc29uT3V0Rmls ZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOg0KPiA+ DQo+ID4gKyAgICBJbmZpbGUgPSAnVmZyQ29tcGlsZXIvdGVzdC5pJw0KPiA+DQo+ID4gKyAgICBZ YW1sT3V0RmlsZSA9ICdWZnJDb21waWxlci90ZXN0LnlhbWwnDQo+ID4NCj4gPiArICAgIEpzb25P dXRGaWxlID0gJ1ZmckNvbXBpbGVyL3Rlc3QuanNvbicNCj4gPg0KPiA+ICsgICAgVmZyUGFyc2Uo SW5maWxlLCBZYW1sT3V0RmlsZSwgSnNvbk91dEZpbGUpDQo+ID4NCj4gPiAtLQ0KPiA+IDIuMjcu MC53aW5kb3dzLjENCj4gPg0KPiA+DQo+ID4NCj4gPiANCj4gPg0KDQo=